Пример #1
0
 /**
  * Add a navigation item
  */
 public function addAction()
 {
     $form = new NavigationConfigForm();
     $form->setRedirectUrl('navigation');
     $form->setUser($this->Auth()->getUser());
     $form->setItemTypes($this->listItemTypes());
     $form->addDescription($this->translate('Create a new navigation item, such as a menu entry or dashlet.'));
     // TODO: Fetch all "safe" parameters from the url and populate them
     $form->setDefaultUrl(rawurldecode($this->params->get('url', '')));
     $form->setOnSuccess(function (NavigationConfigForm $form) {
         $data = $form::transformEmptyValuesToNull($form->getValues());
         try {
             $form->add($data);
         } catch (Exception $e) {
             $form->error($e->getMessage());
             return false;
         }
         if ($form->save()) {
             if ($data['type'] === 'menu-item') {
                 $form->getResponse()->setRerenderLayout();
             }
             Notification::success(t('Navigation item successfully created'));
             return true;
         }
         return false;
     });
     $form->handleRequest();
     $this->renderForm($form, $this->translate('New Navigation Item'));
 }
Пример #2
0
 /**
  * Edit a navigation item
  */
 public function editAction()
 {
     $itemName = $this->params->getRequired('name');
     $referrer = $this->params->get('referrer', 'index');
     $form = new NavigationConfigForm();
     $form->setRedirectUrl($referrer === 'shared' ? 'navigation/shared' : 'navigation');
     $form->setItemTypes($this->listItemTypes());
     $form->setTitle(sprintf($this->translate('Edit Navigation Item %s'), $itemName));
     $form->setUser($this->Auth()->getUser());
     $form->setShareConfig(Config::app('navigation'));
     $form->setOnSuccess(function (NavigationConfigForm $form) use($itemName) {
         $data = array_map(function ($v) {
             return $v !== '' ? $v : null;
         }, $form->getValues());
         try {
             $form->edit($itemName, $data);
         } catch (NotFoundError $e) {
             throw $e;
         } catch (Exception $e) {
             $form->error($e->getMessage());
             return false;
         }
         if ($form->save()) {
             if (isset($data['type']) && $data['type'] === 'menu-item') {
                 $form->getResponse()->setRerenderLayout();
             }
             Notification::success(sprintf(t('Navigation item "%s" successfully updated'), $itemName));
             return true;
         }
         return false;
     });
     try {
         $form->load($itemName);
         $form->handleRequest();
     } catch (NotFoundError $_) {
         $this->httpNotFound(sprintf($this->translate('Navigation item "%s" not found'), $itemName));
     }
     $this->view->form = $form;
     $this->render('form');
 }