get('Content')->getData('head'); $head->addAsset(AssetType::JSLATE, 'Modules/Media/Controller.js', ['type' => 'module']); } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewMediaList(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Media/Theme/Backend/media-list'); $path = (string) ($request->getData('path') ?? '/'); /** @var Media[] $media */ $media = MediaMapper::getByVirtualPath(\str_replace('+', ' ', $path)); $collection = CollectionMapper::getParentCollection(\str_replace('+', ' ', $path)); if (\is_array($collection) && \is_dir(__DIR__ . '/../Files' . $path)) { $collection = new Collection(); $collection->setName(\basename($path)); $collection->setVirtualPath(\dirname($path)); $collection->setPath(\dirname($path)); $collection->setAbsolute(false); } if ($collection instanceof Collection) { $media += $collection->getSources(); /** @var string[] $glob */ $glob = $collection->isAbsolute() ? $collection->getPath() . '/' . $collection->getName() . '/*' : \glob(__DIR__ . '/../Files/' . \rtrim($collection->getPath(), '/') . '/' . $collection->getName() . '/*'); $glob = $glob === false ? [] : $glob; foreach ($glob as $file) { foreach ($media as $obj) { if (($obj->getExtension() !== 'collection' && !empty($obj->getExtension()) && $obj->getName() . '.' . $obj->getExtension() === \basename($file)) || ($obj->getExtension() === 'collection' && $obj->getName() === \basename($file)) ) { continue 2; } } $pathinfo = \pathinfo($file); $localMedia = new Media(); $localMedia->setName($pathinfo['filename']); $localMedia->setExtension(\is_dir($file) ? 'collection' : $pathinfo['extension'] ?? ''); $localMedia->setVirtualPath($path); $localMedia->setCreatedBy(new Account()); $media[] = $localMedia; } } $view->addData('media', $media); $view->addData('path', $path); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewMediaSingle(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new MediaView($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Media/Theme/Backend/media-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000401001, $request, $response)); $id = (int) $request->getData('id'); $media = MediaMapper::get($id); if ($media->getExtension() === 'collection') { $media = MediaMapper::getByVirtualPath( $media->getVirtualPath() . ($media->getVirtualPath() !== '/' ? '/' : '') . $media->getName() ); $collection = CollectionMapper::get((int) $request->getData('id')); $media = \array_merge($media, $collection->getSources()); $view->addData('path', $collection->getVirtualPath() . '/' . $collection->getName()); $view->setTemplate('/Modules/Media/Theme/Backend/media-list'); } if ($id == 0) { $path = \urldecode($request->getData('path')); if ($media instanceof NullMedia && \is_file(__DIR__ . '/../Files' . $path) ) { $name = \explode('.', \basename($path)); $media->setName($name[0]); $media->setExtension($name[1] ?? ''); $media->setVirtualPath(\dirname($path)); $media->setPath('/Modules/Media/Files/' . \ltrim($path, '\\/')); $media->setAbsolute(false); } } $view->addData('media', $media); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewMediaUpload(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Media/Theme/Backend/media-upload'); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewMediaFileCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Media/Theme/Backend/media-file-create'); $editor = new \Modules\Editor\Theme\Backend\Components\Editor\BaseView($this->app->l11nManager, $request, $response); $view->addData('editor', $editor); return $view; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return RenderableInterface * * @since 1.0.0 * @codeCoverageIgnore */ public function viewMediaCollectionCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Media/Theme/Backend/media-collection-create'); return $view; } }