/** * @Flow\Before("method(TYPO3\Neos\Controller\Backend\ContentController->uploadAssetAction())") * @param JoinPointInterface $joinPoint The current join point * @return void */ public function rewriteSiteAssetCollection(JoinPointInterface $joinPoint) { if ($this->lookupNodeFilter === NULL || $this->lookupPropertyName === NULL) { return; } /** @var ContentController $contentController */ $contentController = $joinPoint->getProxy(); /** @var ActionRequest $actionRequest */ $actionRequest = ObjectAccess::getProperty($contentController, 'request', TRUE); $nodeContextPath = $actionRequest->getInternalArgument('__node'); if ($nodeContextPath === NULL) { return; } $node = $this->propertyMapper->convert($nodeContextPath, NodeInterface::class); $flowQuery = new FlowQuery(array($node)); /** @var NodeInterface $documentNode */ $documentNode = $flowQuery->closest($this->lookupNodeFilter)->get(0); if (!$documentNode->hasProperty($this->lookupPropertyName)) { return; } /** @var AssetCollection $assetCollection */ $assetCollection = $this->assetCollectionRepository->findByIdentifier($documentNode->getProperty($this->lookupPropertyName)); if ($assetCollection === NULL) { return; } /** @var Asset $asset */ $asset = $joinPoint->getMethodArgument('asset'); $assetCollection->addAsset($asset); $this->assetCollectionRepository->update($assetCollection); }
/** * Get data * * @param NodeInterface $node unused * @param array $arguments unused * @return array title of all asset collections */ public function getData(NodeInterface $node = NULL, array $arguments) { $assetCollections = []; /** @var AssetCollection $assetCollection */ foreach ($this->assetCollectionRepository->findAll() as $assetCollection) { $assetCollections[] = ['value' => $this->persistenceManager->getIdentifierByObject($assetCollection), 'label' => $assetCollection->getTitle()]; } return $assetCollections; }
/** * Upload a new image, and return its metadata. * * Depending on the $metadata argument it will return asset metadata for the AssetEditor * or image metadata for the ImageEditor * * @param Asset $asset * @param string $metadata Type of metadata to return ("Asset" or "Image") * @return string */ public function uploadAssetAction(Asset $asset, $metadata) { $this->response->setHeader('Content-Type', 'application/json'); /** @var Site $currentSite */ $currentSite = $this->siteRepository->findOneByNodeName($this->request->getInternalArgument('__siteNodeName')); if ($currentSite !== null && $currentSite->getAssetCollection() !== null) { $currentSite->getAssetCollection()->addAsset($asset); $this->assetCollectionRepository->update($currentSite->getAssetCollection()); } switch ($metadata) { case 'Asset': $result = $this->getAssetProperties($asset); if ($this->persistenceManager->isNewObject($asset)) { $this->assetRepository->add($asset); } break; case 'Image': $result = $this->getImageInterfacePreviewData($asset); if ($this->persistenceManager->isNewObject($asset)) { $this->imageRepository->add($asset); } break; default: $this->response->setStatus(400); $result = array('error' => 'Invalid "metadata" type: ' . $metadata); } return json_encode($result); }
/** * A edit view for a site and its settings. * * @param Site $site Site to view * @Flow\IgnoreValidation("$site") * @return void */ public function editAction(Site $site) { try { $sitePackage = $this->packageManager->getPackage($site->getSiteResourcesPackageKey()); } catch (\Exception $e) { $this->addFlashMessage('The site package with key "%s" was not found.', 'Site package not found', Message::SEVERITY_ERROR, array(htmlspecialchars($site->getSiteResourcesPackageKey()))); } $this->view->assignMultiple(array('site' => $site, 'sitePackageMetaData' => isset($sitePackage) ? $sitePackage->getPackageMetaData() : array(), 'domains' => $this->domainRepository->findBySite($site), 'assetCollections' => $this->assetCollectionRepository->findAll())); }
/** * @param AssetCollection $assetCollection * @return void */ public function deleteAssetCollectionAction(AssetCollection $assetCollection) { if ($this->browserState->get('activeAssetCollection') === $assetCollection) { $this->browserState->set('activeAssetCollection', null); } $this->assetCollectionRepository->remove($assetCollection); $this->addFlashMessage('collectionHasBeenDeleted', '', Message::SEVERITY_OK, [htmlspecialchars($assetCollection->getTitle())]); $this->redirect('index'); }
/** * @param AssetCollection $assetCollection * @return void */ public function deleteAssetCollectionAction(AssetCollection $assetCollection) { if ($this->browserState->get('activeAssetCollection') === $assetCollection) { $this->browserState->set('activeAssetCollection', null); } $this->assetCollectionRepository->remove($assetCollection); $this->addFlashMessage(sprintf('Collection "%s" has been deleted.', $assetCollection->getTitle())); $this->redirect('index'); }
/** * @param string $title * * @return AssetCollection */ protected function getOrCreateCollection($title) { if (isset($this->collectionFirstLevelCache[$title])) { return $this->collectionFirstLevelCache[$title]; } $collection = $this->collectionRepository->findOneByTitle($title); if ($collection === null) { $collection = new AssetCollection($title); $this->collectionRepository->add($collection); } $this->collectionFirstLevelCache[$title] = $collection; return $collection; }