/** * (non-PHPdoc) * @see Zend_Controller_Plugin_Abstract::preDispatch() */ public function preDispatch(Zend_Controller_Request_Abstract $request) { try { $viewHelperAction = new Zend_View_Helper_Action(); $navigation = Zend_Registry::get('Zend_Navigation'); $navItem = $navigation->findBy('active', true); $auth = Zend_Auth::getInstance(); $acl = Zend_Registry::get('ZendACL'); $mdlRole = new Acl_Model_Role(); if ($auth->hasIdentity()) { $identity = $auth->getIdentity(); $role = $mdlRole->find($identity->role_id)->current(); } else { $role = $mdlRole->find(3)->current(); } // Zend_Debug::dump($acl); //Zend_Debug::dump($role->id); $mdlWidget = new System_Model_Widget(); $hookXml = APPLICATION_PATH . '/configs/hooks.xml'; $sxeHook = new SimpleXMLElement($hookXml, null, true); $mdlResource = new Acl_Model_Resource(); $mdlWidgetDetail = new System_Model_Widgetdetail(); foreach ($sxeHook as $hook) { #/* #Zend_Debug::dump($hook); $widgets = $mdlWidgetDetail->getWidgetsByHookAndItemId($navItem->id, $hook); $hookContent = ''; foreach ($widgets as $widget) { #Zend_Debug::dump($widget->title); $params = array(); $widgetParams = Zend_Json::decode($widget->params); foreach ($widgetParams as $strParam => $valParam) { $params[$strParam] = $valParam; } $rsACL = strtolower($widget->module . ':' . $widget->controller); $prvACL = strtolower($widget->actioncontroller); if ($acl->isAllowed($role->id, $rsACL, $prvACL)) { #if ( $widget->position == "menu_registrado" ) #var_dump($widget->params, $widget->actioncontroller, $widget->id); $hookContent .= $widget->showtitle == 1 ? "<h3>" . $widget->title . "</h3>" : ""; $hookContent .= $viewHelperAction->action($widget->actioncontroller, $widget->controller, $widget->module, $params); } } #*/ Zend_Layout::getMvcInstance()->assign(strval($hook), $hookContent); } } catch (Exception $e) { try { $writer = new Zend_Log_Writer_Stream(APPLICATION_LOG_PATH . 'plugins.log'); $logger = new Zend_Log($writer); $logger->log($e->getMessage(), Zend_Log::ERR); } catch (Exception $e) { } } }
/** * update action for widget controller * @throws Exception */ public function updateAction() { try { $translate = Zend_Registry::get('Zend_Translate'); $id = $this->getRequest()->getParam('id', 0); $mdlWidget = new System_Model_Widget(); $widget = $mdlWidget->find($id)->current(); if (!$widget) { throw new Exception($translate->translate("LBL_ROW_NOT_FOUND")); } $mdlResource = new Acl_Model_Resource(); $resource = $mdlResource->find($widget->resource_id)->current(); $widgetFile = APPLICATION_PATH . '/modules/' . $resource->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 $widgetElement) { if ($widgetElement['id'] == $widget->widget_id) { $element = $widgetElement; break; } } if (!$element) { throw new Exception($translate->translate("SYSTEM_WIDGET_ELEMENT_NOT_FOUND")); } #$frmWidget = strval($element->form); #$frmWidget = new $frmWidget(); $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)))); $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/update"); $frmWidget->populate($widget->toArray()); $mdlWidgetDetail = new System_Model_Widgetdetail(); $renderForAll = $mdlWidgetDetail->isRenderForAll($widget); if ($renderForAll === false) { $rowsSelected = array(); $menuItems = $widget->findManyToManyRowset('menu_Model_Item', 'System_Model_Widgetdetail', 'Widget'); foreach ($menuItems as $menuItemSelected) { $rowsSelected[] = $menuItemSelected->id; } $frmWidget->populate(array('menuitem' => $rowsSelected)); $frmWidget->getElement('renderfor')->setValue(1); } else { $frmWidget->getElement('renderfor')->setValue(0); $frmWidget->getElement('menuitem')->setAttrib('disabled', true); } $params = Zend_Json::decode($widget->params); $frmWidget->populate($params); if ($this->getRequest()->isPost()) { if ($frmWidget->isValid($this->getRequest()->getParams())) { $defaultFormFields = array('id', 'wid', 'mod', 'position', 'title', 'published', 'menuitem', 'csrf_token', 'token', 'widget_id', 'showtitle'); $widget->title = $frmWidget->getElement('title')->getValue(); $widget->published = $frmWidget->getElement('published')->getValue(); $widget->position = $frmWidget->getElement('position')->getValue(); $widget->showtitle = $frmWidget->getElement('showtitle')->getValue(); $frmWidgetValues = $frmWidget->getValues(); $params = array(); foreach ($frmWidgetValues as $wvk => $wv) { if (!in_array($wvk, $defaultFormFields)) { #$params[] = $wvk.'='.$wv.''; $params[$wvk] = $wv; } } #$params = implode("\n", $params); #$widget->params = $params; $widget->params = Zend_Json::encode($params); #Zend_Debug::dump( $widget ); #die(); $widget->save(); $menuItemsWidget = $widget->findDependentRowset('System_Model_Widgetdetail', 'Widget'); foreach ($menuItemsWidget as $miw) { $miw->delete(); } 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); } } #Zend_Debug::dump( $menuItemsWidget ); $this->_helper->flashMessenger->addMessage(array('type' => 'info', 'header' => '', 'message' => $translate->translate("SYSTEM_WIDGET_UPDATED_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_UPDATE_WIDGET"), ) );*/ } $this->view->frmWidget = $frmWidget; $this->view->widget = $element; #Zend_Debug::dump($element); } catch (Exception $e) { $this->_helper->flashMessenger->addMessage(array('type' => 'error', 'header' => '', 'message' => $e->getMessage())); $this->_helper->redirector("list", "widget", "system"); } return; }