add commitments to explorer page selection

This commit is contained in:
Nicolas Demangeat 2023-10-24 10:08:32 +02:00
parent a17953deb1
commit d97071b740
7 changed files with 76 additions and 23 deletions

View file

@ -7,12 +7,14 @@ use App\Http\Requests\Bo\Commitments\StoreCommitmentRequest;
use App\Http\Requests\Bo\Commitments\UpdateCommitmentRequest;
use App\Models\Commitment;
use App\Traits\Controllers\ChangesModelOrder;
use App\Traits\Controllers\UpdateModelPublished;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
class CommitmentController extends Controller
{
use UpdateModelPublished;
use ChangesModelOrder;
/**

View file

@ -4,6 +4,7 @@ namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\Explorerpage\UpdateExplorerpageRequest;
use App\Models\Commitment;
use App\Models\Explorerpage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -63,7 +64,11 @@ class ExplorerpageController extends Controller
*/
public function edit(Explorerpage $explorerpage): \Illuminate\Contracts\View\View
{
return view('bo.pages.explorerpages.edit', ['explorerpageModel' => $explorerpage]);
$commitmentModels = Commitment::all();
return view('bo.pages.explorerpages.edit', [
'explorerpageModel' => $explorerpage,
'commitmentModels' => $commitmentModels,
]);
}
/**
@ -78,7 +83,8 @@ class ExplorerpageController extends Controller
Explorerpage $explorerpage
): \Illuminate\Http\RedirectResponse {
return DB::transaction(function () use ($request, $explorerpage) {
$explorerpage->fill($request->validated());
$explorerpage->fill($request->safe()->except('commitments'));
$explorerpage->commitments()->sync(\collect($request->validated('commitments'))->pluck('id'));
if ($explorerpage->saveOrFail()) {
return redirect()->route('bo.explorerpages.edit', $explorerpage)

View file

@ -39,12 +39,15 @@ class StoreExplorerpageRequest extends FormRequest
public function rules()
{
$rules = [
'picture_1_alt' => 'required|string|between:3,255',
'picture_1_title' => 'required|string|between:3,255',
'picture_2_alt' => 'required|string|between:3,255',
'picture_2_title' => 'required|string|between:3,255',
'picture_3_alt' => 'required|string|between:3,255',
'picture_3_title' => 'required|string|between:3,255',
'picture_1_alt' => 'required|string|between:3,255',
'picture_1_title' => 'required|string|between:3,255',
'picture_2_alt' => 'required|string|between:3,255',
'picture_2_title' => 'required|string|between:3,255',
'picture_3_alt' => 'required|string|between:3,255',
'picture_3_title' => 'required|string|between:3,255',
'commitments' => 'required|array',
'commitments.*.id' => 'required|exists:commitments,id',
];
return \array_merge(

View file

@ -31,18 +31,14 @@
</a>
</li>
@endcan
@can('viewAny', \App\Models\Convictionpage::class)
<li>
<a class="nav-link @if (request()->routeIs('bo.convictionpages.*')) active @endif" data-bs-toggle="tooltip"
href="{{ route('bo.convictionpages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.convictionpage'))->plural()]) }}">
{{ Str::of(__('models.classes.convictionpage'))->plural()->ucfirst() }}
</a>
</li>
@endcan
<li class="nav-item">
<div class="dropdown">
<a class="nav-link @if (request()->routeIs('bo.static_pages.*') || request()->routeIs('bo.static_pages.*')) active @endif dropdown-toggle" data-bs-toggle="dropdown" type="button"
<a class="nav-link @if (request()->routeIs('bo.static_pages.*') ||
request()->routeIs('bo.news.*') ||
request()->routeIs('bo.homepages.*') ||
request()->routeIs('bo.explorerpages.*') ||
request()->routeIs('bo.convictionpages.*') ||
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() }}
</a>
@ -83,6 +79,15 @@
</a>
</li>
@endcan
@can('viewAny', \App\Models\Convictionpage::class)
<li>
<a class="nav-link @if (request()->routeIs('bo.convictionpages.*')) active @endif" data-bs-toggle="tooltip"
href="{{ route('bo.convictionpages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => Str::of(__('models.classes.convictionpage'))->plural()]) }}">
{{ Str::of(__('models.classes.convictionpage'))->plural()->ucfirst() }}
</a>
</li>
@endcan
</ol>
</div>
</li>

View file

@ -5,8 +5,9 @@
'cols' => [
'title' => Str::ucfirst(__('validation.attributes.title')),
'picture' => Str::ucfirst(__('validation.custom.picture')),
'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')),
'order' => Str::ucfirst(__('validation.custom.order')),
'published' => Str::ucfirst(__('validation.custom.activated')),
'updated_at' => Str::ucfirst(__('validation.attributes.updated_at')),
],
])
</thead>
@ -18,9 +19,6 @@
<img src="{{ asset($commitmentModel->picture) }}" title="{{ $commitmentModel->picture_title }}"
alt="{{ $commitmentModel->picture_alt }}" height="50px">
</td>
<td class="text-center align-middle">
<span class="badge bg-secondary">{{ $commitmentModel->updated_at->isoFormat('LLLL') }}</span>
</td>
@php
$routeName = request()
->route()
@ -33,6 +31,13 @@
'models' => $commitmentModels,
])
@endif
@include('bo.modules.change-published-status', [
'routeName' => 'commitments',
'model' => $commitmentModel,
])
<td class="text-center align-middle">
<span class="badge bg-secondary">{{ $commitmentModel->updated_at->isoFormat('LLLL') }}</span>
</td>
<td class="text-end align-middle">
@canAny(['delete', 'duplicate', 'update'], $commitmentModel)
<form class="btn-group confirmDeleteTS" action="{{ route('bo.commitments.destroy', $commitmentModel) }}"

View file

@ -221,6 +221,36 @@
</div>
</fieldset>
</div>
{{-- COMMITMENTS --}}
<div class="col-12 mb-3">
<fieldset class="h-100 border p-3">
<legend>{{ Str::of(__('models.classes.commitment'))->plural()->ucfirst() }}</legend>
<div class="row">
<div class="col-12">
@include('bo.partials.inputs.pivot-belongsToMany', [
'id' => 'explorerpageCommitments',
'label' => __(':field :inter:model', [
'field' => Str::of(__('models.classes.commitment'))->plural()->ucfirst(),
'inter' => __('validation.custom.of_the.female'),
'model' => __('models.classes.explorerpage'),
]),
'name' => 'commitments',
'required' => false,
'model' => $explorerpageModel ?? null,
'itemsList' => $commitmentModels ?? null,
'itemLimit' => [3, 12],
'placeholder' => 'Rechercher un engagement',
'helper' => __('Séléctionnez le ou les :model1 à associer à la :model2 (minimum :min, maximum :max)', [
'model1' => Str::plural(__('models.classes.commitment')),
'model2' => __('models.classes.explorerpage'),
'min' => 3,
'max' => 12,
]),
])
</div>
</div>
</fieldset>
</div>
<div class="row">
<div class="col text-center">
<p><b>* {{ __('crud.helpers.required_fields') }}</b></p>

View file

@ -51,10 +51,12 @@ Route::prefix('bo')
Route::get('/commitments/{commitment}/duplicate', [
CommitmentController::class, 'duplicate'
])->name('commitments.duplicate');
// Change order.
Route::patch('/commitments/{commitment}/change-order/{direction}', [
CommitmentController::class, 'changeOrder'
])->where('direction', 'up|down')->name('commitments.change-order');
Route::patch('/commitments/{commitment}/change-published', [
CommitmentController::class, 'changePublished'
])->name('commitments.change-published');
// * STATIC_PAGES
Route::resource('pages', StaticPageController::class)