diff --git a/app/Http/Controllers/RecetaController.php b/app/Http/Controllers/RecetaController.php index 82f9faf..f97be7d 100644 --- a/app/Http/Controllers/RecetaController.php +++ b/app/Http/Controllers/RecetaController.php @@ -16,9 +16,9 @@ class RecetaController extends Controller public function index(): View { //return view('receta.index'); - return view('receta.index', [ - 'recetas' => Receta::with('user')->latest()->get(), - ]); + return view("receta.index", [ + "recetas" => Receta::with("user")->latest()->get(), + ]); } /** @@ -35,12 +35,13 @@ class RecetaController extends Controller public function store(Request $request): RedirectResponse { $validated = $request->validate([ - 'message' => 'required|string|max:255', + "message" => "required|string|max:255", + "title" => "required|string|max:50", ]); - + $request->user()->recetas()->create($validated); - return redirect(route('recetas.index')); + return redirect(route("recetas.index")); } /** @@ -56,9 +57,9 @@ class RecetaController extends Controller */ public function edit(Receta $receta): View { - Gate::authorize('update', $receta); - return view('receta.edit', [ - 'receta' => $receta, + Gate::authorize("update", $receta); + return view("receta.edit", [ + "receta" => $receta, ]); } @@ -67,15 +68,16 @@ class RecetaController extends Controller */ public function update(Request $request, Receta $receta): RedirectResponse { - Gate::authorize('update', $receta); - + Gate::authorize("update", $receta); + $validated = $request->validate([ - 'message' => 'required|string|max:255', + "message" => "required|string|max:255", + "title" => "required|string|max:50", ]); $receta->update($validated); - return redirect(route('recetas.index')); + return redirect(route("recetas.index")); } /** @@ -83,8 +85,8 @@ class RecetaController extends Controller */ public function destroy(Receta $receta): RedirectResponse { - Gate::authorize('delete', $receta); + Gate::authorize("delete", $receta); $receta->delete(); - return redirect(route('recetas.index')); + return redirect(route("recetas.index")); } } diff --git a/app/Http/Controllers/RecetasPublicasController.php b/app/Http/Controllers/RecetasPublicasController.php new file mode 100644 index 0000000..a35ff44 --- /dev/null +++ b/app/Http/Controllers/RecetasPublicasController.php @@ -0,0 +1,25 @@ +orderBy("updated_at", "desc") + ->paginate(5); + return view("partials.recetas_lista", compact("recetas")); + } + + public function mostrarPaginado(int $pag): View + { + $recetas = Receta::Paginate(5); + return view("recetero.index", compact("recetas")); + } +} diff --git a/app/Models/Receta.php b/app/Models/Receta.php index 1d348e6..3018673 100644 --- a/app/Models/Receta.php +++ b/app/Models/Receta.php @@ -11,7 +11,5 @@ class Receta extends Model { return $this->belongsTo(User::class); } - protected $fillable = [ - 'message', - ]; + protected $fillable = ["message", "title"]; } diff --git a/database/migrations/2025_03_03_053355_añadir_titulo_a_receta.php b/database/migrations/2025_03_03_053355_añadir_titulo_a_receta.php new file mode 100644 index 0000000..c520626 --- /dev/null +++ b/database/migrations/2025_03_03_053355_añadir_titulo_a_receta.php @@ -0,0 +1,27 @@ +string("title")->default("[falta titulo]")->after("id"); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table("recetas", function (Blueprint $table) { + $table->dropColumn("title"); + }); + } +}; diff --git a/resources/views/about.blade.php b/resources/views/about.blade.php new file mode 100644 index 0000000..cb479fa --- /dev/null +++ b/resources/views/about.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.public') +@section('content') +
+

Sobre Este Proyecto

+

Este es un proyecto simple tipo crud de un recetero que muestre titulo de recetas y su preparacion. +
Tambien tengo una landing page con paginacion y un buscador. +

+
+@endsection diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php index 7593036..9f5d9ba 100644 --- a/resources/views/layouts/navigation.blade.php +++ b/resources/views/layouts/navigation.blade.php @@ -19,6 +19,10 @@ {{ __('Recetas') }} + + + {{__("Menu Principal")}} + @@ -78,6 +82,10 @@ {{ __('Recetas') }} + + + {{__("Menu Principal")}} + diff --git a/resources/views/layouts/public.blade.php b/resources/views/layouts/public.blade.php new file mode 100644 index 0000000..e000a07 --- /dev/null +++ b/resources/views/layouts/public.blade.php @@ -0,0 +1,46 @@ + + + + + + @yield('title', 'Recetario') + + + + + + +
+

Recetario Fede

+ +
+ + +
+ @yield('content') +
+ + + + + + diff --git a/resources/views/partials/recetas_lista.blade.php b/resources/views/partials/recetas_lista.blade.php new file mode 100644 index 0000000..6273a7f --- /dev/null +++ b/resources/views/partials/recetas_lista.blade.php @@ -0,0 +1,14 @@ +@php + use Illuminate\Support\Str; +@endphp + +@foreach ($recetas as $receta) +
+ +

{{ $receta->title }}

+

{{ Str::limit($receta->message, 20, "...") }}

+
+ Ultima Vez Actualizado: {{ $receta->updated_at }} +
+
+@endforeach diff --git a/resources/views/receta/edit.blade.php b/resources/views/receta/edit.blade.php index 301e09d..aabd085 100644 --- a/resources/views/receta/edit.blade.php +++ b/resources/views/receta/edit.blade.php @@ -3,14 +3,17 @@
@csrf @method('patch') +
{{ __('Guardar') }} - {{ __('Cancelar') }} + {{ __('Cancelar') }}
diff --git a/resources/views/receta/index.blade.php b/resources/views/receta/index.blade.php index 545a9b7..be7fe77 100644 --- a/resources/views/receta/index.blade.php +++ b/resources/views/receta/index.blade.php @@ -1,20 +1,24 @@ -
+
@csrf + {{ __('Publicar Receta') }} -
+
+
@foreach ($recetas as $receta)
- +
@@ -49,7 +53,8 @@ @endif
-

{{ $receta->message }}

+

{{$receta->title}}

+

{{ $receta->message }}

@endforeach diff --git a/resources/views/recetero/index.blade.php b/resources/views/recetero/index.blade.php new file mode 100644 index 0000000..addbefe --- /dev/null +++ b/resources/views/recetero/index.blade.php @@ -0,0 +1,19 @@ +@extends('layouts.public') +@section('content') +
+

Listado de Recetas

+
+ @foreach ($recetas as $receta) +
+

{{ $receta->title }}

+

{{ $receta->message }}

+ Ultima Vez Actualizado: {{ $receta->updated_at }} +
+ @endforeach + +
+ + + {{ $recetas->links() }} +
+@endsection diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index 6623ce5..3f00b36 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -1,62 +1,7 @@ - - - - - - Recetario - - - -
-
-

Recetario Fede

- -
-
- -
-
-

Recetas Destacadas

-
-
-
-
-
-
- -
-

© 2025 Recetario Fede

-
- - +@extends('layouts.public') +@section('content') +
+

Recetas Destacadas

+
Cargando ...
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 96b5eae..cab49b4 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,25 +3,46 @@ use App\Http\Controllers\ProfileController; use Illuminate\Support\Facades\Route; - use App\Http\Controllers\RecetaController; +use App\Http\Controllers\RecetasPublicasController; -Route::get('/', function () { - return view('welcome'); +Route::get("/", function () { + return view("welcome"); }); -Route::get('/dashboard', function () { - return view('dashboard'); -})->middleware(['auth', 'verified'])->name('dashboard'); - -Route::middleware('auth')->group(function () { - Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); - Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); - Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); +Route::get("/about", function () { + return view("about"); }); -Route::resource('recetas', RecetaController::class) - ->only(['index', 'store', 'edit', 'update', 'destroy']) - ->middleware(['auth', 'verified']); +Route::get("/recetero/{pagina}", [ + RecetasPublicasController::class, + "mostrarPaginado", +]); -require __DIR__.'/auth.php'; +Route::get("/dashboard", function () { + return view("dashboard"); +}) + ->middleware(["auth", "verified"]) + ->name("dashboard"); + +Route::middleware("auth")->group(function () { + Route::get("/profile", [ProfileController::class, "edit"])->name( + "profile.edit" + ); + Route::patch("/profile", [ProfileController::class, "update"])->name( + "profile.update" + ); + Route::delete("/profile", [ProfileController::class, "destroy"])->name( + "profile.destroy" + ); +}); + +Route::resource("recetas", RecetaController::class) + ->only(["index", "store", "edit", "update", "destroy"]) + ->middleware(["auth", "verified"]); + +Route::resource("recetaspublicas", RecetasPublicasController::class)->only([ + "index", +]); + +require __DIR__ . "/auth.php";