/** * Perform the structure node action */ public function indexAction(Cms $cms, NodeStructureParser $parser, $locale, $site, $revision) { $node = $site; if (!$cms->resolveNode($site, $revision, $node, null, true)) { return; } $this->setContentLocale($locale); $cms->setLastAction(self::NAME); $translator = $this->getTranslator(); $referer = $this->request->getQueryParameter('referer'); $structure = $parser->getStructure($locale, $node); $form = $this->createFormBuilder(array('structure' => $structure)); $form->addRow('structure', 'text', array('label' => $translator->translate('label.node.structure'), 'description' => $translator->translate('label.node.structure.description'), 'attributes' => array('rows' => 10), 'filters' => array('trim' => array()), 'validators' => array('required' => array()))); $form = $form->build(); if ($form->isSubmitted()) { try { $form->validate(); $data = $form->getData(); $parser->setStructure($locale, $node, $cms->getNodeModel(), $data['structure']); $this->addSuccess('success.node.saved', array('node' => $site->getName($locale))); $url = $this->getUrl(self::ROUTE, array('site' => $site->getId(), 'revision' => $node->getRevision(), 'locale' => $locale, 'node' => $node->getId())); if ($referer) { $url .= '?referer=' . urlencode($referer); } $this->response->setRedirect($url); return; } catch (ValidationException $validationException) { $this->setValidationException($validationException, $form); } } $this->setTemplateView('cms/backend/site.structure', array('site' => $site, 'form' => $form->getView(), 'referer' => $referer, 'locale' => $locale, 'locales' => $cms->getLocales())); }