feat: add signal field to meetups

- Added a new field "Signal" to the meetups form
- Included validation for the new signal field in the form backend
- Updated landing page to display the signal link if available
- Added display of the signal link in the meetup action column
- Created a new migration to add the signal field to the meetups table
- Included the signal field in the API endpoints for meetups and events.
This commit is contained in:
fsociety
2024-09-24 17:21:59 +02:00
parent 579277fc02
commit c1ebd9244a
7 changed files with 69 additions and 0 deletions

View File

@@ -46,6 +46,7 @@ class MeetupForm extends Component
'meetup.twitter_username' => 'string|regex:/^[A-z0-9!@]+$/|nullable|required_without_all:meetup.webpage,meetup.telegram_link,meetup.nostr,meetup.matrix_group',
'meetup.matrix_group' => 'string|nullable|required_without_all:meetup.webpage,meetup.telegram_link,meetup.nostr,meetup.twitter_username',
'meetup.simplex' => 'string|nullable',
'meetup.signal' => 'string|nullable',
];
}

View File

@@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('meetups', function (Blueprint $table) {
$table->string('signal', 255 * 2)->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('meetups', function (Blueprint $table) {
//
});
}
};

View File

@@ -68,6 +68,19 @@
</x-button>
</div>
@endif
@if($row->signal)
<div>
<x-button
xs
black
target="_blank"
:href="$row->signal"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Signal') }}
</x-button>
</div>
@endif
@if($row->webpage)
<div>
<x-button

View File

@@ -99,6 +99,12 @@
/>
</x-input.group>
<x-input.group :for="md5('meetup.signal')" :label="__('Signal')">
<x-input autocomplete="off" wire:model.debounce="meetup.signal"
:placeholder="__('Signal')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.matrix_group')" :label="__('Matrix Group')">
<x-input autocomplete="off" wire:model.debounce="meetup.matrix_group"
:placeholder="__('Matrix Group')"

View File

@@ -140,6 +140,17 @@
</x-button>
@endif
</div>
<div>
@if($meetup->signal)
<x-button
target="_blank"
:href="$meetup->signal"
secondary lg class="mt-4 whitespace-nowrap">
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Signal') }}
</x-button>
@endif
</div>
<div>
@if($meetup->nostr && str($meetup->nostr)->contains('npub1'))
<x-button

View File

@@ -49,6 +49,15 @@
{{ __('SimpleX-Link') }}
</x-button>
@endif
@if($meetup->signal)
<x-button
target="_blank"
:href="$meetup->signal"
primary lg class="mt-4 whitespace-nowrap">
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Signal') }}
</x-button>
@endif
@if($meetup->nostr && str($meetup->nostr)->contains('npub1'))
<x-button
target="_blank"

View File

@@ -99,6 +99,7 @@ Route::middleware([])
'twitter_username' => $meetup->twitter_username,
'website' => $meetup->webpage,
'simplex' => $meetup->simplex,
'signal' => $meetup->signal,
'nostr' => $meetup->nostr,
'next_event' => $meetup->nextEvent,
'intro' => $request->has('withIntro') ? $meetup->intro : null,
@@ -134,6 +135,7 @@ Route::middleware([])
'meetup.twitter_username' => $event->meetup->twitter_username,
'meetup.website' => $event->meetup->webpage,
'meetup.simplex' => $event->meetup->simplex,
'meetup.signal' => $event->meetup->signal,
'meetup.nostr' => $event->meetup->nostr,
]
);