@extends('layouts.front') @section('title', $course->title . ' — ' . getSiteName()) @php // Blade's @json() directive splits its expression on every top-level comma, // so a translation call with a replacements array (which itself contains a // comma) can't be passed to @json() directly without silently losing its // HTML-safe escaping flags. Build the plain array first, then @json() it whole. $playerI18n = [ 'freeTag' => __('front.player.free_tag'), 'courseContent' => __('front.player.course_content'), 'noLessons' => __('front.player.no_lessons'), 'lessonNOf' => __('front.player.lesson_n_of', ['i' => ':i', 'n' => ':n']), 'markComplete' => __('front.player.mark_complete'), 'completedAgain' => __('front.player.completed_again'), 'allComplete' => __('front.player.all_complete'), 'lessonsComplete' => __('front.player.lessons_complete', ['done' => ':done', 'total' => ':total']), 'courseCompleteCta' => __('front.player.course_complete_cta'), 'finishUnlockExam' => __('front.player.finish_unlock_exam'), 'finishLessonsXpHtml' => __('front.player.finish_lessons_xp_html', ['count' => ':count']), 'courseCompleteXpHtml' => __('front.player.course_complete_xp_html'), 'loginToUnlock' => __('front.player.login_to_unlock'), 'locked' => __('front.player.locked'), 'finishPrevious' => __('front.player.finish_previous'), ]; @endphp @section('content')
@if($course->category){{ $course->category->name }}@endif {{ __('front.courses.' . $course->level) }} ★ {{ $course->ratings_avg_rating ? number_format($course->ratings_avg_rating, 1) : '—' }} · {{ number_format($course->students_count) }} {{ __('front.courses.students') }}

{{ $course->title }}

@if($course->description)

{{ $course->description }}

@endif
@if(optional($course->instructor)->user) {{ $course->instructor->user->name }} @else @endif
{{ __('front.courses.taught_by') }} @if($course->instructor && isMultiInstructorsMode()) {{ optional($course->instructor->user)->name ?? __('front.courses.unknown_instructor') }} @else {{ optional(optional($course->instructor)->user)->name ?? __('front.courses.unknown_instructor') }} @endif · {{ __('front.courses.lessons_count', ['count' => $course->lessons->count()]) }}
@if($canEnrollWithSiteSubscription)

{{ __('front.courses.you_have_subscription') }}

@csrf
@endif
@php $firstLesson = $course->lessons->first(); @endphp
@if(optional($firstLesson)->video_url) @else @endif {{ __('front.courses.free_preview') }}
{{ $course->lessons->count() ? __('front.courses.lesson_n_of', ['i' => 1, 'n' => $course->lessons->count()]) : __('front.courses.course_preview') }}

{{ optional($firstLesson)->title ?? $course->title }}

{{ optional($firstLesson)->description ?? $course->description }}

@php $reviewsTabActive = request()->has('reviews_page'); @endphp
{{ __('front.courses.overview') }}
{{ __('front.courses.reviews', ['count' => $reviews->total()]) }}

{{ __('front.courses.about_course') }}

@if($course->description)

{{ $course->description }}

@else

{{ __('front.courses.no_description') }}

@endif
@forelse($reviews as $review)
{{ $review->reviewer_name ?: __('front.courses.anonymous') }}{{ str_repeat('★', $review->rating) }}{{ str_repeat('☆', 5 - $review->rating) }}

{{ $review->comment }}

@empty

{{ __('front.courses.no_reviews') }}

@endforelse @if($reviews->hasPages())
@if($reviews->onFirstPage()) ‹ @else ‹ @endif @foreach(range(1, $reviews->lastPage()) as $page) {{ $page }} @endforeach @if($reviews->hasMorePages()) › @else › @endif
@endif
@php $completedCount = $lessonsData->where('completed', true)->count(); $totalLessonsCount = $lessonsData->count(); $progressPercent = $totalLessonsCount ? round($completedCount / $totalLessonsCount * 100) : 0; @endphp
@if($course->exam && $course->exam->status === 'live')

{{ __('front.exam.confirm_title') }}

{{ __('front.exam.confirm_body') }}

{{ __('front.exam.confirm_questions') }}{{ $course->exam->questions_count }}
{{ __('front.exam.confirm_time') }}{{ __('front.exam.confirm_minutes', ['count' => $course->exam->time_limit]) }}

{{ __('front.exam.confirm_note') }}

{{ __('front.exam.confirm_start') }}
@endif @if(!$hasAccess && !$isGuest)

{{ __('front.courses.locked_lesson_title') }}

{{ __('front.courses.locked_lesson_body') }}

@if($canEnrollWithSiteSubscription)
@csrf
@else
@csrf @if($course->access_type === 'subscription') @else @endif
@if($course->access_type === 'subscription') {{ __('front.courses.or_subscribe_site') }} @endif @endif
@endif @endsection