widerrufsbelehrung hinzugefügt und in den checkout mit eingebunden. refund ins backend eingebaut.
This commit is contained in:
@@ -20,12 +20,12 @@ class LegalPageController extends Controller
|
||||
{
|
||||
public function show(Request $request, string $locale, ?string $slug = null): Response
|
||||
{
|
||||
$resolvedSlug = $this->resolveSlug($slug);
|
||||
$slugCandidates = $this->resolveSlugs($slug);
|
||||
$page = null;
|
||||
|
||||
try {
|
||||
$page = LegalPage::query()
|
||||
->where('slug', $resolvedSlug)
|
||||
->whereIn('slug', $slugCandidates)
|
||||
->where('is_published', true)
|
||||
->orderByDesc('version')
|
||||
->first();
|
||||
@@ -37,7 +37,7 @@ class LegalPageController extends Controller
|
||||
$locale = $request->route('locale', app()->getLocale());
|
||||
|
||||
if (! $page) {
|
||||
$fallback = $this->loadFallbackDocument($resolvedSlug, $locale);
|
||||
$fallback = $this->loadFallbackDocument($slugCandidates, $locale);
|
||||
|
||||
if (! $fallback) {
|
||||
abort(404);
|
||||
@@ -50,7 +50,7 @@ class LegalPageController extends Controller
|
||||
'effectiveFrom' => null,
|
||||
'effectiveFromLabel' => null,
|
||||
'versionLabel' => null,
|
||||
'slug' => $resolvedSlug,
|
||||
'slug' => $slugCandidates[0],
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,8 @@ class LegalPageController extends Controller
|
||||
?? $page->title[$page->locale_fallback]
|
||||
?? $page->title['de']
|
||||
?? $page->title['en']
|
||||
?? Str::title($resolvedSlug);
|
||||
?? Str::title($slugCandidates[0]);
|
||||
$title = Str::ucfirst($title);
|
||||
|
||||
$bodyMarkdown = $page->body_markdown[$locale]
|
||||
?? $page->body_markdown[$page->locale_fallback]
|
||||
@@ -76,11 +77,11 @@ class LegalPageController extends Controller
|
||||
? __('legal.effective_from', ['date' => $effectiveFrom->translatedFormat('d. F Y')])
|
||||
: null,
|
||||
'versionLabel' => __('legal.version', ['version' => $page->version]),
|
||||
'slug' => $resolvedSlug,
|
||||
'slug' => $slugCandidates[0],
|
||||
]);
|
||||
}
|
||||
|
||||
private function resolveSlug(?string $slug): string
|
||||
private function resolveSlugs(?string $slug): array
|
||||
{
|
||||
$slug = strtolower($slug ?? '');
|
||||
|
||||
@@ -88,9 +89,20 @@ class LegalPageController extends Controller
|
||||
'imprint' => 'impressum',
|
||||
'privacy' => 'datenschutz',
|
||||
'terms' => 'agb',
|
||||
'withdrawal' => 'widerrufsbelehrung',
|
||||
'cancellation' => 'widerrufsbelehrung',
|
||||
'cancellation-policy' => 'widerrufsbelehrung',
|
||||
'widerruf' => 'widerrufsbelehrung',
|
||||
];
|
||||
|
||||
return $aliases[$slug] ?? $slug ?: 'impressum';
|
||||
$canonical = $aliases[$slug] ?? $slug ?: 'impressum';
|
||||
|
||||
// Support both slugs for withdrawal in case DB uses a shorter slug
|
||||
$fallbacks = $canonical === 'widerrufsbelehrung'
|
||||
? ['widerrufsbelehrung', 'widerruf']
|
||||
: [$canonical];
|
||||
|
||||
return array_values(array_unique($fallbacks));
|
||||
}
|
||||
|
||||
private function convertMarkdownToHtml(string $markdown): string
|
||||
@@ -111,7 +123,7 @@ class LegalPageController extends Controller
|
||||
return trim((string) $converter->convert($markdown));
|
||||
}
|
||||
|
||||
private function loadFallbackDocument(string $slug, string $locale): ?array
|
||||
private function loadFallbackDocument(array $slugCandidates, string $locale): ?array
|
||||
{
|
||||
$candidates = array_unique([
|
||||
strtolower($locale),
|
||||
@@ -120,20 +132,22 @@ class LegalPageController extends Controller
|
||||
'en',
|
||||
]);
|
||||
|
||||
foreach ($candidates as $candidateLocale) {
|
||||
$path = base_path("docs/legal/{$slug}-{$candidateLocale}.md");
|
||||
foreach ($slugCandidates as $slug) {
|
||||
foreach ($candidates as $candidateLocale) {
|
||||
$path = base_path("docs/legal/{$slug}-{$candidateLocale}.md");
|
||||
|
||||
if (! is_file($path)) {
|
||||
continue;
|
||||
if (! is_file($path)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$markdown = (string) file_get_contents($path);
|
||||
$title = $this->extractTitleFromMarkdown($markdown) ?? Str::title($slug);
|
||||
|
||||
return [
|
||||
'markdown' => $markdown,
|
||||
'title' => $title,
|
||||
];
|
||||
}
|
||||
|
||||
$markdown = (string) file_get_contents($path);
|
||||
$title = $this->extractTitleFromMarkdown($markdown) ?? Str::title($slug);
|
||||
|
||||
return [
|
||||
'markdown' => $markdown,
|
||||
'title' => $title,
|
||||
];
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user