/**
  * Gets the view
  * @param joppa\content\model\ContentProperties $properties
  * @param joppa\model\content\Content $content
  * @return joppa\content\view\ContentView
  */
 private function getView(ContentProperties $contentProperties, $content)
 {
     $view = $contentProperties->getView();
     $detailViews = ContentViewFactory::getInstance()->getDetailViews();
     if (!array_key_exists($view, $detailViews)) {
         return null;
     }
     $viewClass = $detailViews[$view];
     $objectFactory = new ObjectFactory();
     $view = $objectFactory->create($viewClass, ContentViewFactory::INTERFACE_DETAIL);
     $view->setContent($this->properties->getWidgetId(), $content, $contentProperties);
     return $view;
 }
 /**
  * Constructs a new properties form
  * @param string $action URL where this form will point to
  * @param joppa\model\Node $node
  * @param joppa\content\model\ContentProperties $properties
  * @return null
  */
 public function __construct($action, Node $node, ContentProperties $properties)
 {
     parent::__construct($action, self::NAME, self::TRANSLATION_SAVE);
     $translator = I18n::getInstance()->getTranslator();
     $modelManager = ModelManager::getInstance();
     $fieldFactory = FieldFactory::getInstance();
     $model = $properties->getModelName();
     $fields = $properties->getModelFields();
     $recursiveDepth = $properties->getRecursiveDepth();
     $includeUnlocalized = $properties->getIncludeUnlocalized();
     $view = $properties->getView();
     $modelField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_MODEL, $model);
     $modelField->setOptions($this->getModelOptions($modelManager));
     $modelField->addEmpty();
     $fieldsField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_FIELDS, $fields);
     $fieldsField->setOptions(self::getModelFieldOptions($modelManager, $model));
     $fieldsField->setIsMultiple(true);
     $recursiveDepthField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_RECURSIVE_DEPTH, $recursiveDepth);
     $recursiveDepthField->setOptions($this->getNumericOptions(0, 5));
     $includeUnlocalizedField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_INCLUDE_UNLOCALIZED, $includeUnlocalized);
     $includeUnlocalizedField->setOptions($this->getIncludeUnlocalizedOptions($translator));
     $viewField = $fieldFactory->createField(FieldFactory::TYPE_LIST, self::FIELD_VIEW, $view);
     $viewField->setOptions($this->getViewOptions($translator));
     $this->addField($modelField);
     $this->addField($fieldsField);
     $this->addField($recursiveDepthField);
     $this->addField($includeUnlocalizedField);
     $this->addField($viewField);
 }
 /**
  * Gets the view
  * @param array $result
  * @param joppa\content\model\ContentProperties $properties
  * @param integer $pages
  * @param integer $page
  * @return joppa\content\view\ContentView
  */
 private function getView(array $result, ContentProperties $contentProperties, $pages = 1, $page = 1)
 {
     $view = $contentProperties->getView();
     $listViews = ContentViewFactory::getInstance()->getOverviewViews();
     if (!array_key_exists($view, $listViews)) {
         return null;
     }
     $viewClass = $listViews[$view];
     $paginationProperties = null;
     if ($contentProperties->willShowPagination() && $pages > 1) {
         $paginationUrl = $this->request->getBasePath() . Request::QUERY_SEPARATOR . self::ACTION_PAGE . Request::QUERY_SEPARATOR . '%page%';
         $paginationProperties = new PaginationProperties($paginationUrl, $pages, $page);
     }
     $moreUrl = null;
     if ($contentProperties->willShowMoreLink()) {
         $node = $this->models[NodeModel::NAME]->getNode($contentProperties->getMoreNode(), 0, $this->locale);
         $moreUrl = $this->request->getBaseUrl() . Request::QUERY_SEPARATOR . $node->getRoute();
     }
     $objectFactory = new ObjectFactory();
     $view = $objectFactory->create($viewClass, ContentViewFactory::INTERFACE_OVERVIEW);
     $view->setContent($this->properties->getWidgetId(), $result, $contentProperties, $paginationProperties, $moreUrl);
     return $view;
 }