From 30999c99827060261fa77df2f45c7829fbd6a1c6 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 29 May 2002 00:55:11 +0000 Subject: [PATCH] Consolidating discussin functionality and added an option to turn of edit stamps in posts. --- docs/upgrades/upgrade_3.8.0-3.9.0.sql | 2 +- lib/WebGUI/Discussion.pm | 206 ++++++++++++-------------- lib/WebGUI/Wobject/Article.pm | 51 +------ lib/WebGUI/Wobject/MessageBoard.pm | 52 +------ lib/WebGUI/Wobject/UserSubmission.pm | 52 +------ 5 files changed, 116 insertions(+), 247 deletions(-) diff --git a/docs/upgrades/upgrade_3.8.0-3.9.0.sql b/docs/upgrades/upgrade_3.8.0-3.9.0.sql index c4185bcdc..738f39f2e 100644 --- a/docs/upgrades/upgrade_3.8.0-3.9.0.sql +++ b/docs/upgrades/upgrade_3.8.0-3.9.0.sql @@ -89,7 +89,7 @@ INSERT INTO international VALUES (512,'WebGUI','English','Next Thread'); INSERT INTO international VALUES (513,'WebGUI','English','Previous Thread'); delete from international where internationalId=10 and namespace='MessageBoard'; delete from international where internationalId=14 and namespace='MessageBoard'; - +INSERT INTO settings VALUES ('addEditStampToPosts','1'); diff --git a/lib/WebGUI/Discussion.pm b/lib/WebGUI/Discussion.pm index 061288c3a..6bd79fd04 100644 --- a/lib/WebGUI/Discussion.pm +++ b/lib/WebGUI/Discussion.pm @@ -14,9 +14,9 @@ use strict; use Tie::CPHash; use WebGUI::DateTime; use WebGUI::HTML; +use WebGUI::HTMLForm; use WebGUI::International; use WebGUI::Session; -use WebGUI::Shortcut; use WebGUI::SQL; use WebGUI::URL; @@ -85,39 +85,32 @@ sub deleteMessageConfirm { } #------------------------------------------------------------------- -sub editMessage { - my ($html, %message); - tie %message, 'Tie::CPHash'; - %message = getMessage($session{form}{mid}); - $html = '

'.WebGUI::International::get(228).'

'; - $html .= formHeader().''; - $html .= WebGUI::Form::hidden("func","editMessageSave"); - $html .= WebGUI::Form::hidden("wid",$session{form}{wid}); - $html .= WebGUI::Form::hidden("sid",$session{form}{sid}); - $html .= WebGUI::Form::hidden("mid",$session{form}{mid}); - $html .= ''; - $html .= ''; - $html .= ''; - $html .= '
'.WebGUI::International::get(229). - ''.WebGUI::Form::text("subject",30,255,$message{subject}).'
'.WebGUI::International::get(230). - ''.WebGUI::Form::textArea("message",$message{message},50,6,1).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; - $html .= showMessage(); - return $html; +sub formatHeader { + my $output; + $output = ''.WebGUI::International::get(237).' '.formatSubject($_[0]).'
'; + $output .= ''.WebGUI::International::get(238).' + '.$_[2].'
'; + $output .= "".WebGUI::International::get(239)." ".epochToHuman($_[3],"%z %Z")."
"; + return $output; } #------------------------------------------------------------------- -sub editMessageSave { - if ($session{form}{subject} eq "") { - $session{form}{subject} = WebGUI::International::get(232); - } - if ($session{form}{message} eq "") { - $session{form}{subject} .= ' '.WebGUI::International::get(233); - } - WebGUI::SQL->write("update discussion set subject=".quote($session{form}{subject}). - ", message=".quote("\n --- (Edited at ".localtime(time). - " by $session{user}{username}) --- \n\n".$session{form}{message}). - ", subId='$session{form}{sid}' where messageId=$session{form}{mid}"); - return showMessage(); +sub formatMessage { + my $output; + $output = $_[0]; + $output = WebGUI::HTML::filter($output); + unless ($output =~ /\/ig || $output =~ /\/ig || $output =~ /\/ig) { + $output =~ s/\n/\/g; + } + return $output; +} + +#------------------------------------------------------------------- +sub formatSubject { + my $output; + $output = $_[0]; + $output = WebGUI::HTML::filter($output,'all'); + return $output; } #------------------------------------------------------------------- @@ -125,90 +118,86 @@ sub getMessage { my (%message); tie %message, 'Tie::CPHash'; %message = WebGUI::SQL->quickHash("select * from discussion where messageId='$_[0]'"); - $message{subject} = WebGUI::HTML::filter($message{subject},'all'); - $message{message} = WebGUI::HTML::filter($message{message},$session{setting}{filterContributedHTML}); - unless ($message{message} =~ /\/ig || $message{message} =~ /\/ig || $message{message} =~ /\/ig) { - $message{message} =~ s/\n/\/g; - } return %message; } #------------------------------------------------------------------- -sub postNewMessage { - my ($html); - $html = '

