diff --git a/app/Http/Livewire/Meetup/LandingPageEvent.php b/app/Http/Livewire/Meetup/LandingPageEvent.php new file mode 100644 index 00000000..b526e5a5 --- /dev/null +++ b/app/Http/Livewire/Meetup/LandingPageEvent.php @@ -0,0 +1,152 @@ + [ + 'required', + new UniqueAttendeeName($this->meetupEvent) + ], + ]; + } + + public function mount() + { + $this->meetupEvent->load('meetup.users:id'); + $this->meetup = $this->meetupEvent->meetup; + $this->checkShowUp(); + } + + public function checkShowUp() + { + $attendees = collect($this->meetupEvent->attendees); + $mightAttendees = collect($this->meetupEvent->might_attendees); + + if (auth()->check() && $attendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) { + $this->name = str($attendees->filter(fn($value) => str($value)->contains('id_'.auth()->id())) + ->first()) + ->after('|') + ->toString(); + $this->willShowUp = true; + } + + if (!auth()->check() && $attendees->contains(fn($value) => str($value)->contains('anon_'.session()->getId()))) { + $this->name = str($attendees->filter(fn($value) => str($value)->contains('anon_'.session()->getId())) + ->first()) + ->after('|') + ->toString(); + $this->willShowUp = true; + } + + if (auth()->check() && $mightAttendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) { + $this->name = str($mightAttendees->filter(fn($value) => str($value)->contains('id_'.auth()->id())) + ->first()) + ->after('|') + ->toString(); + $this->perhapsShowUp = true; + } + + if (!auth()->check() && $mightAttendees->contains(fn($value + ) => str($value)->contains('anon_'.session()->getId()))) { + $this->name = str($mightAttendees->filter(fn($value) => str($value)->contains('anon_'.session()->getId())) + ->first()) + ->after('|') + ->toString(); + $this->perhapsShowUp = true; + } + } + + public function cannotCome() + { + $attendees = collect($this->meetupEvent->attendees); + $mightAttendees = collect($this->meetupEvent->might_attendees); + + if (auth()->check() && $attendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) { + $attendees = $attendees->filter(fn($value) => !str($value)->contains('id_'.auth()->id())); + $this->willShowUp = false; + } + + if (!auth()->check() && $attendees->contains(fn($value) => str($value)->contains('anon_'.session()->getId()))) { + $attendees = $attendees->filter(fn($value) => !str($value)->contains('anon_'.session()->getId())); + $this->willShowUp = false; + } + + if (auth()->check() && $mightAttendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) { + $mightAttendees = $mightAttendees->filter(fn($value) => !str($value)->contains('id_'.auth()->id())); + $this->perhapsShowUp = false; + } + + if (!auth()->check() && $mightAttendees->contains(fn($value + ) => str($value)->contains('anon_'.session()->getId()))) { + $mightAttendees = $mightAttendees->filter(fn($value) => !str($value)->contains('anon_'.session()->getId())); + $this->perhapsShowUp = false; + } + + $this->meetupEvent->update([ + 'attendees' => $attendees->toArray(), + 'might_attendees' => $mightAttendees->toArray(), + ]); + } + + public function attend() + { + $this->validate(); + $attendees = collect($this->meetupEvent->attendees); + + if (auth()->check() && !$attendees->contains('id_'.auth()->id().'|'.$this->name)) { + $attendees->push('id_'.auth()->id().'|'.$this->name); + $this->willShowUp = true; + } + + if (!auth()->check() && !$attendees->contains('anon_'.session()->getId().'|'.$this->name)) { + $attendees->push('anon_'.session()->getId().'|'.$this->name); + $this->willShowUp = true; + } + + $this->meetupEvent->update([ + 'attendees' => $attendees->toArray(), + ]); + } + + public function mightAttend() + { + $this->validate(); + $mightAttendees = collect($this->meetupEvent->might_attendees); + + if (auth()->check() && !$mightAttendees->contains('id_'.auth()->id().'|'.$this->name)) { + $mightAttendees->push('id_'.auth()->id().'|'.$this->name); + $this->perhapsShowUp = true; + } + + if (!auth()->check() && !$mightAttendees->contains('anon_'.session()->getId().'|'.$this->name)) { + $mightAttendees->push('anon_'.session()->getId().'|'.$this->name); + $this->perhapsShowUp = true; + } + + $this->meetupEvent->update([ + 'might_attendees' => $mightAttendees->toArray(), + ]); + } + + public function render() + { + return view('livewire.meetup.landing-page-event'); + } +} diff --git a/app/Http/Livewire/Tables/MeetupEventTable.php b/app/Http/Livewire/Tables/MeetupEventTable.php index aa83b299..5b91b1fc 100644 --- a/app/Http/Livewire/Tables/MeetupEventTable.php +++ b/app/Http/Livewire/Tables/MeetupEventTable.php @@ -17,9 +17,8 @@ class MeetupEventTable extends DataTableComponent public function configure(): void { $this->setPrimaryKey('id') - ->setAdditionalSelects(['id']) + ->setAdditionalSelects(['meetup_events.id','meetup_events.meetup_id']) ->setDefaultSort('start', 'asc') - ->setAdditionalSelects(['meetup_events.meetup_id']) ->setThAttributes(function (Column $column) { return [ 'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400', diff --git a/app/Models/MeetupEvent.php b/app/Models/MeetupEvent.php index cbe596b7..5ec764ad 100644 --- a/app/Models/MeetupEvent.php +++ b/app/Models/MeetupEvent.php @@ -21,9 +21,11 @@ class MeetupEvent extends Model * @var array */ protected $casts = [ - 'id' => 'integer', - 'meetup_id' => 'integer', - 'start' => 'datetime', + 'id' => 'integer', + 'meetup_id' => 'integer', + 'start' => 'datetime', + 'attendees' => 'array', + 'might_attendees' => 'array', ]; protected static function booted() diff --git a/app/Rules/UniqueAttendeeName.php b/app/Rules/UniqueAttendeeName.php new file mode 100644 index 00000000..a8d6d3e5 --- /dev/null +++ b/app/Rules/UniqueAttendeeName.php @@ -0,0 +1,45 @@ +meetupEvent->refresh(); + $attendees = collect($this->meetupEvent->attendees); + $mightAttendees = collect($this->meetupEvent->might_attendees); + $isInAttendees = $attendees + ->contains(fn($v) => str($v) + ->after('|') + ->lower() + ->toString() === str($value) + ->lower() + ->toString()); + $isInMightAttendees = $mightAttendees + ->contains(fn($v) => str($v) + ->after('|') + ->lower() + ->toString() === str($value) + ->lower() + ->toString()); + if ($isInAttendees) { + $fail('The name is already taken.'); + } + if ($isInMightAttendees) { + $fail('The name is already taken.'); + } + } +} diff --git a/composer.lock b/composer.lock index 760994c0..5116314b 100644 --- a/composer.lock +++ b/composer.lock @@ -4526,16 +4526,16 @@ }, { "name": "monolog/monolog", - "version": "2.8.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { @@ -4550,7 +4550,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -4612,7 +4612,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -4624,7 +4624,7 @@ "type": "tidelift" } ], - "time": "2022-07-24T11:55:47+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "myclabs/php-enum", @@ -9137,16 +9137,16 @@ }, { "name": "spatie/laravel-ray", - "version": "1.32.1", + "version": "1.32.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ray.git", - "reference": "8ecf893a7af385e72b1f63cbd318fb00e2dca340" + "reference": "0c28a8274ec261a2857b4318b6f934af98024395" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/8ecf893a7af385e72b1f63cbd318fb00e2dca340", - "reference": "8ecf893a7af385e72b1f63cbd318fb00e2dca340", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/0c28a8274ec261a2857b4318b6f934af98024395", + "reference": "0c28a8274ec261a2857b4318b6f934af98024395", "shasum": "" }, "require": { @@ -9206,7 +9206,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.32.1" + "source": "https://github.com/spatie/laravel-ray/tree/1.32.2" }, "funding": [ { @@ -9218,7 +9218,7 @@ "type": "other" } ], - "time": "2023-01-26T13:02:05+00:00" + "time": "2023-02-06T09:46:50+00:00" }, { "name": "spatie/laravel-sluggable", diff --git a/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php b/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php new file mode 100644 index 00000000..bea82de0 --- /dev/null +++ b/database/migrations/2023_02_06_162858_add_attend_fields_to_meetup_events_table.php @@ -0,0 +1,32 @@ +json('attendees') + ->nullable(); + $table->json('might_attendees') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + * @return void + */ + public function down() + { + Schema::table('meetup_events', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 8c5069ee..46790152 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -273,10 +273,10 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera 'venue_id' => 2, 'link' => 'https://einundzwanzig.space', 'from' => now() - ->addDays(3) + ->addDays(31) ->startOfDay(), 'to' => now() - ->addDays(3) + ->addDays(31) ->startOfDay() ->addHour(), 'created_by' => 1, @@ -387,11 +387,12 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera 'name' => 'Einundzwanzig Hessen', 'telegram_link' => 'https://t.me/EinundzwanzigHessen', 'created_by' => 1, + 'intro' => fake()->text(80), ]); MeetupEvent::create([ 'meetup_id' => 1, 'start' => now() - ->addDays(2) + ->addDays(31) ->startOfDay() ->addHours(20), 'location' => 'Einundzwanzig Kempten', @@ -415,54 +416,63 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 3, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); Meetup::create([ 'city_id' => 1, 'name' => 'Einundzwanzig ' . str()->random(5), 'telegram_link' => 'https://t.me/EinundzwanzigKempten', 'created_by' => 1, + 'intro' => fake()->text(80), ]); BitcoinEvent::create([ 'venue_id' => 4, diff --git a/resources/lang/de.json b/resources/lang/de.json index b98d6218..9b7beef0 100644 --- a/resources/lang/de.json +++ b/resources/lang/de.json @@ -698,5 +698,14 @@ "Open on Youtube": "Auf Youtube öffnen", "You do not have permission to view the page.": "Du hast keine Berechtigung, die Seite anzuzeigen.", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "Bitte kontaktiere die Administratoren für neue Dateitypen, ansonsten packe die Dateien in ein ZIP! (Derzeit: PDF, ZIP)", - "load more...": "" + "load more...": "laden mehr...", + "When": "Wann", + "Where": "Wo", + "Event-Link": "Event-Link", + "Confirmations": "Teilnahmebestätigungen", + "Perhaps": "Vielleicht", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "Dein eindeutiger Name, damit wir die Anzahl der Teilnehmer korrekt zählen können (muss nicht unbedingt dein echter Name sein)", + "I will show up": "Ich sage zu", + "Unfortunately I can\\'t come": "Leider kann ich nicht kommen", + "Might attend": "Vielleicht komme ich" } diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index 30aa516c..624e430c 100644 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -1,218 +1,218 @@ ':Attribute muss akzeptiert werden.', - 'accepted_if' => ':Attribute muss akzeptiert werden, wenn :other :value ist.', - 'active_url' => ':Attribute ist keine gültige Internet-Adresse.', - 'after' => ':Attribute muss ein Datum nach :date sein.', - 'after_or_equal' => ':Attribute muss ein Datum nach :date oder gleich :date sein.', - 'alpha' => ':Attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':Attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', - 'alpha_num' => ':Attribute darf nur aus Buchstaben und Zahlen bestehen.', - 'array' => ':Attribute muss ein Array sein.', - 'attached' => ':Attribute ist bereits angehängt.', - 'attributes' => - array ( - 'address' => 'adresse', - 'age' => 'alter', - 'amount' => 'amount', - 'area' => 'gebiet', - 'available' => 'verfügbar', - 'birthday' => 'geburtstag', - 'body' => 'körper', - 'city' => 'stadt', - 'content' => 'inhalt', - 'country' => 'land', - 'created_at' => 'erstellt am', - 'creator' => 'ersteller', - 'current_password' => 'derzeitiges passwort', - 'date' => 'datum', - 'date_of_birth' => 'geburtsdatum', - 'day' => 'tag', - 'deleted_at' => 'gelöscht am', - 'description' => 'beschreibung', - 'district' => 'bezirk', - 'duration' => 'dauer', - 'email' => 'e-mail-adresse', - 'excerpt' => 'auszug', - 'filter' => 'filter', - 'first_name' => 'vorname', - 'gender' => 'geschlecht', - 'group' => 'gruppe', - 'hour' => 'stunde', - 'image' => 'bild', - 'last_name' => 'nachname', - 'lesson' => 'lesson', - 'line_address_1' => 'adresszeile 1', - 'line_address_2' => 'adresszeile 2', - 'message' => 'nachricht', - 'middle_name' => 'zweitname', - 'minute' => 'minute', - 'mobile' => 'handynummer', - 'month' => 'monat', - 'name' => 'name', - 'national_code' => 'länderkennung', - 'number' => 'nummer', - 'password' => 'passwort', - 'password_confirmation' => 'passwortbestätigung', - 'phone' => 'telefonnummer', - 'photo' => 'foto', - 'postal_code' => 'postleitzahl', - 'price' => 'preis', - 'province' => 'provinz', - 'recaptcha_response_field' => 'captcha-feld', - 'remember' => 'erinnern', - 'restored_at' => 'wiederhergestellt am', - 'result_text_under_image' => 'ergebnistext unter bild', - 'role' => 'rolle', - 'second' => 'sekunde', - 'sex' => 'geschlecht', - 'short_text' => 'kurzer text', - 'size' => 'größe', - 'state' => 'bundesland', - 'street' => 'straße', - 'student' => 'schüler/student', - 'subject' => 'subject', - 'teacher' => 'lehrer', - 'terms' => 'bedingungen', - 'test_description' => 'test beschreibung', - 'test_locale' => 'test region', - 'test_name' => 'test name', - 'text' => 'text', - 'time' => 'uhrzeit', - 'title' => 'titel', - 'updated_at' => 'aktualisiert am', - 'username' => 'benutzername', - 'year' => 'jahr', - ), - 'before' => ':Attribute muss ein Datum vor :date sein.', - 'before_or_equal' => ':Attribute muss ein Datum vor :date oder gleich :date sein.', - 'between' => - array ( - 'array' => ':Attribute muss zwischen :min & :max Elemente haben.', - 'file' => ':Attribute muss zwischen :min & :max Kilobytes groß sein.', - 'numeric' => ':Attribute muss zwischen :min & :max liegen.', - 'string' => ':Attribute muss zwischen :min & :max Zeichen lang sein.', - ), - 'boolean' => ':Attribute muss entweder \'true\' oder \'false\' sein.', - 'confirmed' => ':Attribute stimmt nicht mit der Bestätigung überein.', - 'current_password' => 'Das Passwort ist falsch.', - 'date' => ':Attribute muss ein gültiges Datum sein.', - 'date_equals' => ':Attribute muss ein Datum gleich :date sein.', - 'date_format' => ':Attribute entspricht nicht dem gültigen Format für :format.', - 'declined' => ':Attribute muss abgelehnt werden.', - 'declined_if' => ':Attribute muss abgelehnt werden wenn :other :value ist.', - 'different' => ':Attribute und :other müssen sich unterscheiden.', - 'digits' => ':Attribute muss :digits Stellen haben.', - 'digits_between' => ':Attribute muss zwischen :min und :max Stellen haben.', - 'dimensions' => ':Attribute hat ungültige Bildabmessungen.', - 'distinct' => ':Attribute beinhaltet einen bereits vorhandenen Wert.', - 'doesnt_end_with' => ':Attribute darf nicht mit einem der folgenden enden: :values.', - 'doesnt_start_with' => ':Attribute darf nicht mit einem der folgenden beginnen: :values.', - 'email' => ':Attribute muss eine gültige E-Mail-Adresse sein.', - 'ends_with' => ':Attribute muss eine der folgenden Endungen aufweisen: :values', - 'enum' => 'Der ausgewählte Wert ist ungültig.', - 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', - 'file' => ':Attribute muss eine Datei sein.', - 'filled' => ':Attribute muss ausgefüllt sein.', - 'gt' => - array ( - 'array' => ':Attribute muss mehr als :value Elemente haben.', - 'file' => ':Attribute muss größer als :value Kilobytes sein.', - 'numeric' => ':Attribute muss größer als :value sein.', - 'string' => ':Attribute muss länger als :value Zeichen sein.', - ), - 'gte' => - array ( - 'array' => ':Attribute muss mindestens :value Elemente haben.', - 'file' => ':Attribute muss größer oder gleich :value Kilobytes sein.', - 'numeric' => ':Attribute muss größer oder gleich :value sein.', - 'string' => ':Attribute muss mindestens :value Zeichen lang sein.', - ), - 'image' => ':Attribute muss ein Bild sein.', - 'in' => 'Der gewählte Wert für :attribute ist ungültig.', - 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', - 'integer' => ':Attribute muss eine ganze Zahl sein.', - 'ip' => ':Attribute muss eine gültige IP-Adresse sein.', - 'ipv4' => ':Attribute muss eine gültige IPv4-Adresse sein.', - 'ipv6' => ':Attribute muss eine gültige IPv6-Adresse sein.', - 'json' => ':Attribute muss ein gültiger JSON-String sein.', - 'lowercase' => ':Attribute muss in Kleinbuchstaben sein.', - 'lt' => - array ( - 'array' => ':Attribute muss weniger als :value Elemente haben.', - 'file' => ':Attribute muss kleiner als :value Kilobytes sein.', - 'numeric' => ':Attribute muss kleiner als :value sein.', - 'string' => ':Attribute muss kürzer als :value Zeichen sein.', - ), - 'lte' => - array ( - 'array' => ':Attribute darf maximal :value Elemente haben.', - 'file' => ':Attribute muss kleiner oder gleich :value Kilobytes sein.', - 'numeric' => ':Attribute muss kleiner oder gleich :value sein.', - 'string' => ':Attribute darf maximal :value Zeichen lang sein.', - ), - 'mac_address' => 'Der Wert muss eine gültige MAC-Adresse sein.', - 'max' => - array ( - 'array' => ':Attribute darf maximal :max Elemente haben.', - 'file' => ':Attribute darf maximal :max Kilobytes groß sein.', - 'numeric' => ':Attribute darf maximal :max sein.', - 'string' => ':Attribute darf maximal :max Zeichen haben.', - ), - 'max_digits' => ':Attribute darf maximal :max Ziffern lang sein.', - 'mimes' => ':Attribute muss den Dateityp :values haben.', - 'mimetypes' => ':Attribute muss den Dateityp :values haben.', - 'min' => - array ( - 'array' => ':Attribute muss mindestens :min Elemente haben.', - 'file' => ':Attribute muss mindestens :min Kilobytes groß sein.', - 'numeric' => ':Attribute muss mindestens :min sein.', - 'string' => ':Attribute muss mindestens :min Zeichen lang sein.', - ), - 'min_digits' => ':Attribute muss mindestens :min Ziffern lang sein.', - 'multiple_of' => ':Attribute muss ein Vielfaches von :value sein.', - 'not_in' => 'Der gewählte Wert für :attribute ist ungültig.', - 'not_regex' => ':Attribute hat ein ungültiges Format.', - 'numeric' => ':Attribute muss eine Zahl sein.', - 'password' => - array ( - 'letters' => ':Attribute muss mindestens einen Buchstaben beinhalten.', - 'mixed' => ':Attribute muss mindestens einen Großbuchstaben und einen Kleinbuchstaben beinhalten.', - 'numbers' => ':Attribute muss mindestens eine Zahl beinhalten.', - 'symbols' => ':Attribute muss mindestens ein Sonderzeichen beinhalten.', - 'uncompromised' => ':Attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.', - ), - 'present' => ':Attribute muss vorhanden sein.', - 'prohibited' => ':Attribute ist unzulässig.', - 'prohibited_if' => ':Attribute ist unzulässig, wenn :other :value ist.', - 'prohibited_unless' => ':Attribute ist unzulässig, wenn :other nicht :values ist.', - 'prohibits' => ':Attribute verbietet die Angabe von :other.', - 'regex' => ':Attribute Format ist ungültig.', - 'relatable' => ':Attribute kann nicht mit dieser Ressource verbunden werden.', - 'required' => ':Attribute muss ausgefüllt werden.', - 'required_array_keys' => 'Dieses Feld muss Einträge enthalten für: :values.', - 'required_if' => ':Attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', - 'required_if_accepted' => ':Attribute muss ausgefüllt werden, wenn :other gewählt ist.', - 'required_unless' => ':Attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', - 'required_with' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', - 'required_with_all' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', - 'required_without' => ':Attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', - 'required_without_all' => ':Attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', - 'same' => ':Attribute und :other müssen übereinstimmen.', - 'size' => - array ( - 'array' => ':Attribute muss genau :size Elemente haben.', - 'file' => ':Attribute muss :size Kilobyte groß sein.', - 'numeric' => ':Attribute muss gleich :size sein.', - 'string' => ':Attribute muss :size Zeichen lang sein.', - ), - 'starts_with' => ':Attribute muss mit einem der folgenden Anfänge aufweisen: :values', - 'string' => ':Attribute muss ein String sein.', - 'timezone' => ':Attribute muss eine gültige Zeitzone sein.', - 'unique' => ':Attribute ist bereits vergeben.', - 'uploaded' => ':Attribute konnte nicht hochgeladen werden.', - 'uppercase' => ':Attribute muss in Großbuchstaben sein.', - 'url' => ':Attribute muss eine URL sein.', - 'uuid' => ':Attribute muss ein UUID sein.', -); +return [ + 'accepted' => ':Attribute muss akzeptiert werden.', + 'accepted_if' => ':Attribute muss akzeptiert werden, wenn :other :value ist.', + 'active_url' => ':Attribute ist keine gültige Internet-Adresse.', + 'after' => ':Attribute muss ein Datum nach :date sein.', + 'after_or_equal' => ':Attribute muss ein Datum nach :date oder gleich :date sein.', + 'alpha' => ':Attribute darf nur aus Buchstaben bestehen.', + 'alpha_dash' => ':Attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', + 'alpha_num' => ':Attribute darf nur aus Buchstaben und Zahlen bestehen.', + 'array' => ':Attribute muss ein Array sein.', + 'attached' => ':Attribute ist bereits angehängt.', + 'attributes' => + [ + 'address' => 'adresse', + 'age' => 'alter', + 'amount' => 'amount', + 'area' => 'gebiet', + 'available' => 'verfügbar', + 'birthday' => 'geburtstag', + 'body' => 'körper', + 'city' => 'stadt', + 'content' => 'inhalt', + 'country' => 'land', + 'created_at' => 'erstellt am', + 'creator' => 'ersteller', + 'current_password' => 'derzeitiges passwort', + 'date' => 'datum', + 'date_of_birth' => 'geburtsdatum', + 'day' => 'tag', + 'deleted_at' => 'gelöscht am', + 'description' => 'beschreibung', + 'district' => 'bezirk', + 'duration' => 'dauer', + 'email' => 'e-mail-adresse', + 'excerpt' => 'auszug', + 'filter' => 'filter', + 'first_name' => 'vorname', + 'gender' => 'geschlecht', + 'group' => 'gruppe', + 'hour' => 'stunde', + 'image' => 'bild', + 'last_name' => 'nachname', + 'lesson' => 'lesson', + 'line_address_1' => 'adresszeile 1', + 'line_address_2' => 'adresszeile 2', + 'message' => 'nachricht', + 'middle_name' => 'zweitname', + 'minute' => 'minute', + 'mobile' => 'handynummer', + 'month' => 'monat', + 'name' => 'name', + 'national_code' => 'länderkennung', + 'number' => 'nummer', + 'password' => 'passwort', + 'password_confirmation' => 'passwortbestätigung', + 'phone' => 'telefonnummer', + 'photo' => 'foto', + 'postal_code' => 'postleitzahl', + 'price' => 'preis', + 'province' => 'provinz', + 'recaptcha_response_field' => 'captcha-feld', + 'remember' => 'erinnern', + 'restored_at' => 'wiederhergestellt am', + 'result_text_under_image' => 'ergebnistext unter bild', + 'role' => 'rolle', + 'second' => 'sekunde', + 'sex' => 'geschlecht', + 'short_text' => 'kurzer text', + 'size' => 'größe', + 'state' => 'bundesland', + 'street' => 'straße', + 'student' => 'schüler/student', + 'subject' => 'subject', + 'teacher' => 'lehrer', + 'terms' => 'bedingungen', + 'test_description' => 'test beschreibung', + 'test_locale' => 'test region', + 'test_name' => 'test name', + 'text' => 'text', + 'time' => 'uhrzeit', + 'title' => 'titel', + 'updated_at' => 'aktualisiert am', + 'username' => 'benutzername', + 'year' => 'jahr', + ], + 'before' => ':Attribute muss ein Datum vor :date sein.', + 'before_or_equal' => ':Attribute muss ein Datum vor :date oder gleich :date sein.', + 'between' => + [ + 'array' => ':Attribute muss zwischen :min & :max Elemente haben.', + 'file' => ':Attribute muss zwischen :min & :max Kilobytes groß sein.', + 'numeric' => ':Attribute muss zwischen :min & :max liegen.', + 'string' => ':Attribute muss zwischen :min & :max Zeichen lang sein.', + ], + 'boolean' => ':Attribute muss entweder \'true\' oder \'false\' sein.', + 'confirmed' => ':Attribute stimmt nicht mit der Bestätigung überein.', + 'current_password' => 'Das Passwort ist falsch.', + 'date' => ':Attribute muss ein gültiges Datum sein.', + 'date_equals' => ':Attribute muss ein Datum gleich :date sein.', + 'date_format' => ':Attribute entspricht nicht dem gültigen Format für :format.', + 'declined' => ':Attribute muss abgelehnt werden.', + 'declined_if' => ':Attribute muss abgelehnt werden wenn :other :value ist.', + 'different' => ':Attribute und :other müssen sich unterscheiden.', + 'digits' => ':Attribute muss :digits Stellen haben.', + 'digits_between' => ':Attribute muss zwischen :min und :max Stellen haben.', + 'dimensions' => ':Attribute hat ungültige Bildabmessungen.', + 'distinct' => ':Attribute beinhaltet einen bereits vorhandenen Wert.', + 'doesnt_end_with' => ':Attribute darf nicht mit einem der folgenden enden: :values.', + 'doesnt_start_with' => ':Attribute darf nicht mit einem der folgenden beginnen: :values.', + 'email' => ':Attribute muss eine gültige E-Mail-Adresse sein.', + 'ends_with' => ':Attribute muss eine der folgenden Endungen aufweisen: :values', + 'enum' => 'Der ausgewählte Wert ist ungültig.', + 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', + 'file' => ':Attribute muss eine Datei sein.', + 'filled' => ':Attribute muss ausgefüllt sein.', + 'gt' => + [ + 'array' => ':Attribute muss mehr als :value Elemente haben.', + 'file' => ':Attribute muss größer als :value Kilobytes sein.', + 'numeric' => ':Attribute muss größer als :value sein.', + 'string' => ':Attribute muss länger als :value Zeichen sein.', + ], + 'gte' => + [ + 'array' => ':Attribute muss mindestens :value Elemente haben.', + 'file' => ':Attribute muss größer oder gleich :value Kilobytes sein.', + 'numeric' => ':Attribute muss größer oder gleich :value sein.', + 'string' => ':Attribute muss mindestens :value Zeichen lang sein.', + ], + 'image' => ':Attribute muss ein Bild sein.', + 'in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', + 'integer' => ':Attribute muss eine ganze Zahl sein.', + 'ip' => ':Attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => ':Attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => ':Attribute muss eine gültige IPv6-Adresse sein.', + 'json' => ':Attribute muss ein gültiger JSON-String sein.', + 'lowercase' => ':Attribute muss in Kleinbuchstaben sein.', + 'lt' => + [ + 'array' => ':Attribute muss weniger als :value Elemente haben.', + 'file' => ':Attribute muss kleiner als :value Kilobytes sein.', + 'numeric' => ':Attribute muss kleiner als :value sein.', + 'string' => ':Attribute muss kürzer als :value Zeichen sein.', + ], + 'lte' => + [ + 'array' => ':Attribute darf maximal :value Elemente haben.', + 'file' => ':Attribute muss kleiner oder gleich :value Kilobytes sein.', + 'numeric' => ':Attribute muss kleiner oder gleich :value sein.', + 'string' => ':Attribute darf maximal :value Zeichen lang sein.', + ], + 'mac_address' => 'Der Wert muss eine gültige MAC-Adresse sein.', + 'max' => + [ + 'array' => ':Attribute darf maximal :max Elemente haben.', + 'file' => ':Attribute darf maximal :max Kilobytes groß sein.', + 'numeric' => ':Attribute darf maximal :max sein.', + 'string' => ':Attribute darf maximal :max Zeichen haben.', + ], + 'max_digits' => ':Attribute darf maximal :max Ziffern lang sein.', + 'mimes' => ':Attribute muss den Dateityp :values haben.', + 'mimetypes' => ':Attribute muss den Dateityp :values haben.', + 'min' => + [ + 'array' => ':Attribute muss mindestens :min Elemente haben.', + 'file' => ':Attribute muss mindestens :min Kilobytes groß sein.', + 'numeric' => ':Attribute muss mindestens :min sein.', + 'string' => ':Attribute muss mindestens :min Zeichen lang sein.', + ], + 'min_digits' => ':Attribute muss mindestens :min Ziffern lang sein.', + 'multiple_of' => ':Attribute muss ein Vielfaches von :value sein.', + 'not_in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'not_regex' => ':Attribute hat ein ungültiges Format.', + 'numeric' => ':Attribute muss eine Zahl sein.', + 'password' => + [ + 'letters' => ':Attribute muss mindestens einen Buchstaben beinhalten.', + 'mixed' => ':Attribute muss mindestens einen Großbuchstaben und einen Kleinbuchstaben beinhalten.', + 'numbers' => ':Attribute muss mindestens eine Zahl beinhalten.', + 'symbols' => ':Attribute muss mindestens ein Sonderzeichen beinhalten.', + 'uncompromised' => ':Attribute wurde in einem Datenleck gefunden. Bitte wählen Sie ein anderes :attribute.', + ], + 'present' => ':Attribute muss vorhanden sein.', + 'prohibited' => ':Attribute ist unzulässig.', + 'prohibited_if' => ':Attribute ist unzulässig, wenn :other :value ist.', + 'prohibited_unless' => ':Attribute ist unzulässig, wenn :other nicht :values ist.', + 'prohibits' => ':Attribute verbietet die Angabe von :other.', + 'regex' => ':Attribute Format ist ungültig.', + 'relatable' => ':Attribute kann nicht mit dieser Ressource verbunden werden.', + 'required' => ':Attribute muss ausgefüllt werden.', + 'required_array_keys' => 'Dieses Feld muss Einträge enthalten für: :values.', + 'required_if' => ':Attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', + 'required_if_accepted' => ':Attribute muss ausgefüllt werden, wenn :other gewählt ist.', + 'required_unless' => ':Attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', + 'required_with' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_with_all' => ':Attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_without' => ':Attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', + 'required_without_all' => ':Attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', + 'same' => ':Attribute und :other müssen übereinstimmen.', + 'size' => + [ + 'array' => ':Attribute muss genau :size Elemente haben.', + 'file' => ':Attribute muss :size Kilobyte groß sein.', + 'numeric' => ':Attribute muss gleich :size sein.', + 'string' => ':Attribute muss :size Zeichen lang sein.', + ], + 'starts_with' => ':Attribute muss mit einem der folgenden Anfänge aufweisen: :values', + 'string' => ':Attribute muss ein String sein.', + 'timezone' => ':Attribute muss eine gültige Zeitzone sein.', + 'unique' => ':Attribute ist bereits vergeben.', + 'uploaded' => ':Attribute konnte nicht hochgeladen werden.', + 'uppercase' => ':Attribute muss in Großbuchstaben sein.', + 'url' => ':Attribute muss eine URL sein.', + 'uuid' => ':Attribute muss ein UUID sein.', +]; diff --git a/resources/lang/en.json b/resources/lang/en.json index 845f7681..77fe522f 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -692,5 +692,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" -} + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" +} \ No newline at end of file diff --git a/resources/lang/es.json b/resources/lang/es.json index d6493625..cb0c04ee 100644 --- a/resources/lang/es.json +++ b/resources/lang/es.json @@ -692,5 +692,14 @@ "Open on Youtube": "Abrir en Youtube", "You do not have permission to view the page.": "No tienes permiso para ver la página.", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "Si deseas nuevos tipos de archivo, pónte en contacto con los administradores; de lo contrario, envíe los archivos en un ZIP. (Actualmente: PDF, ZIP)", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/fr.json b/resources/lang/fr.json index 59cbd973..001c7b2f 100644 --- a/resources/lang/fr.json +++ b/resources/lang/fr.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/hr.json b/resources/lang/hr.json index 190ba5ac..c81810a3 100644 --- a/resources/lang/hr.json +++ b/resources/lang/hr.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/it.json b/resources/lang/it.json index bba13bdc..7e571cee 100644 --- a/resources/lang/it.json +++ b/resources/lang/it.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/mk.json b/resources/lang/mk.json index c57d4b23..85eb33f5 100644 --- a/resources/lang/mk.json +++ b/resources/lang/mk.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/pl.json b/resources/lang/pl.json index e7cb961e..b3415cbd 100644 --- a/resources/lang/pl.json +++ b/resources/lang/pl.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/pt.json b/resources/lang/pt.json index 7bb3ae5f..a9fd89c4 100644 --- a/resources/lang/pt.json +++ b/resources/lang/pt.json @@ -693,5 +693,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/lang/tr.json b/resources/lang/tr.json index 8832c76a..67d11244 100644 --- a/resources/lang/tr.json +++ b/resources/lang/tr.json @@ -667,5 +667,14 @@ "Open on Youtube": "", "You do not have permission to view the page.": "", "Please contact the admins for new file types, otherwise pack the files in a ZIP! (Currently: PDF, ZIP)": "", - "load more...": "" + "load more...": "", + "When": "", + "Where": "", + "Event-Link": "", + "Confirmations": "", + "Perhaps": "", + "Your unique name so that we can count the number of participants correctly (does not necessarily have to be your real name)": "", + "I will show up": "", + "Unfortunately I can\\'t come": "", + "Might attend": "" } \ No newline at end of file diff --git a/resources/views/columns/meetup_events/link.blade.php b/resources/views/columns/meetup_events/link.blade.php index 537a4b75..9bb88505 100644 --- a/resources/views/columns/meetup_events/link.blade.php +++ b/resources/views/columns/meetup_events/link.blade.php @@ -1,9 +1,9 @@