function checkform ( form ) {
if (form.text.value == \"\") {
window.alert( '$NoCommentMessage' );
form.author.focus();
return false ;
}
if (form.author.value == \"\") {
window.alert( '$NoAuthorMessage' );
form.author.focus();
return false ;
}
return true ;
}
";}
SDV($DiaryBoxFmt,"
");
SDV($CommentBoxFmt,"
");
# date and time formats
SDV($JournalDateFmt,'%d %B %Y');
SDV($JournalTimeFmt,'%H:%M');
# journal and diary patterns as part of page name
SDV($JournalPattern,'/Journal$/');
SDV($DiaryPattern,'/Diary$/');
if ($action == 'comment')
SDV($HandleActions['comment'],'HandleCommentPost');
else if ($action=='print' || $action=='publish')
Markup('cbox',''.Keep(str_replace(array('\$Chrono','\$PostTo'),
array('$1','$2'),
FmtPageName(\$GLOBALS['CommentBoxFmt'],\$pagename)))");
Markup('dbox',''.FmtPageName(\$GLOBALS['DiaryBoxFmt'],\$pagename)");
if (preg_match($JournalPattern,$pagename) ||
preg_match($DiaryPattern,$pagename)) {
$GroupHeaderFmt .= '(:if auth edit:)(:diarybox:)(:if:)(:nl:)';
if (!PageExists($pagename)) $DefaultPageTextFmt = '';
}
}
function HandleCommentPost($pagename) {
global $_GET,$_POST,$JournalPattern,$DiaryPattern,$Author;
global $AuthFunction, $oAuthFunction;
if (!@$_POST['post'] || @$_POST['text']=='') Redirect($pagename);
if (@$_POST['author']=='') $Author = 'anon';
if (isset($_GET['message'])) { $message = $_GET['message']; echo $message; }
if (@$_POST['postto']) {
SDV($EditRedirectFmt, $pagename);
$pagename = MakePageName($pagename, $_POST['postto']);
}
SDV($AuthFunction,'PmWikiAuth');
$oAuthFunction = $AuthFunction;
$AuthFunction = 'BypassAuth';
$page = RetrieveAuthPage($pagename, "read");
if(get_magic_quotes_gpc()==1) $page['text'] = addslashes($page['text']);
$HandleCommentFunction = (preg_match($JournalPattern,$pagename)) ? 'Journal' :
((preg_match($DiaryPattern,$pagename)) ? 'Diary' : 'Message');
$HandleCommentFunction = 'Handle' . $HandleCommentFunction . 'Post';
$HandleCommentFunction($pagename, $page['text']);
HandleEdit($pagename);
exit;
}
function BypassAuth($pagename,$level,$authprompt=true) {
global $AuthFunction,$oAuthFunction;
if ($level=='edit') $AuthFunction = $oAuthFunction;
return $oAuthFunction($pagename,"read",$authprompt);
}
function FormatDateHeading($txt,$datefmt,$fmt) {
return str_replace($txt,strftime($datefmt,time()),$fmt);
}
## Journal entry
function HandleJournalPost($pagename,$pagetext) {
global $_POST,$JournalDateFmt,$JournalTimeFmt,$JPItemStartFmt,$JPItemEndFmt,$JPDateFmt,$JPTimeFmt,
$Author;
SDV($JPDateFmt,'>>journaldate<<(:nl:)!!!!$Date');
SDV($JPTimeFmt,"\n>>journalhead<<\n!!!!!– \$Time –\n");
SDV($JPItemStartFmt,">>journalitem<<\n");
SDV($JPItemEndFmt,"");
$date = FormatDateHeading('$Date',$JournalDateFmt,$JPDateFmt);
$time = $date . FormatDateHeading('$Time',$JournalTimeFmt,$JPTimeFmt);
$entry = $time.$JPItemStartFmt.$_POST['text'].$JPItemEndFmt;
$_POST['text'] = (strstr($pagetext, $date)) ?
str_replace($date, $entry, $pagetext) :
"$entry\n>><<\n\n" . $pagetext;
}
## Diary entry
function HandleDiaryPost($pagename,$pagetext) {
global $_POST,$JournalDateFmt,$DPDateFmt,$DPItemStartFmt,$DPItemEndFmt,$DPItemFmt,$Author;
SDV($DPDateFmt,">>diaryhead<<\n!!!!\$Date ");
SDV($DPItemStartFmt,"\n>>diaryitem<<\n");
SDV($DPItemEndFmt,"");
$date = FormatDateHeading('$Date',$JournalDateFmt,$DPDateFmt);
$entry = $date.$DPItemStartFmt.$_POST['text'].$DPItemEndFmt;
$_POST['text'] = (strstr($pagetext, $date)) ?
str_replace($date, $entry, $pagetext) :
"$entry\n>><<\n\n" . $pagetext;
}
## Comment entry
function HandleMessagePost($pagename,$pagetext) {
global $_POST,$JournalDateFmt,$JournalTimeFmt,$MPDateFmt,$MPTimeFmt,$MPAuthorLink,
$MPItemFmt,$MPItemStartFmt,$MPItemEndFmt,$MPDateTimeFmt,$MultipleItemsPerDay,$Author,
$EnablePostAuthorRequired, $CommentboxMessageFmt,$PageUrl,$EnablePageBreaks,$PostsPerPage,
$MPAnchorFmt,$MPAnchorChronoFmt;
$id = StringCount($pagename,">>messagehead<<")+1;
if ($EnablePageBreaks==1) {
$r = fmod($id-1,$PostsPerPage);
if($r==0 && $id>1) SDV($MPItemEndFmt, "\n>><<\n\n(:comment breakpage:)");
else SDV($MPItemEndFmt, "\n>><<");
}
else SDV($MPItemEndFmt,"\n>><<");
SDV($MPDateFmt,'>>messagedate<<(:nl:)!!!!$Date');
SDV($MPTimeFmt,"(:nl:)>>messagehead<<\n!!!!!\$Author — [-at \$Time-] \n");
SDV($MPItemStartFmt,">>messageitem<<\n");
SDV($MPDateTimeFmt,"(:nl:)>>messagehead<<\n!!!!!\$Author — [-\$Date, \$Time-] \n");
SDV($MultipleItemsPerDay,0); # set to 1 to have date above for multiple entries per day
SDV($MPAuthorLink, 1); # set to 0 to disable author name as link
SDV($MPAnchorFmt,"(:commentbox:)");
SDV($MPAnchorChronoFmt,"(:commentboxchrono:)");
$name = @$_POST['author'];
if (@$_POST['author']=='') $_POST['author'] = 'anon';
# disable anonymous posts, but this looses also any message content:
# if($EnablePostAuthorRequired == 1 && $name=='') Redirect($pagename);
if($name=='') $name = 'anonymous';
else $name = ($MPAuthorLink==1) ? '[[~' . $name . ']]' : $name;
if ($MultipleItemsPerDay) {
$date = FormatDateHeading('$Date',$JournalDateFmt,$MPDateFmt);
$entry = '[[#comment'.$id.']]';
$entry .= str_replace('$Author',$name,
FormatDateHeading('$Time',$JournalTimeFmt,$MPTimeFmt));
} else {
$date = '';
$entry = '[[#comment'.$id.']]';
$entry .= FormatDateHeading('$Date',$JournalDateFmt,
str_replace('$Author',$name,
FormatDateHeading('$Time',$JournalTimeFmt,$MPDateTimeFmt)));
}
$entry.= $MPItemStartFmt.$_POST['text'].$MPItemEndFmt;
$order= @$_POST['order'];
if ($order=='') { # order is not chrono, latest top
# if (strstr($pagetext,'(:commentbox:)(:if:)')) {
# $pos = strpos($pagetext,'(:commentbox:)(:if:)');
# $len = strlen('(:commentbox:)(:if:)');
if (strstr($pagetext,$MPAnchorFmt)) {
$pos = strpos($pagetext,$MPAnchorFmt);
$len = strlen($MPAnchorFmt);
$before = substr($pagetext,0,$pos+$len)."\n";
$after = substr($pagetext,$pos+$len);
}
else {
$before = '';
$after = $pagetext;
}
$entry = "$date$entry";
$after = ($MultipleItemsPerDay && strstr($after, $date)) ?
str_replace($date, $entry, $after) : "$entry$after";
}
else { # order is chrono, latest last
$entry .= "\n";
# if (strstr($pagetext,'(:if auth edit:)(:commentboxchrono:)')) {
# $pos = strpos($pagetext,'(:if auth edit:)(:commentboxchrono:)');
if (strstr($pagetext,$MPAnchorChronoFmt)) {
$pos = strpos($pagetext,$MPAnchorChronoFmt);
$before = substr($pagetext,0,$pos);
$after = substr($pagetext,$pos);
}
else {
$before = $pagetext;
if ($before[strlen($before)-1]!='\n') $before .="\n";
$after = '';
}
$before .= ($MultipleItemsPerDay && strstr($before, $date)) ?
substr($entry,1) : "$date$entry";
}
$_POST['text'] = "$before\n$after";
}
# add page variable {$PostCount},
# counts message items per page
$FmtPV['$PostCount'] = 'StringCount($pn,">>messagehead<<")';
function StringCount($pagename,$find) {
$page = ReadPage($pagename, READPAGE_CURRENT);
$n = substr_count($page['text'], $find);
if ($n==0) return ''; #suppressing 0
return $n;
}