refactor: ♻️ upgrade sidemenu bo to remove static_pages & configuration buttons

This commit is contained in:
Alexis Gousseau 2024-06-06 16:12:36 +02:00
parent 05e667df5b
commit a70f082d5d
73 changed files with 318 additions and 561 deletions

View file

@ -24,7 +24,7 @@ enum SettingsType: int
private const LABELS = [
self::mainMenu->name => 'Menu principal',
self::hotNews->name => 'Infos chaudes',
self::recipes->name => 'Listage des recettes',
self::recipe->name => 'Fiche recette',
self::recipes->name => 'Page des recettes',
self::recipe->name => 'Page d\'une recette',
];
}

View file

@ -25,7 +25,7 @@ enum StaticPageType: int
self::legals->name => 'Mentions légales',
self::confidentiality->name => 'Confidentialité',
self::recruitment->name => 'Recrutement',
self::story->name => 'Qui sommes nous ?',
self::story->name => 'Qui sommes-nous ?',
self::saga->name => 'Saga publicitaire',
];
}

View file

@ -91,12 +91,12 @@ class ConsumptionMomentController extends Controller
if ($consumptionMoment->saveOrFail()) {
return redirect()->route('bo.consumption_moments.edit', $consumptionMoment)
->with('success', __('crud.messages.has_been_created', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
}
return redirect()->back()
->with('error', __('crud.messages.cannot_be_created', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
});
}
@ -129,12 +129,12 @@ class ConsumptionMomentController extends Controller
if ($consumptionMoment->saveOrFail()) {
return redirect()->route('bo.consumption_moments.edit', $consumptionMoment)
->with('success', __('crud.messages.has_been_updated', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
}
return redirect()->route('bo.consumption_moments.edit', $consumptionMoment)
->with('error', __('crud.messages.cannot_be_updated', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
});
}
@ -153,12 +153,12 @@ class ConsumptionMomentController extends Controller
if ($consumptionMoment->deleteOrFail()) {
return redirect()->route('bo.consumption_moments.index', $previousQueries)
->with('success', __('crud.messages.has_been_deleted', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
}
return redirect()->back()
->with('error', __('crud.messages.cannot_be_deleted', [
'model' => Str::ucfirst(__('models.classes.consumption_moment'))
'model' => Str::ucfirst(trans_choice('models.classes.consumption_moment', 1))
]));
}

View file

@ -7,8 +7,6 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\GeneralSettings\UpdateGeneralSettingRequest;
use App\Lib\Helpers\FileStorageHelper;
use App\Models\GeneralSetting;
use Illuminate\Database\Query\Builder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
@ -22,42 +20,6 @@ class GeneralSettingController extends Controller
$this->authorizeResource(GeneralSetting::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 $query */
$query = GeneralSetting::query();
/** @var string $search Search field */
$search = $request->search;
if ($search) {
$this->searchQuery(
$query,
$search,
fn (Builder $q) => $q->whereIn('type', collect(SettingsType::all())
->filter(fn (SettingsType $type) => str($type->label())->contains($search) or
str($type->value())->contains($search))),
'type',
);
}
$searchFields = \implode(', ', [
trans('validation.custom.general_setting_type'),
]);
/** Sort columns with a query */
$this->sortQuery($query);
/** Custom pagination */
$generalSettingsModelList = $this->paginate($query);
return view('bo.pages.general_settings.index', compact('generalSettingsModelList', 'search', 'searchFields'));
}
/**
* Show the form for editing the specified resource.
*

View file

@ -5,7 +5,6 @@ namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\StaticPages\UpdateStaticPageRequest;
use App\Models\StaticPage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
@ -19,40 +18,6 @@ class StaticPageController extends Controller
$this->authorizeResource(StaticPage::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 $query */
$query = StaticPage::query();
/** @var string $search Search field */
$search = $request->search;
if ($search) {
$this->searchQuery(
$query,
$search,
null,
'title',
);
}
$searchFields = \implode(', ', [
trans('validation.attributes.title'),
]);
/** Sort columns with a query */
$this->sortQuery($query);
/** Custom pagination */
$staticPageModelList = $this->paginate($query);
return view('bo.pages.static_pages.index', compact('staticPageModelList', 'search', 'searchFields'));
}
/**
* Show the form for editing the specified resource.
*

View file

@ -3,9 +3,11 @@
namespace App\Providers;
use App\Enums\Settings\SettingsType;
use App\Enums\StaticPageType;
use App\Models\GeneralSetting;
use App\Models\Meat;
use App\Models\Range;
use App\Models\StaticPage;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\File;
@ -18,9 +20,11 @@ class ViewServiceProvider extends ServiceProvider
* Bootstrap any application services.
*
* @return void
* phpcs:disable Generic.Metrics.CyclomaticComplexity.TooHigh
*/
public function boot(): void
{
// phpcs:enable
$appInfos = Cache::remember('composer', 360, function () {
return json_decode(File::get(\app_path('../composer.json')));
});
@ -54,37 +58,39 @@ class ViewServiceProvider extends ServiceProvider
})());
View::share('menuNodeDataList', app('menuNodeDataList'));
// * Inject first meat and range : needed for the bo menu.
View::share('firstMeat', (function () {
/** @var \App\Models\Meat|null */
$firstMeat = Meat::query()->first();
return (!$firstMeat) ? null : $firstMeat;
})());
View::share('firstRange', (function () {
/** @var \App\Models\Range|null */
$firstRange = Range::query()->first();
return (!$firstRange) ? null : $firstRange;
})());
// * Inject configuration model
View::share('mainMenuSettingModel', (function () {
/** @var \App\Models\GeneralSetting|null */
$mainMenuSettingModel = GeneralSetting::query()->where('type', SettingsType::mainMenu)->first();
return (!$mainMenuSettingModel) ? null : $mainMenuSettingModel;
return GeneralSetting::query()->where('type', SettingsType::mainMenu)->first() ?: null;
})());
View::share('hotNewsSettingModel', (function () {
/** @var \App\Models\GeneralSetting|null */
$hotNewsSettingModel = GeneralSetting::query()->where('type', SettingsType::hotNews)->first();
return (!$hotNewsSettingModel) ? null : $hotNewsSettingModel;
return GeneralSetting::query()->where('type', SettingsType::hotNews)->first() ?: null;
})());
View::share('recipeSettingModel', (function () {
/** @var \App\Models\GeneralSetting|null */
$recipeSettingModel = GeneralSetting::query()->where('type', SettingsType::recipe)->first();
return (!$recipeSettingModel) ? null : $recipeSettingModel;
return GeneralSetting::query()->where('type', SettingsType::recipe)->first() ?: null;
})());
View::share('recipesSettingModel', (function () {
return GeneralSetting::query()->where('type', SettingsType::recipes)->first() ?: null;
})());
// * Inject some data for the bo menu.
View::share('firstMeat', (function () {
return Meat::query()->first() ?: null;
})());
View::share('firstRange', (function () {
return Range::query()->first() ?: null;
})());
View::share('mainMenuMeatModels', (function () {
return Meat::query()->where('published', true)->get();
})());
View::share('storyStaticPageModel', (function () {
return StaticPage::query()->where('type', StaticPageType::story)->first() ?: null;
})());
View::share('recruitmentStaticPageModel', (function () {
return StaticPage::query()->where('type', StaticPageType::recruitment)->first() ?: null;
})());
View::share('sagaStaticPageModel', (function () {
return StaticPage::query()->where('type', StaticPageType::saga)->first() ?: null;
})());
} //end if
}
}

View file

