mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
add media stuff
This commit is contained in:
@@ -13,6 +13,10 @@ class EventTable extends DataTableComponent
|
||||
|
||||
protected $model = Event::class;
|
||||
|
||||
public bool $viewingModal = false;
|
||||
|
||||
public $currentModal;
|
||||
|
||||
public function configure(): void
|
||||
{
|
||||
$this
|
||||
@@ -51,6 +55,10 @@ class EventTable extends DataTableComponent
|
||||
->sortable(),
|
||||
Column::make("Kurs", "course.name")
|
||||
->sortable(),
|
||||
Column::make("Art")
|
||||
->label(
|
||||
fn($row, Column $column) => view('columns.events.categories')->withRow($row)
|
||||
),
|
||||
Column::make("Von", "from")
|
||||
->format(
|
||||
fn($value, $row, Column $column) => $value->asDateTime()
|
||||
@@ -83,4 +91,20 @@ class EventTable extends DataTableComponent
|
||||
->whereHas('venue.city.country',
|
||||
fn($query) => $query->where('countries.code', $this->country));
|
||||
}
|
||||
|
||||
public function viewHistoryModal($modelId): void
|
||||
{
|
||||
$this->viewingModal = true;
|
||||
$this->currentModal = Event::findOrFail($modelId);
|
||||
}
|
||||
|
||||
public function resetModal(): void
|
||||
{
|
||||
$this->reset('viewingModal', 'currentModal');
|
||||
}
|
||||
|
||||
public function customView(): string
|
||||
{
|
||||
return 'modals.events.register';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,15 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Spatie\Image\Manipulations;
|
||||
use Spatie\MediaLibrary\HasMedia;
|
||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||
|
||||
class Course extends Model
|
||||
class Course extends Model implements HasMedia
|
||||
{
|
||||
use HasFactory;
|
||||
use InteractsWithMedia;
|
||||
|
||||
/**
|
||||
* The attributes that aren't mass assignable.
|
||||
@@ -26,6 +31,27 @@ class Course extends Model
|
||||
'lecturer_id' => 'integer',
|
||||
];
|
||||
|
||||
public function registerMediaConversions(Media $media = null): void
|
||||
{
|
||||
$this
|
||||
->addMediaConversion('preview')
|
||||
->fit(Manipulations::FIT_CROP, 300, 300)
|
||||
->nonQueued();
|
||||
$this->addMediaConversion('thumb')
|
||||
->fit(Manipulations::FIT_CROP, 130, 130)
|
||||
->width(130)
|
||||
->height(130);
|
||||
}
|
||||
|
||||
public function registerMediaCollections(): void
|
||||
{
|
||||
$this->addMediaCollection('logo')
|
||||
->singleFile()
|
||||
->useFallbackUrl(asset('img/einundzwanzig-cover-lesestunde.png'));
|
||||
$this->addMediaCollection('images')
|
||||
->useFallbackUrl(asset('img/einundzwanzig-cover-lesestunde.png'));
|
||||
}
|
||||
|
||||
public function categories(): \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Category::class);
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
|
||||
namespace App\Nova;
|
||||
|
||||
use Ebess\AdvancedNovaMediaLibrary\Fields\Images;
|
||||
use Illuminate\Http\Request;
|
||||
use Laravel\Nova\Fields\BelongsTo;
|
||||
use Laravel\Nova\Fields\BelongsToMany;
|
||||
use Laravel\Nova\Fields\Field;
|
||||
use Laravel\Nova\Fields\ID;
|
||||
use Laravel\Nova\Fields\Markdown;
|
||||
use Laravel\Nova\Fields\Text;
|
||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||
use ZiffMedia\NovaSelectPlus\SelectPlus;
|
||||
@@ -56,9 +58,20 @@ class Course extends Resource
|
||||
ID::make()
|
||||
->sortable(),
|
||||
|
||||
Images::make('Main picture', 'logo')
|
||||
->conversionOnIndexView('thumb'),
|
||||
|
||||
Images::make('Images', 'images')
|
||||
->conversionOnIndexView('thumb')
|
||||
->help('Lade hier Bilder hoch, um sie eventuell später in der Markdown Description einzufügen. Du musst vorher aber Speichern.'),
|
||||
|
||||
Text::make('Name')
|
||||
->rules('required', 'string'),
|
||||
|
||||
Markdown::make('Description')
|
||||
->alwaysShow()
|
||||
->help('Markdown ist erlaubt. Du kannst Bilder aus dem Feld "Images" hier einfügen. Benutze das Link Symbol der Bilder für die Urls, nach dem du auf "Aktualisieren und Weiterarbeiten" geklickt hast.'),
|
||||
|
||||
BelongsTo::make('Lecturer'),
|
||||
|
||||
SelectPlus::make('Categories', 'categories', Category::class)
|
||||
|
||||
@@ -8,6 +8,7 @@ use Laravel\Nova\Fields\BelongsTo;
|
||||
use Laravel\Nova\Fields\DateTime;
|
||||
use Laravel\Nova\Fields\Field;
|
||||
use Laravel\Nova\Fields\ID;
|
||||
use Laravel\Nova\Fields\URL;
|
||||
use Laravel\Nova\Http\Requests\NovaRequest;
|
||||
|
||||
class Event extends Resource
|
||||
@@ -55,13 +56,18 @@ class Event extends Resource
|
||||
ID::make()
|
||||
->sortable(),
|
||||
|
||||
URL::make('Link')
|
||||
->rules('required', 'url'),
|
||||
|
||||
DateTime::make('From')
|
||||
->rules('required')
|
||||
->step(CarbonInterval::minutes(30))->displayUsing(fn ($value) => $value->asDateTime()),
|
||||
->step(CarbonInterval::minutes(30))
|
||||
->displayUsing(fn($value) => $value->asDateTime()),
|
||||
|
||||
DateTime::make('To')
|
||||
->rules('required')
|
||||
->step(CarbonInterval::minutes(30))->displayUsing(fn ($value) => $value->asDateTime()),
|
||||
->step(CarbonInterval::minutes(30))
|
||||
->displayUsing(fn($value) => $value->asDateTime()),
|
||||
|
||||
BelongsTo::make('Course'),
|
||||
BelongsTo::make('Venue')
|
||||
|
||||
Reference in New Issue
Block a user