コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }