81 lines
2.9 KiB
PHP
81 lines
2.9 KiB
PHP
<?php
|
|
|
|
use App\Enums\DynamicPages\PageStatusEnum;
|
|
use App\Helpers\RouteHelper;
|
|
use App\Models\DynamicPage;
|
|
use App\Models\News;
|
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
|
use Diglactic\Breadcrumbs\Generator;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Support\Str;
|
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
|
|
|
if (!Schema::hasTable('dynamic_pages')) {
|
|
return;
|
|
}
|
|
|
|
$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))
|
|
);
|
|
}
|
|
);
|
|
});
|
|
});
|
|
|
|
// * 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));
|
|
}
|
|
});
|