From 25e28f819365d4f0ac77806ceddafa59711a3886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20P=C5=82aczek?= Date: Wed, 7 Dec 2022 11:37:50 +0100 Subject: [PATCH] Added helper file, replaced size file for human version as a helper method, next prev buttons for chapters. --- app/Http/Controllers/ChapterController.php | 8 ++++++-- app/Models/Chapter.php | 13 ++++++++---- app/Models/Course.php | 5 ++--- app/helpers.php | 22 ++++++++++++++++++++ composer.json | 10 +++++++-- resources/views/chapter/index.blade.php | 16 +++++++++++++-- resources/views/index.blade.php | 24 +++++++++++++++++++--- 7 files changed, 82 insertions(+), 16 deletions(-) create mode 100644 app/helpers.php diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index c1df102..3deaae3 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -10,9 +10,13 @@ class ChapterController extends Controller public function index(Chapter $chapter, SymfonyCastDlService $symfonyCastDlService) { $symfonyCastDlService->videoSize($chapter); - if($chapter->sync_offline){ + if ($chapter->sync_offline) { $symfonyCastDlService->downloadFile($chapter); } - return view('chapter.index', compact('chapter')); + $chapters = $chapter->course->chapters; + + $next = $chapters->where('order', '>', $chapter->order)->first(); + $prev = $chapters->where('order', '<', $chapter->order)->sortByDesc('order')->first(); + return view('chapter.index', compact('chapter', 'chapters', 'prev', 'next')); } } diff --git a/app/Models/Chapter.php b/app/Models/Chapter.php index 341b9ff..031e218 100644 --- a/app/Models/Chapter.php +++ b/app/Models/Chapter.php @@ -36,13 +36,20 @@ class Chapter extends Model 'sync_offline', ]; - protected $appends = ['video_path', 'directory_path']; + protected $appends = ['video_path', 'directory_path', 'video_url']; public function course(): BelongsTo { return $this->belongsTo(Course::class); } + protected function videoUrl(): Attribute + { + return Attribute::make( + get: fn() => url($this->course_id . '/' . $this->order . '.mp4') + ); + } + protected function videoPath(): Attribute { return Attribute::make( @@ -68,9 +75,7 @@ class Chapter extends Model { return Attribute::make( get: function () { - $base = log($this->video_size) / log(1024); - $suffix = ["", "k", "M", "G", "T"][floor($base)]; - return round(pow(1024, $base - floor($base)), 2) . $suffix; + return formatFileSize($this->video_size); }, ); } diff --git a/app/Models/Course.php b/app/Models/Course.php index 9feae52..bd4f0cd 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -33,6 +33,7 @@ class Course extends Model 'published_at', ]; + protected $appends = ['total_size', 'total_size_human']; protected $dates = [ 'published_at' ]; @@ -53,9 +54,7 @@ class Course extends Model { return Attribute::make( get: function () { - $base = log($this->total_size) / log(1024); - $suffix = ["", "k", "M", "G", "T"][floor($base)]; - return round(pow(1024, $base - floor($base)), 2) . $suffix; + return formatFileSize($this->total_size); }, ); } diff --git a/app/helpers.php b/app/helpers.php new file mode 100644 index 0000000..fd45259 --- /dev/null +++ b/app/helpers.php @@ -0,0 +1,22 @@ +

- {{ $chapter->course->name }} + List » {{ $chapter->course->name }}
{{ $chapter->title }}

+
+ @if($prev) +
Prev +
+ @endif + @if($next) +
Next +
+ @endif +
+
@if($chapter->is_video_file) @endif
diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 67b0ace..8ae8c84 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -9,17 +9,35 @@ status Chapters Published at + Estimate file size + Actual size @foreach($courses as $course) {{ $course->id }} - {{ $course->name }} - {{ $course->name }} + {{ $course->name }} + {{ $course->name }} {{ $course->status }} {{ $course->chapters_count }} / {{ $course->numberofchapters }} - {{ $course->published_at?->diffForHumans() }} + {{ $course->published_at?->diffForHumans() }} + + {{ $course->total_size_human }} + {{formatFileSize(folderSize(public_path($course->id)))}} @endforeach + + + + + + + + {{ formatFileSize($courses->sum('total_size')) }} + {{formatFileSize(folderSize(public_path()))}} +