diff --git a/e107_admin/cpage.php b/e107_admin/cpage.php index 9ae65ed16..1393551d3 100644 --- a/e107_admin/cpage.php +++ b/e107_admin/cpage.php @@ -636,6 +636,7 @@ class page_admin_ui extends e_admin_ui protected $cats = array(0 => LAN_NONE); protected $templates = array(); protected $chapterFields = array(); + protected $chapters = array(); function init() { @@ -790,11 +791,16 @@ class page_admin_ui extends e_admin_ui $sql = e107::getDb(); - $sql->gen("SELECT chapter_id,chapter_name,chapter_parent, chapter_fields FROM #page_chapters ORDER BY chapter_parent asc, chapter_order"); + $sql->gen("SELECT chapter_id,chapter_name,chapter_parent, chapter_sef, chapter_fields FROM #page_chapters ORDER BY chapter_parent asc, chapter_order"); while($row = $sql->fetch()) { $cat = $row['chapter_id']; + $chrow = $row; + unset($chrow['chapter_fields']); + + $this->chapters[$cat] = $chrow; + if($row['chapter_parent'] == 0) { $this->books[$cat] = $row['chapter_name']; @@ -978,13 +984,20 @@ class page_admin_ui extends e_admin_ui /** @var e_admin_model $model */ foreach ($tree->getTree() as $id => $model) { - // No chapter, override route - if(!$model->get('page_chapter')) - { + + if($chap = $model->get('page_chapter')) + { + $model->set('chapter_sef', $this->chapters[$chap]['chapter_sef']); + $parent = (int) $this->chapters[$chap]['chapter_parent']; + $model->set('book_sef', $this->chapters[$parent]['chapter_sef']); + } + else + { $urlData = $this->url; $urlData['route'] = 'page/view/other'; $model->setUrl($urlData); } + } } diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index 96d8d66e9..4e0578882 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -1251,6 +1251,7 @@ class e_form { $tp = e107::getParser(); + $name_id = $this->name2id($name); $meta_id = $name_id."-meta"; @@ -1266,20 +1267,18 @@ class e_form $cat = $tp->toDB(vartrue($sc_parameters['media'])); - // if(deftrue('e_DEBUG_MEDIAPICKER')) - // { - // v2.2.0 - $sc_parameters['image'] = 1; - $sc_parameters['dropzone'] = 1; - if(!empty($sc_parameters['video'])) // bc fix - { - $sc_parameters['youtube'] = 1; - } + // v2.2.0 + $sc_parameters['image'] = 1; + $sc_parameters['dropzone'] = 1; + if(!empty($sc_parameters['video'])) // bc fix + { + $sc_parameters['youtube'] = 1; + } - return $this->mediapicker($name, $default, $sc_parameters); - // } + return $this->mediapicker($name, $default, $sc_parameters); +/* if(empty($sc_parameters['media'])) { $sc_parameters['media'] = '_common'; @@ -1401,7 +1400,7 @@ class e_form $ret .= ""; $ret .= ""; - return $ret; + return $ret;*/ } @@ -4554,55 +4553,71 @@ var_dump($select_options);*/ * @param mixed $value * @param array $parms * @param $id + * @example $frm->renderLink('label', array('link'=>'{e_PLUGIN}myplugin/myurl.php','target'=>'blank') + * @example $frm->renderLink('label', array('link'=>'{e_PLUGIN}myplugin/myurl.php?id=[id]','target'=>'blank') + * @example $frm->renderLink('label', array('link'=>'{e_PLUGIN}myplugin/myurl.php?id=[field-name]','target'=>'blank') + * @example $frm->renderLink('label', array('link'=>'db-field-name','target'=>'blank') + * @example $frm->renderLink('label', array('url'=>'e_url.php key','title'=>'click here'); * @return string */ - private function renderLink($value, $parms, $id=null) + public function renderLink($value, $parms, $id=null) { if(empty($parms['link']) && empty($parms['url'])) { return $value; } + /** @var e_admin_model $model */ + $model = e107::getRegistry('core/adminUI/currentListModel'); + $dialog = vartrue($parms['target']) =='dialog' ? " e-modal" : ""; // iframe $ext = vartrue($parms['target']) =='blank' ? " rel='external' " : ""; // new window $modal = vartrue($parms['target']) =='modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : ""; + $link = null; - if(!empty($parms['url'])) // ie. use e_url.php + if(!empty($parms['url']) && !empty($model)) // ie. use e_url.php { - $plugin = $this->getController()->getPluginName(); - $data = $this->getController()->getListModel()->getData(); - $link = e107::url($plugin,$parms['url'],$data); + //$plugin = $this->getController()->getPluginName(); + if($plugin = e107::getRegistry('core/adminUI/currentPlugin')) + { + $data = $model->getData(); + $link = e107::url($plugin,$parms['url'],$data); + } } - else // old way. + elseif(!empty($model)) // old way. { $tp = e107::getParser(); + $data = $model->getData(); + $link = str_replace('[id]',$id,$parms['link']); $link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin. - - if($parms['link'] === 'sef' && $this->getController()->getListModel()) + if($parms['link'] === 'sef' ) { - $model = $this->getController()->getListModel(); - if(!$model->getUrl()) { $model->setUrl($this->getController()->getUrl()); } - // assemble the url + + // assemble the url $link = $model->url(null); } elseif(!empty($data[$parms['link']])) // support for a field-name as the link. eg. link_url. { - $data = $this->getController()->getListModel()->getData(); $link = $tp->replaceConstants(vartrue($data[$parms['link']])); } + elseif(strpos($link,'[')!==false && preg_match('/\[(\w+)\]/',$link, $match)) // field-name within [ ] brackets. + { + $field = $match[1]; + $link = str_replace($match[0], $data[$field],$link); + } } // in case something goes wrong... if($link) { - return "".$value.""; + return "".$value.""; } return $value; @@ -4985,39 +5000,6 @@ var_dump($select_options);*/ } $value = $this->renderLink($value,$parms,$id); - /* - if(!empty($parms['link']) && $id) - { - $link = str_replace('[id]', $id, $parms['link']); - $link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin. - - $dialog = vartrue($parms['target']) == 'dialog' ? " e-dialog" : ""; // iframe - $ext = vartrue($parms['target']) == 'blank' ? " rel='external' " : ""; // new window - $modal = vartrue($parms['target']) == 'modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : ""; - - if($parms['link'] == 'sef' && $this->getController()->getListModel()) - { - $model = $this->getController()->getListModel(); - // copy url config - if(!$model->getUrl()) - { - $model->setUrl($this->getController()->getUrl()); - } - // assemble the url - $link = $model->url(); - } - - elseif(vartrue($data[$parms['link']])) // support for a field-name as the link. eg. link_url. - { - $link = $tp->replaceConstants(vartrue($data[$parms['link']])); - } - - // in case something goes wrong... - if($link) - { - $value = "" . $value . ""; - } - }*/ if(empty($value)) { @@ -5076,32 +5058,6 @@ var_dump($select_options);*/ $value = $this->renderLink($value,$parms,$id); - /* - if(vartrue($parms['link']) && $id) - { - $link = str_replace('[id]',$id,$parms['link']); - $link = $tp->replaceConstants($link); // SEF URL is not important since we're in admin. - - $dialog = vartrue($parms['target']) =='dialog' ? " e-dialog" : ""; // iframe - $ext = vartrue($parms['target']) =='blank' ? " rel='external' " : ""; // new window - $modal = vartrue($parms['target']) =='modal' ? " data-toggle='modal' data-cache='false' data-target='#uiModal' " : ""; - - if($parms['link'] == 'sef' && $this->getController()->getListModel()) - { - $model = $this->getController()->getListModel(); - // copy url config - if(!$model->getUrl()) $model->setUrl($this->getController()->getUrl()); - // assemble the url - $link = $model->url(null); - } - elseif(vartrue($data[$parms['link']])) // support for a field-name as the link. eg. link_url. - { - $link = $tp->replaceConstants(vartrue($data[$parms['link']])); - } - - // in case something goes wrong... - if($link) $value = "".$value.""; - }*/ if(empty($value)) { @@ -6427,15 +6383,21 @@ var_dump($select_options);*/ $tp = e107::getParser(); $text = ''; - - // print_a($form_options); + foreach ($form_options as $fid => $options) { + list($type,$plugin) = explode('-',$fid,2); + + $plugin = str_replace('-','_',$plugin); + + e107::setRegistry('core/adminUI/currentPlugin', $plugin); + /** @var e_tree_model $tree_model */ $tree_model = $tree_models[$fid]; $tree = $tree_model->getTree(); $total = $tree_model->getTotal(); + $amount = $options['perPage']; $from = vartrue($options['from'], 0); @@ -6482,11 +6444,12 @@ var_dump($select_options);*/ foreach($tree as $model) { // $model->set('x_canonical_url', 'whatever'); - // var_dump($model); + e107::setRegistry('core/adminUI/currentListModel', $model); $text .= $this->renderTableRow($fields, $current_fields, $model->getData(), $options['pid']); } + e107::setRegistry('core/adminUI/currentListModel', null); $text .= " @@ -6527,6 +6490,8 @@ var_dump($select_options);*/ "; + + e107::setRegistry('core/adminUI/currentPlugin', null); } if(!$nocontainer) {