Пример #1
0
 public function formAction(Cms $cms, $locale, $site, $revision = null, $node = null)
 {
     if ($node) {
         if (!$cms->resolveNode($site, $revision, $node, 'folder')) {
             return;
         }
         $cms->setLastAction('edit');
     } else {
         if (!$cms->resolveNode($site, $revision)) {
             return;
         }
         $node = $cms->createNode('folder', $site);
     }
     $this->setContentLocale($locale);
     $translator = $this->getTranslator();
     $locales = $cms->getLocales();
     $themes = $cms->getThemes();
     $data = array('name' => $node->getName($locale), 'theme' => $this->getThemeValueFromNode($node), 'availableLocales' => $this->getLocalesValueFromNode($node));
     $form = $this->createFormBuilder($data);
     $form->addRow('name', 'string', array('label' => $translator->translate('label.folder'), 'description' => $translator->translate('label.folder.description'), 'filters' => array('trim' => array()), 'validators' => array('required' => array())));
     $form->addRow('theme', 'select', array('label' => $translator->translate('label.theme'), 'description' => $translator->translate('label.theme.description'), 'options' => $this->getThemeOptions($node, $translator, $themes)));
     if ($site->isLocalizationMethodCopy()) {
         $form->addRow('availableLocales', 'select', array('label' => $translator->translate('label.locales'), 'description' => $translator->translate('label.locales.available.description'), 'options' => $this->getLocalesOptions($node, $translator, $locales), 'multiple' => true, 'validators' => array('required' => array())));
     }
     $form = $form->build();
     if ($form->isSubmitted()) {
         try {
             $form->validate();
             $data = $form->getData();
             $node->setName($locale, $data['name']);
             $node->setTheme($this->getOptionValueFromForm($data['theme']));
             if ($site->isLocalizationMethodCopy()) {
                 $node->setAvailableLocales($this->getOptionValueFromForm($data['availableLocales']));
             } else {
                 $node->setAvailableLocales($locale);
             }
             $cms->saveNode($node, (!$node->getId() ? 'Created new folder ' : 'Updated folder ') . $node->getName());
             $this->addSuccess('success.node.saved', array('node' => $node->getName($locale)));
             $this->response->setRedirect($this->getUrl('cms.folder.edit', array('locale' => $locale, 'site' => $site->getId(), 'revision' => $node->getRevision(), 'node' => $node->getId())));
             return;
         } catch (ValidationException $validationException) {
             $this->setValidationException($validationException, $form);
         }
     }
     $referer = $this->request->getQueryParameter('referer');
     $this->setTemplateView('cms/backend/folder.form', array('site' => $site, 'node' => $node, 'referer' => $referer, 'form' => $form->getView(), 'locale' => $locale, 'locales' => $locales));
 }
