add media stuff

This commit is contained in:
Benjamin Takats
2022-12-03 19:44:41 +01:00
parent 3749c3653b
commit a8fa8ecc5b
16 changed files with 219 additions and 24 deletions

View File

@@ -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';
}
}

View File

@@ -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);

View File

@@ -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)

View File

@@ -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')