/** * 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; }
/** * new action for widget controller * @throws Exception */ public function newAction() { // action body try { $translate = Zend_Registry::get('Zend_Translate'); $module = $this->getRequest()->getParam('mod'); $wid = $this->getRequest()->getParam('wid'); $widgetFile = APPLICATION_PATH . '/modules/' . $module . '/widgets.xml'; if (!file_exists($widgetFile)) { throw new Exception($translate->translate("SYSTEM_WIDGET_NOT_FOUND")); } $sxe = new SimpleXMLElement($widgetFile, null, true); $element = null; foreach ($sxe as $widget) { if ($widget['id'] == $wid) { $element = $widget; break; } } if (!$element) { throw new Exception($translate->translate("SYSTEM_WIDGET_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")); } $frmWidget = ucfirst(strtolower(strval($element->module))) . '_Form_Widgets'; $frmWidget = strtolower(strval($element->module)) == 'menu' ? 'menu_Form_Widgets' : $frmWidget; #$frmWidget = new $frmWidget( array('typeForm'=>'test') ); $frmWidget = new $frmWidget(array('widgetType' => strtolower(strval($element->widget_type)))); #Zend_Debug::dump($frmWidget); die(); $frmWidget->getElement('wid')->setValue((int) $wid); $frmWidget->getElement('mod')->setValue(strval($module)); $hookXml = APPLICATION_PATH . '/configs/hooks.xml'; $sxeHook = new SimpleXMLElement($hookXml, null, true); $cbPosition = $frmWidget->getElement("position"); foreach ($sxeHook as $hook) { $cbPosition->addMultiOption($hook, $hook); } $mdlMenu = new menu_Model_Menu(); $mdlMI = new menu_Model_Item(); $menus = $mdlMenu->getMenus(); $cbMenuItem = $frmWidget->getElement('menuitem'); foreach ($menus as $menu) { $menuItemData = array(); $mdlMI->getMenuItemsForWidget(null, $menu, null, $menuItemData); $cbMIData[$menu->name] = $menuItemData; $cbMenuItem->addMultiOptions($cbMIData); } $frmWidget->setAction($this->_request->getBaseUrl() . "/system/widget/new"); $this->view->frmWidget = $frmWidget; $this->view->widget = $element; if ($this->getRequest()->isPost()) { if ($frmWidget->isValid($this->getRequest()->getParams())) { $defaultFormFields = array('id', 'wid', 'mod', 'position', 'title', 'published', 'menuitem', 'csrf_token', 'token', 'widget_id', 'resource_id', 'showtitle'); $mdlWidget = new System_Model_Widget(); $mdlWidgetDetail = new System_Model_Widgetdetail(); $widget = $mdlWidget->createRow($this->getRequest()->getParams()); $widget->ordering = $mdlWidget->getLastPosition($widget) + 1; #var_dump($module, $element->controller, $element->action); $widget->resource_id = $resource->id; #Zend_Debug::dump($widget); $widget->widget_id = $wid; $frmWidgetValues = $frmWidget->getValues(); $params = array(); foreach ($frmWidgetValues as $wvk => $wv) { if (!in_array($wvk, $defaultFormFields)) { #$params[] = $wvk.'='.$wv.''; $params[] = array($wvk => $wv); } } #$params = implode("\n", $params); #$widget->params = $params; $widget->params = Zend_Json::encode($params); $widget->save(); #Zend_Debug::dump($widget); #print_r( $frmWidget->getValues() ); if ($frmWidget->getElement('renderfor')->getValue() == 0) { $widgetDetail = $mdlWidgetDetail->createRow(); $widgetDetail->widget_id = $widget->id; $widgetDetail->menuitem_id = null; $widgetDetail->save(); } else { foreach ($frmWidget->getValue('menuitem') as $mi) { $widgetDetail = $mdlWidgetDetail->createRow(); $widgetDetail->widget_id = $widget->id; $widgetDetail->menuitem_id = $mi; $widgetDetail->save(); #Zend_Debug::dump($widgetDetail); } } $this->_helper->flashMessenger->addMessage(array('type' => 'info', 'header' => '', 'message' => $translate->translate("SYSTEM_WIDGET_ADDED_SUCCESSFULLY"))); $this->_helper->redirector("list", "widget", "system"); } } else { /*$fields = array(); foreach ( $frmWidget->getElements() as $wfelement ) $fields[] = $wfelement->getName(); $frmWidget->addDisplayGroup( $fields, 'form', array( 'legend' => $translate->translate("SYSTEM_NEW_WIDGET"), ) );*/ } } catch (Exception $e) { $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage())); $this->_helper->redirector("list", "widget", "system"); } return; }