Пример #2
0
 /**
  * Action to add or edit a site
  * @param \ride\web\cms\Cms $cms Facade to the CMS
  * @param string $locale Code of the locale
  * @param string $site Id of the site
  * @param string $revision Name of the revision
  * @return null
  */
 public function formAction(Cms $cms, $locale, $site = null, $revision = null)
 {
     if ($site) {
         if (!$cms->resolveNode($site, $revision)) {
             return;
         }
         $cms->setLastAction('edit');
     } else {
         $site = $cms->createNode('site');
     }
     $this->setContentLocale($locale);
     $translator = $this->getTranslator();
     $locales = $cms->getLocales();
     $themes = $cms->getThemes();
     $referer = $this->request->getQueryParameter('referer');
     $data = array('name' => $site->getName($locale), 'localizationMethod' => $site->getLocalizationMethod(), 'baseUrl' => $site->getBaseUrl($locale), 'theme' => $site->getTheme(), 'availableLocales' => $this->getLocalesValueFromNode($site), 'autoPublish' => $site->isAutoPublish());
     $form = $this->createFormBuilder($data);
     $form->addRow('name', 'string', array('label' => $translator->translate('label.site'), 'description' => $translator->translate('label.site.description'), 'attributes' => array('autofocus' => 'true'), 'filters' => array('trim' => array()), 'validators' => array('required' => array())));
     $form->addRow('baseUrl', 'website', array('label' => $translator->translate('label.url.base'), 'description' => $translator->translate('label.url.base.description'), 'filters' => array('trim' => array())));
     $form->addRow('theme', 'select', array('label' => $translator->translate('label.theme'), 'description' => $translator->translate('label.theme.description'), 'options' => $this->getThemeOptions($site, $translator, $themes), 'validators' => array('required' => array())));
     $form->addRow('autoPublish', 'boolean', array('label' => $translator->translate('label.publish.auto'), 'description' => $translator->translate('label.publish.auto.description')));
     $form->addRow('availableLocales', 'select', array('label' => $translator->translate('label.locales'), 'description' => $translator->translate('label.locales.available.description'), 'options' => $this->getLocalesOptions($site, $translator, $locales), 'multiple' => true, 'validators' => array('required' => array())));
     $form->addRow('localizationMethod', 'select', array('label' => $translator->translate('label.method.localization'), 'description' => $translator->translate('label.method.localization.description'), 'readonly' => $site->getId(), 'options' => array(SiteNode::LOCALIZATION_METHOD_COPY => $translator->translate('label.copy.translated'), SiteNode::LOCALIZATION_METHOD_UNIQUE => $translator->translate('label.tree.unique')), 'validators' => array('required' => array())));
     $form = $form->build();
     if ($form->isSubmitted()) {
         try {
             $form->validate();
             $oldIsAutoPublish = $data['autoPublish'];
             $data = $form->getData();
             $site->setName($locale, $data['name']);
             if (!$site->getId()) {
                 $locales = $cms->getLocales();
                 foreach ($locales as $l) {
                     if ($l == $locale) {
                         continue;
                     }
                     $site->setName($l, $data['name']);
                 }
             }
             $site->setLocalizationMethod($data['localizationMethod']);
             $site->setBaseUrl($locale, $data['baseUrl']);
             $site->setTheme($data['theme']);
             $site->setAvailableLocales($this->getOptionValueFromForm($data['availableLocales']));
             $site->setIsAutoPublish($data['autoPublish']);
             $cms->saveNode($site, (!$site->getId() ? 'Created new site ' : 'Updated site ') . $site->getName());
             if (!$oldIsAutoPublish && $site->isAutoPublish()) {
                 $cms->publishNode($site);
             }
             $this->addSuccess('success.node.saved', array('node' => $site->getName($locale)));
             $url = $this->getUrl('cms.site.edit', array('site' => $site->getId(), 'revision' => $site->getRevision(), 'locale' => $locale));
             if ($referer) {
                 $url .= '?referer=' . urlencode($url);
             }
             $this->response->setRedirect($url);
             return;
         } catch (ValidationException $validationException) {
             $this->setValidationException($validationException, $form);
         }
     }
     $this->setTemplateView('cms/backend/site.form', array('node' => $site, 'referer' => $referer, 'form' => $form->getView(), 'locale' => $locale, 'locales' => $locales));
 }
