From 301244cdb017aef414a38712a95ae06c49aacd54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20P=C5=82aczek?= Date: Tue, 13 Jun 2023 16:39:20 +0200 Subject: [PATCH] marking chapters as complete and toggling value from course list and chapter page. --- .../Controllers/Chapter/CompleteToggle.php | 17 ++++++++++++++ app/Models/Chapter.php | 2 ++ ...d_is_complete_column_to_chapters_table.php | 22 +++++++++++++++++++ resources/views/chapter/index.blade.php | 1 + resources/views/components/layout.blade.php | 1 + resources/views/course/index.blade.php | 1 + routes/web.php | 1 + 7 files changed, 45 insertions(+) create mode 100644 app/Http/Controllers/Chapter/CompleteToggle.php create mode 100644 database/migrations/2023_06_13_121741_add_is_complete_column_to_chapters_table.php diff --git a/app/Http/Controllers/Chapter/CompleteToggle.php b/app/Http/Controllers/Chapter/CompleteToggle.php new file mode 100644 index 0000000..7626d95 --- /dev/null +++ b/app/Http/Controllers/Chapter/CompleteToggle.php @@ -0,0 +1,17 @@ +update(['is_complete' => !$chapter->is_complete]); + return redirect()->back(); + } +} diff --git a/app/Models/Chapter.php b/app/Models/Chapter.php index 6b14c4f..b8ab940 100644 --- a/app/Models/Chapter.php +++ b/app/Models/Chapter.php @@ -17,6 +17,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @property string $duration * @property integer $course_id * @property bool $sync_offline + * @property bool $is_complete * @property string $video_path * @property string $directory_path * @property Course $course @@ -34,6 +35,7 @@ class Chapter extends Model 'duration', 'course_id', 'sync_offline', + 'is_complete', ]; protected $appends = ['video_path', 'directory_path', 'video_url']; diff --git a/database/migrations/2023_06_13_121741_add_is_complete_column_to_chapters_table.php b/database/migrations/2023_06_13_121741_add_is_complete_column_to_chapters_table.php new file mode 100644 index 0000000..10d219d --- /dev/null +++ b/database/migrations/2023_06_13_121741_add_is_complete_column_to_chapters_table.php @@ -0,0 +1,22 @@ +boolean('is_complete')->default(0); + }); + } + + public function down(): void + { + Schema::table('chapters', function (Blueprint $table) { + $table->removeColumn('is_complete'); + }); + } +}; diff --git a/resources/views/chapter/index.blade.php b/resources/views/chapter/index.blade.php index 12f95af..197dd5a 100644 --- a/resources/views/chapter/index.blade.php +++ b/resources/views/chapter/index.blade.php @@ -40,6 +40,7 @@ @foreach($chapters as $courseChapter) + + diff --git a/routes/web.php b/routes/web.php index 67123c4..80bfb71 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,6 +16,7 @@ Route::prefix('course')->group(function () { Route::get('/{course}/update', Course\Update::class)->name('course.update'); Route::get('/{course}/chapter/{chapter}', ChapterController::class)->name('course.chapter'); Route::get('/{course}/chapter/{chapter}/sync', Chapter\Sync::class)->name('course.chapter.sync'); + Route::get('/{course}/chapter/{chapter}/completetoggle', Chapter\CompleteToggle::class)->name('course.chapter.complete_toggle'); });
{{ $courseChapter->title }} diff --git a/resources/views/components/layout.blade.php b/resources/views/components/layout.blade.php index e292247..1b0b536 100644 --- a/resources/views/components/layout.blade.php +++ b/resources/views/components/layout.blade.php @@ -6,6 +6,7 @@ crossorigin="anonymous"> + {{ $slot }} diff --git a/resources/views/course/index.blade.php b/resources/views/course/index.blade.php index 834f57e..43d25b8 100644 --- a/resources/views/course/index.blade.php +++ b/resources/views/course/index.blade.php @@ -21,6 +21,7 @@
{{ $chapter->title }} {{ $chapter->duration }} {{ $chapter->sync_offline?'Yes':'no' }} {{ $chapter->is_video_file?'Yes':'-' }}