2025-08-22 11:44:00 +02:00
|
|
|
<?php
|
|
|
|
|
|
2025-11-26 10:53:42 +01:00
|
|
|
use App\Enums\DynamicPages\PageStatusEnum;
|
|
|
|
|
use App\Helpers\RouteHelper;
|
|
|
|
|
use App\Models\DynamicPage;
|
2025-11-12 14:32:50 +01:00
|
|
|
use App\Models\News;
|
2025-08-22 11:44:00 +02:00
|
|
|
use Diglactic\Breadcrumbs\Breadcrumbs;
|
|
|
|
|
use Diglactic\Breadcrumbs\Generator;
|
2026-09-09 08:00:41 +02:00
|
|
|
use Illuminate\Support\Facades\Schema;
|
2025-08-22 11:44:00 +02:00
|
|
|
use Illuminate\Support\Str;
|
2025-12-02 15:31:13 +01:00
|
|
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
|
|
|
|
|
2026-09-09 08:00:41 +02:00
|
|
|
if (!Schema::hasTable('dynamic_pages')) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-06 09:53:08 +01:00
|
|
|
$currentLocale = app()->getLocale();
|
2025-12-02 15:31:13 +01:00
|
|
|
$supportedLocales = LaravelLocalization::getSupportedLanguagesKeys();
|
2026-01-12 12:07:17 +01:00
|
|
|
$pageHome = DynamicPage::getModelsCached()
|
2026-01-06 09:53:08 +01:00
|
|
|
->where('status', PageStatusEnum::published)
|
2026-01-15 16:55:01 +01:00
|
|
|
->where('isRoot', true)
|
2026-01-06 09:53:08 +01:00
|
|
|
->first();
|
2025-09-02 16:48:56 +02:00
|
|
|
|
2026-01-12 12:07:17 +01:00
|
|
|
// * DYNAMIC PAGES.
|
2026-01-20 11:34:25 +01:00
|
|
|
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)) {
|
2026-02-10 15:43:47 +01:00
|
|
|
$trail->parent(sprintf(
|
|
|
|
|
"front.dynamic-pages.%s.%s",
|
|
|
|
|
$dynamicPageModel->parentPage->id_key,
|
|
|
|
|
$locale,
|
|
|
|
|
));
|
2026-01-20 11:34:25 +01:00
|
|
|
} elseif (isset($pageHome) && $dynamicPageModel->id_key !== $pageHome->id_key) {
|
|
|
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $locale));
|
|
|
|
|
}
|
2026-02-10 15:43:47 +01:00
|
|
|
$trail->push(
|
|
|
|
|
$dynamicPageModel->title,
|
|
|
|
|
RouteHelper::routeNameChecker(sprintf("front.dynamic-pages.%s", $dynamicPageModel->id_key))
|
|
|
|
|
);
|
2026-01-12 12:07:17 +01:00
|
|
|
}
|
2026-01-20 11:34:25 +01:00
|
|
|
);
|
|
|
|
|
});
|
2026-01-12 12:07:17 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// * SEARCH INDEX.
|
2026-01-06 09:53:08 +01:00
|
|
|
Breadcrumbs::for('front.search', function (Generator $trail) use ($pageHome, $currentLocale) {
|
|
|
|
|
if ($pageHome) {
|
2026-01-15 16:55:01 +01:00
|
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $currentLocale));
|
2026-01-06 09:53:08 +01:00
|
|
|
}
|
2025-08-28 15:17:32 +02:00
|
|
|
$trail->push(
|
2026-01-12 12:07:17 +01:00
|
|
|
Str::of(trans('front.search.trans'))->ucfirst(),
|
2025-08-28 15:17:32 +02:00
|
|
|
route('front.search')
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
|
2026-01-12 12:07:17 +01:00
|
|
|
// NEWS SHOW.
|
|
|
|
|
$pageActualites = DynamicPage::getModelsCached()
|
2025-12-29 16:27:46 +01:00
|
|
|
->where('status', PageStatusEnum::published)
|
|
|
|
|
->where('id_key', 'actualites')
|
|
|
|
|
->first();
|
2026-01-12 12:07:17 +01:00
|
|
|
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));
|
2025-12-12 10:55:17 +01:00
|
|
|
}
|
2026-01-12 12:07:17 +01:00
|
|
|
if (request()->news instanceof News) {
|
|
|
|
|
$trail->push(
|
|
|
|
|
Str::of(request()->news->title)->ucfirst()
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-12-29 16:27:46 +01:00
|
|
|
|
2026-01-12 12:07:17 +01:00
|
|
|
// * DOCUMENT SHOW.
|
|
|
|
|
// Need it for the search page.
|
|
|
|
|
Breadcrumbs::for('front.documents.show', function (Generator $trail) use ($pageHome, $currentLocale) {
|
2026-01-06 09:53:08 +01:00
|
|
|
if ($pageHome) {
|
2026-01-15 16:55:01 +01:00
|
|
|
$trail->parent(sprintf("front.dynamic-pages.%s.%s", $pageHome->id_key, $currentLocale));
|
2026-01-06 09:53:08 +01:00
|
|
|
}
|
2026-02-10 15:43:47 +01:00
|
|
|
});
|