Exemple #1
0
 public function editAction()
 {
     $request = $this->getRequest();
     $this->view->lang = $request->getParam('lang');
     $menuId = $request->getParam('menu_id');
     $menu = Modules_Menu_Services_Menu::getById($menuId);
     if (null == $menu) {
         Modules_Core_Services_Exception::error('DATA_NOT_FOUND');
     }
     $menuData = $menu;
     /**
      * Get menu items
      */
     $items = Modules_Menu_Services_Item::getTree($menuId);
     $menuData['items'] = $items;
     $this->view->menuData = $menuData;
     /**
      * Get source item
      */
     $sourceMenu = Modules_Menu_Services_Menu::getSource($menu);
     $this->view->sourceMenu = $sourceMenu;
     if ($request->isPost()) {
         $user = Gio_Core_Session::getUser();
         $menuData = $request->getPost('menu');
         $json = new Services_JSON();
         $items = $menuData['items'] ? (array) $json->decode($menuData['items']) : array();
         $menuData = Modules_Menu_Services_Menu::validate($menuData);
         if (isset($menuData['messages_error']) && $menuData['messages_error']) {
             $this->view->errorMessages = $menuData['messages'];
             $menuData['items'] = $items;
             $this->view->menuData = $menuData;
             return;
         }
         $menu = array('menu_id' => $menuId, 'name' => $this->view->STRING->escape($menuData['name']), 'description' => $this->view->STRING->escape($menuData['description']), 'language' => $this->view->STRING->escape($menuData['language']));
         $sourceItem = isset($menuData['source_item']) ? $menuData['source_item'] : null;
         $id = Modules_Menu_Services_Menu::update($menu, $items, $sourceItem);
         Gio_Core_Messenger::getInstance()->addMessage($this->view->TRANSLATOR->translator('menu_edit_success'));
         $this->redirect($this->view->url('menu_menu_edit', $menu));
     }
 }