Beispiel #1
0
 /**
  * @param Theme $theme
  *
  * @return FormBuilder
  */
 protected function buildCommonForm(Theme $theme)
 {
     $n = $theme->getHomeNode();
     $r = $theme->getRoot();
     $defaults = ['available' => $theme->isAvailable(), 'className' => $theme->getClassName(), 'staticTheme' => $theme->isStaticTheme(), 'hostname' => $theme->getHostname(), 'routePrefix' => $theme->getRoutePrefix(), 'backendTheme' => $theme->isBackendTheme(), 'homeNode' => $n !== null ? $n->getId() : null, 'root' => $r !== null ? $r->getId() : null];
     $builder = $this->getService('formFactory')->createNamedBuilder('source', 'form', $defaults)->add('available', 'checkbox', ['label' => 'available', 'required' => false])->add('staticTheme', 'checkbox', ['label' => 'staticTheme', 'required' => false, 'attr' => ['data-desc' => 'staticTheme.does_not.allow.node_url_routes']])->add('hostname', 'text', ['label' => 'hostname'])->add('routePrefix', 'text', ['label' => 'routePrefix', 'required' => false])->add('backendTheme', 'checkbox', ['label' => 'backendTheme', 'required' => false]);
     $d = $n !== null ? [$n] : [];
     $builder->add('homeNode', new \RZ\Roadiz\CMS\Forms\NodesType($d), ['label' => 'homeNode', 'required' => false]);
     $d = $r !== null ? [$r] : [];
     $builder->add('root', new \RZ\Roadiz\CMS\Forms\NodesType($d), ['label' => 'themeRoot', 'required' => false]);
     return $builder;
 }
 /**
  * Return a NodesSources url without hostname and without
  * root folder.
  *
  * It returns a relative url to Roadiz, not relative to your server root.
  *
  * @param RZ\Roadiz\Core\Entities\Theme $theme
  *
  * @return string
  */
 public function getNonContextualUrl(Theme $theme = null)
 {
     if (null !== $this->nodeSource) {
         if ($this->nodeSource->getNode()->isHome() || null !== $theme && $theme->getHomeNode() == $this->nodeSource->getNode()) {
             if ($this->nodeSource->getTranslation()->isDefaultTranslation() && false === $this->forceLocale) {
                 return '';
             } else {
                 return $this->nodeSource->getTranslation()->getPreferredLocale();
             }
         }
         $urlTokens = [];
         $urlTokens[] = $this->nodeSource->getHandler()->getIdentifier();
         $parent = $this->nodeSource->getHandler()->getParent();
         if ($parent !== null && !$parent->getNode()->isHome()) {
             do {
                 if ($parent->getNode()->isVisible()) {
                     $handler = $parent->getHandler();
                     $urlTokens[] = $handler->getIdentifier();
                 }
                 $parent = $parent->getHandler()->getParent();
             } while ($parent !== null && !$parent->getNode()->isHome());
         }
         /*
          * If using node-name, we must use shortLocale when current
          * translation is not the default one.
          */
         if ($urlTokens[0] == $this->nodeSource->getNode()->getNodeName() && !$this->nodeSource->getTranslation()->isDefaultTranslation() || true === $this->forceLocale) {
             $urlTokens[] = $this->nodeSource->getTranslation()->getPreferredLocale();
         }
         $urlTokens = array_reverse($urlTokens);
         return implode('/', $urlTokens);
     } else {
         throw new \RuntimeException("Cannot generate Url for a NULL NodesSources", 1);
     }
 }