'.WebGUI::International::get(231).'

'; - $html .= formHeader().''; - $html .= WebGUI::Form::hidden("func","postNewMessageSave"); - $html .= WebGUI::Form::hidden("wid",$session{form}{wid}); - $html .= WebGUI::Form::hidden("sid",$session{form}{sid}); - if ($session{user}{userId} == 1) { - $html .= tableFormRow(WebGUI::International::get(438),WebGUI::Form::text("visitorName",30,35)); +sub post { + my ($html, $header, $footer, $f, %message); + tie %message, 'Tie::CPHash'; + $f = WebGUI::HTMLForm->new; + if ($session{form}{replyTo} ne "") { # is a reply + $header = WebGUI::International::get(234); + %message = getMessage($session{form}{replyTo}); + $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}).'

'.formatMessage($message{message}); + $message{message} = ""; + $message{subject} = formatSubject("Re: ".$message{subject}); + $session{form}{mid} = "new"; + $f->hidden("replyTo",$session{form}{replyTo}); + if ($session{user}{userId} == 1) { + $f->text("visitorName",WebGUI::International::get(438)); + } + } elsif ($session{form}{mid} eq "new") { # is an entirely new thread + $header = WebGUI::International::get(231); + if ($session{user}{userId} == 1) { + $f->text("visitorName",WebGUI::International::get(438)); + } + } else { # is editing an existing message + $header = WebGUI::International::get(228); + %message = getMessage($session{form}{mid}); + $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}).'

'.formatMessage($message{message}); + $message{subject} = formatSubject($message{subject}); } - $html .= '

'; - $html .= ''; - $html .= ''; - $html .= '
'.WebGUI::International::get(229).''.WebGUI::Form::text("subject",30,255).'
'.WebGUI::International::get(230).''.WebGUI::Form::textArea("message",'',50,6,1).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; + $f->hidden("func","postSave"); + $f->hidden("wid",$session{form}{wid}); + $f->hidden("sid",$session{form}{sid}); + $f->hidden("mid",$session{form}{mid}); + $f->text("subject",WebGUI::International::get(229),$message{subject}); + $f->HTMLArea("message",WebGUI::International::get(230),$message{message}); + $f->submit; + $html = '

'.$header.'

'; + $html .= $f->print; + $html .= '

'.$footer; return $html; } #------------------------------------------------------------------- -sub postNewMessageSave { - my ($mid, $visitor); - if ($session{form}{subject} eq "") { - $session{form}{subject} = WebGUI::International::get(232); - } - if ($session{form}{message} eq "") { - $session{form}{subject} .= ' '.WebGUI::International::get(233); - } - if ($session{form}{visitorName} eq "") { - $visitor = $session{user}{username}; - } else { - $visitor = $session{form}{visitorName}; - } - $mid = getNextId("messageId"); - WebGUI::SQL->write("insert into discussion values ($mid, $mid, $session{form}{wid}, 0, $session{user}{userId}, ".quote($visitor).", ".quote($session{form}{subject}).", ".quote($session{form}{message}).", ".time().", '$session{form}{sid}')"); - return ""; -} - -#------------------------------------------------------------------- -sub postReply { - my ($html, $subject); - ($subject) = WebGUI::SQL->quickArray("select subject from discussion where messageId=$session{form}{mid}"); - $subject = "Re: ".$subject; - $html = '

'.WebGUI::International::get(234).'

