Ejemplo n.º 1
0
 public function doExecAddByStrip()
 {
     $focus = $this->getFocus();
     deny_unless_can('update', $_REQUEST['focusmodule'], $focus);
     $focus->addTagByHuman($_REQUEST['strip']);
     if (!$this->isAjaxRequest()) {
         $this->redirect($_REQUEST['target']);
     } else {
         return $this->setOuput('ok');
     }
 }
Ejemplo n.º 2
0
 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')) . '">' . __('&lt; 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);
 }
Ejemplo n.º 3
0
 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);
 }