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 * * @todo Orange-Management/Modules#208 * Improve the media list * 1. Collections should show their content * 2. The first page should show an overview (Modules, Users, ...?) * * @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($path); $collection = CollectionMapper::getParentCollection($path); if ($collection instanceof Collection) { $media += $collection->getSources(); /** @var string[] $glob */ $glob = \glob(__DIR__ . '/../Files' . \trim($collection->getPath(), '/') . '/' . $collection->getName() . '/*'); $glob = $glob === false ? [] : $glob; foreach ($glob as $file) { foreach ($media as $obj) { if ($obj->getName() . '.' . $obj->getExtension() === \basename($file)) { continue 2; } } $pathinfo = \pathinfo($file); $localMedia = new Media(); $localMedia->setName($pathinfo['filename']); $localMedia->setExtension($pathinfo['extension'] ?? ''); $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 * * @todo Orange-Management/Modules#208 * Improve the media list * 1. Collections should show their content * 2. The first page should show an overview (Modules, Users, ...?) * * @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)); $media = MediaMapper::get((int) $request->getData('id')); if ($media->getExtension() === 'collection') { //$media = CollectionMapper::get($media->getId()); $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'); } $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; } }