'; - $html .= formHeader().''; - $html .= WebGUI::Form::hidden("func","postReplySave"); - $html .= WebGUI::Form::hidden("wid",$session{form}{wid}); - $html .= WebGUI::Form::hidden("sid",$session{form}{sid}); - $html .= WebGUI::Form::hidden("mid",$session{form}{mid}); - if ($session{user}{userId} == 1) { - $html .= tableFormRow(WebGUI::International::get(438),WebGUI::Form::text("visitorName",30,35)); - } - $html .= ''; - $html .= ''; - $html .= ''; - $html .= '
'.WebGUI::International::get(229).''.WebGUI::Form::text("subject",30,255,$subject).'
'.WebGUI::International::get(230).''.WebGUI::Form::textArea("message",'',50,6,1).'
'.WebGUI::Form::submit(WebGUI::International::get(62)).'
'; - $html .= showMessage(); - return $html; -} - -#------------------------------------------------------------------- -sub postReplySave { - my ($rid, $mid, $visitor); +sub postSave { + my ($rid, $username, $pid); if ($session{form}{subject} eq "") { $session{form}{subject} = WebGUI::International::get(232); } if ($session{form}{message} eq "") { $session{form}{subject} .= ' '.WebGUI::International::get(233); } - if ($session{form}{visitorName} eq "") { - $visitor = $session{user}{username}; - } else { - $visitor = $session{form}{visitorName}; - } - $mid = getNextId("messageId"); - ($rid) = WebGUI::SQL->quickArray("select rid from discussion where messageId=$session{form}{mid}"); - WebGUI::SQL->write("insert into discussion values ($mid, $rid, $session{form}{wid}, $session{form}{mid}, $session{user}{userId}, ".quote($visitor).", ".quote($session{form}{subject}).", ".quote($session{form}{message}).", ".time().", '$session{form}{sid}')"); + if ($session{form}{mid} eq "new") { + if ($session{user}{userId} = 1) { + if ($session{form}{visitorName} eq "") { + $username = $session{user}{username}; + } else { + $username = $session{form}{visitorName}; + } + } else { + $username = $session{user}{username}; + } + if ($session{form}{sid} eq "") { + $session{form}{sid} = 0; + } + $session{form}{mid} = getNextId("messageId"); + if ($session{form}{replyTo} ne "") { + ($rid) = WebGUI::SQL->quickArray("select rid from discussion where messageId=$session{form}{replyTo}"); + $pid = $session{form}{replyTo}; + } else { + $rid = $session{form}{mid}; + $pid = 0; + } + WebGUI::SQL->write("insert into discussion (messageId, wobjectId, subId, rid, pid, userId, username) values + ($session{form}{mid},$session{form}{wid},$session{form}{sid},$rid,$pid,$session{user}{userId},".quote($username).")"); + } elsif ($session{setting}{addEditStampToPosts}) { + $session{form}{message} = "\n --- (Edited at ".localtime(time)." by $session{user}{username}) --- \n\n".$session{form}{message}; + } + WebGUI::SQL->write("update discussion set subject=".quote($session{form}{subject}).", + message=".quote($session{form}{message}).", dateOfPost=".time()." where messageId=$session{form}{mid}"); return ""; } @@ -230,9 +219,7 @@ sub showMessage { if ($message{messageId}) { $html .= '

'.$message{subject}.'

'; $html .= ''; $html .= '
'; - $html .= ''.WebGUI::International::get(238).' - '.$message{username}.'
'; - $html .= "".WebGUI::International::get(239)." ".epochToHuman($message{dateOfPost},"%z %Z")."
"; + $html .= formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}); $html .= '
'; $html .= $_[0]; @@ -249,7 +236,7 @@ sub showMessage { $session{form}{wid}).'">'.WebGUI::International::get(512).' »
'; } $html .= '
'; - $html .= $message{message}.'

'; + $html .= formatMessage($message{message}).'

'; $html .= '

