/** * {@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); }
/** * 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); } } } }