예제 #1
0
 /**
  * {@inheritDoc}
  */
 public static function getManualSortingProperty(EnvironmentInterface $environment)
 {
     /** @var BackendViewInterface $view */
     $view = $environment->getView();
     $definition = null;
     foreach ($view->getPanel() as $panel) {
         /** @var PanelInterface $panel */
         $sort = $panel->getElement('sort');
         if ($sort) {
             /** @var SortElementInterface $sort */
             $definition = $sort->getSelectedDefinition();
         }
     }
     if ($definition === null) {
         /** @var Contao2BackendViewDefinitionInterface $viewDefinition */
         $dataDefinition = $environment->getDataDefinition();
         $viewDefinition = $dataDefinition->getDefinition(Contao2BackendViewDefinitionInterface::NAME);
         $groupAndSortingDefinition = $viewDefinition->getListingConfig()->getGroupAndSortingDefinition();
         if ($groupAndSortingDefinition->hasDefault()) {
             $definition = $groupAndSortingDefinition->getDefault();
         }
     }
     if ($definition) {
         foreach ($definition as $information) {
             if ($information->isManualSorting()) {
                 return $information->getProperty();
             }
         }
     }
     return null;
 }
 /**
  * Create a view instance in the environment if none has been defined yet.
  *
  * @param EnvironmentInterface $environment The environment to populate.
  *
  * @return void
  *
  * @internal
  */
 protected function populateView(EnvironmentInterface $environment)
 {
     // Already populated, get out then.
     if ($environment->getView()) {
         return;
     }
     $definition = $environment->getDataDefinition();
     // If we encounter an extended definition, that one may override.
     if (!$definition->hasDefinition(ExtendedDca::NAME)) {
         return;
     }
     /** @var ExtendedDca $extendedDefinition */
     $extendedDefinition = $definition->getDefinition(ExtendedDca::NAME);
     $class = $extendedDefinition->getViewClass();
     if (!$class) {
         return;
     }
     $viewClass = new \ReflectionClass($class);
     /** @var ViewInterface $view */
     $view = $viewClass->newInstance();
     $view->setEnvironment($environment);
     $environment->setView($view);
 }
예제 #3
0
 /**
  * Create a panel instance in the view if none has been defined yet.
  *
  * @param EnvironmentInterface $environment The environment to populate.
  *
  * @return void
  *
  * @internal
  */
 protected function populatePanel(EnvironmentInterface $environment)
 {
     // Already populated or not in Backend? Get out then.
     if (!($environment->getView() instanceof BaseView && TL_MODE == 'BE')) {
         return;
     }
     $definition = $environment->getDataDefinition();
     if (!$definition->hasDefinition(Contao2BackendViewDefinitionInterface::NAME)) {
         return;
     }
     /** @var BackendViewInterface $view */
     $view = $environment->getView();
     // Already populated.
     if ($view->getPanel()) {
         return;
     }
     $panel = new DefaultPanelContainer();
     $panel->setEnvironment($environment);
     $view->setPanel($panel);
     /** @var Contao2BackendViewDefinitionInterface $backendViewDefinition  */
     $backendViewDefinition = $definition->getDefinition(Contao2BackendViewDefinitionInterface::NAME);
     /** @var PanelLayoutInterface $panelLayout */
     $panelLayout = $backendViewDefinition->getPanelLayout();
     foreach ($panelLayout->getRows() as $panelKey => $row) {
         // We need a new panel.
         $panelRow = new DefaultPanel();
         $panel->addPanel($panelKey, $panelRow);
         foreach ($row as $element) {
             if ($element instanceof FilterElementInformationInterface) {
                 $panelElement = new DefaultFilterElement();
                 $panelElement->setPropertyName($element->getPropertyName());
                 $panelRow->addElement($element->getName(), $panelElement);
             } elseif ($element instanceof LimitElementInformationInterface) {
                 $panelElement = new DefaultLimitElement();
                 $panelRow->addElement($element->getName(), $panelElement);
             } elseif ($element instanceof SearchElementInformationInterface) {
                 $panelElement = new DefaultSearchElement();
                 foreach ($element->getPropertyNames() as $propName) {
                     $panelElement->addProperty($propName);
                 }
                 $panelRow->addElement($element->getName(), $panelElement);
             } elseif ($element instanceof SortElementInformationInterface) {
                 $panelElement = new DefaultSortElement();
                 foreach ($element->getPropertyNames() as $propName) {
                     $panelElement->addProperty($propName, $element->getPropertyFlag($propName));
                 }
                 $panelRow->addElement($element->getName(), $panelElement);
             } elseif ($element instanceof SubmitElementInformationInterface) {
                 $panelElement = new DefaultSubmitElement();
                 $panelRow->addElement($element->getName(), $panelElement);
             }
         }
     }
 }