protected function prepare() { $htVars = http_vars::getInstance(); $this->type = $htVars->post('type', $htVars->get('type')); $this->config = $htVars->post('config', $htVars->get('config', 'default')); $this->myCfg = $this->cfg->default; if ($this->config != 'default' && is_array($this->cfg->get($this->config))) factory::mergeCfg($this->myCfg, $this->cfg->get($this->config)); $this->dir = $this->myCfg['dir']; if ($this->myCfg['subdir']) $this->dir.= DS.$this->myCfg['subdir']; $this->dir.= DS.$this->type; $resp = response::getInstance(); /* @var $resp response_http_html */ $resp->setLayout($this->myCfg['layout']); $resp->setTitle($this->myCfg['title']); $resp->initIncFiles(false); foreach($this->myCfg['incFiles'] as $ic) $resp->add($ic); $this->uri = request::uriDef(array('module')).'?'.session::getInstance()->getSessIdForce().'='.urlencode(session_id()).'&type='.$this->type.'&config='.$this->config.'&'; }
protected function renderAdminMenu(array $prm = null) { $links = array(); if (security::getInstance()->isLogged()) { $db = db::getInstance(); $tables = $db->getTables(); foreach ($tables as $t) { if (!strpos($t, '_') && !strpos($t, db::getCfg('i18n'))) { $links[$t] = request::uriDef(array('module' => $t, 'action' => '', 'param' => '')); } } } $this->setViewVar('linksTable', $links); }
<?php $cfg = array('table' => REQUIRED, 'query' => null, 'name' => REQUIRED, 'sessionName' => null, 'useSession' => true, 'nameParam' => null, 'nbPerPage' => 50, 'nbPageMax' => false, 'page' => 1, 'sortBy' => null, 'sortDir' => 'asc', 'pageLinkReplace' => '[page]', 'pageLinkTpl' => null, 'pageLinkTpl1' => null, 'iconType' => null, 'addIdentField' => true, 'fields' => null, 'noData' => 'No Data.', 'tplVars' => array('sortIndicatorAsc' => '^', 'sortIndicatorDesc' => 'v'), 'actions' => array(), 'actionsAlt' => array(), 'actionsImg' => array(), 'actionsAllowed' => null, 'actionsAllowedDefault' => null, 'actionsConfirmDelete' => true, 'addCheckAllJs' => true, 'multiple' => array(), 'multipleLabel' => 'Choose an action', 'multipleSubmit' => 'ok', 'multipleAction' => request::uriDef(array('action' => 'multiple'), array('module')), 'cache' => array());
/** * Get the clear URL link * * @return string */ public function clearLink() { $prmA = array_merge(array_diff_key(request::get('paramA'), $this->cfg->actionPrmClear), $this->cfg->actionPrmForce); $prmA[$this->cfg->clearPrm] = 1; return request::uriDef(array('paramA' => $prmA)); }
/** * Create the data Table out * * @param string $type Out type * @return string */ public function to($type) { $tpl = factory::get('tpl', array('module' => $this->cfg->module, 'action' => $this->cfg->name, 'default' => 'dataTable', 'cache' => $this->cfg->cache, 'layout' => false)); $data = $this->getData(); if (count($data)) { if (empty($this->cfg->fields)) { $headersT = $data->getFields('flatReal'); if ($keyRelated = array_search('related', $headersT)) { unset($headersT[$keyRelated]); } foreach ($this->table->getI18nFields() as $f) { $headersT[] = db::getCfg('i18n') . $f['name']; } } else { $headersT = $this->cfg->fields; if ($this->cfg->addIdentField && !in_array($this->table->getIdent(), $headersT)) { array_unshift($headersT, $this->table->getIdent()); } } $headers = array(); $prmReplaceSortBy = '[sortBy]'; $prmReplaceSortDir = '[sortDir]'; $paramUrlA = request::get('paramA'); unset($paramUrlA['page' . $this->cfg->nameParam]); $paramUrlA['sortBy' . $this->cfg->nameParam] = $prmReplaceSortBy; $paramUrlA['sortDir' . $this->cfg->nameParam] = $prmReplaceSortDir; $paramUrlA['page' . $this->cfg->nameParam] = 1; $tmpSortLink = request::uriDef(array('paramA' => $paramUrlA)); foreach ($headersT as $k => $h) { $typeField = $this->table->getField($h, 'type'); if ($typeField == 'file' && is_array($tmp = $this->table->getField($h, 'comment')) && array_key_exists(0, $tmp)) { $typeField = $tmp[0]; } $headers[$k] = array('label' => $this->table->getLabel($h), 'name' => $h, 'url' => str_replace(array($prmReplaceSortBy, $prmReplaceSortDir), array(db::isI18nName($h) ? $this->table->getI18nTable()->getName() . '_' . db::unI18nName($h) : $h, $this->cfg->sortBy == $h && $this->cfg->sortDir == 'asc' ? 'desc' : 'asc'), $tmpSortLink), 'type' => $typeField); } $actions = null; $actionsAlt = null; $actionsImg = null; if (is_array($this->cfg->actions) && !empty($this->cfg->actions)) { $actions = array(); if (!$this->cfg->addIdentField) { array_unshift($headersT, $this->table->getIdent()); } array_walk($headersT, create_function('&$h', '$h = "[".$h."]";')); $dataK = null; $i = 0; foreach ($data as $d) { $tmp = $this->getActions($d); $tmpVals = $d->getValues('flatNoRelated'); $vals = array(); foreach ($headersT as $k => $v) { $v = substr($v, 1, -1); $vals[$k] = array_key_exists($v, $tmpVals) ? $tmpVals[$v] : null; } $curData = $d->getValues('data'); unset($curData['related']); unset($curData['linked']); if (is_null($dataK)) { $dataK = array_keys($curData); array_walk($dataK, create_function('&$h', '$h = "[".$h."]";')); } foreach ($tmp as &$t) { $t = str_replace($dataK, $curData, $t); } $actions[$i] = $tmp; $i++; } if (!empty($actions) && $this->cfg->actionsConfirmDelete) { response::getInstance()->addJs('actionsConfirmDelete'); } $actionsKey = array_keys($this->cfg->actions); $actionsAlt = $this->cfg->actionsAlt; if (!is_array($actionsAlt) || count($actionsAlt) < count($actionsKey)) { foreach ($actionsKey as $v) { if (!array_key_exists($v, $actionsAlt)) { $actionsAlt[$v] = ucfirst($v); } } } $actionsImg = $this->cfg->actionsImg; foreach ($actionsKey as $v) { if (!array_key_exists($v, $actionsImg)) { $actionsImg[$v] = utils::getIcon(array('name' => $v, 'attr' => array('title' => $actionsAlt[$v]), 'alt' => $actionsAlt[$v], 'type' => $this->cfg->iconType)); } } } if ($this->cfg->sortBy) { $paramUrlA['sortBy' . $this->cfg->nameParam] = $this->cfg->sortBy; $paramUrlA['sortDir' . $this->cfg->nameParam] = $this->cfg->sortDir; } else { unset($paramUrlA['sortBy' . $this->cfg->nameParam]); unset($paramUrlA['sortDir' . $this->cfg->nameParam]); } $nbPage = $this->getNbPage(); $pageLinks = array(); $prmReplace = $this->cfg->pageLinkReplace; if (!$this->cfg->pageLinkTpl) { $paramUrlA['page' . $this->cfg->nameParam] = $prmReplace; $tmpPageLink = request::uriDef(array('paramA' => $paramUrlA)); } else { $tmpPageLink = $this->cfg->pageLinkTpl; } for ($i = 1; $i <= $nbPage; $i++) { $pageLinks[$i] = str_replace($prmReplace, $i, $tmpPageLink); } if ($this->cfg->pageLinkTpl1) { $pageLinks[1] = $this->cfg->pageLinkTpl1; } $hasMultiple = count($this->cfg->multiple) > 0; if ($hasMultiple && $this->cfg->addCheckAllJs) { response::getInstance()->addJs('checkAll'); } $tpl->setA(array_merge(array('headers' => $headers, 'list' => $data, 'nbPage' => $nbPage, 'currentPage' => $this->cfg->page, 'pageLinks' => $pageLinks, 'actions' => $actions, 'actionsImg' => $actionsImg, 'actionsAlt' => $actionsAlt, 'iconType' => $this->cfg->iconType, 'tblName' => $this->table->getName(), 'sortBy' => $this->cfg->sortBy, 'sortByReal' => $this->sortBy, 'sortDir' => $this->cfg->sortDir, 'hasMultiple' => $hasMultiple, 'multipleLabel' => $this->cfg->multipleLabel, 'multipleSubmit' => $this->cfg->multipleSubmit, 'multipleAction' => $this->cfg->multipleAction, 'multipleIdent' => $this->table->getIdent(), 'multiple' => $this->cfg->multiple), $this->cfg->tplVars)); } else { // No data if ($this->cfg->page > 1) { $newPage = $this->cfg->page - 1; $uri = null; if ($newPage == 1 && $this->cfg->pageLinkTpl1) { $uri = $this->cfg->pageLinkTpl1; } if (!$uri) { $prmReplace = $this->cfg->pageLinkReplace; if (!$this->cfg->pageLinkTpl) { $paramUrlA = request::get('paramA'); unset($paramUrlA['page' . $this->cfg->nameParam]); $prmReplaceSortBy = '[sortBy]'; $prmReplaceSortDir = '[sortDir]'; $paramUrlA['sortBy' . $this->cfg->nameParam] = $prmReplaceSortBy; $paramUrlA['sortDir' . $this->cfg->nameParam] = $prmReplaceSortDir; $paramUrlA['page' . $this->cfg->nameParam] = 1; if ($this->cfg->sortBy) { $paramUrlA['sortBy' . $this->cfg->nameParam] = $this->cfg->sortBy; $paramUrlA['sortDir' . $this->cfg->nameParam] = $this->cfg->sortDir; } else { unset($paramUrlA['sortBy' . $this->cfg->nameParam]); unset($paramUrlA['sortDir' . $this->cfg->nameParam]); } $paramUrlA['page' . $this->cfg->nameParam] = $prmReplace; $tmpPageLink = request::uriDef(array('paramA' => $paramUrlA)); } else { $tmpPageLink = $this->cfg->pageLinkTpl; } $uri = str_replace($prmReplace, $newPage, $tmpPageLink); } response::getInstance()->redirect($uri); } $tpl->set('noData', utils::htmlOut($this->cfg->noData)); $tpl->set('list', null); $tpl->setA($this->cfg->tplVars); } return $tpl->fetch(array('tplExt' => $type)); }
<?php $cfg = array( 'name'=>null, 'prefixExec'=>'scaffold', 'autoRelated'=>true, 'filter'=>null, 'list'=>null, 'show'=>null, 'edit'=>null, 'addFilterTableJs'=>true, 'filterOpts'=>array( 'formOpts'=>array( 'formPlus'=>' class="filterTable"' ) ), 'formOpts'=>array(), 'allowAdd'=>true, 'iconType'=>null, 'multipleDelete'=>NYROENV == 'admin', 'multipleAction'=>request::uriDef(array('action'=>'multiple'), array('module')), 'multiple'=>array(), 'listPrm'=>array(), );
protected function execScaffoldShow($prm = null) { $id = $prm[0]; $this->row = $this->table->find($id); $this->hook('show'); $this->form = $this->row->getForm($this->getFields('show'), array('mode'=>'view', 'sectionName'=>tr::__('scaffold_show')), false); $this->form->action = request::uriDef(array('module'=>$this->table->getName(),'action'=>'edit', 'param'=>$id)); $this->form->method = 'get'; $this->form->setSubmitText(tr::__('scaffold_goEdit')); $this->form->setSubmitplus('<a href="'.$this->indexPage.'">'.tr::__('scaffold_back').'</a>'); $this->hook('formShow'); $this->setViewVars(array( 'row'=>$this->row, 'form'=>$this->form )); }