From f1565c415fad0cdc3baba6f8bbd9d4f964449499 Mon Sep 17 00:00:00 2001 From: Htet Phone Aung Date: Wed, 30 Aug 2023 21:15:58 +0630 Subject: [PATCH] still developing --- app/Http/Controllers/ChapterController.php | 32 +++++-- app/Http/Controllers/HomeController.php | 2 + app/Http/Controllers/MangaController.php | 44 ++++++++-- app/Http/Controllers/PageController.php | 32 +++++++ app/Http/Requests/StoreChapterRequest.php | 13 ++- app/Http/Requests/StoreMangaRequest.php | 5 +- app/Http/Requests/UpdateMangaRequest.php | 5 +- app/Models/Chapter.php | 10 +++ app/Models/Manga.php | 13 +++ app/Providers/AppServiceProvider.php | 3 +- config/filesystems.php | 2 +- database/factories/ChapterFactory.php | 9 +- database/factories/MangaFactory.php | 12 ++- database/factories/UserFactory.php | 4 +- .../2014_10_12_000000_create_users_table.php | 1 + .../2023_08_23_114850_create_mangas_table.php | 6 ++ ...023_08_23_115026_create_chapters_table.php | 5 ++ database/seeders/ChapterSeeder.php | 3 +- database/seeders/DatabaseSeeder.php | 11 ++- database/seeders/MangaSeeder.php | 3 +- database/seeders/UserSeeder.php | 25 ++++++ resources/sass/app.scss | 22 +---- resources/views/auth/login.blade.php | 2 +- resources/views/auth/register.blade.php | 2 +- resources/views/auth/verify.blade.php | 2 +- resources/views/chapter/create.blade.php | 33 +++++++ resources/views/chapter/index.blade.php | 24 +++++ .../views/chapter/manageChapter.blade.php | 27 ++++++ resources/views/chapter_page.blade.php | 57 ++++++++++++ resources/views/home.blade.php | 24 ++--- resources/views/index.blade.php | 87 ++++++++----------- resources/views/layouts/app.blade.php | 32 +++++-- resources/views/layouts/dashboard.blade.php | 34 ++++++++ resources/views/layouts/master.blade.php | 3 +- resources/views/manga.blade.php | 28 ++++++ resources/views/manga/create.blade.php | 29 +++++++ resources/views/manga/detail.blade.php | 28 ++++++ resources/views/manga/edit.blade.php | 35 ++++++++ resources/views/manga/index.blade.php | 68 +++++++++++++++ resources/views/partials/alert-msg.blade.php | 6 ++ resources/views/partials/footer.blade.php | 3 + resources/views/partials/hot-manga.blade.php | 25 ++++++ resources/views/partials/nav.blade.php | 28 +++++- .../views/partials/patreon-nav.blade.php | 20 +++++ resources/views/partials/side-bar.blade.php | 11 +++ routes/web.php | 15 +++- 46 files changed, 758 insertions(+), 127 deletions(-) create mode 100644 app/Http/Controllers/PageController.php create mode 100644 database/seeders/UserSeeder.php create mode 100644 resources/views/chapter/create.blade.php create mode 100644 resources/views/chapter/index.blade.php create mode 100644 resources/views/chapter/manageChapter.blade.php create mode 100644 resources/views/chapter_page.blade.php create mode 100644 resources/views/layouts/dashboard.blade.php create mode 100644 resources/views/manga.blade.php create mode 100644 resources/views/manga/create.blade.php create mode 100644 resources/views/manga/detail.blade.php create mode 100644 resources/views/manga/edit.blade.php create mode 100644 resources/views/manga/index.blade.php create mode 100644 resources/views/partials/alert-msg.blade.php create mode 100644 resources/views/partials/footer.blade.php create mode 100644 resources/views/partials/hot-manga.blade.php create mode 100644 resources/views/partials/patreon-nav.blade.php create mode 100644 resources/views/partials/side-bar.blade.php diff --git a/app/Http/Controllers/ChapterController.php b/app/Http/Controllers/ChapterController.php index c96e9ad..f685f3e 100644 --- a/app/Http/Controllers/ChapterController.php +++ b/app/Http/Controllers/ChapterController.php @@ -2,9 +2,11 @@ namespace App\Http\Controllers; +use App\Models\Chapter; +use Illuminate\Support\Facades\Auth; use App\Http\Requests\StoreChapterRequest; use App\Http\Requests\UpdateChapterRequest; -use App\Models\Chapter; +use App\Models\Manga; class ChapterController extends Controller { @@ -13,15 +15,17 @@ class ChapterController extends Controller */ public function index() { - // + $mangas = Manga::latest('id')->paginate(8)->withQueryString(); + return view('chapter.index', compact('mangas')); } + /** * Show the form for creating a new resource. */ public function create() { - // + return view('chapter.create'); } /** @@ -29,7 +33,19 @@ class ChapterController extends Controller */ public function store(StoreChapterRequest $request) { - // + $formData = $request->validated(); + $formData['user_id'] = Auth::id(); + if($request->hasFile('images')) { + foreach ($request->file('images') as $image) { + $images[] = $image->store($request->manga_id.'OfChapter', 'public'); + } + $formData['images'] = $images; + } + + Chapter::create($formData); + + return redirect()->route('home')->with(['message' => 'New Chapter has been added!!']); + } /** @@ -61,6 +77,12 @@ class ChapterController extends Controller */ public function destroy(Chapter $chapter) { - // + $chapter->delete(); + return back()->with(['message' => "Successfully Deleted!"]); + } + + public function manage(Manga $manga) + { + return view('chapter.manageChapter', compact('manga')); } } diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 7cbc2c3..2631f8f 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -25,4 +25,6 @@ class HomeController extends Controller { return view('home'); } + + } diff --git a/app/Http/Controllers/MangaController.php b/app/Http/Controllers/MangaController.php index b240061..a5b8235 100644 --- a/app/Http/Controllers/MangaController.php +++ b/app/Http/Controllers/MangaController.php @@ -2,9 +2,13 @@ namespace App\Http\Controllers; +use App\Models\Manga; +use Illuminate\Support\Str; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use App\Http\Requests\StoreMangaRequest; use App\Http\Requests\UpdateMangaRequest; -use App\Models\Manga; +use Illuminate\Support\Facades\Request as FacadesRequest; class MangaController extends Controller { @@ -13,7 +17,8 @@ class MangaController extends Controller */ public function index() { - // + $mangas = Manga::latest('id')->paginate(10)->withQueryString(); + return view('manga.index', compact('mangas')); } /** @@ -21,7 +26,7 @@ class MangaController extends Controller */ public function create() { - // + return view('manga.create'); } /** @@ -29,15 +34,26 @@ class MangaController extends Controller */ public function store(StoreMangaRequest $request) { - // + $formData = $request->validated(); + $formData['slug'] = Str::slug($request->title); + $formData['excerpt'] = Str::words($request->summary, 10, '...'); + $formData['author_id'] = Auth::id(); + if ($request->hasFile('cover')) { + $formData['cover'] = $request->file('cover')->store('covers', 'public'); + } + + Manga::create($formData); + + return redirect()->route('manga.index')->with(['message' => 'A New Manga is created']); } /** * Display the specified resource. */ - public function show(Manga $manga) + public function show($slug) { - // + $manga = Manga::where('slug', $slug)->first(); + return view('manga.detail', compact('manga')); } /** @@ -45,7 +61,7 @@ class MangaController extends Controller */ public function edit(Manga $manga) { - // + return view('manga.edit', compact('manga')); } /** @@ -53,7 +69,15 @@ class MangaController extends Controller */ public function update(UpdateMangaRequest $request, Manga $manga) { - // + $formData = $request->validated(); + $formData['slug'] = Str::slug($request->title); + $formData['excerpt'] = Str::words($request->summary, 10, '...'); + if ($request->hasFile('cover')) { + $formData['cover'] = $request->file('cover')->store('covers', 'public'); + } + + $manga->update($formData); + return redirect()->back()->with(['message' => 'Manga has been updated!']); } /** @@ -61,6 +85,8 @@ class MangaController extends Controller */ public function destroy(Manga $manga) { - // + $manga->delete(); + return redirect()->back()->with(['message' => 'Manga has been deleted!']); } + } diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php new file mode 100644 index 0000000..adb4ac0 --- /dev/null +++ b/app/Http/Controllers/PageController.php @@ -0,0 +1,32 @@ +paginate(10)->withQueryString(); + $hotMangas = Manga::latest('id')->limit('3')->get(); + return view('index', [ + 'mangas' => $mangas, + 'hotMangas' => $hotMangas + ]); + } + + public function manga($slug) + { + $manga = Manga::where('slug', $slug)->first(); + return view('manga', compact('manga')); + } + + public function chapter(Manga $manga, Chapter $chapter ) + { + return view('chapter_page', ['manga' => $manga, 'chapter' => $chapter]); + } + +} diff --git a/app/Http/Requests/StoreChapterRequest.php b/app/Http/Requests/StoreChapterRequest.php index 2febe3f..81e9360 100644 --- a/app/Http/Requests/StoreChapterRequest.php +++ b/app/Http/Requests/StoreChapterRequest.php @@ -11,7 +11,7 @@ class StoreChapterRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -22,7 +22,16 @@ class StoreChapterRequest extends FormRequest public function rules(): array { return [ - // + 'title' => 'min:3', + 'manga_id' => 'required|exists:mangas,id' + ]; + } + + public function messages() + { + return [ + 'manga_id.required' => 'Please Select the Manga', + 'manga_id.exists' => 'Please Select the Manga' ]; } } diff --git a/app/Http/Requests/StoreMangaRequest.php b/app/Http/Requests/StoreMangaRequest.php index 8c1ddd5..b30e909 100644 --- a/app/Http/Requests/StoreMangaRequest.php +++ b/app/Http/Requests/StoreMangaRequest.php @@ -11,7 +11,7 @@ class StoreMangaRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -22,7 +22,8 @@ class StoreMangaRequest extends FormRequest public function rules(): array { return [ - // + 'title' => 'required|min:3|max:100', + 'summary' => 'required|min:3' ]; } } diff --git a/app/Http/Requests/UpdateMangaRequest.php b/app/Http/Requests/UpdateMangaRequest.php index 79a29e3..5ff876a 100644 --- a/app/Http/Requests/UpdateMangaRequest.php +++ b/app/Http/Requests/UpdateMangaRequest.php @@ -11,7 +11,7 @@ class UpdateMangaRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -22,7 +22,8 @@ class UpdateMangaRequest extends FormRequest public function rules(): array { return [ - // + 'title' => 'required|min:3', + 'summary' => 'required|min:3|max:2000' ]; } } diff --git a/app/Models/Chapter.php b/app/Models/Chapter.php index 6a00768..0460a6b 100644 --- a/app/Models/Chapter.php +++ b/app/Models/Chapter.php @@ -8,4 +8,14 @@ use Illuminate\Database\Eloquent\Model; class Chapter extends Model { use HasFactory; + + protected $fillable = ['title', 'images', 'manga_id', 'user_id']; + protected $casts = [ + 'images' => 'array' + ]; + + public function manga() + { + return $this->belongsTo(Manga::class, 'manga_id'); + } } diff --git a/app/Models/Manga.php b/app/Models/Manga.php index bc732e5..0650d24 100644 --- a/app/Models/Manga.php +++ b/app/Models/Manga.php @@ -8,4 +8,17 @@ use Illuminate\Database\Eloquent\Model; class Manga extends Model { use HasFactory; + + protected $fillable = ['title', 'slug', 'summary', 'excerpt', 'cover', 'author_id']; + + + public function user() + { + return $this->belongsTo(User::class, 'author_id'); + } + + public function chapters() + { + return $this->hasMany(Chapter::class); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..86b1719 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -2,6 +2,7 @@ namespace App\Providers; +use Illuminate\Pagination\Paginator; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -19,6 +20,6 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - // + Paginator::useBootstrapFive(); } } diff --git a/config/filesystems.php b/config/filesystems.php index e9d9dbd..101542f 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -13,7 +13,7 @@ return [ | */ - 'default' => env('FILESYSTEM_DISK', 'local'), + 'default' => env('FILESYSTEM_DISK', 'public'), /* |-------------------------------------------------------------------------- diff --git a/database/factories/ChapterFactory.php b/database/factories/ChapterFactory.php index d06d157..12fe81a 100644 --- a/database/factories/ChapterFactory.php +++ b/database/factories/ChapterFactory.php @@ -16,8 +16,15 @@ class ChapterFactory extends Factory */ public function definition(): array { + $images = []; + for ($i = 0; $i < 10; $i++) { + $images[] = fake()->imageUrl(400,400,'cats'); + } return [ - // + 'title' => fake()->title(), + 'images' => $images, + 'manga_id' => rand(1, 10), + 'user_id' => rand(1, 10) ]; } } diff --git a/database/factories/MangaFactory.php b/database/factories/MangaFactory.php index 6081190..9562f08 100644 --- a/database/factories/MangaFactory.php +++ b/database/factories/MangaFactory.php @@ -2,6 +2,9 @@ namespace Database\Factories; +use Illuminate\Support\Str; + +use function Laravel\Prompts\text; use Illuminate\Database\Eloquent\Factories\Factory; /** @@ -16,8 +19,15 @@ class MangaFactory extends Factory */ public function definition(): array { + $title = fake()->name(); + $summary = fake()->paragraph(5); return [ - // + 'title' => $title, + 'slug' => Str::slug($title), + 'summary' => $summary, + 'excerpt' => Str::words($summary, 10, '...'), + 'cover' => fake()->imageUrl(400, 400, 'cats'), + 'author_id' => rand(1,10), ]; } } diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index a6ecc0a..a916a96 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -3,6 +3,7 @@ namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; +use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; /** @@ -21,7 +22,8 @@ class UserFactory extends Factory 'name' => fake()->name(), 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'password' => Hash::make('12345678'), + // 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 444fafb..ac18148 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -15,6 +15,7 @@ return new class extends Migration $table->id(); $table->string('name'); $table->string('email')->unique(); + $table->enum('role', ['user', 'admin'])->default('user'); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); diff --git a/database/migrations/2023_08_23_114850_create_mangas_table.php b/database/migrations/2023_08_23_114850_create_mangas_table.php index 9144c6a..782a16d 100644 --- a/database/migrations/2023_08_23_114850_create_mangas_table.php +++ b/database/migrations/2023_08_23_114850_create_mangas_table.php @@ -13,6 +13,12 @@ return new class extends Migration { Schema::create('mangas', function (Blueprint $table) { $table->id(); + $table->string('title'); + $table->string('slug')->nullable(); + $table->longText('summary'); + $table->string('excerpt')->nullable(); + $table->string('cover')->nullable(); + $table->foreignId('author_id'); $table->timestamps(); }); } diff --git a/database/migrations/2023_08_23_115026_create_chapters_table.php b/database/migrations/2023_08_23_115026_create_chapters_table.php index 83b34c8..1b62d18 100644 --- a/database/migrations/2023_08_23_115026_create_chapters_table.php +++ b/database/migrations/2023_08_23_115026_create_chapters_table.php @@ -13,8 +13,13 @@ return new class extends Migration { Schema::create('chapters', function (Blueprint $table) { $table->id(); + $table->string('title')->nullable(); + $table->json('images'); + $table->foreignId('manga_id')->constrained()->onDelete('cascade'); + $table->foreignId('user_id'); $table->timestamps(); }); + } /** diff --git a/database/seeders/ChapterSeeder.php b/database/seeders/ChapterSeeder.php index ce36c31..d84f860 100644 --- a/database/seeders/ChapterSeeder.php +++ b/database/seeders/ChapterSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders; +use App\Models\Chapter; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -12,6 +13,6 @@ class ChapterSeeder extends Seeder */ public function run(): void { - // + Chapter::factory(50)->create(); } } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a9f4519..f25bb03 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; + use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -15,8 +16,14 @@ class DatabaseSeeder extends Seeder // \App\Models\User::factory(10)->create(); // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', + // 'name' => 'Luke', + // 'email' => 'luke@gmail.com', + // 'password' => Hash::make('12345678'), // ]); + $this->call([ + UserSeeder::class, + MangaSeeder::class, + ChapterSeeder::class + ]); } } diff --git a/database/seeders/MangaSeeder.php b/database/seeders/MangaSeeder.php index 760b087..a977112 100644 --- a/database/seeders/MangaSeeder.php +++ b/database/seeders/MangaSeeder.php @@ -2,6 +2,7 @@ namespace Database\Seeders; +use App\Models\Manga; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -12,6 +13,6 @@ class MangaSeeder extends Seeder */ public function run(): void { - // + Manga::factory(10)->create(); } } diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..e6d107e --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,25 @@ +create(); + User::factory()->create([ + 'name' => 'Luke', + 'email' => 'luke@gmail.com', + 'password' => Hash::make('12345678'), + 'role' => 'admin' + ]); + } +} diff --git a/resources/sass/app.scss b/resources/sass/app.scss index 5c5a5bd..f2d9bd0 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -18,23 +18,7 @@ // Bootstrap @import 'bootstrap/scss/bootstrap'; -@import "../../node_modules/bootstrap/scss/functions"; - -// Required -@import "../../node_modules/bootstrap/scss/variables"; -@import "../node_modules/bootstrap/scss/variables-dark"; -@import "../node_modules/bootstrap/scss/maps"; -@import "../node_modules/bootstrap/scss/mixins"; -@import "../node_modules/bootstrap/scss/root"; - - - - -$custom-colors:( - 'lightGrey' : #ebebeb, - 'grey' : #7b7b7b -); - -// Merge the maps -$theme-colors : map-merge($theme-colors, $custom-colors); +.alert-msg { + transform: translateX(-50%) translateY(10%); +} diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index ea9ac94..d9f0b8c 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.app') +@extends('layouts.master') @section('content')
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 12cad1a..cc28c33 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.app') +@extends('layouts.master') @section('content')
diff --git a/resources/views/auth/verify.blade.php b/resources/views/auth/verify.blade.php index 9f8c1bc..d9cb8dd 100644 --- a/resources/views/auth/verify.blade.php +++ b/resources/views/auth/verify.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.app') +@extends('layouts.master') @section('content')
diff --git a/resources/views/chapter/create.blade.php b/resources/views/chapter/create.blade.php new file mode 100644 index 0000000..63fae88 --- /dev/null +++ b/resources/views/chapter/create.blade.php @@ -0,0 +1,33 @@ +@extends('layouts.app') + +@section('content') +
+ @csrf +
+ + + @error('manga_id') +

{{ $message }}

+ @enderror +
+
+ + + @error('title') +

{{ $message }}

+ @enderror +
+ +
+ + +
+ + +
+@endsection diff --git a/resources/views/chapter/index.blade.php b/resources/views/chapter/index.blade.php new file mode 100644 index 0000000..f839542 --- /dev/null +++ b/resources/views/chapter/index.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.app') + +@section('content') + +
+ {{ $mangas->links() }} +
+@endsection diff --git a/resources/views/chapter/manageChapter.blade.php b/resources/views/chapter/manageChapter.blade.php new file mode 100644 index 0000000..8f3fa5b --- /dev/null +++ b/resources/views/chapter/manageChapter.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.app') + +@section('content') + +

{{ $manga->title }}

+
+
Chapters
+
+ @foreach ($manga->chapters()->latest('id')->get() as $chapter) +
+
+

{{ $chapter->title }}

+
+
+ @csrf + @method('delete') + +
+
+
+
+ @endforeach +
+@endsection diff --git a/resources/views/chapter_page.blade.php b/resources/views/chapter_page.blade.php new file mode 100644 index 0000000..a5efd0b --- /dev/null +++ b/resources/views/chapter_page.blade.php @@ -0,0 +1,57 @@ +@extends('layouts.master') +@section('content') +

{{ $manga->title }} - {{ $chapter->title }}

+
+ + {{-- breadcrumb --}} + + + {{-- select box and paginate --}} +
+
+ +
+
+ Previous + Next +
+
+ + {{-- manga images --}} +
+ @foreach ($chapter->images as $image) + + @endforeach +
+ +
+ {{-- chapters and pagiantion --}} +
+
+ +
+
+ Previous + Next + {{-- {{ $allChap->links() }} --}} +
+
+
+@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 1f34466..e45ce96 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -1,23 +1,17 @@ @extends('layouts.app') @section('content') -
-
-
-
-
{{ __('Dashboard') }}
+
+
{{ __('Dashboard') }}
-
- @if (session('status')) - - @endif - - {{ __('You are logged in!') }} +
+ @if (session('status')) + -
+ @endif + + {{ __('You are logged in!') }}
-
@endsection diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index b691421..f42079f 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -4,8 +4,36 @@ @section('content')
-
-
+
+ @foreach ($mangas as $manga) +
+
+
+ + img + +
+
+
{{ $manga->title }}
+ @forelse ($manga->chapters()->latest('id')->limit(2)->get() as $chapter) + + + {{ $chapter->title }} + + + {{ $chapter->created_at->diffforhumans() }} + + + + @empty + @endforelse +
+
+
+ @endforeach + {{--
img @@ -26,57 +54,16 @@
-
-
-
-
- img -
-
-
The Villainous Desciple
-
- Chapter - 5 - 5 mins ago -
-
- Chapter - 4 - 4 mins ago -
-
-
-
-
dfg
-
gdfg
+
--}}
-

Manga Hot

-
-
-
- img -
-

The Villainous Desciple

-
- Chapter - 5 - 5 mins ago -
-
- Chapter - 4 - 4 mins ago -
-
-
-
-
+ @include('partials.hot-manga')
@endsection + + +@section('footer') + @include('partials.footer') +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index a6970da..f5f2a4c 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -1,5 +1,6 @@ + @@ -16,6 +17,7 @@ @vite(['resources/sass/app.scss', 'resources/js/app.js']) +
-
- @yield('content') -
+
+
+
+ @include('partials.side-bar') +
+
+ @yield('content') +
+
+
+ + {{-- alert-smg --}} + @include('partials.alert-msg') +
+ + + + diff --git a/resources/views/layouts/dashboard.blade.php b/resources/views/layouts/dashboard.blade.php new file mode 100644 index 0000000..73297a5 --- /dev/null +++ b/resources/views/layouts/dashboard.blade.php @@ -0,0 +1,34 @@ + + + + + + + + {{ config('app.name', 'MangaDex') }} + + + @vite(['resources/sass/app.scss', 'resources/js/app.js']) + + + + @include('partials.nav') +
+
+ +
+ +
+ + +
+ @yield('content') +
+
+
+ + + + + + diff --git a/resources/views/layouts/master.blade.php b/resources/views/layouts/master.blade.php index 2d38f08..78b4d55 100644 --- a/resources/views/layouts/master.blade.php +++ b/resources/views/layouts/master.blade.php @@ -14,13 +14,14 @@ @include('partials.nav') + @include('partials.patreon-nav')
@yield('content')
- + @yield('footer') diff --git a/resources/views/manga.blade.php b/resources/views/manga.blade.php new file mode 100644 index 0000000..521c308 --- /dev/null +++ b/resources/views/manga.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.master') + +@section('content') + Back +
+
+ +
+

{{ $manga->title }}

+

{{ $manga->summary }}

+
    +
    + Chapters +
    + @forelse ($manga->chapters()->latest('id')->get() as $chapter) + + {{ $chapter->title }} + + @empty +

    No Chapter Yet!

    + @endforelse +
+
+@endsection + +@section('footer') + @include('partials.footer') +@endsection diff --git a/resources/views/manga/create.blade.php b/resources/views/manga/create.blade.php new file mode 100644 index 0000000..10ebee4 --- /dev/null +++ b/resources/views/manga/create.blade.php @@ -0,0 +1,29 @@ +@extends('layouts.app') +@section('content') +
+ @csrf +
+ + + @error('title') +

{{ $message }}

+ @enderror +
+
+ + +
+
+ + + @error('summary') +

{{ $message }}

+ @enderror +
+ +
+@endsection + diff --git a/resources/views/manga/detail.blade.php b/resources/views/manga/detail.blade.php new file mode 100644 index 0000000..573506f --- /dev/null +++ b/resources/views/manga/detail.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+ Back +
+
+

Title : {{ $manga->title }}

+
+

Cover Image :

+
+ +
+
+

Summary :

+

{{ $manga->summary }}

+ +
+

Total Chapter : {{$manga->chapters->count()}} chapters

+ +
+ +
+
+
+@endsection diff --git a/resources/views/manga/edit.blade.php b/resources/views/manga/edit.blade.php new file mode 100644 index 0000000..31b01f1 --- /dev/null +++ b/resources/views/manga/edit.blade.php @@ -0,0 +1,35 @@ +@extends('layouts.app') + +@section('content') + Home +
+
+ @csrf + @method('PUT') +
+ + + @error('title') +

{{ $message }}

+ @enderror +
+
+ + + +
+
+ + + @error('summary') +

{{ $message }}

+ @enderror +
+ +
+@endsection + + diff --git a/resources/views/manga/index.blade.php b/resources/views/manga/index.blade.php new file mode 100644 index 0000000..5baad81 --- /dev/null +++ b/resources/views/manga/index.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.app') + +@section('content') +
+
+
Manga List
+
+
+ + + + + + + + + + + + @forelse ($mangas as $manga) + + + + + + + + + @empty + @endforelse + + +
#TitleAuthorTotal ChaptersHandle
{{ $manga->id }} +

{{ $manga->title }}

+ {{ $manga->excerpt }} +
+ {{ $manga->user->name }} + + {{$manga->chapters->count()}} + +
+ + + + + + +
+
+ @csrf + @method('delete') + +
+
+
+ +
+ {{ $mangas->links() }} +
+
+
+ +@endsection diff --git a/resources/views/partials/alert-msg.blade.php b/resources/views/partials/alert-msg.blade.php new file mode 100644 index 0000000..7602c14 --- /dev/null +++ b/resources/views/partials/alert-msg.blade.php @@ -0,0 +1,6 @@ +@if (session()->has('message')) +
+

{{ session('message') }}

+
+@endif diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php new file mode 100644 index 0000000..9fe9296 --- /dev/null +++ b/resources/views/partials/footer.blade.php @@ -0,0 +1,3 @@ +
+

Copyright All Served @MangaDex

+
diff --git a/resources/views/partials/hot-manga.blade.php b/resources/views/partials/hot-manga.blade.php new file mode 100644 index 0000000..c1931b1 --- /dev/null +++ b/resources/views/partials/hot-manga.blade.php @@ -0,0 +1,25 @@ +

Manga Hot

+
+ @foreach ($hotMangas as $hotManga) +
+
+
+ img +
+
+

{{ $hotManga->title }}

+ @foreach ($hotManga->chapters()->latest('id')->limit(2)->get() as $hotChap) +
+ + {{ $hotChap->title }} + + {{$hotChap->created_at->diffForHumans()}} +
+ @endforeach + +
+
+
+ @endforeach +
diff --git a/resources/views/partials/nav.blade.php b/resources/views/partials/nav.blade.php index 462c0bd..dde6536 100644 --- a/resources/views/partials/nav.blade.php +++ b/resources/views/partials/nav.blade.php @@ -1,6 +1,6 @@
diff --git a/resources/views/partials/patreon-nav.blade.php b/resources/views/partials/patreon-nav.blade.php new file mode 100644 index 0000000..a4f5aef --- /dev/null +++ b/resources/views/partials/patreon-nav.blade.php @@ -0,0 +1,20 @@ + + +
diff --git a/resources/views/partials/side-bar.blade.php b/resources/views/partials/side-bar.blade.php new file mode 100644 index 0000000..5689066 --- /dev/null +++ b/resources/views/partials/side-bar.blade.php @@ -0,0 +1,11 @@ + + + diff --git a/routes/web.php b/routes/web.php index 6ba38c9..4dceeb7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,10 @@ group(function() { + Route::get('/','index')->name('page.index'); + Route::get('/MangaDex/manga/{slug}', 'manga')->name('page.manga'); + Route::get('/manga/{manga:slug}/chapter/{chapter}', 'chapter')->name('page.chapter'); }); Auth::routes(); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); +Route::resource('manga', MangaController::class)->middleware('auth'); + +Route::resource('chapter', ChapterController::class)->middleware('auth'); +Route::get('/chapters/manage/{manga:slug}', [ChapterController::class, 'manage'])->name('chapters.manage')->middleware('auth');