/** * Perform the publish node action */ public function indexAction(Cms $cms, $locale, $site, $revision, $node) { if (!$cms->resolveNode($site, $revision, $node)) { return; } $this->setContentLocale($locale); $cms->setLastAction(self::NAME); $translator = $this->getTranslator(); $defaultRevision = $cms->getDefaultRevision(); $data = array('revision' => $defaultRevision, 'recursive' => true); $revisions = $site->getRevisions(); if (!isset($revisions[$defaultRevision])) { $revisions[$defaultRevision] = $defaultRevision; } unset($revisions[$node->getRevision()]); $form = $this->createFormBuilder($data); $form->addRow('revision', 'select', array('label' => $translator->translate('label.revision'), 'description' => $translator->translate('label.revision.publish.description'), 'options' => $revisions, 'validators' => array('required' => array()))); $form->addRow('recursive', 'option', array('label' => $translator->translate('label.recursive'), 'description' => $translator->translate('label.recursive.publish.description'))); $referer = $this->request->getQueryParameter('referer'); $form = $form->build(); if ($form->isSubmitted()) { try { $form->validate(); $data = $form->getData(); $cms->publishNode($node, $data['revision'], $data['recursive']); $this->addSuccess('success.node.published', array('node' => $node->getName($locale), 'revision' => $data['revision'])); $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/node.publish', array('site' => $site, 'node' => $node, 'form' => $form->getView(), 'referer' => $referer, 'locale' => $locale, 'locales' => $cms->getLocales())); }
/** * Action to publish a revision of a site * @param \ride\web\cms\Cms $cms Facade to the CMS * @param string $site Id of the site * @param string $revision Name of the revision to work with * @param string $locale Code of the locale * @return null */ public function publishAction(Cms $cms, $site, $revision, $locale) { if (!$cms->resolveNode($site, $revision)) { return; } $this->setContentLocale($locale); $publishRevision = $cms->getDefaultRevision(); $cms->publishNode($site, $publishRevision, true); $this->addSuccess('success.node.published', array('node' => $site->getName($locale), 'revision' => $publishRevision)); $referer = $this->request->getQueryParameter('referer'); if (!$referer) { $referer = $this->getUrl('cms.site.detail', array('site' => $site->getId(), 'revision' => $revision, 'locale' => $locale)); } $this->response->setRedirect($referer); }