'...',
"/\\[\\[([^|\\]]+)\\|(.*?)\\s*\\]\\]($SuffixPattern)/e" =>
"MakeLink(\$pagename,PSS('$1'),PSS('$2'),'$3','\$LinkText')",
"/\\[\\[([^\\]]+?)\\s*-+>\\s*(.*?)\\]\\]($SuffixPattern)/e" =>
"MakeLink(\$pagename,PSS('$2'),PSS('$1'),'$3','\$LinkText')",
'/\\[\\[#([A-Za-z][-.:\\w]*)\\]\\]/' => "",
"/\\[\\[(.*?)\\]\\]($SuffixPattern)/e" =>
"MakeLink(\$pagename,PSS('$1'),NULL,'$2','\$LinkText')",
'/[\\[\\{](.*?)\\|(.*?)[\\]\\}]/' => '$1',
"/`(($GroupPattern([\\/.]))?($WikiWordPattern))/" => '$1',
"/$GroupPattern\\/($WikiWordPattern)/" => '$1'
));
function PageBreak($pagename,$text) {
$p = explode('____',$text."\n\n");
$n = @$_REQUEST['p'];
if ($n<1) $n=1; if ($n>count($p)) $n=count($p);
$out[] = "
Page";
for($i=1;$i<=count($p);$i++) {
$tooltip = PageBreakTip($p[$i-1]);
if ($i==$n) $out[] = "
$n";
else $out[] = FmtPageName("
$i",$pagename);
}
$out[] = '
';
$ed = FmtPageName("edit", $pagename);
return '<:block>'.Keep("Page $n ($ed)
").
"(:nl:)".$p[$n-1].'<:block>'.Keep(implode('',$out));
}
function PageBreakTip($text) {
global $LinkCleanser;
$title = preg_match("/^\\n*(?:\\(:.*?:\\))?(?:!+|:.*?:)?\\s*(?:\\[\\[#.*?\\]\\])?([^\\n]+)/",
$text,$match);
if ($title) {
$para = preg_replace("/!.*?$/",'',$match[1]);
$para = preg_replace("/(''+|@@)(.*?)\\1/",'$2',$para);
$para = preg_replace("/'([-_^;+\\/])(.*?)\\1'/",'$2',$para);
$para = preg_replace("/\\[([@=]|[-+]+)(.*?)\\1\\]/",'$2',$para);
foreach ($LinkCleanser as $p => $c) $para = preg_replace($p,$c,$para);
$para = str_replace('"','"',str_replace('`','',$para));
} else $para = 'Go to page';
return (strstr($para,"'")) ? '"'.$para.'"' : "'$para'";
}
function HandleEditPage($pagename) {
global $IsPagePosted,$EditFields,$ChangeSummary,$EditFunctions,$FmtV,$Now,
$HandleEditFmt,$PageStartFmt,$PageEditFmt,$PagePreviewFmt,$PageEndFmt,
$GroupHeaderFmt,$GroupFooterFmt,$EnablePost;
if ($_REQUEST['cancel']) { Redirect($pagename); return; }
$IsPagePosted = false;
$PageEditFmt = "";
if (@$_REQUEST['preview'])
$PagePreviewFmt = array(
"",
"$[Page is unsaved]
$[Preview] \$Group \$Name
",
"\$PreviewText",
"
"
);
$PageChunks = array('prechunk','postchunk');
Lock(2);
$page = RetrieveAuthPage($pagename,'edit');
if (!$page) Abort("?cannot edit $pagename");
PCache($pagename,$page);
$new = $page;
$p = explode('____',$new['text']);
$n = @$_REQUEST['p'];
if ($n<1) $n=1; if ($n>count($p)) $n=count($p);
$new['text'] = $p[$n-1];
foreach((array)$EditFields as $k)
if (isset($_POST[$k])) $new[$k]=str_replace("\r",'',stripmagic($_POST[$k]));
foreach((array)$PageChunks as $c) {
$$c = '';
if (@$_POST[$c]) $$c = str_replace("\r",'',stripmagic($_REQUEST[$c]));
}
if ($ChangeSummary) $new["csum:$Now"] = $ChangeSummary;
$EnablePost &= (@$_POST['post'] || @$_POST['postedit']);
if (@$_POST['post'])
$new['text'] = $prechunk."\n".$new['text']."\n".$postchunk;
elseif (@$_POST['preview']) {
if ($n>1) $GroupHeaderFmt = '';
$GroupHeaderFmt .= '=>(Page '.@$_REQUEST['p'].' of '.count($p).')(:nl:)';
if ($n$n) $postchunk .= '____' . $p[$i-1];
foreach((array)$EditFunctions as $fn) $fn($pagename,$page,$new);
if ($IsPagePosted) { Redirect($pagename,"\$PageUrl?p=$n"); return; }
$FmtV['$PreChunk'] = str_replace('"','"',
str_replace('$','$',htmlspecialchars($prechunk, ENT_NOQUOTES)));
$FmtV['$PostChunk'] = str_replace('"','"',
str_replace('$','$',htmlspecialchars($postchunk, ENT_NOQUOTES)));
$FmtV['$CSum'] = str_replace('"','"',
str_replace('$','$',htmlspecialchars(@$_POST['csum'], ENT_NOQUOTES)));
$FmtV['$PNum'] = $n;
$FmtV['$DiffClassMinor'] =
(@$_POST['diffclass']=='minor') ? "checked='checked'" : '';
$FmtV['$EditText'] =
str_replace('$','$',htmlspecialchars(@$new['text'],ENT_NOQUOTES));
$FmtV['$EditBaseTime'] = $Now;
SDV($HandleEditFmt,array(&$PageStartFmt,
&$PageEditFmt,&$PagePreviewFmt,&$PageEndFmt));
PrintFmt($pagename,$HandleEditFmt);
}
if ($action=='browse')
Markup('breakpage','>include','/^.*____.*$/se',
"PageBreak(\$pagename,PSS('$0'))");
elseif ($action=='edit' || $action=='editpage') {
Markup('breakpage','>include','/____/',
"\n— Page Break —
\n");
if ($action=='editpage') $HandleActions['editpage'] = 'HandleEditPage';
} elseif ($action=='print')
Markup('breakpage','>include','/____/','(:div class="section":)');
else
Markup('breakpage','directives','/____/','');
?>