1. Go to this page and download the library: Download awcodes/filament-curator library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
awcodes / filament-curator example snippets
use Awcodes\Curator\Enums\MimeType;
// globally
Curator::acceptedFileTypes([...MimeType::defaults(), 'text/html']);
// or per field
CuratorPicker::make('attachment')
->acceptedFileTypes([...MimeType::defaults(), 'text/html']);
use Awcodes\Curator\CuratorPlugin;
use Filament\Support\Icons\Heroicon
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
CuratorPlugin::make()
->label('Media')
->pluralLabel('Media')
->navigationIcon(Heroicon::OutlinedPhoto)
->navigationGroup('Content')
->navigationSort(3)
->showBadge(true)
->registerNavigation(true)
->curations(true)
->fileSwap(true),
]);
}
use Awcodes\Curator\Components\Forms\CuratorPicker;
use Filament\Support\Enums\Size;
CuratorPicker::make(string $fieldName)
->label(string $customLabel)
->buttonLabel(string | Htmlable | Closure $buttonLabel)
->color('primary|secondary|success|danger') // defaults to gray
->outlined(true|false) // defaults to true
->size(Size::Medium)
->constrained(true|false) // defaults to false (forces image to fit inside the preview area)
->pathGenerator(DatePathGenerator::class|UserPathGenerator::class) // see path generators below
->lazyLoad(bool | Closure $condition) // defaults to true
->listDisplay(bool | Closure $condition) // defaults to true
->tenantAware(bool | Closure $condition) // defaults to true
->defaultPanelSort(string | Closure $direction) // defaults to 'desc'
// see https://filamentphp.com/docs/5.x/forms/file-upload for more information about the following methods
->preserveFilenames()
->maxWidth()
->minSize()
->maxSize()
->rules()
->acceptedFileTypes()
->disk()
->visibility()
->directory()
->imageCropAspectRatio()
->imageResizeTargetWidth()
->imageResizeTargetHeight()
->multiple() //
use Awcodes\Curator\Models\Media;
public function featuredImage(): BelongsTo
{
return $this->belongsTo(Media::class, 'featured_image_id', 'id');
}
CuratorPicker::make('product_picture_ids')
->multiple()
->relationship('product_pictures', 'id')
->orderColumn('order'), // only necessary if you need to rename the order column
use Awcodes\Curator\Models\Media;
public function productPictures(): BelongsToMany
{
return $this
->belongsToMany(Media::class, 'media_post', 'post_id', 'media_id')
->withPivot('order')
->orderBy('order');
}
use Awcodes\Curator\Components\Forms\RichEditor\AttachCuratorMediaPlugin;
\Filament\Forms\Components\RichEditor::make('content')
->tools([
'attachCuratorMedia'
])
->plugins([
AttachCuratorMediaPlugin::make(),
]),
use Awcodes\Curator\View\Components\CuratorPicker;
use Awcodes\Curator\PathGenerators\DatePathGenerator;
public function register()
{
CuratorPicker::make('image')
->pathGenerator(DatePathGenerator::class);
}
use Awcodes\Curator\PathGenerators;
class CustomPathGenerator implements PathGenerator
{
public function getPath(?string $baseDir = null): string
{
return ($baseDir ? $baseDir . '/' : '') . 'my/custom/path';
}
}
protected function getTableQuery(): Builder
{
return parent::getTableQuery()->with(['featured_image', 'product_pictures']);
}
public static function configure(Table $table): Table
{
return $table
->modifyQueryUsing(fn (Builder $query) => $query->with('media', 'gallery'));
}
use Awcodes\Curator\Curations\CurationPreset;
use Awcodes\Curator\Facades\Curation;
public function register(): void
{
Curation::presets([
CurationPreset::make('Thumbnail')
->height(200)
->format('webp')
->quality(80)
->width(200)
]);
}
use Awcodes\Curator\Glide\GliderFallback;
use Awcodes\Curator\Facades\Glide;
public function register(): void
{
Glide::registerGliderFallbacks([
GliderFallback::make('thumbnail')
->alt(?string)
->height(?int)
->source(?string)
->type(?string)
->width(?int),
]);
}
use Awcodes\Curator\Facades\Glide;
public function register(): void
{
Glide::basePath('media');
}
use Awcodes\Curator\Facades\Glide;
public function register(): void
{
Glide::serverConfig([
'driver' => 'imagick',
'response' => new LaravelResponseFactory(app('request')),
'source' => storage_path('app'),
'source_path_prefix' => 'public',
'cache' => storage_path('app'),
'cache_path_prefix' => '.cache',
'max_image_size' => 2000 * 2000,
]);
}