Пример #3
0
 public function formAction(Cms $cms, $locale, ImageUrlGenerator $imageUrlGenerator, $site, $revision, $node = null)
 {
     if ($node) {
         if (!$cms->resolveNode($site, $revision, $node, 'page')) {
             return;
         }
         $cms->setLastAction('edit');
     } else {
         if (!$cms->resolveNode($site, $revision)) {
             return;
         }
         $node = $cms->createNode('page', $site);
     }
     $this->setContentLocale($locale);
     $translator = $this->getTranslator();
     $locales = $cms->getLocales();
     $themes = $cms->getThemes();
     $referer = $this->request->getQueryParameter('referer');
     // gather data
     $data = array('name' => $node->getName($locale), 'name-title' => $node->get('name.' . $locale . '.title', null, false), 'name-menu' => $node->get('name.' . $locale . '.menu', null, false), 'name-breadcrumb' => $node->get('name.' . $locale . '.breadcrumb', null, false), 'description' => $node->getDescription($locale), 'image' => $node->getImage($locale), 'route' => $node->getRoute($locale, false), 'theme' => $this->getThemeValueFromNode($node), 'availableLocales' => $this->getLocalesValueFromNode($node));
     // build form
     $form = $this->createFormBuilder($data);
     $form->addRow('name', 'string', array('label' => $translator->translate('label.page'), 'description' => $translator->translate('label.page.description'), 'filters' => array('trim' => array()), 'validators' => array('required' => array())));
     $form->addRow('name-title', 'string', array('label' => $translator->translate('label.name.title'), 'description' => $translator->translate('label.name.title.description'), 'filters' => array('trim' => array())));
     $form->addRow('name-menu', 'string', array('label' => $translator->translate('label.name.menu'), 'description' => $translator->translate('label.name.menu.description'), 'filters' => array('trim' => array())));
     $form->addRow('name-breadcrumb', 'string', array('label' => $translator->translate('label.name.breadcrumb'), 'description' => $translator->translate('label.name.breadcrumb.description'), 'filters' => array('trim' => array())));
     $form->addRow('route', 'string', array('label' => $translator->translate('label.route'), 'description' => $translator->translate('label.route.description'), 'filters' => array('trim' => array())));
     $form->addRow('description', 'text', array('label' => $translator->translate('label.description'), 'description' => $translator->translate('label.description.node.description'), 'filters' => array('trim' => array())));
     $form->addRow('image', 'image', array('label' => $translator->translate('label.image'), 'description' => $translator->translate('label.image.node.description')));
     $form->addRow('theme', 'select', array('label' => $translator->translate('label.theme'), 'description' => $translator->translate('label.theme.description'), 'options' => $this->getThemeOptions($node, $translator, $themes)));
     if ($site->isLocalizationMethodCopy()) {
         $form->addRow('availableLocales', 'select', array('label' => $translator->translate('label.locales'), 'description' => $translator->translate('label.locales.available.description'), 'options' => $this->getLocalesOptions($node, $translator, $locales), 'multiple' => true, 'validators' => array('required' => array())));
     }
     // process form
     $form = $form->build();
     if ($form->isSubmitted()) {
         try {
             $form->validate();
             $data = $form->getData();
             $node->setName($locale, $data['name']);
             $node->setName($locale, $data['name-title'], 'title');
             $node->setName($locale, $data['name-menu'], 'menu');
             $node->setName($locale, $data['name-breadcrumb'], 'breadcrumb');
             $node->setDescription($locale, $data['description']);
             $node->setImage($locale, $data['image']);
             $node->setRoute($locale, $data['route']);
             $node->setTheme($this->getOptionValueFromForm($data['theme']));
             if ($site->isLocalizationMethodCopy()) {
                 $node->setAvailableLocales($this->getOptionValueFromForm($data['availableLocales']));
             } else {
                 $node->setAvailableLocales($locale);
             }
             $cms->saveNode($node, (!$node->getId() ? 'Created new page ' : 'Updated page ') . $node->getName());
             $this->addSuccess('success.node.saved', array('node' => $node->getName($locale)));
             $url = $this->getUrl('cms.page.edit', array('locale' => $locale, 'site' => $site->getId(), 'revision' => $node->getRevision(), 'node' => $node->getId()));
             if ($referer) {
                 $url .= '?referer=' . urlencode($referer);
             }
             $this->response->setRedirect($url);
             return;
         } catch (ValidationException $validationException) {
             $this->setValidationException($validationException, $form);
         }
     }
     // show view
     $this->setTemplateView('cms/backend/page.form', array('site' => $site, 'node' => $node, 'referer' => $referer, 'form' => $form->getView(), 'locale' => $locale, 'locales' => $locales));
 }
 public function formAction(Cms $cms, $locale, $site, $revision = null, $node = null)
 {
     if ($node) {
         if (!$cms->resolveNode($site, $revision, $node, 'redirect')) {
             return;
         }
         $cms->setLastAction('edit');
     } else {
         if (!$cms->resolveNode($site, $revision)) {
             return;
         }
         $node = $cms->createNode('redirect', $site);
     }
     $this->setContentLocale($locale);
     $translator = $this->getTranslator();
     $locales = $cms->getLocales();
     $referer = $this->request->getQueryParameter('referer');
     // get available nodes
     $nodeList = $cms->getNodeList($site, $locale, true, false);
     if ($node && isset($nodeList[$node->getId()])) {
         unset($nodeList[$node->getId()]);
     }
     // gather data
     $data = array('name' => $node->getName($locale), 'redirect-node' => $node->getRedirectNode($locale), 'redirect-url' => $node->getRedirectUrl($locale), 'route' => $node->getRoute($locale, false), 'availableLocales' => $this->getLocalesValueFromNode($node));
     if ($data['redirect-url']) {
         $data['redirect-type'] = 'url';
     } else {
         $data['redirect-type'] = 'node';
     }
     // build form
     $form = $this->createFormBuilder($data);
     $form->addRow('name', 'string', array('label' => $translator->translate('label.redirect'), 'description' => $translator->translate('label.redirect.name.description'), 'filters' => array('trim' => array()), 'validators' => array('required' => array())));
     $form->addRow('redirect-type', 'option', array('label' => $translator->translate('label.redirect.to'), 'options' => array('node' => $translator->translate('label.node'), 'url' => $translator->translate('label.url')), 'validators' => array('required' => array())));
     $form->addRow('redirect-node', 'select', array('label' => $translator->translate('label.redirect.node'), 'description' => $translator->translate('label.redirect.node.description'), 'options' => $nodeList));
     $form->addRow('redirect-url', 'string', array('label' => $translator->translate('label.redirect.url'), 'description' => $translator->translate('label.redirect.url.description'), 'filters' => array('trim' => array())));
     $form->addRow('route', 'string', array('label' => $translator->translate('label.route'), 'description' => $translator->translate('label.route.description'), 'filters' => array('trim' => array())));
     if ($site->isLocalizationMethodCopy()) {
         $form->addRow('availableLocales', 'select', array('label' => $translator->translate('label.locales'), 'description' => $translator->translate('label.locales.available.description'), 'options' => $this->getLocalesOptions($node, $translator, $locales), 'multiple' => true, 'validators' => array('required' => array())));
     }
     // process form
     $form = $form->build();
     if ($form->isSubmitted()) {
         try {
             $form->validate();
             $data = $form->getData();
             $node->setName($locale, $data['name']);
             $node->setRoute($locale, $data['route']);
             if ($site->isLocalizationMethodCopy()) {
                 $node->setAvailableLocales($this->getOptionValueFromForm($data['availableLocales']));
             } else {
                 $node->setAvailableLocales($locale);
             }
             if ($data['redirect-type'] == 'node') {
                 $node->setRedirectNode($locale, $data['redirect-node']);
                 $node->setRedirectUrl($locale, null);
             } else {
                 $node->setRedirectNode($locale, null);
                 $node->setRedirectUrl($locale, $data['redirect-url']);
             }
             $cms->saveNode($node, (!$node->getId() ? 'Created new redirect ' : 'Updated redirect ') . $node->getName());
             $this->addSuccess('success.node.saved', array('node' => $node->getName($locale)));
             $url = $this->getUrl('cms.redirect.edit', array('locale' => $locale, 'site' => $site->getId(), 'revision' => $node->getRevision(), 'node' => $node->getId()));
             if ($referer) {
                 $url .= '?referer=' . urlencode($referer);
             }
             $this->response->setRedirect($url);
             return;
         } catch (ValidationException $validationException) {
             $this->setValidationException($validationException, $form);
         }
     }
     // show view
     $this->setTemplateView('cms/backend/redirect.form', array('site' => $site, 'node' => $node, 'referer' => $referer, 'form' => $form->getView(), 'locale' => $locale, 'locales' => $locales));
 }
 public function formAction(Cms $cms, ImageUrlGenerator $imageUrlGenerator, $locale, OrmManager $orm, $site, $revision = null, $node = null)
 {
     if ($node) {
         if (!$cms->resolveNode($site, $revision, $node, 'entry')) {
             return;
         }
         $cms->setLastAction('edit');
     } else {
         if (!$cms->resolveNode($site, $revision)) {
             return;
         }
         $node = $cms->createNode('entry', $site);
     }
     $translator = $this->getTranslator();
     $locales = $cms->getLocales();
     $themes = $cms->getThemes();
     // gather data
     $data = array('name' => $node->getName($locale), 'model' => $node->getEntryModel(), 'entry' => $node->getEntryId(), 'route' => $node->getRoute($locale, false), 'theme' => $this->getThemeValueFromNode($node), 'availableLocales' => $this->getLocalesValueFromNode($node));
     $entryOptions = array('' => '---');
     if ($data['model']) {
         $model = $orm->getModel($data['model']);
         $entries = $model->find(null, $locale);
         $entryOptions += $model->getOptionsFromEntries($entries);
     }
     // build form
     $form = $this->createFormBuilder($data);
     $form->addRow('model', 'select', array('label' => $translator->translate('label.model'), 'description' => $translator->translate('label.model.description'), 'options' => $this->getModelOptions($orm), 'validators' => array('required' => array())));
     $form->addRow('entry', 'select', array('label' => $translator->translate('label.entry'), 'description' => $translator->translate('label.entry.description'), 'options' => $entryOptions, 'validators' => array('required' => array())));
     $form->addRow('name', 'string', array('label' => $translator->translate('label.name'), 'description' => $translator->translate('label.entry.name.description'), 'filters' => array('trim' => array())));
     $form->addRow('route', 'string', array('label' => $translator->translate('label.route'), 'description' => $translator->translate('label.route.description'), 'filters' => array('trim' => array())));
     $form->addRow('theme', 'select', array('label' => $translator->translate('label.theme'), 'description' => $translator->translate('label.theme.description'), 'options' => $this->getThemeOptions($node, $translator, $themes)));
     if ($site->isLocalizationMethodCopy()) {
         $form->addRow('availableLocales', 'select', array('label' => $translator->translate('label.locales'), 'description' => $translator->translate('label.locales.available.description'), 'options' => $this->getLocalesOptions($node, $translator, $locales), 'multiple' => true, 'validators' => array('required' => array())));
     }
     // process form
     $form = $form->build();
     if ($form->isSubmitted()) {
         try {
             $form->validate();
             $data = $form->getData();
             if (!$data['name']) {
                 $data['name'] = $entryOptions[$data['entry']];
             }
             $node->setName($locale, $data['name']);
             $node->setRoute($locale, $data['route']);
             $node->setTheme($this->getOptionValueFromForm($data['theme']));
             if ($site->isLocalizationMethodCopy()) {
                 $node->setAvailableLocales($this->getOptionValueFromForm($data['availableLocales']));
             } else {
                 $node->setAvailableLocales($locale);
             }
             $node->setEntry($data['model'], $data['entry']);
             $cms->saveNode($node, (!$node->getId() ? 'Created new entry ' : 'Updated entry ') . $node->getName());
             $this->addSuccess('success.node.saved', array('node' => $node->getName($locale)));
             $this->response->setRedirect($this->getUrl('cms.entry.edit', array('locale' => $locale, 'site' => $site->getId(), 'revision' => $node->getRevision(), 'node' => $node->getId())));
             return;
         } catch (ValidationException $validationException) {
             $this->setValidationException($validationException, $form);
         }
     }
     $referer = $this->request->getQueryParameter('referer');
     if (!$referer) {
         $referer = $this->getUrl('cms.site.detail.locale', array('site' => $site->getId(), 'revision' => $site->getRevision(), 'locale' => $locale));
     }
     // show view
     $view = $this->setTemplateView('cms/backend/entry.form', array('site' => $site, 'node' => $node, 'referer' => $referer, 'form' => $form->getView(), 'locale' => $locale, 'locales' => $locales));
     $view->addJavascript('js/cms/orm.js');
     $view->addInlineJavascript('initializeNodeEntryForm("' . $this->getUrl('api.orm.list', array('model' => '%model%')) . '");');
 }