mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
NeedMeetupMiddleware added
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
namespace App\Http;
|
||||
|
||||
use App\Http\Middleware\CustomEnsureEmailVerified;
|
||||
use App\Http\Middleware\NeedMeetupMiddleware;
|
||||
use App\Http\Middleware\SetTimezoneForNovaMiddleware;
|
||||
use App\Http\Middleware\SetTimezoneMiddleware;
|
||||
use Illuminate\Foundation\Http\Kernel as HttpKernel;
|
||||
@@ -84,5 +85,6 @@ class Kernel extends HttpKernel
|
||||
'signed' => \App\Http\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => CustomEnsureEmailVerified::class,
|
||||
'needMeetup' => NeedMeetupMiddleware::class,
|
||||
];
|
||||
}
|
||||
|
||||
85
app/Http/Livewire/Profile/Meetups.php
Normal file
85
app/Http/Livewire/Profile/Meetups.php
Normal file
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Profile;
|
||||
|
||||
use App\Models\Meetup;
|
||||
use Livewire\Component;
|
||||
use WireUi\Traits\Actions;
|
||||
|
||||
class Meetups extends Component
|
||||
{
|
||||
use Actions;
|
||||
|
||||
public $search = '';
|
||||
public $meetups;
|
||||
public $myMeetups = [];
|
||||
public $myMeetupNames = [];
|
||||
public $hasMeetups = false;
|
||||
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'search' => 'string',
|
||||
];
|
||||
}
|
||||
|
||||
public function mount()
|
||||
{
|
||||
$this->meetups = Meetup::query()
|
||||
->where('name', 'ilike', '%'.$this->search.'%')
|
||||
->orderBy('name')
|
||||
->limit(10)
|
||||
->get();
|
||||
$this->myMeetups = auth()
|
||||
->user()
|
||||
->meetups()
|
||||
->pluck('meetup_id')
|
||||
->toArray();
|
||||
$this->myMeetupNames = auth()
|
||||
->user()
|
||||
->meetups()
|
||||
->pluck('meetups.name', 'meetups.id')
|
||||
->toArray();
|
||||
if (count($this->myMeetups) > 0) {
|
||||
$this->hasMeetups = true;
|
||||
}
|
||||
}
|
||||
|
||||
public function updatedSearch($value)
|
||||
{
|
||||
$this->meetups = Meetup::query()
|
||||
->where('name', 'ilike', '%'.$value.'%')
|
||||
->orderBy('name')
|
||||
->limit(10)
|
||||
->get();
|
||||
}
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.profile.meetups');
|
||||
}
|
||||
|
||||
public function signUpForMeetup($id)
|
||||
{
|
||||
$user = auth()->user();
|
||||
$user->meetups()
|
||||
->toggle($id);
|
||||
$this->myMeetups = auth()
|
||||
->user()
|
||||
->meetups()
|
||||
->pluck('meetup_id')
|
||||
->toArray();
|
||||
if (count($this->myMeetups) > 0) {
|
||||
$this->hasMeetups = true;
|
||||
} else {
|
||||
$this->hasMeetups = false;
|
||||
}
|
||||
$this->myMeetupNames = auth()
|
||||
->user()
|
||||
->meetups()
|
||||
->pluck('meetups.name', 'meetups.id')
|
||||
->toArray();
|
||||
$this->notification()
|
||||
->success(__('Saved.'));
|
||||
}
|
||||
}
|
||||
31
app/Http/Middleware/NeedMeetupMiddleware.php
Normal file
31
app/Http/Middleware/NeedMeetupMiddleware.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
|
||||
class NeedMeetupMiddleware
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||||
*
|
||||
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function handle(Request $request, Closure $next)
|
||||
{
|
||||
if ($request->user()) {
|
||||
$request->user()->load('meetups');
|
||||
if ($request->user()->meetups->count() < 1) {
|
||||
return redirect()->route('profile.meetups')->with('redirectToThis', $request->route()?->getName());
|
||||
}
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@@ -61,6 +61,11 @@ class User extends Authenticatable implements MustVerifyEmail, CanComment
|
||||
return $this->hasMany(OrangePill::class);
|
||||
}
|
||||
|
||||
public function meetups()
|
||||
{
|
||||
return $this->belongsToMany(Meetup::class);
|
||||
}
|
||||
|
||||
public function reputations()
|
||||
{
|
||||
return $this->morphMany('QCod\Gamify\Reputation', 'subject');
|
||||
|
||||
@@ -37,6 +37,10 @@ class Meetup extends Resource
|
||||
|
||||
public static function afterCreate(NovaRequest $request, Model $model)
|
||||
{
|
||||
auth()
|
||||
->user()
|
||||
->meetups()
|
||||
->attach($model);
|
||||
\App\Models\User::find(1)
|
||||
->notify(new ModelCreatedNotification($model, str($request->getRequestUri())
|
||||
->after('/nova-api/')
|
||||
|
||||
@@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Nova\Fields\BelongsTo;
|
||||
use Laravel\Nova\Fields\DateTime;
|
||||
use Laravel\Nova\Fields\Field;
|
||||
use Laravel\Nova\Fields\ID;
|
||||
use Laravel\Nova\Fields\Text;
|
||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||
@@ -47,6 +48,18 @@ class MeetupEvent extends Resource
|
||||
->toString()));
|
||||
}
|
||||
|
||||
public static function relatableMeetups(NovaRequest $request, $query, Field $field)
|
||||
{
|
||||
if ($field instanceof BelongsTo) {
|
||||
$query->whereIn('meetups.id', $request->user()
|
||||
->meetups()
|
||||
->pluck('id')
|
||||
->toArray());
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function subtitle()
|
||||
{
|
||||
return __('Created by: :name', ['name' => $this->createdBy->name]);
|
||||
@@ -79,14 +92,16 @@ class MeetupEvent extends Resource
|
||||
->rules('required', 'string'),
|
||||
|
||||
BelongsTo::make('Meetup')
|
||||
->searchable()->withSubtitles(),
|
||||
->searchable()
|
||||
->withSubtitles(),
|
||||
|
||||
BelongsTo::make(__('Created By'), 'createdBy', User::class)
|
||||
->canSee(function ($request) {
|
||||
return $request->user()
|
||||
->hasRole('super-admin');
|
||||
})
|
||||
->searchable()->withSubtitles(),
|
||||
->searchable()
|
||||
->withSubtitles(),
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ class MeetupEventPolicy extends BasePolicy
|
||||
*/
|
||||
public function update(User $user, MeetupEvent $meetupEvent)
|
||||
{
|
||||
return $meetupEvent->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
|
||||
return $user->meetups->contains($meetupEvent->meetup) || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,7 +65,7 @@ class MeetupEventPolicy extends BasePolicy
|
||||
*/
|
||||
public function delete(User $user, MeetupEvent $meetupEvent)
|
||||
{
|
||||
return false;
|
||||
return false && $meetupEvent->created_by === $user->id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -57,7 +57,7 @@ class MeetupPolicy extends BasePolicy
|
||||
*/
|
||||
public function update(User $user, Meetup $meetup)
|
||||
{
|
||||
return true || $meetup->created_by === $user->id || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
|
||||
return $user->meetups->contains($meetup) || $user->can((new \ReflectionClass($this))->getShortName().'.'.__FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,7 +70,7 @@ class MeetupPolicy extends BasePolicy
|
||||
*/
|
||||
public function delete(User $user, Meetup $meetup)
|
||||
{
|
||||
return false;
|
||||
return $meetup->created_by === $user->id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -109,7 +109,8 @@ return [
|
||||
DispatchServingNovaEvent::class,
|
||||
BootTools::class,
|
||||
\Itsmejoshua\Novaspatiepermissions\ForgetCachedPermissions::class,
|
||||
'verified'
|
||||
'verified',
|
||||
'needMeetup',
|
||||
],
|
||||
|
||||
'api_middleware' => [
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateMeetupUserTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::disableForeignKeyConstraints();
|
||||
|
||||
Schema::create('meetup_user', function (Blueprint $table) {
|
||||
$table->foreignId('meetup_id')
|
||||
->constrained()
|
||||
->cascadeOnDelete()
|
||||
->cascadeOnUpdate();
|
||||
$table->foreignId('user_id')
|
||||
->constrained()
|
||||
->cascadeOnDelete()
|
||||
->cascadeOnUpdate();
|
||||
$table->boolean('is_leader')
|
||||
->default(false);
|
||||
});
|
||||
|
||||
Schema::enableForeignKeyConstraints();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('meetup_user');
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,6 @@ use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Str;
|
||||
use JoeDixon\Translation\Console\Commands\SynchroniseMissingTranslationKeys;
|
||||
use JoeDixon\Translation\Console\Commands\SynchroniseTranslationsCommand;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
|
||||
@@ -186,7 +185,7 @@ class DatabaseSeeder extends Seeder
|
||||
'lecturer_id' => 1,
|
||||
'name' => 'Hands on Bitcoin',
|
||||
'created_by' => 1,
|
||||
'description' => '
|
||||
'description' => '
|
||||
Klimakiller Bitcoin! Bitcoin hat keinen Nutzen! Bitcoin wird nur von Kriminellen genutzt!
|
||||
|
||||
Diese oder ähnliche Aussprüche kennen Sie bestimmt? Dann lassen Sie uns Bitcoin doch einmal genauer anschauen! In meinem Kurs nehme ich Sie mit auf einen Weg der bei der Geschichte unseres Geldes beginnt. Lassen Sie uns schauen wie unser Geld entsteht und welche Aufgaben dabei Geschäftsbanken und Zentralbanken haben. Welche Rolle spielt eigentlich das Jahr 1971 und welche Auswirkungen hatte dies auf unser Geld wie wir es heute verwenden. Was hat die Banken- und Finanzkrise 2008/ 2009 mit Bitcoin und Neuseeland mit unserer Inflation zu tun?
|
||||
@@ -207,7 +206,7 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera
|
||||
'lecturer_id' => 1,
|
||||
'name' => 'Bitcoin <> Crypto',
|
||||
'created_by' => 1,
|
||||
'description' => '
|
||||
'description' => '
|
||||
Klimakiller Bitcoin! Bitcoin hat keinen Nutzen! Bitcoin wird nur von Kriminellen genutzt!
|
||||
|
||||
Diese oder ähnliche Aussprüche kennen Sie bestimmt? Dann lassen Sie uns Bitcoin doch einmal genauer anschauen! In meinem Kurs nehme ich Sie mit auf einen Weg der bei der Geschichte unseres Geldes beginnt. Lassen Sie uns schauen wie unser Geld entsteht und welche Aufgaben dabei Geschäftsbanken und Zentralbanken haben. Welche Rolle spielt eigentlich das Jahr 1971 und welche Auswirkungen hatte dies auf unser Geld wie wir es heute verwenden. Was hat die Banken- und Finanzkrise 2008/ 2009 mit Bitcoin und Neuseeland mit unserer Inflation zu tun?
|
||||
@@ -228,7 +227,7 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera
|
||||
'lecturer_id' => 2,
|
||||
'name' => 'Bitcoin Lightning Network',
|
||||
'created_by' => 1,
|
||||
'description' => '
|
||||
'description' => '
|
||||
Klimakiller Bitcoin! Bitcoin hat keinen Nutzen! Bitcoin wird nur von Kriminellen genutzt!
|
||||
|
||||
Diese oder ähnliche Aussprüche kennen Sie bestimmt? Dann lassen Sie uns Bitcoin doch einmal genauer anschauen! In meinem Kurs nehme ich Sie mit auf einen Weg der bei der Geschichte unseres Geldes beginnt. Lassen Sie uns schauen wie unser Geld entsteht und welche Aufgaben dabei Geschäftsbanken und Zentralbanken haben. Welche Rolle spielt eigentlich das Jahr 1971 und welche Auswirkungen hatte dies auf unser Geld wie wir es heute verwenden. Was hat die Banken- und Finanzkrise 2008/ 2009 mit Bitcoin und Neuseeland mit unserer Inflation zu tun?
|
||||
@@ -378,8 +377,8 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera
|
||||
Artisan::call(SyncOpenBooks::class);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig Kempten',
|
||||
'link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
MeetupEvent::create([
|
||||
@@ -404,6 +403,60 @@ Deshalb werden Sie von mir in diesem Kurs leicht verständlich an das Thema hera
|
||||
'link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 2,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 3,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
Meetup::create([
|
||||
'city_id' => 1,
|
||||
'name' => 'Einundzwanzig ' . str()->random(5),
|
||||
'telegram_link' => 'https://t.me/EinundzwanzigKempten',
|
||||
'created_by' => 1,
|
||||
]);
|
||||
BitcoinEvent::create([
|
||||
'venue_id' => 4,
|
||||
'from' => Carbon::parse('2023-09-12')
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
models:
|
||||
Item:
|
||||
name: string:unique
|
||||
link: string
|
||||
|
||||
@@ -644,5 +644,18 @@
|
||||
"points": "Punkte",
|
||||
"Submit new book case": "Bücherschrank einreichen",
|
||||
"Share url copied!": "Link kopiert!",
|
||||
"Share link": "Link zum Teilen"
|
||||
"Share link": "Link zum Teilen",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "Suche dir eine oder mehrere Meetup-Gruppen aus, um Zugriff auf diese Gruppen im Backend zu erhalten.",
|
||||
"choice": "Auswahl",
|
||||
"By id": "nach ID",
|
||||
"Twitter": "",
|
||||
"New City": "Neue Stadt",
|
||||
"My meetups": "Meine Meetups",
|
||||
"please limit your search here": "bitte begrenze deine Suche hier",
|
||||
"Deselect": "Abwählen",
|
||||
"Your current Meetup groups": "Deine aktuellen Meetup-Gruppen",
|
||||
"Thanks, continue here": "Danke, weiter geht es hier"
|
||||
}
|
||||
|
||||
@@ -635,10 +635,20 @@
|
||||
"logins": "",
|
||||
"points": "",
|
||||
"New meetup created: :title": "New meetup created: :title",
|
||||
"Submit new book case": "",
|
||||
"Submit new book case": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": ""
|
||||
"Share link": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"choice": "",
|
||||
"By id": "",
|
||||
"Twitter": "",
|
||||
"New City": "",
|
||||
"My meetups": "",
|
||||
"please limit your search here": "",
|
||||
"Deselect": "",
|
||||
"Your current Meetup groups": "",
|
||||
"Thanks, continue here": ""
|
||||
}
|
||||
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -634,5 +634,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -608,5 +608,17 @@
|
||||
"You get a point when you log in.": "",
|
||||
"points": "",
|
||||
"All courses of :name": "",
|
||||
"Here you can see all events of :name.": ""
|
||||
"Here you can see all events of :name.": "",
|
||||
"By id": "",
|
||||
"Telegram-Link": "",
|
||||
"Website": "",
|
||||
"Twitter Username": "",
|
||||
"Share url copied!": "",
|
||||
"Share link": "",
|
||||
"Twitter": "",
|
||||
"Submit new book case": "",
|
||||
"choice": "",
|
||||
"Select one or more meetup groups so that you can get access to these groups in the backend.": "",
|
||||
"New City": "",
|
||||
"My meetups": ""
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
"Remove sort option": "Entferne Sortierauswahl",
|
||||
"Search": "Suche",
|
||||
"Select All": "Alle auswählen",
|
||||
"Select": "Auswählen",
|
||||
"Showing": "Anzeigen",
|
||||
"Deselect All": "Alle abwählen",
|
||||
"You are currently selecting all": "Es sind schon alle ausgewählt",
|
||||
@@ -23,4 +24,4 @@
|
||||
"rows, do you want to select all": "Zeilen, sollen alle ausgewählt werden",
|
||||
"to": "nach",
|
||||
"No items found. Try to broaden your search.": "Es gibt keine Ergebnisse\/Einträge. Versuche die Suche zu erweitern."
|
||||
}
|
||||
}
|
||||
|
||||
109
resources/views/livewire/profile/meetups.blade.php
Normal file
109
resources/views/livewire/profile/meetups.blade.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<div class="flex flex-col">
|
||||
<section class="">
|
||||
<div class="px-10 pt-6 mx-auto max-w-7xl">
|
||||
<div class="w-full mx-auto text-left md:text-center">
|
||||
<h1 class="mb-6 text-5xl font-extrabold leading-none max-w-5xl mx-auto tracking-normal text-gray-900 sm:text-6xl md:text-6xl lg:text-7xl md:tracking-tight">
|
||||
<span
|
||||
class="w-full text-transparent bg-clip-text bg-gradient-to-r from-amber-400 via-amber-500 to-amber-500 lg:inline">{{ __('Meetup') }}</span>
|
||||
<br class="lg:block hidden"> {{ __('choice') }}
|
||||
</h1>
|
||||
<p class="px-0 mb-6 text-lg text-gray-200 md:text-xl lg:px-24">
|
||||
{{ __('Select one or more meetup groups so that you can get access to these groups in the backend.') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section x-data="{ open: @entangle('hasMeetups') }"
|
||||
x-show="open"
|
||||
x-transition:enter="transition ease-out duration-300"
|
||||
x-transition:enter-start="opacity-0 scale-90"
|
||||
x-transition:enter-end="opacity-100 scale-100"
|
||||
x-transition:leave="transition ease-in duration-300"
|
||||
x-transition:leave-start="opacity-100 scale-100"
|
||||
x-transition:leave-end="opacity-0 scale-90"
|
||||
>
|
||||
<div class="px-10 pt-6 mx-auto max-w-7xl">
|
||||
<div class="w-full mx-auto text-left md:text-center">
|
||||
<p class="px-0 mb-6 text-lg text-gray-200 md:text-xl lg:px-24">
|
||||
<x-button href="/" primary lg>
|
||||
{{ __('Thanks, continue here') }}
|
||||
</x-button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="grid grid-cols-2">
|
||||
<div class="">
|
||||
<div class="px-10 pt-6 mx-auto max-w-7xl">
|
||||
<div class="bg-21gray p-6 rounded">
|
||||
|
||||
<div>
|
||||
<x-input wire:model="search" placeholder="{{ __('Search') }}"
|
||||
hint="{{ __('please limit your search here') }}"/>
|
||||
</div>
|
||||
|
||||
<div class="mt-6 flow-root">
|
||||
|
||||
<ul role="list" class="-my-5 divide-y divide-gray-200">
|
||||
|
||||
@foreach($meetups as $meetup)
|
||||
|
||||
@php
|
||||
$activeClass = in_array($meetup->id, $myMeetups, true) ? 'font-bold text-amber-500' : 'text-gray-200';
|
||||
@endphp
|
||||
|
||||
<li class="py-4" wire:key="meetup_id_{{ $meetup->id }}">
|
||||
<div class="flex items-center space-x-4">
|
||||
<div class="flex-shrink-0">
|
||||
<img class="h-12 w-12 rounded object-cover"
|
||||
src="{{ $meetup->getFirstMediaUrl('logo') }}"
|
||||
alt="{{ $meetup->name }}">
|
||||
</div>
|
||||
<div class="min-w-0 flex-1">
|
||||
<p class="truncate text-sm font-medium {{ $activeClass }}">{{ $meetup->name }}</p>
|
||||
<p class="truncate text-sm {{ $activeClass }}">{{ $meetup->city->name }}</p>
|
||||
</div>
|
||||
<div>
|
||||
@if(in_array($meetup->id, $myMeetups, true))
|
||||
<x-button
|
||||
primary
|
||||
wire:click="signUpForMeetup({{ $meetup->id }})"
|
||||
>
|
||||
<i class="fa-thin fa-xmark"></i>
|
||||
{{ __('Deselect') }}
|
||||
</x-button>
|
||||
@else
|
||||
<x-button
|
||||
black
|
||||
wire:click="signUpForMeetup({{ $meetup->id }})"
|
||||
>
|
||||
<i class="fa-thin fa-check"></i>
|
||||
{{ __('Select') }}
|
||||
</x-button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="p-4">
|
||||
<p class="px-0 mb-6 text-lg text-gray-200 md:text-xl">
|
||||
{{ __('Your current Meetup groups') }}
|
||||
</p>
|
||||
<div class="grid grid-cols-4 gap-2">
|
||||
@foreach($myMeetupNames as $id => $myMeetupName)
|
||||
<x-badge class="cursor-pointer" wire:click="signUpForMeetup({{ $id }})" lg outline white
|
||||
label="{{ $myMeetupName }}"/>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -83,6 +83,14 @@
|
||||
{{ __('My profile') }}
|
||||
</x-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-button xs amber href="{{ route('profile.meetups') }}"
|
||||
:active="request()->routeIs('profile.meetups')">
|
||||
<i class="fa fa-thin fa-users"></i>
|
||||
{{ __('My meetups') }}
|
||||
</x-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,9 +3,16 @@
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Laravel\Socialite\Facades\Socialite;
|
||||
|
||||
Route::get('/', \App\Http\Livewire\Frontend\Welcome::class)
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->get('/', \App\Http\Livewire\Frontend\Welcome::class)
|
||||
->name('welcome');
|
||||
|
||||
Route::middleware([])
|
||||
->get('/my-meetups', \App\Http\Livewire\Profile\Meetups::class)
|
||||
->name('profile.meetups');
|
||||
|
||||
Route::get('/auth/ln', \App\Http\Livewire\Auth\LNUrlAuth::class)
|
||||
->name('auth.ln')
|
||||
->middleware('guest');
|
||||
@@ -42,7 +49,9 @@ Route::get('/auth/twitter/callback', function () {
|
||||
/*
|
||||
* School
|
||||
* */
|
||||
Route::middleware([])
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->as('school.')
|
||||
->prefix('/{country:code}/school')
|
||||
->group(function () {
|
||||
@@ -68,7 +77,9 @@ Route::middleware([])
|
||||
/*
|
||||
* Library
|
||||
* */
|
||||
Route::middleware([])
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->as('library.')
|
||||
->prefix('/{country:code}/library')
|
||||
->group(function () {
|
||||
@@ -82,7 +93,9 @@ Route::middleware([])
|
||||
/*
|
||||
* Books
|
||||
* */
|
||||
Route::middleware([])
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->as('bookCases.')
|
||||
->prefix('/{country:code}/book-cases')
|
||||
->group(function () {
|
||||
@@ -102,7 +115,9 @@ Route::middleware([])
|
||||
/*
|
||||
* Events
|
||||
* */
|
||||
Route::middleware([])
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->as('bitcoinEvent.')
|
||||
->prefix('/{country:code}/event')
|
||||
->group(function () {
|
||||
@@ -116,7 +131,9 @@ Route::middleware([])
|
||||
/*
|
||||
* Meetups
|
||||
* */
|
||||
Route::middleware([])
|
||||
Route::middleware([
|
||||
'needMeetup',
|
||||
])
|
||||
->as('meetup.')
|
||||
->prefix('/{country:code}/meetup')
|
||||
->group(function () {
|
||||
@@ -138,7 +155,8 @@ Route::middleware([])
|
||||
Route::middleware([
|
||||
'auth:sanctum',
|
||||
config('jetstream.auth_session'),
|
||||
'verified'
|
||||
'verified',
|
||||
'needMeetup',
|
||||
])
|
||||
->group(function () {
|
||||
Route::get('/dashboard', function () {
|
||||
|
||||
Reference in New Issue
Block a user