/** * Ação :: Formulário de Inclusão e Alteração */ public function formAction() { $this->_form = new $this->_formName(); $module = $this->getRequest()->getModuleName(); $controller = $this->getRequest()->getControllerName(); $params = $this->getRequest()->getParams(); $action = $params['action_form']; if ($params['typeModal'] == 'AJAX') { Zend_Layout::getMvcInstance()->setLayout('ajax'); } else { if ($params['typeModal'] == 'IFRAME') { Zend_Layout::getMvcInstance()->setLayout('iframe'); } else { if ($params['typeModal'] == 'WINDOW') { Zend_Layout::getMvcInstance()->setLayout('window'); } } } $this->view->onLoad = stripslashes(urldecode($params['afterLoad'])); if (substr($this->view->onLoad, 0, 7) == 'base64:') { $this->view->onLoad = base64_decode(substr($this->view->onLoad, 7)); } $event = 'insert'; $actionForm = Zend_Controller_Front::getInstance()->getRequest()->getParam('action_form'); if ($actionForm) { $event = $actionForm; } $this->getForm()->loadElements($event); if ($params['id']) { $row = $this->_retrieve(); $this->getForm()->populate($row); } $_buttons = array(); $first = true; if (count($params['buttons']) > 0) { foreach ($params['buttons'] as $caption => $button) { $_button = array(); $_button['caption'] = $caption; $_button['icon'] = $button['icon']; $_button['onClick'] = $button['onClick']; if ($first) { $first = false; $_button['class'] = 'btn primary'; } $_buttons[] = $_button; } } else { if (!$params['grid']) { $formParams = array(); if ($params['callback']) { $params['callback'] = urldecode($params['callback']); if (substr($params['callback'], 0, 7) == 'base64:') { $params['callback'] = base64_decode(substr($params['callback'], 7)); } if ($params['callback']) { $formParams['success'] = new ZendT_JS_Command($params['callback']); } } $formParams = ZendT_JS_Json::encode($formParams); $_button = array(); $_button['caption'] = _i18n('Salvar'); $_button['icon'] = 'ui-icon-disk'; $_button['onClick'] = "function(){" . " var form = jQuery('#" . $this->getForm()->getName() . "'); " . " form.TForm('save'," . $formParams . ");" . "}"; $_button['class'] = 'btn primary'; $_buttons[] = $_button; } } $this->getForm()->loadElements($event); $profile = ZendT_Profile::get($this->_formName, 'F'); /** * Utiliza o profile cadastrado, do contrário utiliza o Form Default */ if ($profile) { $this->getForm()->loadProfile($profile); } $listProfile = ZendT_Profile::listProfile($this->_formName, 'F'); $_profile = new ZendT_View_Profile('selProfile', $profile['id'], $listProfile, 'F', $this->_formName); $screenName = $this->view->screenName; $this->view->profileMenu = $_profile->render($screenName); $this->view->screenName = $screenName; $this->view->placeholder('title')->set($screenName); /* $screenName = $_profile->render($this->view->screenName); $this->view->screenName = $screenName; $this->view->placeholder('title')->set($screenName); */ $this->getForm()->populate($params); $hasAction = $this->getForm()->setAction($action); if (!$hasAction) { $action = ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/' . $action; $this->getForm()->setAction($action); } $buttons = $this->_createButtons($_buttons); $this->view->buttonsLoad = $buttons['buttons']; $buttons['buttons'] = $buttons['buttons']; $this->view->buttons = $buttons; $this->view->grid = ''; if ($params['grid']) { $configColumns = $this->_mapper->getColumns()->toArray(); foreach ($configColumns as $column => $key) { if ($key['subtotal']) { $this->getGrid()->setFooterRow(true); $this->getGrid()->setUserDataOnFooter(true); break; } } $this->getColumns(); $this->configGrid(); $onCellSelect = "function(){\n var grid = jQuery('#" . $this->getGrid()->getID() . "');\n var id = grid.jqGrid('getGridParam','selrow');\n jQuery('#" . $this->getForm()->getName() . "').TForm('retrieve',id);\n }"; $this->getGrid()->setOnCellSelect($onCellSelect); $this->getGrid()->setObjToolbar(null); /* getObjToolbar()->removeButton('add'); $this->getGrid()->getObjToolbar()->removeButton('edit'); */ //$this->getGrid()->getT // getToolbarButton('edit') $this->view->grid = $this->getGrid(); $_element = new ZendT_Form_Element_Button('btn_save'); $_element->setLabel('Salvar'); $_element->setIcon('ui-icon ui-icon-disk'); $_element->setAttrib('onClick', "jQuery('#" . $this->getForm()->getName() . "').TForm('save',{grid: '#" . $this->getGrid()->getID() . "'});"); $this->getForm()->addElement($_element); $_element = new ZendT_Form_Element_Button('btn_new'); $_element->setLabel('Novo'); $_element->setIcon('ui-icon ui-icon-document'); $_element->setAttrib('onClick', "jQuery('#" . $this->getForm()->getName() . "').TForm('clear',{});"); $this->getForm()->addElement($_element); if (ZendT_Acl::getInstance()->isAllowed('delete', $this->_resourceBase)) { $_element = new ZendT_Form_Element_Button('btn_delete'); $_element->setLabel('Excluir'); $_element->setIcon('ui-icon ui-icon-trash'); $_element->setAttrib('onClick', "jQuery('#" . $this->getForm()->getName() . "').TForm('delete',{grid: '#" . $this->getGrid()->getID() . "'});"); $this->getForm()->addElement($_element); } $_element = new ZendT_Form_Element_Button('btn_next'); $_element->setIcon('ui-icon ui-icon-seek-next'); $_element->addStyle('float', 'right'); $_element->addClass('ui-button-icon ui-state-default ui-group-item item last'); $_element->setAttrib('onClick', "jQuery('#" . $this->getForm()->getName() . "').TForm('navByGrid',{grid: '#" . $this->getGrid()->getID() . "',move:'next'});"); $this->getForm()->addElement($_element); $_element = new ZendT_Form_Element_Button('btn_prev'); $_element->setIcon('ui-icon ui-icon-seek-prev'); $_element->addStyle('float', 'right'); $_element->addClass('ui-button-icon ui-state-default ui-group-item item first'); $_element->setAttrib('onClick', "jQuery('#" . $this->getForm()->getName() . "').TForm('navByGrid',{grid: '#" . $this->getGrid()->getID() . "',move:'prev'});"); $this->getForm()->addElement($_element); $this->getForm()->addDisplayGroup(array('btn_save', 'btn_new', 'btn_delete', 'btn_next', 'btn_prev'), 'group-nav-buttons', array('id' => 'group-nav-buttons-' . $this->getForm()->getName(), 'class' => 'ui-nav-form')); } $this->view->form = $this->getForm(); }
/** * Pega o objeto grid pré-configurado para * manipulação. * * @return ZendT_Grid */ public function configGrid() { $module = $this->getRequest()->getModuleName(); $controller = $this->getRequest()->getControllerName(); $params = $this->getRequest()->getParams(); $profileKey = ''; if (isset($params['profile_key'])) { $profileKey = $params['profile_key']; } $urlFilter = '?q=1'; if (isset($params['filter_json'])) { $urlFilter .= '&filter_json=' . $params['filter_json']; } if (isset($params['mapper_view'])) { $urlFilter .= '&mapper_view=' . $params['mapper_view']; } if ($this->_mapper instanceof ZendT_Db_View) { $where = $this->getMapper()->getColumns()->getWhere($params); if ($where) { $params['postData'] = $where->toJsonPostData($params['postData']); } } if ($params['postData'] != '') { $autoFilter = true; } else { $autoFilter = false; } $type = 'G'; #Grid $mapperName = get_class($this->_mapper); $profile = ZendT_Profile::get($mapperName, $type); $profileId = ''; if (isset($profile['id'])) { $profileId = $profile['id']; } $profiles = ZendT_Profile::listProfile($mapperName, $type); $this->getGrid()->setUrl(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/grid-data/profile/' . $profileId . $urlFilter)->setDataType('json')->setMType('POST')->setRowNum(30)->setRowList(array(30, 60, 90))->setPager("#pager-" . $this->getGrid()->getID())->setViewRecords('true')->setToolbar(array('true', 'top'))->setMType('POST')->setWidth(960)->setAutoFilter($autoFilter)->setShrinkToFit(false)->setPostData(urldecode($params['postData']))->setBeforeRequest("function(){ gridResize('" . $this->getGrid()->getID() . "'); }")->setGridComplete(" function(){ jQuery.gridAtivaNavKey({ idGrid:'" . $this->getGrid()->getID() . "' }); }"); /** * Analisa Parâmetros */ $newPostData = array(); foreach ($params as $name => $value) { $param = $this->getMapper()->paramName($name); if ($param) { $newPostData[$param] = $value; } } if (count($newPostData) > 0) { $this->getGrid()->setPostData($newPostData); } if ($this->getRequest()->getParam('seekerAjax')) { $objectRetrieve = 'TSeeker'; if ($this->getRequest()->getParam('objectRetrive')) { $objectRetrieve = $this->getRequest()->getParam('objectRetrive'); } $this->view->headScript()->appendFile(ZendT_Url::getBaseDiretoryPublic() . '/scripts/jquery/widget/' . $objectRetrieve . '.js'); $seekerName = $this->getRequest()->getParam('seekerName'); $seekerAccess = 'window.opener.jQuery'; $seekerClose = 'window.close();'; if ($params['typeModal'] == 'AJAX') { $seekerAccess = 'jQuery'; $seekerClose = 'seeker.TSeeker(\'divClose\');'; $functionResize = "function(){\n var grid = jQuery('#" . $this->getGrid()->getID() . "');\n var seeker = " . $seekerAccess . "('#" . $seekerName . "');\n var div = seeker.TSeeker('option','elements').div;\n grid.setGridHeight(250);\n grid.setGridWidth(700);\n }"; } else { $functionResize = "function(){\n \$.gridResize({\n idGrid: '" . $this->getGrid()->getID() . "'\n });\n \$(window).resize(function(){\n \$.gridResize({\n idGrid: '" . $this->getGrid()->getID() . "'\n });\n });\n }"; } $functionRetorno = "function(){\n var grid = jQuery('#" . $this->getGrid()->getID() . "');\n if( grid.jqGrid('getGridParam','multiselect') ){\n var id = grid.jqGrid('getGridParam','selarrrow');\n }else{\n var id = grid.jqGrid('getGridParam','selrow');\n }\n var seeker = " . $seekerAccess . "('#" . $seekerName . "');\n try{\n seeker.{$objectRetrieve}('retrieve',{value: id});\n {$seekerClose}\n }catch(err){\n {$seekerClose}\n }\n }"; $this->getGrid()->setOndblClickRow($functionRetorno)->setBeforeRequest($functionResize)->setGridComplete("function(){\n \$.gridAtivaNavKey({\n idGrid: '" . $this->getGrid()->getID() . "',\n functionEnter: " . $functionRetorno . "\n });\n }"); } if ($params['callback']) { $functionCallback = base64_decode($params['callback']); $this->getGrid()->setOndblClickRow($functionCallback)->setGridComplete("function(){\n \$.gridAtivaNavKey({\n idGrid: '" . $this->getGrid()->getID() . "',\n functionEnter: " . $functionCallback . "\n });\n }"); } if ($params['multiple']) { $this->getGrid()->setMultiSelect(true); $idbt = 'selectGrid' . $this->getGrid()->getID(); $multiSelect = new ZendT_Grid_Button($idbt); $multiSelect->setIdGrid($this->getGrid()->getID())->setButtonIcon("ui-icon-check")->setTitle("Selecionar")->setCaption("Selecionar")->setOnClick($functionRetorno); $this->view->hotkeys()->add('btMultiSelect', 'ctrl+s', '$("#' . $idbt . '").click();'); $this->getGrid()->addToolbarButton("multiSel", $multiSelect); } $idbt = 'refreshGrid' . $this->getGrid()->getID(); $refresh = new ZendT_Grid_Button_Refresh($idbt); $refresh->setIdGrid($this->getGrid()->getID())->setButtonIcon("ui-icon-refresh")->setTitle("Atualizar"); $this->view->hotkeys()->add('btRefresh', 'ctrl+r', '$("#' . $idbt . '").click();'); $this->getGrid()->addToolbarButton("refresh", $refresh, 'grid'); /* $clearFiltro = new ZendT_Grid_Button(); $clearFiltro->setIdGrid($this->getGrid()->getID()) ->setButtonIcon('ui-icon ui-icon-arrowreturnthick-1-s') ->setOnClick('function(){$(\'#' . $this->getGrid()->getID() . '\')[0].clearToolbar();}') ->setTitle('Limpar Filtro'); $this->getGrid()->addToolbarButton('clearFilter', $clearFiltro, 'grid'); */ $autoFiltro = new ZendT_Grid_Button(); $autoFiltro->setIdGrid($this->getGrid()->getID())->setButtonIcon('ui-icon ui-icon-pin-s')->setOnClick('function(){$(\'#' . $this->getGrid()->getID() . '\')[0].toggleToolbar();}')->setTitle('Filtro'); $this->getGrid()->addToolbarButton('autofiltro', $autoFiltro, 'grid'); $_profile = new ZendT_View_Profile('selProfile', $profile['id'], $profiles, $type, $mapperName); $screenName = $this->view->screenName; $this->view->profileMenu = $_profile->render($screenName); $this->view->screenName = $screenName; $this->view->placeholder('title')->set($screenName); $navigator = ''; if ($navigator) { $this->getGrid()->getNavigator()->addCommand('navigatorGrid', $navigator); } /** * Botão de adição de registro e * suas configurações vitais */ if ($this instanceof ZendT_Controller_ActionCrud && ZendT_Acl::getInstance()->isAllowed('insert', $this->_resourceBase)) { $filterJson = $this->getRequest()->getParam('filter_json'); $idbt = 'addGrid' . $this->getGrid()->getID(); $add = new ZendT_Grid_Button_Add($idbt); $add->setIdGrid($this->getGrid()->getID())->setButtonIcon('ui-icon-plus')->setUrl(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/form?filter_json=' . $filterJson . '&profile_key=' . $profileKey)->setWindowWidth(860)->setWindowHeight(520)->setTitle('Adicionar'); $this->view->hotkeys()->add('btInsert', 'ctrl+a', '$("#' . $idbt . '").click();'); $this->getGrid()->addToolbarButton('add', $add, 'edit'); } /** * Botão de edição de linha e * suas configurações vitais */ if ($this instanceof ZendT_Controller_ActionCrud && ZendT_Acl::getInstance()->isAllowed('update', $this->_resourceBase)) { $idbt = 'editGrid' . $this->getGrid()->getID(); $edit = new ZendT_Grid_Button_Edit($idbt); $edit->setIdGrid($this->getGrid()->getID())->setButtonIcon('ui-icon-pencil')->setUrl(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/form' . '?profile_key=' . $profileKey)->setUrlRetrieve(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/retrive')->setWindowWidth(860)->setWindowHeight(520)->setTitle('Editar'); $this->view->hotkeys()->add('btEdit', 'ctrl+e', '$("#' . $idbt . '").click();'); $this->getGrid()->addToolbarButton('edit', $edit, 'edit'); if (!$this->getRequest()->getParam('seekerAjax')) { $this->getGrid()->setOndblClickRow("function(){jQuery('#" . $idbt . "').click();}"); } } #Button - Delete if ($this instanceof ZendT_Controller_ActionCrud && ZendT_Acl::getInstance()->isAllowed('delete', $this->_resourceBase)) { $idbt = 'delGrid' . $this->getGrid()->getID(); $del = new ZendT_Grid_Button_Delete($idbt); $del->setIdGrid($this->getGrid()->getID())->setButtonIcon('ui-icon-trash')->setUrl(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/delete')->setWindowWidth(800)->setWindowHeight(520)->setTitle('Excluir'); $this->view->hotkeys()->add('btDelete', 'ctrl+d', '$("#' . $idbt . '").click();'); $this->getGrid()->addToolbarButton('del', $del, 'edit'); } if ($this instanceof ZendT_Controller_ActionCrud && ZendT_Acl::getInstance()->isAllowed('log', $this->_resourceBase) && method_exists($this->_mapper, 'isLogger') && $this->_mapper->isLogger()) { $log = new ZendT_Grid_Button_Window(); $log->setIdGrid($this->getGrid()->getID())->setButtonIcon('ui-icon-info')->setUrl(ZendT_Url::getBaseUrl() . '/' . $module . '/' . $controller . '/log')->setWindowWidth(650)->setWindowHeight(450)->setTitle('Log'); $this->getGrid()->addToolbarButton('Log', $log, 'edit'); } $this->view->typeModal = $params['typeModal']; if ($params['typeModal'] == 'AJAX') { Zend_Layout::getMvcInstance()->setLayout('ajax'); } else { if ($params['typeModal'] == 'WINDOW') { $this->view->onLoad = stripslashes(urldecode($params['afterLoad'])); $this->view->onClose = stripslashes(urldecode($params['onClose'])); Zend_Layout::getMvcInstance()->setLayout('window'); } } }