/** * Add action for item controller * @throws Exception * @return NULL */ public function addAction() { $menuId = null; try { $translate = Zend_Registry::get('Zend_Translate'); $menuId = $this->getRequest()->getParam('menu_id', 0); $mdlMenu = new menu_Model_Menu(); $menu = $mdlMenu->find($menuId)->current(); if (!$menu) { throw new Exception($translate->translate("MENU_ROW_NOT_FOUND")); } $this->view->menu = $menu; $menuId = $menu->id; #/mod/acl/mid/6/menu_id/1 $module = $this->getRequest()->getParam('mod'); # module name in request param $mid = $this->getRequest()->getParam('mid'); # menu item id in xml file <item id="?"> $menuFile = APPLICATION_PATH . '/modules/' . $module . '/menus.xml'; if (!file_exists($menuFile)) { throw new Exception($translate->translate("MENU_XML_FILE_NOT_FOUND")); } $sxe = new SimpleXMLElement($menuFile, null, true); $element = null; foreach ($sxe as $sxeMenuItem) { if ($sxeMenuItem['id'] == $mid) { $element = $sxeMenuItem; break; } } if (!$element) { throw new Exception($translate->translate("MENU_XML_ITEM_ELEMENT_NOT_FOUND")); } $mdlResource = new Acl_Model_Resource(); $resource = $mdlResource->getIdByDetail($module, strval($element->controller), strval($element->action)); if (!$resource) { throw new Exception($translate->translate("ACL_RESOURCE_NOT_FOUND")); } $frmMenuItem = ucfirst(strtolower(strval($element->module))) . '_Form_Menuitems'; $frmMenuItem = strtolower(strval($element->module)) == 'menu' ? 'menu_Form_Menuitems' : $frmMenuItem; #$frmWidget = new $frmWidget( array('typeForm'=>'test') ); $frmMenuItem = new $frmMenuItem(array('menuType' => strtolower(strval($element->menu_type)))); $frmMenuItem->getElement('mid')->setValue((int) $mid); $frmMenuItem->getElement('mod')->setValue(strval($module)); $frmMenuItem->getElement('menu_id')->setValue($menuId); $frmMenuItem->getElement('resource_id')->setValue($resource->id); $cbParentItem = $frmMenuItem->getElement('parent_id'); $mdlMenuItem = new menu_Model_Item(); $menuItemList = $mdlMenuItem->getListItemsByMenu($menu); $cbParentItem->addMultiOption(0, $translate->translate("MENU_NOT_PARENT")); if ($menuItemList) { foreach ($menuItemList as $menuItemRow) { $cbParentItem->addMultiOption($menuItemRow->id, $menuItemRow->title); } } $frmMenuItem->setAction($this->_request->getBaseUrl() . "/menu-item-add/" . $module . '/' . $mid . '/' . $menu->id); $this->view->frmMenuItem = $frmMenuItem; $this->view->menuitem = $element; if ($this->getRequest()->isPost()) { if ($frmMenuItem->isValid($this->getRequest()->getParams())) { $mdlMenuItem = new menu_Model_Item(); $menuItem = $mdlMenuItem->createRow($this->getRequest()->getParams()); $parentItem = $mdlMenuItem->find($menuItem->parent_id)->current(); $menuItem->depth = $parentItem ? $parentItem->depth + 1 : 1; $menuItem->parent_id = $parentItem ? $parentItem->id : null; $mdlMenuItem->save($menuItem); $frmMIValues = $frmMenuItem->getValues(); $params = array(); foreach ($frmMIValues as $wvk => $wv) { if (!in_array($wvk, $frmMenuItem->defaultFormFields)) { #$params[] = $wvk.'='.$wv.''; #$params[] = array($wvk=>$wv); $params[$wvk] = $wv; } } #$params = implode("\n", $params); #$menuItem->params = $params; $menuItem->params = Zend_Json::encode($params); $menuItem->save(); $this->_helper->flashMessenger->addMessage(array('type' => 'info', 'header' => '', 'message' => $translate->translate("MENU_ITEM_ADDED_SUCCESSFULLY"))); $this->redirect('menu-items/' . $menu->id); } } else { /*$fields = array(); foreach ( $frmMenuItem->getElements() as $element ) $fields[] = $element->getName(); $frmMenuItem->addDisplayGroup( $fields, 'form', array( 'legend' => "MENU_CREATE_MENUITEM", ) );*/ } } catch (Exception $e) { $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage())); $this->redirect('menu-items/' . $menu->id); } return; }