public function run() { $this->do = $this->getRecord(); deny_unless_can('read', $this->do); $this->assign('__action', 'edit'); $this->append('subActions', '<a href="' . M_Office_Util::getQueryParams(array(), array('record', 'doSingleAction', '__record_ref')) . '">' . __('< Back to list') . '</a>'); $tpl = Mreg::get('tpl'); $tpl->concat('adminTitle', $this->do->__toString() . ' :: ' . $this->moduloptions['title']); $tpl->assign('adminHeader', $this->do->__toString()); $database = $this->do->database(); /** * * Actions * **/ if (isset($_REQUEST['doSingleAction']) && $this->getGlobalOption('actions', 'showtable', $this->module)) { $subController = new M_Office_Actions($this->getOptions()); $subController->run($this->do, $_REQUEST['doSingleAction'], 'single'); if ($subController->hasOutput()) { return; } } $this->createActions(); $formBuilder = MyFB::create($this->do); if (!can('update', $this->module)) { $formBuilder->userEditableFields = array('__fakefield'); } $editopts = PEAR::getStaticProperty('m_office_editrecord', 'options'); if (!empty($editopts['tableOptions'][$this->module]['fields'])) { $formBuilder->fieldsToRender = $editopts['tableOptions'][$this->module]['fields']; } $form = new MyQuickForm('editRecord', 'POST', M_Office_Util::doURL($this->do, $this->module, array()), '_self', null, true); $formBuilder->elementTypeAttributes = array('longtext' => array('cols' => 50, 'rows' => 10)); $formBuilder->useForm($form); if ($this->getOption('edit', $this->module)) { $this->assign('editable', true); } else { $doFreeze = true; } $form = $formBuilder->getForm(); if (PEAR::isError($form)) { throw new Exception($form->getMessage() . ' ' . print_r($form->getUserInfo(), true)); } if ($doFreeze) { $form->freeze(); $submit = $form->getElement('__submit__'); if (!PEAR::isError($submit)) { $form->removeElement('__submit__'); } } if ($form->validate()) { $ret = $form->process(array($formBuilder, 'processForm'), false); if (PEAR::isError($ret)) { $this->append('errors', __('An error occured while updating record') . ' : ' . $ret->getMessage()); $this->assign('__action', 'error'); return; } else { $params_to_remove = array(); $values = $form->exportValues(); if ($values['__backtolist__']) { $params_to_remove[] = 'record'; } if (!key_exists('debug', $_REQUEST)) { $this->say(__('Record saved !')); M_Office_Util::refresh(M_Office_Util::doURL($this->do, $this->module, array(), $params_to_remove)); } } } $this->assign('editForm', $form); if ($linkFromTables = $this->getOption('linkFromTables', $this->table)) { $ajaxFrom = $this->getOption('ajaxLinksFromTable', $this->table); if (!is_array($ajaxFrom)) { $ajaxFrom = array(); } foreach ($this->do->reverseLinks() as $linkFromTable => $field) { list($linkTab, $linkField) = explode(':', $linkFromTable); switch (true) { case !$this->getGlobalOption('view', 'showtable', $linkTab): break; case key_exists($linkTab, $ajaxFrom): $fromfield = $ajaxFrom[$linkFromTable]['fromfield']; if ($fromfield == $linkField || !$fromfield) { $info = $ajaxFrom[$linkTab]; $aja = new M_Office_ajaxFromTable($this->do, $this->module, $linkTab, $linkField, $this->do->{$field}); if ($info['position'] == 'before') { $ajaxLinksBefore[] = $aja->getBlock(); } else { $ajaxLinksAfter[] = $aja->getBlock(); } } break; case $linkFromTables === TRUE || is_array($linkFromTables) && in_array($linkTab, $linkFromTables): if ($linkInfo = $this->getLinkFromTableItem($linkTab, $linkField, $field)) { $linkFromTableArray[] = $linkInfo; } break; } } } M::hook($this->do->tableName(), 'alterLinkFromTables', array(&$linkFromTableArray, $this->do)); $this->assign('linkFromTables', $linkFromTableArray); $this->assign('ajaxFrom', array('before' => $ajaxLinksBefore, 'after' => $ajaxLinksAfter)); $related = ''; if (($linkToTables = $this->getOption('linkToTables', $this->table)) && is_array($links = $this->do->links())) { foreach ($links as $linkField => $link) { list($linkTab, $linkRec) = explode(':', $link); if ((!is_array($linkToTables) || in_array($linkTab, $linkToTables)) && $this->getOption('view', $linkTab)) { $linkDo = $this->do->getLink($linkField); if ($linkDo) { $this->append('linkToTables', array('table' => $linkTab, 'link' => M_Office_Util::DoUrl($linkDo, $linkTab, array(), array('page')))); } } } } $this->assign('related', $related); $this->assign('do', $this->do); }
function __construct($module) { parent::__construct(); $this->assign('module', $module); $this->module = $module; deny_unless_can('read', $module); if ((isset($_REQUEST['record']) || isset($_REQUEST['__record_ref'])) && ($this->getOption('edit', $module) || $this->getOption('view', $module))) { $subController = new M_Office_EditRecord($module, $_REQUEST['record'], $additionalFilter); $subController->__record_ref = $_REQUEST['__record_ref']; $subController->run(); return; } if (isset($_REQUEST['addRecord']) && $this->getOption('add', $module)) { deny_unless_can('create', $module); $subController = new M_Office_AddRecord($module); $subController->run(); return; } $opts = PEAR::getStaticProperty('m_office', 'options'); $this->moduloptions = $opts['modules'][$module]; $this->table = $this->moduloptions['table']; if (!$this->getOption('view', $module)) { M_Office_Util::refresh(ROOT_ADMIN_URL . ROOT_ADMIN_SCRIPT); } if ($this->getOption('search', $module)) { // 1. Url curation if needed // if(!key_exists('_c_',$_REQUEST) && !M_Office::isAjaxRequest()) { // M_Office_Util::refresh(M_Office::cleanURL(array('_c_'=>1),array('searchSubmit','__submit__'))); // } // 2. Process search $doSearch = M_Office_Util::doForModule($this->module); $searchForm = M_Office_Util::getSearchForm($doSearch, $this->module); $this->assign('search', $searchForm); $searchValues = $searchForm->exportValues(); } else { $searchValues = array(); } $do = $this->getSearchDO($searchValues); if (isset($_REQUEST['doaction']) && $this->getOption('actions', $module)) { $order = trim($_REQUEST['_ps'] . ' ' . $_REQUEST['_pd']); if ($order) { $do->orderBy(); $do->orderBy($order); } $subController = new M_Office_Actions($this->getOptions()); $subController->run($do, $_REQUEST['doaction'], 'batch'); if ($subController->has_output) { return; } } elseif (isset($_REQUEST['glaction']) && $this->getOption('actions', $module)) { $subController = new M_Office_Actions($this->getOptions()); $subController->run($do, $_REQUEST['glaction'], 'global'); if ($subController->has_output) { return; } } if ($this->getAndProcessActions(clone $do, $module)) { return; } if ($this->getOption('view', $this->module) === TRUE) { $dg = new M_Office_View_DOPaging($this); $this->assign('__listview', 'dopaging'); } else { $class = 'M_Office_View_' . $this->getOption('view', $this->module); $dg = new $class($this); $this->assign('__listview', $this->getOption('view', $this->module)); } $tpl = Mreg::get('tpl'); $do_before_fetch = clone $do; $tpl->assign('do_before_fetch', $do_before_fetch); $tpl->concat('adminTitle', $this->moduloptions['title'] . ' :: Listing'); $tpl->assign('adminHeader', $this->moduloptions['title']); $pagination = $this->paginate === false ? false : true; $dg->prepare($do, $this->module, $pagination); $this->assign('dg', $dg); $this->assign('total', $total); $this->assign('pager', $dg->getPaging()); $this->assign('fields', $dg->getFields()); $this->assign('__action', 'showtable'); $deleteForm = new MyQuickForm('showTableForm', 'post', M_Office_Util::getQueryParams(array(), array()), '_self', null, true); M_Office_Util::addHiddenFields($deleteForm, array(), true); }