diff --git a/app/Http/Livewire/Meetup/LandingPage.php b/app/Http/Livewire/Meetup/LandingPage.php index f35ecdd7..825e6f24 100644 --- a/app/Http/Livewire/Meetup/LandingPage.php +++ b/app/Http/Livewire/Meetup/LandingPage.php @@ -12,6 +12,7 @@ class LandingPage extends Component { public Meetup $meetup; public Country $country; + public ?int $activeEvent = null; public ?int $year = null; @@ -25,20 +26,27 @@ class LandingPage extends Component public function render() { return view('livewire.meetup.landing-page', [ - 'events' => MeetupEvent::query() - ->with([ - 'meetup.city.country', - ]) - ->where('meetup_events.meetup_id', $this->meetup->id) - ->where('meetup_events.start', '>=', now()) - ->get() - ->map(fn($event) => [ - 'id' => $event->id, - 'startDate' => $event->start, - 'endDate' => $event->start->addHours(1), - 'location' => $event->location, - 'description' => $event->description, - ]), + 'meetupEvents' => MeetupEvent::query() + ->with([ + 'meetup.city.country', + ]) + ->where('meetup_events.meetup_id', $this->meetup->id) + ->where('meetup_events.start', '>=', now()) + ->get(), + 'events' => MeetupEvent::query() + ->with([ + 'meetup.city.country', + ]) + ->where('meetup_events.meetup_id', $this->meetup->id) + ->where('meetup_events.start', '>=', now()) + ->get() + ->map(fn($event) => [ + 'id' => $event->id, + 'startDate' => $event->start, + 'endDate' => $event->start->addHours(1), + 'location' => $event->location, + 'description' => $event->description, + ]), ]) ->layout('layouts.guest', [ 'SEOData' => new SEOData( @@ -48,4 +56,9 @@ class LandingPage extends Component ) ]); } + + public function showEvent($id) + { + $this->activeEvent = $id; + } } diff --git a/app/Http/Livewire/Tables/MeetupEventTable.php b/app/Http/Livewire/Tables/MeetupEventTable.php index dc12e054..d242aef8 100644 --- a/app/Http/Livewire/Tables/MeetupEventTable.php +++ b/app/Http/Livewire/Tables/MeetupEventTable.php @@ -71,10 +71,9 @@ class MeetupEventTable extends DataTableComponent ->sortable() ->collapseOnMobile(), Column::make(__('Link'), 'link') - ->format( - fn($value, $row, Column $column) => view('columns.meetup_events.link')->withRow($row) - ) - ->sortable(), + ->label( + fn($row, Column $column) => view('columns.meetup_events.link')->withRow($row)->withCountry($this->country) + ), ]; } diff --git a/app/Http/Livewire/Tables/MeetupTable.php b/app/Http/Livewire/Tables/MeetupTable.php index ef055386..6b9f06ed 100644 --- a/app/Http/Livewire/Tables/MeetupTable.php +++ b/app/Http/Livewire/Tables/MeetupTable.php @@ -53,12 +53,7 @@ class MeetupTable extends DataTableComponent ) ->searchable(fn($builder, $term) => $builder->where('meetups.name', 'ilike', '%'.$term.'%')) ->sortable(), - Column::make(__('Link'), 'link') - ->format( - fn($value, $row, Column $column) => view('columns.meetups.link')->withRow($row) - ) - ->sortable(), - Column::make(__('Links'),) + Column::make(__('Links')) ->label( fn($row, Column $column) => view('columns.meetups.action') ->withRow($row) diff --git a/app/Nova/Meetup.php b/app/Nova/Meetup.php index 84e21102..45592c2d 100644 --- a/app/Nova/Meetup.php +++ b/app/Nova/Meetup.php @@ -70,8 +70,14 @@ class Meetup extends Resource ->creationRules('unique:meetups,name') ->updateRules('unique:meetups,name,{{resourceId}}'), - Text::make('Link') - ->rules('required', 'string'), + Text::make(__('Telegram-Link'), 'telegram_link') + ->rules('url', 'nullable'), + + Text::make(__('Website'), 'webpage') + ->rules('url', 'nullable'), + + Text::make(__('Twitter Username'), 'twitter_username') + ->rules('string', 'nullable'), BelongsTo::make(__('City'), 'city', City::class) ->searchable() diff --git a/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php b/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php new file mode 100644 index 00000000..e5ad39dc --- /dev/null +++ b/database/migrations/2023_01_16_143622_add_links_to_meetups_table.php @@ -0,0 +1,33 @@ +renameColumn('link', 'telegram_link'); + $table->string('webpage') + ->nullable(); + $table->string('twitter_username') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + * @return void + */ + public function down() + { + Schema::table('meetups', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php b/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php new file mode 100644 index 00000000..0877893a --- /dev/null +++ b/database/migrations/2023_01_16_144114_change_telegram_link_on_meetups_table.php @@ -0,0 +1,29 @@ +string('telegram_link') + ->nullable() + ->change(); + }); + } + + /** + * Reverse the migrations. + * @return void + */ + public function down() + { + // + } +}; diff --git a/resources/lang/en.json b/resources/lang/en.json index d7745afc..e9285332 100644 --- a/resources/lang/en.json +++ b/resources/lang/en.json @@ -635,5 +635,8 @@ "logins": "", "points": "", "New meetup created: :title": "New meetup created: :title", - "Submit new book case": "" + "Submit new book case": "", + "Telegram-Link": "", + "Website": "", + "Twitter Username": "" } diff --git a/resources/views/columns/meetup_events/link.blade.php b/resources/views/columns/meetup_events/link.blade.php index 4325784c..0fae0517 100644 --- a/resources/views/columns/meetup_events/link.blade.php +++ b/resources/views/columns/meetup_events/link.blade.php @@ -1,8 +1,43 @@
- - + + + {{ __('Show landing page') }} + + @if($row->meetup->telegram_link) + - {{ __('Open') }} - - + {{ __('Telegram-Link') }} + + @endif + @if($row->meetup->webpage) + + + {{ __('Website') }} + + @endif + @if($row->meetup->twitter_username) + + + {{ __('Twitter') }} + + @endif
diff --git a/resources/views/columns/meetups/action.blade.php b/resources/views/columns/meetups/action.blade.php index cf282ee2..ca9d179c 100644 --- a/resources/views/columns/meetups/action.blade.php +++ b/resources/views/columns/meetups/action.blade.php @@ -1,6 +1,7 @@
@if($row->meetup_events_count > 0) @@ -8,6 +9,7 @@ meetup_events_count < 1) @@ -26,10 +29,44 @@ @endif {{ __('Show landing page') }} + @if($row->telegram_link) + + + {{ __('Telegram-Link') }} + + @endif + @if($row->webpage) + + + {{ __('Website') }} + + @endif + @if($row->twitter_username) + + + {{ __('Twitter') }} + + @endif
diff --git a/resources/views/columns/meetups/link.blade.php b/resources/views/columns/meetups/link.blade.php index 4325784c..aaae3cbb 100644 --- a/resources/views/columns/meetups/link.blade.php +++ b/resources/views/columns/meetups/link.blade.php @@ -1,5 +1,5 @@
- + {{ __('Open') }} diff --git a/resources/views/livewire/meetup/landing-page.blade.php b/resources/views/livewire/meetup/landing-page.blade.php index 9b9c1839..edd27dff 100644 --- a/resources/views/livewire/meetup/landing-page.blade.php +++ b/resources/views/livewire/meetup/landing-page.blade.php @@ -16,13 +16,34 @@
- - - {{ __('Link') }} - + @if($meetup->telegram_link) + + + {{ __('Telegram-Link') }} + + @endif + @if($meetup->webpage) + + + {{ __('Website') }} + + @endif + @if($meetup->twitter_username) + + + {{ __('Twitter') }} + + @endif +
@@ -31,6 +52,71 @@
+
+
+

+ {{ __('Events') }} +

+
+
+ +
+
@php @@ -83,6 +169,12 @@ yearChanged: function(e) { @this.set('year', e.currentYear); }, + clickDay: function(e) { + if(e.events.length > 0) { + $wire.call('showEvent', e.events[0].id); + document.getElementById('courseEventId_'+e.events[0].id).scrollIntoView(); + } + }, }); }, }"