diff --git a/app/Http/Controllers/Bo/JoinuspageController.php b/app/Http/Controllers/Bo/JoinuspageController.php new file mode 100644 index 0000000..a5e0c62 --- /dev/null +++ b/app/Http/Controllers/Bo/JoinuspageController.php @@ -0,0 +1,91 @@ +authorizeResource(Joinuspage::class); + } + + /** + * Display a listing of the resource. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Contracts\View\View + */ + public function index(Request $request): \Illuminate\Contracts\View\View + { + /** @var \Illuminate\Database\Eloquent\Builder $joinuspageModels */ + $joinuspageModels = Joinuspage::query(); + + /** @var string $search Search field */ + $search = $request->search; + if ($search) { + $this->searchQuery( + $joinuspageModels, + $search, + null, + 'video_url', + ); + } + $searchFields = \implode(', ', [ + Str::ucfirst(trans('validation.attributes.url')) + ]); + + /** Sort columns with a query */ + $this->sortQuery($joinuspageModels); + + /** Custom pagination */ + $joinuspageModels = $this->paginate($joinuspageModels); + + return view('bo.pages.joinuspages.index', compact('joinuspageModels', 'search', 'searchFields')); + } + + /** + * Show the form for editing the specified resource. + * + * @param App\Models\Joinuspage $joinuspage + * @return \Illuminate\Contracts\View\View + */ + public function edit(Joinuspage $joinuspage): \Illuminate\Contracts\View\View + { + return view('bo.pages.joinuspages.edit', ['joinuspageModel' => $joinuspage]); + } + + /** + * Update the specified resource in storage. + * + * @param \App\Http\Requests\Bo\Joinuspages\UpdateJoinuspageRequest $request + * @param \App\Models\Joinuspage $joinuspage + * @return \Illuminate\Http\RedirectResponse + */ + public function update(UpdateJoinuspageRequest $request, Joinuspage $joinuspage): \Illuminate\Http\RedirectResponse + { + return DB::transaction(function () use ($request, $joinuspage) { + $joinuspage->fill($request->validated()); + + if ($joinuspage->saveOrFail()) { + return redirect()->route('bo.joinuspages.edit', $joinuspage) + ->with('success', __('crud.messages.has_been_updated', [ + 'model' => Str::ucfirst(__('models.classes.joinuspage')) + ])); + } + return redirect()->route('bo.joinuspages.edit', $joinuspage) + ->with('error', __('crud.messages.cannot_be_updated', [ + 'model' => Str::ucfirst(__('models.classes.joinuspage')) + ])); + }); + } +} diff --git a/app/Http/Requests/Bo/Joinuspage/StoreJoinuspageRequest.php b/app/Http/Requests/Bo/Joinuspage/StoreJoinuspageRequest.php new file mode 100644 index 0000000..5916a08 --- /dev/null +++ b/app/Http/Requests/Bo/Joinuspage/StoreJoinuspageRequest.php @@ -0,0 +1,30 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'video_url' => 'required|string|between:3,255', + ]; + } +} diff --git a/app/Http/Requests/Bo/Joinuspage/UpdateJoinuspageRequest.php b/app/Http/Requests/Bo/Joinuspage/UpdateJoinuspageRequest.php new file mode 100644 index 0000000..34506a6 --- /dev/null +++ b/app/Http/Requests/Bo/Joinuspage/UpdateJoinuspageRequest.php @@ -0,0 +1,18 @@ + 'commitment', 'product' => 'product', 'convictionpage' => 'conviction page', + 'joinuspage' => 'join us page', ] ]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index aed6654..7f33fd4 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -213,6 +213,7 @@ return [ 'updated_at' => 'updated at', 'username' => 'username', 'year' => 'year', + 'url' => 'URL', ], 'custom' => [ 'of_the' => [ @@ -265,5 +266,6 @@ return [ 'key_together_3' => 'key number for "live together" 3', 'key_together_4' => 'key number for "live together" 4', 'key_territory' => 'key number for "integrate its territory"', + 'video_url' => 'URL of the video', ], ]; diff --git a/resources/lang/fr/models.php b/resources/lang/fr/models.php index cab2280..b240d43 100644 --- a/resources/lang/fr/models.php +++ b/resources/lang/fr/models.php @@ -14,5 +14,6 @@ return [ 'explorerpage' => 'page explorateur', 'product' => 'produit', 'convictionpage' => 'page conviction', + 'joinuspage' => 'page rejoignez-nous' ] ]; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index fcdcd33..f53eda5 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -215,6 +215,7 @@ return [ 'updated_at' => 'mis à jour à', 'username' => 'nom d\'utilisateur', 'year' => 'année', + 'url' => 'URL', ], 'custom' => [ 'of_the' => [ @@ -267,5 +268,6 @@ return [ 'key_together_3' => 'Chiffre clé "vivre ensemble" 3', 'key_together_4' => 'Chiffre clé "vivre ensemble" 4', 'key_territory' => 'Chiffre clé "intégrer son territoire"', + 'video_url' => 'URL de la vidéo', ], ]; diff --git a/resources/views/bo/layouts/nav-list.blade.php b/resources/views/bo/layouts/nav-list.blade.php index 170670f..bf4cbe6 100644 --- a/resources/views/bo/layouts/nav-list.blade.php +++ b/resources/views/bo/layouts/nav-list.blade.php @@ -38,6 +38,7 @@ request()->routeIs('bo.homepages.*') || request()->routeIs('bo.explorerpages.*') || request()->routeIs('bo.convictionpages.*') || + request()->routeIs('bo.joinuspages.*') || request()->routeIs('bo.news.*')) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button" aria-expanded="false"> {{ Str::of(trans_choice('models.classes.static_page', '*'))->title() }} @@ -88,6 +89,15 @@ @endcan + @can('viewAny', \App\Models\Joinuspage::class) +
  • + + {{ Str::of(__('models.classes.joinuspage'))->ucfirst() }} + +
  • + @endcan diff --git a/resources/views/bo/pages/joinuspages/edit.blade.php b/resources/views/bo/pages/joinuspages/edit.blade.php new file mode 100644 index 0000000..bf3d38c --- /dev/null +++ b/resources/views/bo/pages/joinuspages/edit.blade.php @@ -0,0 +1,39 @@ +@extends('bo.layout', ['brParam' => $joinuspageModel]) + +@section('title', trans_choice('crud.meta.title.edit', 0, ['model' => __('models.classes.joinuspage')])) +@section('description', trans_choice('crud.meta.description.edit', 0, ['model' => __('models.classes.joinuspage')])) +@section('breadcrumb', + request()->route()->getName()) + +@section('content') +
    +
    + + + + @include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $joinuspageModel]) +
    +
    +
    + +
    +
    +
    +
    + @csrf + @method('PUT') + @include('bo.pages.joinuspages.form') +
    +
    + +
    +
    +
    +@endsection diff --git a/resources/views/bo/pages/joinuspages/form.blade.php b/resources/views/bo/pages/joinuspages/form.blade.php new file mode 100644 index 0000000..398b183 --- /dev/null +++ b/resources/views/bo/pages/joinuspages/form.blade.php @@ -0,0 +1,53 @@ +
    + {{-- VIDEO URL --}} +
    +
    + {{ Str::ucfirst(__('validation.attributes.url')) }} +
    +
    + @include('bo.partials.inputs.varchar', [ + 'id' => 'joinuspageVideoUrl', + 'label' => __(':field :inter:model', [ + 'field' => Str::ucfirst(__('validation.custom.video_url')), + 'inter' => __('validation.custom.of_the.female'), + 'model' => __('models.classes.joinuspage'), + ]), + 'hasWordCounter' => true, + 'name' => 'video_url', + 'required' => true, + 'model' => $joinuspageModel ?? null, + 'helper' => __('validation.between.string', [ + 'attribute' => __(':field :inter:model', [ + 'field' => __('validation.custom.video_url'), + 'inter' => __('validation.custom.of_the.female'), + 'model' => __('models.classes.joinuspage'), + ]), + 'min' => 3, + 'max' => 255, + ]), + 'placeholder' => __('crud.placeholders.beautiful', ['field' => __('validation.attributes.url')]), + ]) +
    +
    +
    +
    +
    +
    +

    * {{ __('crud.helpers.required_fields') }}

    +
    +
    +
    + +@push('scripts') + +@endpush diff --git a/resources/views/bo/pages/joinuspages/index-list.blade.php b/resources/views/bo/pages/joinuspages/index-list.blade.php new file mode 100644 index 0000000..af0a84f --- /dev/null +++ b/resources/views/bo/pages/joinuspages/index-list.blade.php @@ -0,0 +1,44 @@ + + @if (count($joinuspageModels) > 0) + + @include('bo.modules.table-col-sorter', [ + 'cols' => [ + 'video_url' => Str::ucfirst(__('validation.attributes.url')), + 'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')), + ], + ]) + + + @foreach ($joinuspageModels as $joinuspageModel) + + + + + + @endforeach + + @else + + + + @endif +
    {{ $joinuspageModel->video_url }} + {{ $joinuspageModel->updated_at->isoFormat('LLLL') }} + + @canAny(['update'], $joinuspageModel) +
    + @can('update', $joinuspageModel) + + + + @endcan +
    + @else + + + + @endcan +
    {{ __('crud.other.no_model_found', ['model' => __('models.classes.joinuspage')]) }}
    diff --git a/resources/views/bo/pages/joinuspages/index.blade.php b/resources/views/bo/pages/joinuspages/index.blade.php new file mode 100644 index 0000000..089e0a6 --- /dev/null +++ b/resources/views/bo/pages/joinuspages/index.blade.php @@ -0,0 +1,15 @@ +@extends('bo.layout') + +@section('title', Str::of(__('models.classes.joinuspage'))->ucfirst()) +@section('description', trans_choice('crud.meta.description.index', 0, ['model' => Str::plural(__('models.classes.joinuspage'))])) + +@section('content') +
    + @include('modules.breadcrumbs.breadcrumb-body') +
    + @include('bo.modules.search-bar') +
    + @include('bo.pages.joinuspages.index-list') +
    + {{ $joinuspageModels->links() }} +@endsection diff --git a/routes/breadcrumbs-bo.php b/routes/breadcrumbs-bo.php index 638d466..01b9caf 100644 --- a/routes/breadcrumbs-bo.php +++ b/routes/breadcrumbs-bo.php @@ -5,6 +5,7 @@ use App\Models\Commitment; use App\Models\Convictionpage; use App\Models\Explorerpage; use App\Models\Homepage; +use App\Models\Joinuspage; use App\Models\Range; use App\Models\News; use App\Models\Product; @@ -152,6 +153,18 @@ Breadcrumbs::for('bo.homepages.edit', function (Generator $trail, Homepage $home $trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.homepages.edit', $homepage)); }); +// * JOINUSPAGES +Breadcrumbs::for('bo.joinuspages.index', function (Generator $trail) { + $trail->push( + Str::of(trans('models.classes.joinuspage'))->ucfirst(), + route('bo.joinuspages.index', ['sort_col' => 'updated_at', 'sort_way' => 'desc']) + ); +}); +Breadcrumbs::for('bo.joinuspages.edit', function (Generator $trail, Joinuspage $joinuspage) { + $trail->parent('bo.joinuspages.index'); + $trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.joinuspages.edit', $joinuspage)); +}); + // * EXPLORERPAGES Breadcrumbs::for('bo.explorerpages.index', function (Generator $trail) { $trail->push( diff --git a/routes/web-bo.php b/routes/web-bo.php index 95d38a2..375da84 100644 --- a/routes/web-bo.php +++ b/routes/web-bo.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Bo\ConvictionpageController; use App\Http\Controllers\Bo\DashboardController; use App\Http\Controllers\Bo\ExplorerpageController; use App\Http\Controllers\Bo\HomepageController; +use App\Http\Controllers\Bo\JoinuspageController; use App\Http\Controllers\Bo\NewsController; use App\Http\Controllers\Bo\ProductController; use App\Http\Controllers\Bo\StaticPageController; @@ -149,6 +150,9 @@ Route::prefix('bo') // * CONVICTIONPAGES Route::resource('convictionpages', ConvictionpageController::class)->only(['index', 'edit', 'update']); + // * JOINUSPAGES + Route::resource('joinuspages', JoinuspageController::class)->only(['index', 'edit', 'update']); + Route::middleware('can:isConceptor')->group(function () { // * ACTIVITY LOGS. Route::resource('activity_logs', ActivityLogsController::class)->only(['index', 'show']);