@ -11,7 +11,7 @@ return [
'save' => 'sauvegarder',
'edit' => 'mettre à jour',
'view' => 'aperçu',
'order_submodels' => 'ordonner les sous-élements',
'order_submodels' => 'ordonnancement des sous-élements',
],
'helpers' => [
@ -24,7 +24,6 @@ return [
'delete_model' => 'Supprimer :model',
'save_model' => 'Sauvegarder :model',
'edit_model' => 'Mettre à jour :model',
'order_submodels' => 'Modifier l\'ordre des :model',
'no_results' => 'Aucun résultat pour :model',
'publish' => 'Publié',
'unpublish' => 'Dépublié',

View file

@ -19,7 +19,7 @@ return [
'submeat' => 'sous-viande',
'label' => 'label',
'demarche' => 'démarche',
'consumption_moment' => 'moment de consommation',
'consumption_moment' => 'moment de consommation|moments de consommation',
'video' => 'vidéo',
'product' => 'produit',
'recipe' => 'recette',

View file

@ -20,7 +20,7 @@ body {
left: 0;
overflow-y: auto;
@include media-breakpoint-up(md) {
@include media-breakpoint-up(lg) {
z-index: 1;
height: calc(100vh - #{$bo-header-height});
}
@ -28,7 +28,7 @@ body {
.sidemenu {
height: calc(100vh - #{$bo-header-height});
@include media-breakpoint-up(md) {
@include media-breakpoint-up(lg) {
height: fit-content;
}
}

View file

@ -1,3 +1,6 @@
@use 'sass:map';
@import 'bootstrap/scss/functions';
// Override bootstrap colors
$primary: $color-primary;
$secondary: $color-secondary;
@ -22,3 +25,13 @@ $theme-colors: (
$font-family-base: $font-default-family-base;
$font-size-base: $font-default-size-base;
$line-height-base: $line-default-height-base;
$grid-breakpoints: map.merge((
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
), (
xxxl: 1700px,
))

View file

@ -15,7 +15,7 @@
id="main-container">
<div class="row justify-content-center @guest w-100 mx-auto @endguest">
@include('bo.layouts.sidemenu')
<div class="@auth('backend') col-md-8 col-lg-9 col-xxl-10 ms-sm-auto p-3 py-2 py-md-3 @else col px-md-4 pb-5 @endauth">
<div class="@auth('backend') col-12 col-lg-8 col-xl-9 col-xxxl-10 ms-sm-auto p-3 py-2 py-md-3 @else col px-md-4 pb-5 @endauth">
@auth('backend')
@include('modules.flash-messages')
@endauth

View file

@ -1,14 +1,16 @@
<header class="navbar @auth('backend') navbar-expand-md @else navbar-expand @endauth position-fixed fixed-top bg-body-tertiary shadow-sm"
<header
class="navbar @auth('backend') navbar-expand-lg @else navbar-expand @endauth position-fixed fixed-top bg-body-tertiary shadow-sm"
id="top-navbar">
<div class="container-fluid">
{{-- BUTTON MENU NAVIGATION --}}
@auth('backend')
<button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#menuNavigation" type="button" aria-controls="menuNavigation"
aria-expanded="false" aria-label="{{ __('Afficher/Masquer le menu de navigation') }}">
<button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#menuNavigation" type="button"
aria-controls="menuNavigation" aria-expanded="false"
aria-label="{{ __('Afficher/Masquer le menu de navigation') }}">
<i class="fa-solid fa-ellipsis-vertical fa-lg"></i>
</button>
@endauth
<a class="navbar-brand fs-4 fw-bold @canAny(['isConceptor', 'viewAny'], \App\Models\User::class) border-md-end @endcan me-md-2 pe-md-3 m-0 p-0"
<a class="navbar-brand fs-4 fw-bold @canAny(['isConceptor', 'viewAny'], \App\Models\User::class) border-lg-end @endcan me-lg-2 pe-lg-3 m-0 p-0"
data-bs-toggle="tooltip" data-bs-placement="bottom" href="{{ route('fo.home.show') }}"
title="{{ __('Accéder au front du projet') }}" target="_blank">
{{ config('app.name', 'Laravel') }}
@ -30,18 +32,6 @@
<!-- Left Side Of Navbar -->
@canAny(['isConceptor', 'viewAny'], \App\Models\User::class)
<ul class="navbar-nav me-auto">
@can('viewAny', \App\Models\GeneralSetting::class)
<li class="nav-item">
<a @class([
'nav-link d-flex align-items-center h-100',
'active' => request()->routeIs('bo.general_settings.*'),
])
data-bs-toggle="tooltip" href="{{ route('bo.general_settings.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.general_setting', \INF)]) }}">
{{ str(trans_choice('models.classes.general_setting', \INF))->ucfirst() }}
</a>
</li>
@endcan
@can('viewAny', \App\Models\User::class)
<li class="nav-item">
<a @class([
@ -71,54 +61,71 @@
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ms-auto">
<!-- Bootstrap themes -->
<li class="nav-item dropdown @auth('backend') border-md-end @endauth">
<li class="nav-item dropdown @auth('backend') border-lg-end @endauth">
<button class="btn nav-link dropdown-toggle d-flex align-items-center h-100 flex-row border-0 pe-3"
data-bs-toggle="dropdown" type="button" aria-expanded="false" aria-label="Changer les couleurs de l'interface du back-office">
<span class="fa-solid fa-paint-roller"></span>
<i class="d-none d-xl-block fa-solid fa-paint-roller"></i>
<span class="d-xl-none">{{ __('Thème') }}</span>
</button>
<form class="dropdown-menu dropdown-menu-end text-center" id="theme-selector" action="{{ route('bo.theme.set') }}"
method="POST">
@push('scripts')
<script @if (!empty($nonce)) nonce="{{ $nonce }}" @endif> document.addEventListener('DOMContentLoaded', function() { const themeSelector = document.getElementById('theme-selector'); if (themeSelector) { themeSelector.addEventListener('change', function() { this.submit(); }); } }); </script> @endpush @csrf @use('\App\Enums\Theme\BootstrapThemeEnum', 'BootstrapThemeEnum') @foreach (BootstrapThemeEnum::toArray() as $key => $bootstrapTheme) <input class="btn-check"
id="theme{{ $key }}" name="theme" type="radio" value="{{ $bootstrapTheme->value }}">
<label for="theme{{ $key }}" @class([
'dropdown-item btn btn-secondary py-2',
'active' => !is_null(Cache::get('theme'))
? $bootstrapTheme->value === intval(Cache::get('theme'))
: $bootstrapTheme->value === BootstrapThemeEnum::light->value,
])>{{ str($bootstrapTheme->label)->ucFirst() }}</label>
@endforeach
</form>
</li>
<!-- Authentication Links -->
@auth('backend')
<li class="nav-item dropdown">
<button class="btn nav-link dropdown-toggle d-flex align-items-center h-100 ps-md-3 flex-row border-0" id="navbarDropdown"
data-bs-toggle="dropdown" type="button">
<div class="d-flex flex-column align-items-start align-items-md-end lh-1">
<span
class="fw-bold">{{ auth('backend')->user()->first_name }}&nbsp;{{ auth('backend')->user()->last_name }}</span>
<small class="text-secondary-body">{{ str(auth('backend')->user()->role->label())->ucFirst() }}</small>
</div>
</button>
<div class="dropdown-menu dropdown-menu-end m-0 text-center" aria-labelledby="navbarDropdown">
<a class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip" data-bs-placement="left"
href="{{ route('bo.users.edit', auth('backend')->user()->getKey()) }}" title="{{ __('Accéder à son profile') }}">
{{ __('Profile') }}
</a>
<hr class="dropdown-divider m-0">
<form class="m-0 text-center" id="logout-form" action="{{ route('bo.logout') }}" method="POST">
<script @if (!empty($nonce)) nonce="{{ $nonce }}" @endif>
document.addEventListener('DOMContentLoaded', function() {
const themeSelector = document.getElementById('theme-selector');
if (themeSelector) {
themeSelector.addEventListener('change', function() {this.submit(); });
}
});
</script>
@endpush
@csrf
<button class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip" data-bs-placement="left"
type="submit" title="{{ __('Se déconnecter du back-office') }}">
{{ __('Déconnexion') }}
</button>
@use('\App\Enums\Theme\BootstrapThemeEnum', 'BootstrapThemeEnum')
@foreach (BootstrapThemeEnum::toArray() as $key => $bootstrapTheme)
<input class="btn-check" id="theme{{ $key }}" name="theme" type="radio"
value="{{ $bootstrapTheme->value }}">
<label for="theme{{ $key }}" @class([
'dropdown-item btn btn-secondary py-2',
'active' => !is_null(Cache::get('theme'))
? $bootstrapTheme->value === intval(Cache::get('theme'))
: $bootstrapTheme->value === BootstrapThemeEnum::light->value,
])>{{ str($bootstrapTheme->label)->ucFirst() }}</label>
@endforeach
</form>
</div>
</li>
@endauth
</ul>
</div>
</div>
</li>
<!-- Authentication Links -->
@auth('backend')
<li class="nav-item dropdown">
<button class="btn nav-link dropdown-toggle d-flex align-items-center h-100 ps-lg-3 flex-row border-0"
id="navbarDropdown" data-bs-toggle="dropdown" type="button">
<div class="d-flex flex-column align-items-start align-items-lg-end lh-1">
<span class="fw-bold">
{{ auth('backend')->user()->first_name }}&nbsp;{{ auth('backend')->user()->last_name }}
</span>
<small class="text-secondary-body">
{{ str(auth('backend')->user()->role->label())->ucFirst() }}
</small>
</div>
</button>
<div class="dropdown-menu dropdown-menu-end m-0 text-center" aria-labelledby="navbarDropdown">
<a class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip"
data-bs-placement="left" href="{{ route('bo.users.edit', auth('backend')->user()->getKey()) }}"
title="{{ __('Accéder à son profile') }}">
{{ __('Profile') }}
</a>
<hr class="dropdown-divider m-0">
<form class="m-0 text-center" id="logout-form" action="{{ route('bo.logout') }}" method="POST">
@csrf
<button class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip"
data-bs-placement="left" type="submit" title="{{ __('Se déconnecter du back-office') }}">
{{ __('Déconnexion') }}
</button>
</form>
</div>
</li>
@endauth
</ul>
</div>
</div>
</div>
</header>

View file

@ -1,6 +1,6 @@
@use('\App\Enums\Approaches\ApproachTypeEnum', 'ApproachTypeEnum')
@auth('backend')
<nav class="col-md-4 col-lg-3 col-xxl-2 d-md-block bg-body-tertiary sidebar collapse overflow-x-visible"
<nav class="col-lg-4 col-xl-3 col-xxxl-2 d-lg-block bg-body-tertiary sidebar collapse overflow-x-visible"
id="menuNavigation">
<div class="sidemenu py-2">
{{-- HOME --}}
@ -15,21 +15,6 @@
])></i>
{{ __('Accueil administration') }}
</a>
{{-- STATIC PAGES --}}
<a data-bs-toggle="tooltip" href="{{ route('bo.static_pages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.static_page', \INF)]) }}"
role="button" @class([
'btn btn-primary w-100 text-start mt-1',
'fw-bold active' => request()->routeIs('bo.static_pages.*'),
])>
<i @class([
"fa-solid fa-file me-1 fa-fw",
'fa-lg' => request()->routeIs('bo.static_pages.*')
])></i>
{{ str(trans_choice('models.classes.static_page', \INF))->ucFirst() }}
</a>
{{-- HOME PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
@ -50,8 +35,8 @@
{{ __('Accueil du site') }}
</button>
<ul class="dropdown-menu">
{{-- MAIN MENU --}}
<li class="py-1">
{{-- MAIN MENU --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->is('bo/general_settings/1/edit')
@ -64,8 +49,8 @@
])></i> {{ $mainMenuSettingModel->type->label() }}
</a>
</li>
{{-- MAIN CARROUSELS --}}
<li class="py-1">
{{-- MAIN CARROUSELS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.main_slides.*')
@ -79,8 +64,8 @@
{{ str(__('models.classes.main_slide'))->ucFirst() }}
</a>
</li>
{{-- HOT NEWS --}}
<li class="py-1">
{{-- HOT NEWS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->is('bo/general_settings/2/edit')
@ -94,8 +79,8 @@
{{ $hotNewsSettingModel->type->label() }}
</a>
</li>
{{-- DEMARCHES CARROUSELS --}}
<li class="py-1">
{{-- DEMARCHES CARROUSELS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.demarche_slides.*')
@ -111,23 +96,39 @@
</li>
</ul>
</div>
{{-- WHO ARE WE PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
'btn btn-primary text-start w-100 dropdown-toggle mt-1',
'fw-bold active' =>
url()->current() === route('bo.static_pages.edit', $storyStaticPageModel->type->value()) ||
request()->routeIs('bo.key_numbers.*'),
])>
<i @class([
"fa-solid fa-circle-question fa-fw",
'fa-lg' => request()->routeIs('bo.key_numbers.*')
'fa-lg' =>
url()->current() === route('bo.static_pages.edit', $storyStaticPageModel->type->value()) ||
request()->routeIs('bo.key_numbers.*')
])></i>
{{ __('Qui sommes nous ?') }}
</button>
<ul class="dropdown-menu">
{{-- WHO ARE WE PAGE --}}
<li class="py-1">
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => url()->current() === route('bo.static_pages.edit', $storyStaticPageModel->type->value())
]) data-bs-toggle="tooltip" href="{{ route('bo.static_pages.edit', $storyStaticPageModel) }}"
title="{{ __('crud.helpers.update_model', ['model' => $storyStaticPageModel->type->label()]) }}">
<i @class([
"fa-solid fa-file fa-fw",
'fa-lg' => url()->current() === route('bo.static_pages.edit', $storyStaticPageModel->type->value())
])></i>
{{ sprintf('Page %s', $storyStaticPageModel->type->label()) }}
</a>
</li>
{{-- KEYNUMBERS --}}
<li class="py-1">
{{-- KEYNUMBERS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.key_numbers.*')
@ -143,23 +144,39 @@
</li>
</ul>
</div>
{{-- ADVERTISING SAGA PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
'btn btn-primary text-start w-100 dropdown-toggle mt-1',
'fw-bold active' =>
url()->current() === route('bo.static_pages.edit', $sagaStaticPageModel->type->value()) ||
request()->routeIs('bo.videos.*'),
])>
<i @class([
"fa-solid fa-rectangle-ad fa-fw",
'fa-lg' => request()->routeIs('bo.videos.*')
'fa-lg' =>
url()->current() === route('bo.static_pages.edit', $sagaStaticPageModel->type->value()) ||
request()->routeIs('bo.videos.*')
])></i>
&nbsp;{{ __('Saga publicitaire') }}
</button>
<ul class="dropdown-menu">
{{-- ADVERTISING SAGA PAGE --}}
<li class="py-1">
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => url()->current() === route('bo.static_pages.edit', $sagaStaticPageModel->type->value())
]) data-bs-toggle="tooltip" href="{{ route('bo.static_pages.edit', $sagaStaticPageModel) }}"
title="{{ __('crud.helpers.update_model', ['model' => $sagaStaticPageModel->type->label()]) }}">
<i @class([
"fa-solid fa-file fa-fw",
'fa-lg' => url()->current() === route('bo.static_pages.edit', $sagaStaticPageModel->type->value())
])></i>
{{ sprintf('Page %s', $sagaStaticPageModel->type->label()) }}
</a>
</li>
{{-- VIDEOS --}}
<li class="py-1">
{{-- VIDEOS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.videos.*')
@ -170,31 +187,46 @@
"fa-solid fa-film me-1 fa-fw",
'fa-lg' => request()->routeIs('bo.videos.*')
])></i>
&nbsp;{{ str(__('models.classes.video'))->ucFirst() }}
&nbsp;{{ str(__('models.classes.video'))->ucFirst()->plural() }}
</a>
</li>
</ul>
</div>
{{-- RECRUITMENT PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
'btn btn-primary text-start w-100 dropdown-toggle mt-1',
'fw-bold active' =>
url()->current() === route('bo.static_pages.edit', $recruitmentStaticPageModel->type->value()) ||
request()->routeIs('bo.professions.*') ||
request()->routeIs('bo.brand_advantages.*'),
])>
<i @class([
"fa-solid fa-briefcase fa-fw",
'fa-lg' =>
url()->current() === route('bo.static_pages.edit', $recruitmentStaticPageModel->type->value()) ||
request()->routeIs('bo.professions.*') ||
request()->routeIs('bo.brand_advantages.*'),
])></i>
&nbsp;{{ __('Recrutement') }}
</button>
<ul class="dropdown-menu">
{{-- RECRUITMENT PAGE --}}
<li class="py-1">
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => url()->current() === route('bo.static_pages.edit', $recruitmentStaticPageModel->type->value())
]) data-bs-toggle="tooltip" href="{{ route('bo.static_pages.edit', $recruitmentStaticPageModel) }}"
title="{{ __('crud.helpers.update_model', ['model' => $recruitmentStaticPageModel->type->label()]) }}">
<i @class([
"fa-solid fa-file fa-fw",
'fa-lg' => url()->current() === route('bo.static_pages.edit', $recruitmentStaticPageModel->type->value())
])></i>
{{ sprintf('Page %s', $recruitmentStaticPageModel->type->label()) }}
</a>
</li>
{{-- PROFESSIONS --}}
<li class="py-1">
{{-- PROFESSIONS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.professions.*')
@ -205,11 +237,11 @@
"fa-solid fa-user-tie me-1 fa-fw",
'fa-lg' => request()->routeIs('bo.professions.*')
])></i>
{{ str(__('models.classes.profession'))->ucFirst() }}
{{ str(__('models.classes.profession'))->ucFirst()->plural() }}
</a>
</li>
{{-- BRAND ADVANTAGES --}}
<li class="py-1">
{{-- BRAND ADVANTAGES --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.brand_advantages.*')
@ -225,14 +257,14 @@
</li>
</ul>
</div>
{{-- RECIPES PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
'btn btn-primary text-start w-100 dropdown-toggle mt-1',
'fw-bold active' =>
request()->routeIs('bo.recipes.*') ||
request()->is('bo/general_settings/3/edit') ||
url()->current() === route('bo.general_settings.edit', $recipeSettingModel->type->value()) ||
url()->current() === route('bo.general_settings.edit', $recipesSettingModel->type->value()) ||
request()->routeIs('bo.consumption_moments.*'),
])>
<i @class([
@ -241,25 +273,39 @@
request()->routeIs('bo.recipes.*') ||
request()->routeIs('bo.consumption_moments.*'),
])></i>
&nbsp;{{ __('Listing Recettes') }}
&nbsp;{{ __('Section Recettes') }}
</button>
<ul class="dropdown-menu">
{{-- RECIPES PAGE --}}
<li class="py-1">
{{-- RECIPES PAGE --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->is('bo/general_settings/3/edit')
'fw-bold text-bg-secondary' => url()->current() === route('bo.general_settings.edit', $recipeSettingModel->type->value())
]) data-bs-toggle="tooltip"
href="{{ route('bo.general_settings.edit', $recipeSettingModel) }}"
title="{{ __('crud.helpers.update_model', ['model' => $recipeSettingModel->type->label()]) }}">
<i @class([
"fa-solid fa-kitchen-set fa-fw",
'fa-lg' => request()->is('bo/general_settings/3/edit')
"fa-solid fa-file fa-fw",
'fa-lg' => url()->current() === route('bo.general_settings.edit', $recipeSettingModel->type->value())
])></i> {{ $recipeSettingModel->type->label() }}
</a>
</li>
{{-- RECIPES PAGE --}}
<li class="py-1">
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => url()->current() === route('bo.general_settings.edit', $recipesSettingModel->type->value())
]) data-bs-toggle="tooltip"
href="{{ route('bo.general_settings.edit', $recipesSettingModel) }}"
title="{{ __('crud.helpers.update_model', ['model' => $recipesSettingModel->type->label()]) }}">
<i @class([
"fa-solid fa-file fa-fw",
'fa-lg' => url()->current() === route('bo.general_settings.edit', $recipesSettingModel->type->value())
])></i> {{ $recipesSettingModel->type->label() }}
</a>
</li>
{{-- RECIPES --}}
<li class="py-1">
{{-- RECIPES --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.recipes.*')
@ -273,25 +319,24 @@
{{ str(__('models.classes.recipe'))->ucFirst()->plural() }}
</a>
</li>
{{-- CONSUMPTION MOMENTS --}}
<li class="py-1">
{{-- CONSUMPTION MOMENTS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.consumption_moments.*')
]) data-bs-toggle="tooltip"
href="{{ route('bo.consumption_moments.index') }}"
title="{{ __('crud.helpers.update_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.update_model', ['model' => trans_choice('models.classes.consumption_moment', 2)]) }}">
<i @class([
"fa-solid fa-clock fa-fw",
'fa-lg' => request()->routeIs('bo.consumption_moments.*')
])></i>
{{ str(__('models.classes.consumption_moment'))->ucFirst() }}
{{ str(trans_choice('models.classes.consumption_moment', 2))->ucFirst() }}
</a>
</li>
</ul>
</div>
{{-- PRODCUTS PAGE --}}
{{-- PRODUCTS PAGE --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
'btn btn-primary text-start w-100 dropdown-toggle mt-1',
@ -311,7 +356,7 @@
request()->routeIs('bo.subranges.*') ||
request()->routeIs('bo.submeats.*'),
])></i>
&nbsp;{{ __('Listing Produits') }}
&nbsp;{{ __('Section Produits') }}
</button>
<ul class="dropdown-menu">
{{-- PRODUCTS --}}
@ -331,8 +376,8 @@
</a>
</li>
<li class="py-1"><hr class="dropdown-divider"></li> --}}
{{-- MEATS --}}
<li class="py-1">
{{-- MEATS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary ' => request()->routeIs('bo.meats.index')
@ -346,8 +391,8 @@
{{ str(__('models.classes.meat'))->ucFirst() }}
</a>
</li>
{{-- SUBMEATS --}}
<li class="py-1">
{{-- SUBMEATS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.submeats.*')
@ -361,32 +406,32 @@
{{ str(__('models.classes.submeat'))->ucFirst() }}
</a>
</li>
{{-- ORDER MEATS/SUBMEATS --}}
@if ($firstMeat && $firstMeat->submeats->count() >= 2)
<li class="py-1">
{{-- ORDER MEATS/SUBMEATS --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.meats.edit-submeats-order')
]) data-bs-toggle="tooltip"
href="{{ route('bo.meats.edit-submeats-order', $firstMeat) }}"
title="{{ __('crud.helpers.update_model', ['model' => __('models.classes.submeat')]) }}">
title="{{ str(__('crud.actions.order_submodels'))->ucFirst() }}">
<i @class([
"fa-solid fa-arrow-up-wide-short fa-fw",
'fa-lg' => request()->routeIs('bo.meats.edit-submeats-order')
])></i>
{{ __('crud.helpers.order_submodels', ['model' => str(__('models.classes.submeat'))->plural()]) }}
{{ __('Ordonnancement') }}
</a>
</li>
@endif
<li class="py-1"><hr class="dropdown-divider"></li>
{{-- RANGES --}}
<li class="py-1">
{{-- RANGES --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.ranges.index')
]) data-bs-toggle="tooltip"
href="{{ route('bo.ranges.index') }}"
title="{{ __('crud.helpers.update_model', ['model' => __('models.classes.range')]) }}">
title="{{ str(__('crud.actions.order_submodels'))->ucFirst() }}">
<i @class([
"fa-solid fa-tags fa-fw",
'fa-lg' => request()->routeIs('bo.ranges.index')
@ -394,8 +439,8 @@
{{ str(__('models.classes.range'))->ucFirst() }}
</a>
</li>
{{-- SUBRANGES --}}
<li class="py-1">
{{-- SUBRANGES --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.subranges.*')
@ -409,9 +454,9 @@
{{ str(__('models.classes.subrange'))->ucFirst() }}
</a>
</li>
{{-- ORDER RANGES/SUBRANGES --}}
@if ($firstRange && $firstRange->subranges->count() >= 2)
<li class="py-1">
{{-- ORDER RANGES/SUBRANGES --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->routeIs('bo.ranges.edit-subranges-order')
@ -422,13 +467,12 @@
"fa-solid fa-arrow-up-wide-short fa-fw",
'fa-lg' => request()->routeIs('bo.ranges.edit-subranges-order')
])></i>
{{ __('crud.helpers.order_submodels', ['model' => str(__('models.classes.subrange'))->plural()]) }}
{{ __('Ordonnancement') }}
</a>
</li>
@endif
</ul>
</div>
{{-- APPROACHES --}}
<div class="dropdown">
<button data-bs-toggle="dropdown" type="button" aria-expanded="false" @class([
@ -440,39 +484,41 @@
"fa-solid fa-building-wheat fa-fw",
'fa-lg' => request()->routeIs('bo.approaches.*')
])></i>
{{ str(trans_choice('models.classes.approach', 2))->ucFirst() }}
{{ sprintf('Section %s', str(trans_choice('models.classes.approach', 2))->ucFirst()) }}
</button>
@php $approachType = intval(request()->route()->parameter('approach_type') ?: ((isset($approachModel)) ? $approachModel->type->value() : 0)); @endphp
<ul class="dropdown-menu">
{{-- LABEL --}}
<li class="py-1">
{{-- LABEL --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->is('bo/approaches/1')
'fw-bold text-bg-secondary' => request()->routeIs('bo.approaches.*') && $approachType === \App\Enums\Approaches\ApproachTypeEnum::label->value()
])
href="{{ route('bo.approaches.index', [
'approach_type' => ApproachTypeEnum::label,
'approach_type' => \App\Enums\Approaches\ApproachTypeEnum::label->value()
]) }}">
<i @class([
"fa-solid fa-award fa-fw",
'fa-lg' => request()->is('bo/approaches/1')
'fa-lg' => request()->routeIs('bo.approaches.*') && $approachType === \App\Enums\Approaches\ApproachTypeEnum::label->value()
])></i>
{{ str(__('labels'))->ucFirst() }}
</a>
</li>
{{-- DEMARCHE --}}
<li class="py-1">
{{-- DEMARCHE --}}
<a @class([
"dropdown-item",
'fw-bold text-bg-secondary' => request()->is('bo/approaches/2')
'fw-bold text-bg-secondary' => request()->routeIs('bo.approaches.*') && $approachType === \App\Enums\Approaches\ApproachTypeEnum::demarche->value()
])
href="{{ route('bo.approaches.index', [
'approach_type' => ApproachTypeEnum::demarche,
'approach_type' => \App\Enums\Approaches\ApproachTypeEnum::demarche->value(),
]) }}">
<i @class([
"fa-solid fa-people-arrows fa-fw",
'fa-lg' => request()->is('bo/approaches/2')
'fa-lg' => request()->routeIs('bo.approaches.*') && $approachType === \App\Enums\Approaches\ApproachTypeEnum::demarche->value()
])></i>
{{ str(__('démarches'))->ucFirst() }}</a>
{{ str(__('démarches'))->ucFirst() }}
</a>
</li>
</ul>
</div>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.activity_logs.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.activity_logs.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -8,7 +8,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip"
href="{{ route('bo.approaches.index', intval($approachModel->type ? $approachModel->type->value() : request()->approach_type)) }}"
title="{{ __('crud.helpers.list_all', ['model' => $condition ? str(__('validation.custom.demarche'))->plural() : str(__('validation.custom.label'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -10,7 +10,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip"
href="{{ route('bo.approaches.index', $approachModel->type->value()) }}"
title="{{ __('crud.helpers.list_all', ['model' => $condition ? str(__('validation.custom.demarche'))->plural() : str(__('validation.custom.label'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip"
href="{{ route('bo.approaches.index', $approachModel->type->value()) }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.approach', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.brand_advantage', 1)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.brand_advantage', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.brand_advantages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.brand_advantage', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -1,21 +1,21 @@
@extends('bo.layout', ['brParam' => $consumptionMomentModel])
@section('title', __('Création d\'une :model', ['model' => __('models.classes.consumption_moment')]))
@section('description', __('Création d\'une tout nouveau :model', ['model' => __('models.classes.consumption_moment')]))
@section('title', __('Création d\'une :model', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('description', __('Création d\'une tout nouveau :model', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('breadcrumb', request()->route()->getName())
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.consumption_moments.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.consumption_moment')]) }}">
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.consumption_moments.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.consumption_moment', 2)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $consumptionMomentModel])
</div>
<div class="mb-md-0 mb-2">
<button class="btn btn-primary" id="formSubmitClone" data-bs-toggle="tooltip" type="submit"
title="{{ __('crud.helpers.save_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.save_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
{{ str(__('crud.actions.save'))->ucfirst() }}
</button>
</div>
@ -27,7 +27,7 @@
<div class="row mt-3">
<div class="col text-center">
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
title="{{ __('crud.helpers.save_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.save_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
{{ str(__('crud.actions.save'))->ucfirst() }}
</button>
</div>

View file

@ -1,14 +1,14 @@
@extends('bo.layout', ['brParam' => $consumptionMomentModel])
@section('title', __('Édition d\'une :model', ['model' => __('models.classes.consumption_moment')]))
@section('description', __('Édition d\'une :model déjà existant', ['model' => __('models.classes.consumption_moment')]))
@section('title', __('Édition d\'une :model', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('description', __('Édition d\'une :model déjà existant', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('breadcrumb', request()->route()->getName())
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.consumption_moments.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.consumption_moment'))->plural()]) }}">
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.consumption_moments.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.consumption_moment', 2)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $consumptionMomentModel])
@ -28,7 +28,7 @@
</a>
@endcan
<button class="btn btn-primary" id="formSubmitClone" data-bs-toggle="tooltip" type="submit"
title="{{ __('crud.helpers.save_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.save_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
{{ str(__('crud.actions.save'))->ucfirst() }}
</button>
@can('delete', $consumptionMomentModel)
@ -49,7 +49,7 @@
<div class="row">
<div class="col text-center">
<button class="btn btn-primary" id="formSubmit" data-bs-toggle="tooltip" type="submit"
title="{{ __('crud.helpers.save_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.save_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
{{ str(__('crud.actions.save'))->ucfirst() }}
</button>
</div>

View file

@ -10,7 +10,7 @@
'label' => __(':field1 :inter2:model', [
'field1' => str(__('validation.custom.attribute_title'))->ucFirst(),
'inter2' => __('validation.custom.of_the.male'),
'model' => __('models.classes.consumption_moment'),
'model' => trans_choice('models.classes.consumption_moment', 1),
]),
'hasWordCounter' => true,
'name' => 'title',
@ -20,7 +20,7 @@
'placeholder' => __(':field1 :inter2:model', [
'field1' => str(__('validation.custom.attribute_title'))->ucFirst(),
'inter2' => __('validation.custom.of_the.male'),
'model' => __('models.classes.consumption_moment'),
'model' => trans_choice('models.classes.consumption_moment', 1),
]),
])
</div>

View file

@ -57,7 +57,7 @@
@else
<tr>
<td class="border-0">
{{ trans_choice('crud.other.no_model_found', 1, ['model' => __('models.classes.consumption_moment')]) }}
{{ trans_choice('crud.other.no_model_found', 1, ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}
</td>
</tr>
@endif

View file

@ -1,14 +1,14 @@
@extends('bo.layout')
@section('title', str(__('models.classes.consumption_moment'))->ucfirst()->plural())
@section('description', __('Liste de tous les :model', ['model' => str(__('models.classes.consumption_moment'))->plural()]))
@section('title', str(trans_choice('models.classes.consumption_moment', 2))->ucfirst())
@section('description', __('Liste de tous les :model', ['model' => trans_choice('models.classes.consumption_moment', 2)]))
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
@include('modules.breadcrumbs.breadcrumb-body')
@can('create', \App\Models\ConsumptionMoment::class)
<a class="btn btn-primary float-right" data-bs-toggle="tooltip" href="{{ route('bo.consumption_moments.create') }}"
title="{{ __('crud.helpers.create_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.create_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
<i class="fa-solid fa-plus"></i>
</a>
@endcan

View file

@ -1,15 +1,15 @@
@extends('bo.layout', ['brParam' => $consumptionMomentModel])
@section('title', __('Aperçu d\'un :model', ['model' => __('models.classes.consumption_moment')]))
@section('description', __('Aperçu d\'un :model déjà existante', ['model' => __('models.classes.consumption_moment')]))
@section('title', __('Aperçu d\'un :model', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('description', __('Aperçu d\'un :model déjà existante', ['model' => trans_choice('models.classes.consumption_moment', 1)]))
@section('breadcrumb', request()->route()->getName())
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.consumption_moments.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.consumption_moment'))->plural()]) }}">
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.consumption_moment', 2)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $consumptionMomentModel])
@ -20,14 +20,14 @@
@can('duplicate', $consumptionMomentModel)
<a class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.consumption_moments.duplicate', $consumptionMomentModel) }}"
title="{{ __('crud.helpers.duplicate_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.duplicate_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
<i class="fa-solid fa-copy"></i>
</a>
@endcan
@can('update', $consumptionMomentModel)
<a class="btn btn-primary" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.consumption_moments.edit', $consumptionMomentModel) }}"
title="{{ __('crud.helpers.edit_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.edit_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
<i class="fa-solid fa-pencil"></i>
</a>
@endcan
@ -35,7 +35,7 @@
@csrf
@method('DELETE')
<button class="btn btn-danger" data-bs-toggle="tooltip" data-bs-placement="top" type="submit"
title="{{ __('crud.helpers.delete_model', ['model' => __('models.classes.consumption_moment')]) }}">
title="{{ __('crud.helpers.delete_model', ['model' => trans_choice('models.classes.consumption_moment', 1)]) }}">
<i class="fa-solid fa-trash"></i>
</button>
@endcan

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.demarche_slides.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.demarche_slides.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.demarche_slide')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.demarche_slides.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.demarche_slides.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.demarche_slide'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.demarche_slides.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.demarche_slide'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,10 +7,6 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.general_settings.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.general_setting'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $generalSettingModel])
</div>
<div class="mb-md-0 mb-2">

View file

@ -1,11 +1,4 @@
<div class="row">
{{-- TYPE --}}
<div class="col-12 col-md-6 mb-3">
<p class="h5 m-0">
{{ sprintf('%s associée au type :', str(__("models.classes.general_setting"))->ucfirst()) }}
<span class="fw-bold">{{ $generalSettingModel->type->label() }}</span>
</p>
</div>
{{-- Value --}}
<div class="col-12 mb-3">
@include('bo.pages.general_settings.values.' . $generalSettingModel->type->name(), [

View file

@ -1,45 +0,0 @@
<table class="table-hover table-fix-action m-0 table">
@if (count($generalSettingsModelList) > 0)
<thead>
@include('bo.modules.table-col-sorter', [
'cols' => [
'type' => str(__('validation.custom.general_setting_type'))->ucfirst(),
'updated_at' => str(__('validation.attributes.updated_at'))->ucfirst(),
],
])
</thead>
<tbody>
@foreach ($generalSettingsModelList as $generalSettingModel)
<tr class="border-bottom">
<td class="text-center align-middle">{{ $generalSettingModel->type->label() }}</td>
<td class="text-center align-middle">
<span class="badge text-bg-secondary">{{ $generalSettingModel->updated_at->isoFormat('LLLL') }}</span>
</td>
<td class="text-end align-middle">
@canAny(['update'], $generalSettingModel)
<div class="btn-group">
@can('update', $generalSettingModel)
<a class="btn btn-sm btn-primary" data-bs-toggle="tooltip"
href="{{ route('bo.general_settings.edit', $generalSettingModel) }}"
title="{{ str(__('crud.actions.update'))->ucfirst() }}">
<i class="fa-solid fa-pencil"></i>
</a>
@endcan
</div>
@else
<span class="text-danger" data-bs-toggle="tooltip" title="{{ __('list.right') }}">
<i class="fa-solid fa-ban"></i>
</span>
@endcan
</td>
</tr>
@endforeach
</tbody>
@else
<tr>
<td class="border-0">
{{ trans_choice('crud.other.no_model_found', 2, ['model' => trans_choice('models.classes.general_setting', 1)]) }}
</td>
</tr>
@endif
</table>

View file

@ -1,15 +0,0 @@
@extends('bo.layout')
@section('title', str(trans_choice('models.classes.general_setting', \INF))->ucfirst())
@section('description', __('Liste de toutes les :model', ['model' => trans_choice('models.classes.general_setting', \INF)]))
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
@include('modules.breadcrumbs.breadcrumb-body')
</div>
@include('bo.modules.search-bar')
<div class="table-responsive mb-3">
@include('bo.pages.general_settings.index-list')
</div>
{{ $generalSettingsModelList->links() }}
@endsection

View file

@ -63,73 +63,4 @@
</div>
</fieldset>
</div>
<div class="col-12 pb-3">
<fieldset class="h-100 border p-3">
<legend>{{ str(__('validation.attributes.image'))->ucFirst() }}</legend>
<div class="row mb-3">
{{-- PICTURE_ALT --}}
<div class="col-12 col-lg-6 m-md-0 mb-3">
@include('bo.partials.inputs.varchar', [
'id' => 'recipesPictureAlt',
'label' => __(':field1 :inter1:field2 :inter2:model', [
'field1' => str(__('validation.custom.attribute_alt'))->ucFirst(),
'inter1' => __('validation.custom.of_the.vowel'),
'field2' => __('validation.attributes.image'),
'inter2' => __('validation.custom.of_the.plural'),
'model' => __('models.classes.recipe'),
]),
'hasWordCounter' => true,
'name' => 'picture_alt',
'required' => true,
'model' => json_decode(collect($generalSettingModel->value)) ?? null,
'helper' => __('crud.minicrud.picture_alt_helper'),
'placeholder' => __(':field1 :inter1:field2 :inter2:model', [
'field1' => str(__('validation.custom.attribute_alt'))->ucFirst(),
'inter1' => __('validation.custom.of_the.vowel'),
'field2' => __('validation.attributes.image'),
'inter2' => __('validation.custom.of_the.plural'),
'model' => str(__('models.classes.recipe'))->plural(),
]),
])
</div>
{{-- PICTURE_TITLE --}}
<div class="col-12 col-lg-6 mb-3">
@include('bo.partials.inputs.varchar', [
'id' => 'recipesPictureTitle',
'label' => __(':field1 :inter1:field2 :inter2:model', [
'field1' => str(__('validation.custom.attribute_title'))->ucFirst(),
'inter1' => __('validation.custom.of_the.vowel'),
'field2' => __('validation.attributes.image'),
'inter2' => __('validation.custom.of_the.plural'),
'model' => str(__('models.classes.recipe'))->plural(),
]),
'hasWordCounter' => true,
'name' => 'picture_title',
'required' => true,
'model' => json_decode(collect($generalSettingModel->value)) ?? null,
'helper' => __('crud.minicrud.picture_title_helper'),
'placeholder' => __(':field1 :inter1:field2 :inter2:model', [
'field1' => str(__('validation.custom.attribute_title'))->ucFirst(),
'inter1' => __('validation.custom.of_the.vowel'),
'field2' => __('validation.attributes.image'),
'inter2' => __('validation.custom.of_the.plural'),
'model' => str(__('models.classes.recipe'))->plural(),
]),
])
</div>
{{-- PICTURE --}}
<div class="col-12">
@include('bo.partials.inputs.varchar-picture', [
'id' => 'recipesPicture',
'name' => 'picture',
'width' => 720,
'height' => 405,
'value' => json_decode(collect($generalSettingModel->value))->picture,
'required' => true,
'preview' => true,
])
</div>
</div>
</fieldset>
</div>
</div>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.key_numbers.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.key_numbers.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.key_number')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.key_numbers.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.key_numbers.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.key_number'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.key_numbers.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.key_number'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.main_slides.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.main_slides.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.main_slide')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.main_slides.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.main_slides.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.main_slide'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.main_slides.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.main_slide'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.meat')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.meat', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.meats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.meat'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.professions.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.professions.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.profession')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.professions.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.professions.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.profession'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.professions.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.profession'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.range')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.range', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.ranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.range'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.recipes.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.recipes.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.recipe')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.recipes.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.recipes.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.recipe'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -362,13 +362,13 @@
{{-- CONSUMPTION_MOMENT_ID --}}
<div class="col-12 col-md-6 mb-3">
<fieldset class="h-100 border p-3">
<legend>{{ str(__('models.classes.consumption_moment'))->ucFirst() }}</legend>
<legend>{{ str(trans_choice('models.classes.consumption_moment', 1))->ucFirst() }}</legend>
<div class="row">
<div class="col-12">
@include('bo.partials.inputs.search-belongs-to-dropdown', [
'id' => 'recipeConsumptionMomentId',
'label' => __(':model associé', [
'model' => str(__('models.classes.consumption_moment'))->ucFirst(),
'model' => str(trans_choice('models.classes.consumption_moment', 1))->ucFirst(),
]),
'name' => 'consumption_moment_id',
'targetClass' => 'App\Models\ConsumptionMoment',
@ -380,11 +380,11 @@
'required' => true,
'disabled' => false,
'placeholder' => __('Rechercher un :model', [
'model' => __('models.classes.consumption_moment'),
'model' => trans_choice('models.classes.consumption_moment', 1),
]),
'helper' => __(
'Sélectionner un :model qui sera associé parmis la liste (un seul et unique :model doit être choisi).',
['model' => __('models.classes.consumption_moment')]),
['model' => trans_choice('models.classes.consumption_moment', 1)]),
])
</div>
</div>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center border-bottom flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" data-bs-placement="top"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" data-bs-placement="top"
href="{{ route('bo.recipes.index', ['sort_col' => 'created_at', 'sort_way' => 'desc']) }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.recipe'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
@ -81,9 +81,14 @@
{{ str(__('validation.custom.ingredients_list'))->ucFirst() }}</td>
<td class="w-50 text-center align-middle">
<ul class="list-group list-group-flush">
@foreach ($recipeModel->ingredients_list as $key => $ingredient)
@foreach ($recipeModel->ingredients_list as $ingredient)
<li class="list-group-item">
{{ sprintf('%s%s %s', $ingredient['value'], $ingredient['unit'], $ingredient['label']) }}
<p class="m-0">
{{ sprintf('%s%s %s', $ingredient['value'], $ingredient['label_unit'], $ingredient['label_value']) }}
</p>
<small class="text-body-secondary">
{{ sprintf('proportionnel: %s', $ingredient['is_proportionnal'] ? "oui" : "non") }}
</small>
</li>
@endforeach
</ul>
@ -130,7 +135,7 @@
</tr>
<tr class="border-bottom">
<td class="w-50 fw-bold text-center align-middle">
{{ str(__('models.classes.consumption_moment'))->ucFirst() }}</td>
{{ str(trans_choice('models.classes.consumption_moment', 1))->ucFirst() }}</td>
<td class="w-50 text-center align-middle">
{{ $recipeModel->consumptionMoment->title }}
</td>

View file

@ -7,10 +7,6 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.static_pages.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.static_page'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>
@include('modules.breadcrumbs.breadcrumb-body', ['brParam' => $staticPageModel])
</div>
<div class="mb-md-0 mb-2">

View file

@ -1,25 +1,4 @@
<div class="row">
{{-- TYPE --}}
<div class="col-12 mb-3">
<fieldset class="h-100 border p-3">
<legend>{{ str(__('validation.custom.static_page_type'))->ucfirst() }}</legend>
<div class="row">
<div class="col-12">
@include('bo.partials.inputs.tinyint-enum', [
'id' => 'staticPageType',
'label' => __('Type de page'),
'name' => 'type',
'model' => $staticPageModel ?? null,
'required' => false,
'disabled' => true,
'value' => optional(optional($staticPageModel ?? null)->type)->value(),
'associatedModels' => \App\Enums\StaticPageType::toArray(),
'helper' => '',
])
</div>
</div>
</fieldset>
</div>
{{-- TITLE --}}
<div class="col-12 col-md-6 mb-3">
<fieldset class="h-100 border p-3">

View file

@ -1,52 +0,0 @@
<table class="table-hover table-fix-action m-0 table">
@if (count($staticPageModelList) > 0)
<thead>
@include('bo.modules.table-col-sorter', [
'cols' => [
'type' => str(__('validation.custom.static_page_type'))->ucfirst(),
'title' => str(__('validation.attributes.title'))->ucfirst(),
'picture' => str(__('validation.attributes.image'))->ucfirst(),
'updated_at' => str(__('validation.attributes.updated_at'))->ucfirst(),
],
])
</thead>
<tbody>
@foreach ($staticPageModelList as $staticPageModel)
<tr class="border-bottom">
<td class="text-center align-middle">{{ $staticPageModel->type->label() }}</td>
<td class="text-center align-middle">{{ $staticPageModel->title }}</td>
<td class="text-center align-middle">
<img class="image-preview" src="{{ asset($staticPageModel->picture) }}" title="{{ $staticPageModel->picture_title }}"
alt="{{ $staticPageModel->picture_alt }}">
</td>
<td class="text-center align-middle">
<span class="badge text-bg-secondary">{{ $staticPageModel->updated_at->isoFormat('LLLL') }}</span>
</td>
<td class="text-end align-middle">
@canAny(['update'], $staticPageModel)
<div class="btn-group">
@can('update', $staticPageModel)
<a class="btn btn-sm btn-primary" data-bs-toggle="tooltip"
href="{{ route('bo.static_pages.edit', ['static_page' => $staticPageModel]) }}"
title="{{ str(__('crud.actions.update'))->ucfirst() }}">
<i class="fa-solid fa-pencil"></i>
</a>
@endcan
</div>
@else
<span class="text-danger" data-bs-toggle="tooltip" title="{{ __('list.right') }}">
<i class="fa-solid fa-ban"></i>
</span>
@endcan
</td>
</tr>
@endforeach
</tbody>
@else
<tr>
<td class="border-0">
{{ trans_choice('crud.other.no_model_found', 2, ['model' => trans_choice('models.classes.static_page', 1)]) }}
</td>
</tr>
@endif
</table>

View file

@ -1,15 +0,0 @@
@extends('bo.layout')
@section('title', str(trans_choice('models.classes.static_page', \INF))->ucfirst())
@section('description', __('Liste de toutes les :model', ['model' => trans_choice('models.classes.static_page', \INF)]))
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap">
@include('modules.breadcrumbs.breadcrumb-body')
</div>
@include('bo.modules.search-bar')
<div class="table-responsive mb-3">
@include('bo.pages.static_pages.index-list')
</div>
{{ $staticPageModelList->links() }}
@endsection

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.submeat')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.submeat', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.submeats.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.submeat'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -1,8 +1,8 @@
@extends('bo.layout', ['brParam' => $model])
@section('title', __('crud.helpers.order_submodels', ['model' => str(__("models.classes.sub{$modelName}"))->plural()]))
@section('title', __('crud.actions.order_submodels', ['model' => str(__("models.classes.sub{$modelName}"))->plural()]))
@section('description',
__('crud.helpers.order_submodels', [
__('crud.actions.order_submodels', [
'model' => str(__("models.classes.sub{$modelName}"))->plural(),
]))
@section('breadcrumb', request()->route()->getName())
@ -10,7 +10,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip"
href='{{ route("bo.{$modelName}s.index") }}'
title="{{ __('crud.helpers.list_all', ['model' => str(__("models.classes.{$modelName}"))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
@ -42,7 +42,7 @@
@foreach ($models as $parentModel)
<li>
<a href="{{ route("bo.{$modelName}s.edit-sub{$modelName}s-order", $parentModel) }}"
title="{{ sprintf('%s de l\'élément parent : %s', __('crud.helpers.order_submodels', ['model' => __("models.classes.sub{$modelName}")]), $model->label) }}"
title="{{ sprintf('%s de l\'élément parent : %s', __('crud.actions.order_submodels', ['model' => __("models.classes.sub{$modelName}")]), $model->label) }}"
@class([
'dropdown-item',
'active' => request($modelName)->is($parentModel),

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.subrange')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.subrange', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.subranges.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.subrange'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.user')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.user'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => __('models.classes.video')]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.video', \INF)]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -7,7 +7,7 @@
@section('content')
<div class="d-flex justify-content-between flex-md-nowrap align-items-center flex-wrap pb-3">
<div class="d-flex align-items-start flex-row">
<a class="btn btn-primary text-decoration-none m-0" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
<a class="btn btn-primary text-decoration-none m-0 me-2" data-bs-toggle="tooltip" href="{{ route('bo.videos.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => str(__('models.classes.video'))->plural()]) }}">
<i class="fa-solid fa-arrow-left"></i>
</a>

View file

@ -244,7 +244,7 @@
</tr>
<tr width="100%">
<td>
<p>{{ str(sprintf("%s associé", __('models.classes.consumption_moment')))->ucFirst() }}</p>
<p>{{ str(sprintf("%s associé", trans_choice('models.classes.consumption_moment', 1)))->ucFirst() }}</p>
<p class="text-bold">{{ $recipeModel->consumption_moment_id->title }}</p><br><br>
</td>
</tr>

View file

@ -3,7 +3,7 @@
@foreach ($breadcrumbs as $breadcrumb)
@if ($breadcrumb->url && !$loop->last)
<li class="breadcrumb-item d-flex">
<a @class(['fw-bold m-0', 'h2 ps-2' => request()->is('bo/*')]) href="{{ $breadcrumb->url }}">
<a @class(['fw-bold m-0', 'h2' => request()->is('bo/*')]) href="{{ $breadcrumb->url }}">
{{ $breadcrumb->title }}
</a>
</li>

View file

@ -31,15 +31,8 @@ Breadcrumbs::for('bo.dashboard', function (Generator $trail) {
});
// * GENERAL SETTINGS
Breadcrumbs::for('bo.general_settings.index', function (Generator $trail) {
$trail->push(
Str::of(trans('models.classes.general_setting'))->plural()->ucfirst(),
route('bo.general_settings.index', ['sort_col' => 'updated_at', 'sort_way' => 'desc'])
);
});
Breadcrumbs::for('bo.general_settings.edit', function (Generator $trail, GeneralSetting $general_setting) {
$trail->parent('bo.general_settings.index');
$trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.general_settings.edit', $general_setting));
$trail->push($general_setting->type->label());
});
// * USERS
@ -123,15 +116,8 @@ Breadcrumbs::for('bo.activity_logs.show', function (Generator $trail, ActivityLo
});
// * STATIC PAGES
Breadcrumbs::for('bo.static_pages.index', function (Generator $trail) {
$trail->push(
Str::ucfirst(trans_choice('models.classes.static_page', \INF)),
route('bo.static_pages.index', ['sort_col' => 'updated_at', 'sort_way' => 'desc'])
);
});
Breadcrumbs::for('bo.static_pages.edit', function (Generator $trail, StaticPage $static_page) {
$trail->parent('bo.static_pages.index');
$trail->push(Str::ucfirst(trans('crud.actions.edit')), route('bo.static_pages.edit', $static_page));
$trail->push(sprintf('Page %s', Str::ucfirst($static_page->title)));
});
// * BRAND_ADVANTAGES
@ -233,7 +219,7 @@ Breadcrumbs::for('bo.ranges.duplicate', function (Generator $trail) {
});
Breadcrumbs::for('bo.ranges.edit-subranges-order', function (Generator $trail) {
$trail->parent('bo.ranges.index');
$trail->push(Str::ucfirst(trans('crud.helpers.order_submodels', [
$trail->push(Str::ucfirst(trans('crud.actions.order_submodels', [
'model' => Str::plural(trans('models.classes.subrange'))
])));
});
@ -287,7 +273,7 @@ Breadcrumbs::for('bo.meats.duplicate', function (Generator $trail) {
});
Breadcrumbs::for('bo.meats.edit-submeats-order', function (Generator $trail) {
$trail->parent('bo.meats.index');
$trail->push(Str::ucfirst(trans('crud.helpers.order_submodels', [
$trail->push(Str::ucfirst(trans('crud.actions.order_submodels', [
'model' => Str::plural(trans('models.classes.submeat'))
])));
});

View file

@ -59,7 +59,7 @@ Route::prefix('bo')
'index' => 'general_settings.index',
'edit' => 'general_settings.edit',
'update' => 'general_settings.update',
])->only(['index', 'edit', 'update'])
])->only(['edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:text');
@ -70,7 +70,7 @@ Route::prefix('bo')
'edit' => 'static_pages.edit',
'update' => 'static_pages.update',
])->parameters(['pages' => 'static_page'])
->only(['index', 'edit', 'update'])
->only(['edit', 'update'])
->withoutMiddleware('htmlsanitize')
->middleware('htmlsanitize:content');