Esempio n. 1
0
 /**
  * Returns an array of additional template variables which are specific to the object type treated by this repository.
  *
  * @param string $context Usage context (allowed values: controllerAction, api, actionHandler, block, contentType).
  * @param array  $args    Additional arguments.
  *
  * @return array List of template variables to be assigned.
  */
 public function getAdditionalTemplateParameters($context = '', $args = array())
 {
     if (!in_array($context, array('controllerAction', 'api', 'actionHandler', 'block', 'contentType'))) {
         $context = 'controllerAction';
     }
     $templateParameters = array();
     if ($context == 'controllerAction') {
         $serviceManager = ServiceUtil::getManager();
         if (!isset($args['action'])) {
             $args['action'] = FormUtil::getPassedValue('func', 'main', 'GETPOST');
         }
         if (in_array($args['action'], array('main', 'view'))) {
             $templateParameters = $this->getViewQuickNavParameters($context, $args);
             $listHelper = new MUVideo_Util_ListEntries(ServiceUtil::getManager());
             $templateParameters['workflowStateItems'] = $listHelper->getEntries('movie', 'workflowState');
         }
         // initialise Imagine preset instances
         $imageHelper = new MUVideo_Util_Image($serviceManager);
         $objectType = 'movie';
         $templateParameters[$objectType . 'ThumbPresetUploadOfMovie'] = $imageHelper->getPreset($objectType, 'uploadOfMovie', $context, $args);
         $templateParameters[$objectType . 'ThumbPresetPoster'] = $imageHelper->getPreset($objectType, 'poster', $context, $args);
         if (in_array($args['action'], array('display', 'view'))) {
             // use separate preset for images in related items
             $templateParameters['relationThumbPreset'] = $imageHelper->getCustomPreset('', '', 'MUVideo_relateditem', $context, $args);
         }
     }
     // in the concrete child class you could do something like
     // $parameters = parent::getAdditionalTemplateParameters($context, $args);
     // $parameters['myvar'] = 'myvalue';
     // return $parameters;
     return $templateParameters;
 }
Esempio n. 2
0
 /**
  * Searches for entities for auto completion usage.
  *
  * @param string $ot       Treated object type.
  * @param string $fragment The fragment of the entered item name.
  * @param string $exclude  Comma separated list with ids of other items (to be excluded from search).
  *
  * @return Zikula_Response_Ajax_Plain
  */
 public function getItemListAutoCompletion()
 {
     if (!SecurityUtil::checkPermission($this->name . '::Ajax', '::', ACCESS_EDIT)) {
         return true;
     }
     $objectType = 'collection';
     if ($this->request->isPost() && $this->request->request->has('ot')) {
         $objectType = $this->request->request->filter('ot', 'collection', FILTER_SANITIZE_STRING);
     } elseif ($this->request->isGet() && $this->request->query->has('ot')) {
         $objectType = $this->request->query->filter('ot', 'collection', FILTER_SANITIZE_STRING);
     }
     $controllerHelper = new MUVideo_Util_Controller($this->serviceManager);
     $utilArgs = array('controller' => 'ajax', 'action' => 'getItemListAutoCompletion');
     if (!in_array($objectType, $controllerHelper->getObjectTypes('controllerAction', $utilArgs))) {
         $objectType = $controllerHelper->getDefaultObjectType('controllerAction', $utilArgs);
     }
     $entityClass = 'MUVideo_Entity_' . ucfirst($objectType);
     $repository = $this->entityManager->getRepository($entityClass);
     $idFields = ModUtil::apiFunc($this->name, 'selection', 'getIdFields', array('ot' => $objectType));
     $fragment = '';
     $exclude = '';
     if ($this->request->isPost() && $this->request->request->has('fragment')) {
         $fragment = $this->request->request->get('fragment', '');
         $exclude = $this->request->request->get('exclude', '');
     } elseif ($this->request->isGet() && $this->request->query->has('fragment')) {
         $fragment = $this->request->query->get('fragment', '');
         $exclude = $this->request->query->get('exclude', '');
     }
     $exclude = !empty($exclude) ? array($exclude) : array();
     // parameter for used sorting field
     $sort = $this->request->query->get('sort', '');
     if (empty($sort) || !in_array($sort, $repository->getAllowedSortingFields())) {
         $sort = $repository->getDefaultSortingField();
     }
     $sortParam = $sort . ' asc';
     $currentPage = 1;
     $resultsPerPage = 20;
     // get objects from database
     list($entities, $objectCount) = $repository->selectSearch($fragment, $exclude, $sortParam, $currentPage, $resultsPerPage);
     $out = '<ul>';
     if ((is_array($entities) || is_object($entities)) && count($entities) > 0) {
         $descriptionFieldName = $repository->getDescriptionFieldName();
         $previewFieldName = $repository->getPreviewFieldName();
         if (!empty($previewFieldName)) {
             $imageHelper = new MUVideo_Util_Image($this->serviceManager);
             $imagineManager = $imageHelper->getManager($objectType, $previewFieldName, 'controllerAction', $utilArgs);
         }
         foreach ($entities as $item) {
             // class="informal" --> show in dropdown, but do nots copy in the input field after selection
             $itemTitle = $item->getTitleFromDisplayPattern();
             $itemTitleStripped = str_replace('"', '', $itemTitle);
             $itemDescription = isset($item[$descriptionFieldName]) && !empty($item[$descriptionFieldName]) ? $item[$descriptionFieldName] : '';
             //$this->__('No description yet.');
             $itemId = $item->createCompositeIdentifier();
             $out .= '<li id="' . $itemId . '" title="' . $itemTitleStripped . '">';
             $out .= '<div class="itemtitle">' . $itemTitle . '</div>';
             if (!empty($itemDescription)) {
                 $out .= '<div class="itemdesc informal">' . substr($itemDescription, 0, 50) . '&hellip;</div>';
             }
             // check for preview image
             if (!empty($previewFieldName) && !empty($item[$previewFieldName]) && isset($item[$previewFieldName . 'FullPath'])) {
                 $fullObjectId = $objectType . '-' . $itemId;
                 $thumbImagePath = $imagineManager->getThumb($item[$previewFieldName], $fullObjectId);
                 $preview = '<img src="' . $thumbImagePath . '" width="50" height="50" alt="' . $itemTitleStripped . '" />';
                 $out .= '<div id="itemPreview' . $itemId . '" class="itempreview informal">' . $preview . '</div>';
             }
             $out .= '</li>';
         }
     }
     $out .= '</ul>';
     // return response
     return new Zikula_Response_Ajax_Plain($out);
 }