'', 'template' => '', 'value' => '', 'size' => '30', 'label' => FmtPageName(' $[Create a new page called:] ', $pagename), 'button' => 'left', 'focus' => '', 'save' => ''); $opt = array_merge($defaults, ParseArgs($opt)); $buttonHTML = ""; $onfocusHTML = "onfocus=\"if(this.value=='{$opt['value']}') {this.value=''}\" onblur=\"if(this.value=='') {this.value='{$opt['value']}'}\" "; return "
" . ($opt['button']=="left" ? $buttonHTML : "") . "" . ($opt['button']=="right" ? $buttonHTML : "") . "
"); } # handles action=new, i.e. what the form sends, sends new page to edit function HandleNew($pagename) { global $Author, $Now; $name = @$_REQUEST['name']; if (!$name) Redirect($pagename); if (@$_REQUEST['focus'] && $name==$_REQUEST['value']) Redirect($pagename); $base = MakePageName($pagename, $_REQUEST['base']); $basegroup = PageVar($base, '$Group'); if (@$_REQUEST['base']=='') $newpage = MakePageName($pagename, $name); else { $name = str_replace(".", "", $name); $newpage = MakePageName($base, "$basegroup.$name");} $urlfmt = '$PageUrl?action=edit'; if (@$_REQUEST['template']) { $urlfmt .= '&template=' . MakePageName($base, $_REQUEST['template']); } if (@$_REQUEST['save']) { if(PageExists($newpage)) Redirect($newpage, $urlfmt); if (@$_REQUEST['template'] && PageExists($_REQUEST['template'])) { $p = RetrieveAuthPage($_REQUEST['template'], 'read', false, READPAGE_CURRENT); if ($p['text'] > '') $new['text'] = FillNewTemplate($p['text']); $new['author'] = $Author; $new['ctime'] = $Now; } SaveAttributes($newpage, $new, $new); PostPage($newpage, $new, $new); PostRecentChanges($newpage, $new, $new); Redirect($newpage); } Redirect($newpage, $urlfmt); } if(! function_exists("FillNewTemplate") ) { function FillNewTemplate($text) { $new = preg_replace("!\\{\\$(\\w+)\\}!e", "stripmagic(FlattenVar(\$_POST[PSS('$1')]))", $text); $new = str_replace("\\}", "}", $new); return $new; } // returns either a value, or a flattened array function FlattenVar($var) { if(is_array($var)) $var = implode(", ", $var); return $var; } /* $r = ''; if(is_array($thing)) { foreach($thing as $k=>$v) { if($r) $r.=', '; $r .= $v; } return $r; } else return $thing; } */ }