/** * Handle the filters. * * @param FileTableBuilder $builder * @param FolderRepositoryInterface $folders * @param Repository $cache * @param Request $request */ public function handle(FileTableBuilder $builder, FolderRepositoryInterface $folders, Repository $cache, Request $request) { $allowed = []; $config = $cache->get('files-field_type::' . $request->route('key'), []); foreach (array_get($config, 'folders', []) as $identifier) { /* @var FolderInterface $folder */ if ($folder = $this->dispatch(new GetFolder($identifier))) { $allowed[$folder->getId()] = $folder->getName(); } } if (!$allowed) { $allowed = $folders->all()->pluck('name', 'id')->all(); } $builder->setFolders($allowed)->setFilters(['search' => ['columns' => ['name', 'keywords', 'mime_type']], 'folder' => ['exact' => true, 'filter' => 'select', 'options' => $allowed, 'enabled' => count($allowed) !== 1]]); }
/** * Handle the command. * * @param FileTableBuilder $builder */ public function handle(FileTableBuilder $builder) { $builder->setColumns(['entry.preview' => ['heading' => 'anomaly.module.files::field.preview.name'], 'name' => ['sort_column' => 'name', 'wrapper' => ' <h4> {value.link} <br> <small>{value.disk}://{value.folder}/{value.file}</small> <small>{value.size}{value.keywords}</small> </h4>', 'value' => ['file' => 'entry.name', 'link' => 'entry.edit_link', 'folder' => 'entry.folder.slug', 'keywords' => 'entry.keywords.labels', 'disk' => 'entry.folder.disk.slug', 'size' => function (FileInterface $entry) { if (!in_array($entry->getExtension(), config('anomaly.module.files::mimes.thumbnails'))) { return null; } return '<span class="label label-info">' . $entry->getWidth() . ' x ' . $entry->getHeight() . '</span>'; }]]]); }
/** * Return an index of existing files. * * @param FileTableBuilder $table * @return \Symfony\Component\HttpFoundation\Response */ public function index(FileTableBuilder $table) { return $table->render(); }