'iDo', 'email' => 'ido@idotech.info', 'date' => '20/12/2006', 'name' => 'addnewpage', 'desc' => 'This add a "new page form" in your page. \\ Syntax : {{NEWPAGE[>namespace]}} where [>namespace] is optional.', 'url' => 'http://wiki.splitbrain.org/plugin:addnewpage', ); } function getType(){ return 'substition'; } function getSort(){ return 199; } function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{NEWPAGE[^\}]*\}\}', $mode, 'plugin_addnewpage'); } function handle($match, $state, $pos, &$handler){ $ns = substr($match, 10, -2); // strip markup return array($ns); // use an array here } function render($mode, &$renderer, $data) { global $lang; $renderer->info['cache'] = false; $data = $data[0]; // get data back from the array if ($mode == 'xhtml') { $cmb=$this->_makecombo($data); if ($cmb==$this->getLang('nooption')) { $renderer->doc .=(!$this->getConf('addpage_hideACL'))?$cmb:''; return true; } $renderer->doc .= '
'; $renderer->doc .= '
'; $renderer->doc .= $cmb; $renderer->doc .= ''; $renderer->doc .= ''; $renderer->doc .= ''; $renderer->doc .= '
'; $renderer->doc .= '
'; return true; } return false; } /** * Parse namespace request * * @author Samuele Tognini */ function _parse_ns ($ns) { global $ID; $ns=preg_replace("/^\.(:|$)/",dirname(str_replace(':','/',$ID))."$1",$ns); $ns=str_replace("/",":",$ns); $ns = cleanID($ns); return $ns; } function _makecombo($data) { global $ID; $hide=$this->getConf('addpage_hide'); if (($data != "") && ($hide)) return ''; $ns=explode(':',$ID); array_pop($ns); $ns=implode(':',$ns); $r=$this->_getnslist(""); $ret=''; if (!$someopt) $ret = $this->getLang('nooption'); return $ret; } function _getnslist ($tns='') { require_once(DOKU_INC.'inc/search.php'); global $conf; if ($tns=='') $tns = $conf['datadir']; if (!is_dir($tns)) $tns = str_replace(':','/',$tns); $data = array(); $exclude=$this->getConf('addpage_exclude'); if ($exclude=="") $exclude=array(); else $exclude=@explode(';',strtolower($exclude)); search($data,$tns,'search_index',array('ns' => '')); $data2 = array(); foreach($data as $k => $v) { if ($v['type']=='d') { if (!in_array(strtolower($v['id']),$exclude)) { array_push($data2,$v['id']); $r=$this->_getnslist($tns.'/'.$v['id']); foreach ($r as $vv) { if (!in_array(strtolower($vv),$exclude)) array_push($data2,$v['id'].':'.$vv); } } } } return $data2; } } ?>