Added SEO attributes and extended localization

- Added `#[SeoDataAttribute]` annotations to Livewire components for SEO management.
- Extended translations in English, Spanish, and German for better localization support.
This commit is contained in:
HolgerHatGarKeineNode
2025-11-22 22:36:46 +01:00
parent d359dd56b0
commit a5dafc67df
32 changed files with 405 additions and 37 deletions

View File

@@ -1,25 +1,26 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\LoginKey;
use App\Models\User;
use App\Notifications\ModelCreatedNotification;
use App\Traits\SeoTrait;
use eza\lnurl;
use Illuminate\Auth\Events\Lockout;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Layout;
use Livewire\Attributes\On;
use Livewire\Attributes\Renderless;
use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use eza\lnurl;
new #[Layout('components.layouts.auth')]
new
#[Layout('components.layouts.auth')]
#[SeoDataAttribute(key: 'login')]
class extends Component {
use SeoTrait;
@@ -62,7 +63,8 @@ class extends Component {
if ($user) {
Auth::loginUsingId($user->id);
Session::regenerate();
$this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true);
$this->redirectIntended(default: route_with_country('dashboard', ['country' => 'de'], absolute: false),
navigate: true);
return;
}
return;
@@ -82,7 +84,8 @@ class extends Component {
RateLimiter::clear($this->throttleKey());
Session::regenerate();
$this->redirectIntended(default: route_with_country('dashboard', absolute: false), navigate: true);
$this->redirectIntended(default: route_with_country('dashboard', ['country' => 'de'], absolute: false),
navigate: true);
}
/**

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Models\Country;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'cities_create')]
class extends Component {
use SeoTrait;
public string $name = '';

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Models\Country;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'cities_edit')]
class extends Component {
use SeoTrait;
public City $city;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Livewire\WithPagination;
new class extends Component {
new
#[SeoDataAttribute(key: 'cities_index')]
class extends Component {
use WithPagination;
use SeoTrait;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Models\Course;
use App\Models\CourseEvent;
@@ -8,7 +9,9 @@ use App\Traits\SeoTrait;
use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'courses_edit_events')]
class extends Component {
use SeoTrait;
public Course $course;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Course;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
@@ -7,7 +8,9 @@ use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'courses_create')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Course;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
@@ -8,7 +9,9 @@ use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'courses_edit')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Course;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Livewire\WithPagination;
new class extends Component {
new
#[SeoDataAttribute(key: 'courses_index')]
class extends Component {
use WithPagination;
use SeoTrait;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Course;
use App\Models\CourseEvent;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'courses_landingpage')]
class extends Component {
use SeoTrait;
public Course $course;

View File

@@ -1,12 +1,15 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Meetup;
use App\Models\MeetupEvent;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Flux\Flux;
new class extends Component {
new
#[SeoDataAttribute(key: 'dashboard')]
class extends Component {
use SeoTrait;
public $selectedMeetupId = null;

View File

@@ -1,12 +1,15 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'lecturers_create')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
use Illuminate\Validation\Rule;
@@ -7,7 +8,9 @@ use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'lecturers_edit')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Lecturer;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Livewire\WithPagination;
new class extends Component {
new
#[SeoDataAttribute(key: 'lecturers_index')]
class extends Component {
use WithPagination;
use SeoTrait;

View File

@@ -1,12 +1,15 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Meetup;
use App\Models\MeetupEvent;
use App\Traits\SeoTrait;
use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_create_edit_events')]
class extends Component {
use SeoTrait;
public Meetup $meetup;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Models\Country;
use App\Models\Meetup;
@@ -8,7 +9,9 @@ use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_create')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\City;
use App\Models\Country;
use App\Models\Meetup;
@@ -9,7 +10,9 @@ use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
use Livewire\WithFileUploads;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_edit')]
class extends Component {
use WithFileUploads;
use SeoTrait;

View File

@@ -1,12 +1,15 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\MeetupEvent;
use App\Models\User;
use App\Traits\SeoTrait;
use Livewire\Attributes\Validate;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_landingpage_event')]
class extends Component {
use SeoTrait;
public MeetupEvent $event;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Meetup;
use App\Models\MeetupEvent;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_landingpage')]
class extends Component {
use SeoTrait;
public Meetup $meetup;

View File

@@ -1,10 +1,13 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Meetup;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'meetups_map')]
class extends Component {
use SeoTrait;
public function with(): array

View File

@@ -1,9 +1,12 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'settings_appearance')]
class extends Component {
use SeoTrait;
}; ?>

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Livewire\Actions\Logout;
use App\Traits\SeoTrait;
use Illuminate\Support\Facades\Auth;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'settings_delete_user_form')]
class extends Component {
use SeoTrait;
public string $password = '';

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Traits\SeoTrait;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
@@ -7,7 +8,9 @@ use Illuminate\Validation\Rules\Password;
use Illuminate\Validation\ValidationException;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'settings_password')]
class extends Component {
use SeoTrait;
public string $current_password = '';

View File

@@ -1,5 +1,6 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\User;
use App\Traits\SeoTrait;
use Illuminate\Support\Facades\Auth;
@@ -7,7 +8,9 @@ use Illuminate\Support\Facades\Session;
use Illuminate\Validation\Rule;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'settings_profile')]
class extends Component {
use SeoTrait;
public string $name = '';

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Venue;
use App\Models\City;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'venues_create')]
class extends Component {
use SeoTrait;
public string $name = '';

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Venue;
use App\Models\City;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
new class extends Component {
new
#[SeoDataAttribute(key: 'venues_edit')]
class extends Component {
use SeoTrait;
public Venue $venue;

View File

@@ -1,11 +1,14 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Models\Venue;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Livewire\WithPagination;
new class extends Component {
new
#[SeoDataAttribute(key: 'venues_index')]
class extends Component {
use WithPagination;
use SeoTrait;

View File

@@ -1,10 +1,13 @@
<?php
use App\Attributes\SeoDataAttribute;
use App\Traits\SeoTrait;
use Livewire\Volt\Component;
use Livewire\Attributes\Layout;
new #[Layout('components.layouts.auth')]
new
#[Layout('components.layouts.auth')]
#[SeoDataAttribute(key: 'welcome')]
class extends Component {
use SeoTrait;