public static function generateForm(\Widget $objWidget, $hideLabel = false)
 {
     if (in_array($objWidget->type, static::$arrSkipTypes)) {
         return $objWidget->generate();
     }
     $strClass = $GLOBALS['TL_FFL_BOOTSTRAPPER']['legacy'];
     if (isset($GLOBALS['TL_FFL_BOOTSTRAPPER'][$objWidget->type])) {
         $strClass = $GLOBALS['TL_FFL_BOOTSTRAPPER'][$objWidget->type];
     }
     if (!class_exists($strClass)) {
         return $objWidget->generate();
     }
     $objField = new $strClass($objWidget);
     if (!$objField instanceof BootstrapperFormField) {
         return $objWidget->generate();
     }
     $objField->hideLabel = $hideLabel;
     return $objField->generate();
 }
 /**
  * Build the element by the widget.
  *
  * If the widget has a GeneratesAnElement event the widget generate method will be used instead of recreating the
  * elements.
  *
  * @param CreateElementEvent $event  The subscribed event.
  * @param \Widget            $widget The form widget.
  *
  * @return bool
  */
 private function buildByWidget(CreateElementEvent $event, $widget)
 {
     if ($widget instanceof GeneratesAnElement) {
         $element = $widget->generate();
         $event->setElement($element);
         return true;
     }
     return false;
 }
Example #3
0
 /**
  * Build the element.
  *
  * @param \Widget $widget The form widget.
  * @param View    $view   The view instance.
  *
  * @return \Netzmacht\Html\Element|\Netzmacht\Html\Element\StaticHtml
  */
 private function buildElement(\Widget $widget, View $view)
 {
     // build the element
     $event = new CreateElementEvent($view);
     $this->eventDispatcher->dispatch(Events::CREATE_ELEMENT, $event);
     $element = $event->getElement();
     // no element given by build event. generate form widget instead
     if (!$element) {
         $element = new StaticHtml($widget->generate());
     }
     return $element;
 }
 /**
  * Generate the widget and return it as string
  * @return string
  */
 public function generate()
 {
     // create new include template
     $objTemplate = new \BackendTemplate('be_include');
     // get the active record
     $activeRecord = $this->arrConfiguration['activeRecord'];
     // get the type
     $type = $activeRecord->type;
     // get the table
     $table = $this->arrConfiguration['strTable'];
     // depending on type
     if ($type == 'alias') {
         // get the element
         $objElement = \ContentModel::findByPk($activeRecord->cteAlias);
         if ($objElement === null) {
             return '';
         }
         // get the parent article
         $objArticle = \ArticleModel::findByPk($objElement->pid);
         if ($objArticle === null) {
             return parent::generate();
         }
         // get the parent pages
         $objPages = \PageModel::findParentsById($objArticle->pid);
         if ($objPages === null) {
             return parent::generate();
         }
         // get the page titles
         $arrPageTitles = array_reverse($objPages->fetchEach('title'));
         // set breadcrumb to original element
         $objTemplate->original = array('crumbs' => implode(' » ', $arrPageTitles), 'article' => array('title' => $objArticle->title, 'link' => 'contao/main.php?do=article&table=tl_content&id=' . $objArticle->id . '&rt=' . REQUEST_TOKEN));
         // get include breadcrumbs
         $includes = \IncludeInfoHelper::getIncludes('cteAlias', $activeRecord->cteAlias, $activeRecord->id);
         // set include breadcrumbs
         if (count($includes) > 1) {
             $objTemplate->includes = $includes;
         }
     } elseif ($type == 'article') {
         // get the article
         $objArticle = \ArticleModel::findByPk($activeRecord->articleAlias);
         if ($objArticle === null) {
             return parent::generate();
         }
         // get the parent pages
         $objPages = \PageModel::findParentsById($objArticle->pid);
         if ($objPages === null) {
             return parent::generate();
         }
         // get the page titles
         $arrPageTitles = array_reverse($objPages->fetchEach('title'));
         // set breadcrumb to original element
         $objTemplate->original = array('crumbs' => implode(' » ', $arrPageTitles), 'article' => array('title' => $objArticle->title, 'link' => 'contao/main.php?do=article&table=tl_content&id=' . $objArticle->id . '&rt=' . REQUEST_TOKEN));
         // get include breadcrumbs
         $includes = \IncludeInfoHelper::getIncludes('articleAlias', $activeRecord->articleAlias, $activeRecord->id);
         // set include breadcrumbs
         if (count($includes) > 1) {
             $objTemplate->includes = $includes;
         }
     } elseif ($table == 'tl_content') {
         // get include breadcrumbs that reference this content element
         $includes = \IncludeInfoHelper::getIncludes(array("cteAlias = ? AND type = 'alias'"), array($activeRecord->id));
         // set include breadcrumbs
         if (count($includes) > 0) {
             $objTemplate->includes = $includes;
         }
     } elseif ($table == 'tl_article') {
         // get include breadcrumbs that reference this article
         $includes = \IncludeInfoHelper::getIncludes(array("articleAlias = ? AND type = 'article'"), array($activeRecord->id));
         // set include breadcrumbs
         if (count($includes) > 0) {
             $objTemplate->includes = $includes;
         }
     } elseif ($table == 'tl_module') {
         // get include breadcrumbs that reference this module
         $includes = \IncludeInfoHelper::getIncludes(array("module = ? AND type = 'module'"), array($activeRecord->id));
         // set include breadcrumbs
         if (count($includes) > 0) {
             $objTemplate->includes = $includes;
         }
     }
     // check for includes and add CSS
     if ($objTemplate->includes) {
         $GLOBALS['TL_CSS'][] = \IncludeInfoHelper::BACKEND_CSS;
     }
     // return template
     return $objTemplate->parse();
 }