'; } else { $html = WebGUI::International::get(402); @@ -296,15 +283,10 @@ sub showThreads { $html .= ''; if ($session{user}{discussionLayout} eq "flat") { while (%data = $sth->hash) { - $html .= ''; - unless ($data{message} =~ /\/ig || $data{message} =~ /\/ig || $data{message} =~ /\/ig) { - $data{message} =~ s/\n/\/g; - } - $html .= ''; + $html .= ''; } } else { $html .= '
'.WebGUI::International::get(237).' '.$data{subject}.'
'; - $html .= ''.WebGUI::International::get(238).' - '.$data{username}.'
'; - $html .= "".WebGUI::International::get(239)." ".epochToHuman($data{dateOfPost},"%z %Z")."
"; + $html .= '
'; + $html .= formatHeader($data{subject},$data{userId},$data{username},$data{dateOfPost}); $html .= '
'.$data{message}.'
'.formatMessage($data{message}).'
'; diff --git a/lib/WebGUI/Wobject/Article.pm b/lib/WebGUI/Wobject/Article.pm index 787d3c63a..0603c3f9a 100644 --- a/lib/WebGUI/Wobject/Article.pm +++ b/lib/WebGUI/Wobject/Article.pm @@ -213,55 +213,18 @@ sub www_editSave { } #------------------------------------------------------------------- -sub www_editMessage { - if (_canEditMessage($_[0],$session{form}{mid})) { - return WebGUI::Discussion::editMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editMessageSave { - if (_canEditMessage($_[0],$session{form}{mid})) { - WebGUI::Discussion::editMessageSave(); - return $_[0]->www_showMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postNewMessage { +sub www_post { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postNewMessage(); + return WebGUI::Discussion::post(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- -sub www_postNewMessageSave { +sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postNewMessageSave(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReply { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postReply(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReplySave { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postReplySave(); + WebGUI::Discussion::postSave(); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); @@ -273,10 +236,10 @@ sub www_showMessage { my ($submenu, $output, $defaultMid); ($defaultMid) = WebGUI::SQL->quickArray("select min(messageId) from discussion where wobjectId=$session{form}{wid}"); $session{form}{mid} = $defaultMid if ($session{form}{mid} eq ""); - $submenu = ''.WebGUI::International::get(24,$namespace).'
'; if (_canEditMessage($_[0],$session{form}{mid})) { - $submenu .= ''.WebGUI::International::get(25,$namespace).'
'; $submenu .= ''.WebGUI::International::get(26,$namespace).'
'; @@ -330,7 +293,7 @@ sub www_view { WebGUI::URL::page('func=showMessage&wid='.$_[0]->get("wobjectId")).'">'. WebGUI::International::get(28,$namespace).' ('.$replies.')'; $output .= ''; $output .= '
'. + WebGUI::URL::page('func=post&mid=new&wid='.$_[0]->get("wobjectId")).'">'. WebGUI::International::get(24,$namespace).'
'; } diff --git a/lib/WebGUI/Wobject/MessageBoard.pm b/lib/WebGUI/Wobject/MessageBoard.pm index 79e84b8c3..1cbcaebc9 100644 --- a/lib/WebGUI/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Wobject/MessageBoard.pm @@ -150,55 +150,18 @@ sub www_editSave { } #------------------------------------------------------------------- -sub www_editMessage { - if (_canEditMessage($_[0],$session{form}{mid})) { - return WebGUI::Discussion::editMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editMessageSave { - if (_canEditMessage($_[0],$session{form}{mid})) { - WebGUI::Discussion::editMessageSave(); - return $_[0]->www_showMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postNewMessage { +sub www_post { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postNewMessage(); + return WebGUI::Discussion::post(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- -sub www_postNewMessageSave { +sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postNewMessageSave(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReply { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postReply(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReplySave { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postReplySave(); + WebGUI::Discussion::postSave(); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); @@ -208,11 +171,10 @@ sub www_postReplySave { #------------------------------------------------------------------- sub www_showMessage { my ($output, $submenu); - $submenu = ''.WebGUI::International::get(13,$namespace).'
'; if (_canEditMessage($_[0],$session{form}{mid})) { - $submenu .= ''.WebGUI::International::get(12,$namespace).'
'; $submenu .= ''.WebGUI::International::get(22,$namespace).'
'; @@ -236,7 +198,7 @@ sub www_view { $html = $_[0]->processMacros($html); $html .= ''. '
'. + WebGUI::URL::page('func=post&mid=new&wid='.$_[0]->get("wobjectId")).'">'. WebGUI::International::get(17,$namespace).'
'; $html .= ''; $html .= ' diff --git a/lib/WebGUI/Wobject/UserSubmission.pm b/lib/WebGUI/Wobject/UserSubmission.pm index 8bf83e4c9..e5d3f9df3 100644 --- a/lib/WebGUI/Wobject/UserSubmission.pm +++ b/lib/WebGUI/Wobject/UserSubmission.pm @@ -417,25 +417,6 @@ sub www_editSave { } } -#------------------------------------------------------------------- -sub www_editMessage { - if (_canEditMessage($_[0],$session{form}{mid})) { - return WebGUI::Discussion::editMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_editMessageSave { - if (_canEditMessage($_[0],$session{form}{mid})) { - WebGUI::Discussion::editMessageSave(); - return $_[0]->www_showMessage(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - #------------------------------------------------------------------- sub www_editSubmission { my ($output, %submission, $f, @submission, $sth); @@ -521,37 +502,18 @@ sub www_editSubmissionSave { } #------------------------------------------------------------------- -sub www_postNewMessage { +sub www_post { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postNewMessage(); + return WebGUI::Discussion::post(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- -sub www_postNewMessageSave { +sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postNewMessageSave(); - return $_[0]->www_viewSubmission(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReply { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - return WebGUI::Discussion::postReply(); - } else { - return WebGUI::Privilege::insufficient(); - } -} - -#------------------------------------------------------------------- -sub www_postReplySave { - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postReplySave(); + WebGUI::Discussion::postSave(); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); @@ -561,10 +523,10 @@ sub www_postReplySave { #------------------------------------------------------------------- sub www_showMessage { my ($submenu, $output); - $submenu .= ''.WebGUI::International::get(39,$namespace).'
'; if (_canEditMessage($_[0],$session{form}{mid})) { - $submenu .= ''.WebGUI::International::get(42,$namespace).'
'; $submenu .= ''.WebGUI::International::get(43,$namespace).'
'; @@ -628,7 +590,7 @@ sub www_viewSubmission { WebGUI::International::get(26,$namespace).'
'; } if ($_[0]->get("allowDiscussion")) { - $output .= 'get("wobjectId") .'&sid='.$session{form}{sid}).'">'.WebGUI::International::get(47,$namespace).'
'; } $output .= ''.WebGUI::International::get(28,$namespace).'
';
'.WebGUI::International::get(229).'