96 lines
No EOL
3.6 KiB
PHP
96 lines
No EOL
3.6 KiB
PHP
<?php
|
|
|
|
use App\Enums\DynamicPages\PageStatusEnum;
|
|
use App\Enums\Contact\ContactFormType;
|
|
use App\Helpers\RouteHelper;
|
|
use App\Models\DynamicPage;
|
|
use App\Models\News;
|
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
|
use Diglactic\Breadcrumbs\Generator;
|
|
use Illuminate\Support\Str;
|
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
|
|
|
$currentLocale = app()->getLocale();
|
|
$supportedLocales = LaravelLocalization::getSupportedLanguagesKeys();
|
|
$pageHome = DynamicPage::getModelsCached()
|
|
->where('status', PageStatusEnum::published)
|
|
->where('isRoot', true)
|
|
->first();
|
|
|
|
// * DYNAMIC PAGES.
|
|
DynamicPage::getModelsCached()->map(function (DynamicPage $dynamicPageModel) use ($supportedLocales, $pageHome) {
|
|
collect($supportedLocales)->map(function (string $locale) use ($dynamicPageModel, $pageHome) {
|
|
Breadcrumbs::for(
|
|
sprintf("front.dynamic-pages.%s.%s", $dynamicPageModel->id_key, $locale),
|
|
function (Generator $trail) use ($locale, $dynamicPageModel, $pageHome) {
|
|
if (!is_null($dynamicPageModel->page_id)) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $dynamicPageModel->parentPage->id_key, $locale));
|
|
} elseif (isset($pageHome) && $dynamicPageModel->id_key !== $pageHome->id_key) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $locale));
|
|
}
|
|
$trail->push($dynamicPageModel->title, RouteHelper::routeNameChecker(sprintf("front.dynamic-pages.%s", $dynamicPageModel->id_key)));
|
|
}
|
|
);
|
|
});
|
|
});
|
|
|
|
// * CONTACT INDEX.
|
|
Breadcrumbs::for('front.contact.index', function (Generator $trail) use ($pageHome, $currentLocale) {
|
|
if ($pageHome) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $currentLocale));
|
|
}
|
|
$trail->push(
|
|
Str::of(trans('front.contact.index'))->ucfirst(),
|
|
route('front.contact.index')
|
|
);
|
|
});
|
|
|
|
// * CONTACT SHOW.
|
|
Breadcrumbs::for('front.contact.show', function (Generator $trail) {
|
|
$trail->parent('front.contact.index');
|
|
$slug = \request()->route()->parameters['slug'];
|
|
// je sais que je suis dans une conact
|
|
$enumType = collect(ContactFormType::all())->first(function ($enum) use ($slug) {
|
|
return $enum->slug() === $slug;
|
|
});
|
|
if ($enumType) {
|
|
$trail->push(
|
|
Str::of(trans($enumType->label()))->ucfirst()
|
|
);
|
|
}
|
|
});
|
|
|
|
// * SEARCH INDEX.
|
|
Breadcrumbs::for('front.search', function (Generator $trail) use ($pageHome, $currentLocale) {
|
|
if ($pageHome) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $currentLocale));
|
|
}
|
|
$trail->push(
|
|
Str::of(trans('front.search.trans'))->ucfirst(),
|
|
route('front.search')
|
|
);
|
|
});
|
|
|
|
// NEWS SHOW.
|
|
$pageActualites = DynamicPage::getModelsCached()
|
|
->where('status', PageStatusEnum::published)
|
|
->where('id_key', 'actualites')
|
|
->first();
|
|
Breadcrumbs::for('front.news.show', function (Generator $trail) use ($currentLocale, $pageActualites) {
|
|
if ($pageActualites) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageActualites->id_key, $currentLocale));
|
|
}
|
|
if (request()->news instanceof News) {
|
|
$trail->push(
|
|
Str::of(request()->news->title)->ucfirst()
|
|
);
|
|
}
|
|
});
|
|
|
|
// * DOCUMENT SHOW.
|
|
// Need it for the search page.
|
|
Breadcrumbs::for('front.documents.show', function (Generator $trail) use ($pageHome, $currentLocale) {
|
|
if ($pageHome) {
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $currentLocale));
|
|
}
|
|
}); |