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() }}]({{ asset('vendor/blade-flags/country-'.str($option['value'])->after('-')->lower().'.svg') }})
@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