/**
  * @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');
 }
예제 #7
0
 /**
  * @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;
 }