From 4c0d387692cc11d9fa4d1140b2dc1d5292736952 Mon Sep 17 00:00:00 2001 From: HolgerHatGarKeineNode Date: Sat, 17 Jan 2026 17:07:15 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Refactor=20Blade=20view?= =?UTF-8?q?s=20for=20Livewire=20component=20consistency,=20streamline=20lo?= =?UTF-8?q?gin=20view,=20and=20improve=20key=20usage=20across=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replaced `state` and `computed` with `Livewire\Component` implementations in `language/selector.blade.php` for enhanced maintainability. - Adjusted `login.blade.php` syntax for dynamic href generation and removed commented-out sign-up link. - Added unique `wire:key` attributes to iterable elements for enhanced performance and reactivity. - Simplified controller routing and corrected indentation in `web.php`, improving clarity. --- resources/views/livewire/auth/login.blade.php | 18 ++-- resources/views/livewire/dashboard.blade.php | 4 +- .../livewire/language/selector.blade.php | 84 ++++++++++--------- .../views/livewire/timezone/chooser.blade.php | 2 +- routes/web.php | 53 ++++++------ 5 files changed, 80 insertions(+), 81 deletions(-) diff --git a/resources/views/livewire/auth/login.blade.php b/resources/views/livewire/auth/login.blade.php index 55e19ec..ffa1408 100644 --- a/resources/views/livewire/auth/login.blade.php +++ b/resources/views/livewire/auth/login.blade.php @@ -18,11 +18,8 @@ use Livewire\Attributes\Validate; use Livewire\Component; use SimpleSoftwareIO\QrCode\Facades\QrCode; -new -#[Layout('components.layouts.auth')] -#[SeoDataAttribute(key: 'login')] -class extends Component -{ +new #[Layout('components.layouts.auth')] +class extends Component { use SeoTrait; #[Validate('required|string|email')] @@ -208,7 +205,8 @@ class extends Component $this->authError = null; $this->mount(); } -}; ?> +}; +?>
{{ __('Click to connect') }}
- - {{--@if (Route::has('register')) - - First time around here? Sign up for free - - @endif--}} diff --git a/resources/views/livewire/dashboard.blade.php b/resources/views/livewire/dashboard.blade.php index 69a6f4f..0ddc3f4 100644 --- a/resources/views/livewire/dashboard.blade.php +++ b/resources/views/livewire/dashboard.blade.php @@ -20,6 +20,8 @@ class extends Component { { if (!auth()->check()) { $this->redirectRoute('login'); + + return; } $this->country = request()->route('country', config('app.domain_country')); } @@ -90,7 +92,7 @@ class extends Component {
@foreach($myUpcomingEvents as $event) -
diff --git a/resources/views/livewire/language/selector.blade.php b/resources/views/livewire/language/selector.blade.php index 53aa570..f3bdbce 100644 --- a/resources/views/livewire/language/selector.blade.php +++ b/resources/views/livewire/language/selector.blade.php @@ -1,48 +1,54 @@ fn() => session('lang_country', config('lang-country.fallback'))]); +new class extends Component { + public $langCountry; -$languages = computed(function () { - // Scan lang folder for available languages - $availableLanguages = collect(glob(base_path('lang/*.json'))) - ->map(fn($file) => pathinfo($file, PATHINFO_FILENAME)) - ->toArray(); - - $allLanguages = [ - 'de' => ['name' => 'Deutsch', 'countries' => ['de-DE', 'de-AT', 'de-CH']], - 'en' => ['name' => 'English', 'countries' => ['en-GB', 'en-US', 'en-AU', 'en-CA']], - 'es' => ['name' => 'Español', 'countries' => ['es-ES', 'es-CL', 'es-CO']], - 'hu' => ['name' => 'Magyar', 'countries' => ['hu-HU']], - 'nl' => ['name' => 'Nederlands', 'countries' => ['nl-NL', 'nl-BE']], - 'pl' => ['name' => 'Polski', 'countries' => ['pl-PL']], - 'pt' => ['name' => 'Português', 'countries' => ['pt-PT']], - ]; - - // Filter languages based on available JSON files and allowed languages - $languages = array_filter($allLanguages, function ($data, $key) use ($availableLanguages) { - return in_array($key, $availableLanguages) && - count(array_intersect($data['countries'], config('lang-country.allowed'))) > 0; - }, ARRAY_FILTER_USE_BOTH); - - // Build options array - $options = []; - foreach ($languages as $langCode => $langData) { - foreach ($langData['countries'] as $langCountry) { - [$lang, $countryCode] = explode('-', $langCountry); - $options[] = [ - 'value' => $langCountry, - 'label' => $langData['name'] . ' (' . strtoupper($countryCode) . ')', - ]; - } + public function mount() { + $this->langCountry = session('lang_country', config('lang-country.fallback')); } - return $options; -}); + public function getLanguagesProperty() { + // Scan lang folder for available languages + $availableLanguages = collect(glob(base_path('lang/*.json'))) + ->map(fn($file) => pathinfo($file, PATHINFO_FILENAME)) + ->toArray(); -$updateLanguage = function () { - return redirect()->route('lang_country.switch', ['lang_country' => $this->langCountry]); + $allLanguages = [ + 'de' => ['name' => 'Deutsch', 'countries' => ['de-DE', 'de-AT', 'de-CH']], + 'en' => ['name' => 'English', 'countries' => ['en-GB', 'en-US', 'en-AU', 'en-CA']], + 'es' => ['name' => 'Español', 'countries' => ['es-ES', 'es-CL', 'es-CO']], + 'hu' => ['name' => 'Magyar', 'countries' => ['hu-HU']], + 'nl' => ['name' => 'Nederlands', 'countries' => ['nl-NL', 'nl-BE']], + 'pl' => ['name' => 'Polski', 'countries' => ['pl-PL']], + 'pt' => ['name' => 'Português', 'countries' => ['pt-PT']], + ]; + + // Filter languages based on available JSON files and allowed languages + $languages = array_filter($allLanguages, function ($data, $key) use ($availableLanguages) { + return in_array($key, $availableLanguages) && + count(array_intersect($data['countries'], config('lang-country.allowed'))) > 0; + }, ARRAY_FILTER_USE_BOTH); + + // Build options array + $options = []; + foreach ($languages as $langCode => $langData) { + foreach ($langData['countries'] as $langCountry) { + [$lang, $countryCode] = explode('-', $langCountry); + $options[] = [ + 'value' => $langCountry, + 'label' => $langData['name'] . ' (' . strtoupper($countryCode) . ')', + ]; + } + } + + return $options; + } + + public function updateLanguage() { + return redirect()->route('lang_country.switch', ['lang_country' => $this->langCountry]); + } }; ?> @@ -55,7 +61,7 @@ $updateLanguage = function () { :placeholder="__('Sprache wählen')" > @foreach($this->languages as $option) - +
{{ str($option['value'])->after('-')->lower() }} @foreach($timezones as $timezone) - + {{ $timezone }} @endforeach diff --git a/routes/web.php b/routes/web.php index c1e2914..d76b643 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,7 +2,6 @@ use Illuminate\Support\Facades\Route; use Laravel\Nightwatch\Http\Middleware\Sample; -use Livewire\Volt\Volt; // Redirect root URL to 'welcome' page Route::redirect('/', 'welcome'); @@ -92,37 +91,37 @@ Route::middleware([]) Route::get('/meetup/meetup-events', function ($country) { return redirect("/{$country}/meetups"); }); - // Old event landing page route (deprecated) - Route::livewire('/meetup/meetup-events/l/{event}', 'meetups.landingpage-event') - ->name('meetups.landingpage-event-old') - ->where('event', '[0-9]+'); + // Old event landing page route (deprecated) + Route::livewire('/meetup/meetup-events/l/{event}', 'meetups.landingpage-event') + ->name('meetups.landingpage-event-old') + ->where('event', '[0-9]+'); - /* Meetup related routes */ - Route::livewire('/meetups', 'meetups.index')->name('meetups.index'); - Route::livewire('/all-meetups', 'meetups.index')->name('meetups.index-all'); - Route::livewire('/map', 'meetups.map')->name('meetups.map'); - Route::livewire('/map-world', 'meetups.map')->name('meetups.map-world'); - Route::livewire('/meetup/{meetup:slug}', 'meetups.landingpage')->name('meetups.landingpage'); - Route::livewire('/meetup/{meetup:slug}/event/{event}', - 'meetups.landingpage-event') - ->name('meetups.landingpage-event') - ->where('event', '[0-9]+'); + /* Meetup related routes */ + Route::livewire('/meetups', 'meetups.index')->name('meetups.index'); + Route::livewire('/all-meetups', 'meetups.index')->name('meetups.index-all'); + Route::livewire('/map', 'meetups.map')->name('meetups.map'); + Route::livewire('/map-world', 'meetups.map')->name('meetups.map-world'); + Route::livewire('/meetup/{meetup:slug}', 'meetups.landingpage')->name('meetups.landingpage'); + Route::livewire('/meetup/{meetup:slug}/event/{event}', + 'meetups.landingpage-event') + ->name('meetups.landingpage-event') + ->where('event', '[0-9]+'); - /* Course related routes */ - Route::livewire('/courses', 'courses.index')->name('courses.index'); - Route::livewire('/course/{course}', 'courses.landingpage')->name('courses.landingpage'); - Route::livewire('/course/{course}/event/{event}', 'courses.landingpage-event')->name('courses.landingpage-event'); + /* Course related routes */ + Route::livewire('/courses', 'courses.index')->name('courses.index'); + Route::livewire('/course/{course}', 'courses.landingpage')->name('courses.landingpage'); + Route::livewire('/course/{course}/event/{event}', 'courses.landingpage-event')->name('courses.landingpage-event'); - /* Lecturer related routes */ - Route::livewire('/lecturers', 'lecturers.index')->name('lecturers.index'); + /* Lecturer related routes */ + Route::livewire('/lecturers', 'lecturers.index')->name('lecturers.index'); - /* City and venue related routes */ - Route::livewire('/cities', 'cities.index')->name('cities.index'); - Route::livewire('/venues', 'venues.index')->name('venues.index'); + /* City and venue related routes */ + Route::livewire('/cities', 'cities.index')->name('cities.index'); + Route::livewire('/venues', 'venues.index')->name('venues.index'); - /* Self Hosted Services public routes */ - Route::livewire('/services', 'services.index')->name('services.index'); - Route::livewire('/service/{service:slug}', 'services.landingpage')->name('services.landingpage'); + /* Self Hosted Services public routes */ + Route::livewire('/services', 'services.index')->name('services.index'); + Route::livewire('/service/{service:slug}', 'services.landingpage')->name('services.landingpage'); }); // Authenticated user routes with country prefix