diff --git a/lib/WebGUI/Forum.pm b/lib/WebGUI/Forum.pm index 98d1fe606..8a179ce64 100644 --- a/lib/WebGUI/Forum.pm +++ b/lib/WebGUI/Forum.pm @@ -358,6 +358,7 @@ sub new { $properties->{searchTemplateId} = $master->{searchTemplateId}; $properties->{notificationTemplateId} = $master->{notificationTemplateId}; $properties->{postFormTemplateId} = $master->{postFormTemplateId}; + $properties->{postPreviewTemplateId} = $master->{postPreviewTemplateId}; $properties->{archiveAfter} = $master->{archiveAfter}; $properties->{allowRichEdit} = $master->{allowRichEdit}; $properties->{allowReplacements} = $master->{allowReplacements}; @@ -369,6 +370,8 @@ sub new { $properties->{attachmentsPerPost} = $master->{attachmentsPerPost}; $properties->{addEditStampToPosts} = $master->{addEditStampsToPost}; $properties->{postsPerPage} = $master->{postsPerPage}; + $properties->{usePreview} = $master->{usePreview}; + } bless {_properties=>$properties}, $class; } diff --git a/lib/WebGUI/Forum/UI.pm b/lib/WebGUI/Forum/UI.pm index a6c301f7b..878845323 100644 --- a/lib/WebGUI/Forum/UI.pm +++ b/lib/WebGUI/Forum/UI.pm @@ -79,6 +79,7 @@ User interface package for forums. $hashRef = WebGUI::Forum::UI::getPostTemplateVars($post, $thread, $forum, $caller); $hashRef = WebGUI::Forum::UI::getThreadTemplateVars($caller, $post); $arrayRef = WebGUI::Forum::UI::recurseThread($post, $thread, $forum, $depth, $caller, $postId); + $arrayRef = WebGUI::Forum::UI::getFlatThread($post, $thread, $forum, $caller, $postId); WebGUI::Forum::UI::notifySubscribers($post, $thread, $forum, $caller); WebGUI::Forum::UI::setPostApproved($caller, $post); @@ -96,6 +97,7 @@ User interface package for forums. $html = WebGUI::Forum::UI::www_forumUnsubscribe($callback); $html = WebGUI::Forum::UI::www_nextThread($callback); $html = WebGUI::Forum::UI::www_post($callback); + $html = WebGUI::Forum::UI::www_postPreview($callback); $html = WebGUI::Forum::UI::www_postSave($callback); $html = WebGUI::Forum::UI::www_previousThread($callback); $html = WebGUI::Forum::UI::www_ratePost($callback); @@ -865,6 +867,20 @@ sub forumProperties { -uiLevel=>5, -value=>$forum->get("postFormTemplateId") ); + $f->template( + -name=>"postPreviewTemplateId", + -label=>WebGUI::International::get('Forum, Post Preview Template'), + -namespace=>"Forum/PostPreview", + -uiLevel=>5, + -value=>$forum->get("postPreviewTemplateId") + ); + $f->yesNo( + -name=>"usePreview", + -label=>WebGUI::International::get('Forum, use preview'), + -value=>$forum->get("usePreview"), + -uiLevel=>9 + ); + $f->template( -name=>"notificationTemplateId", -label=>WebGUI::International::get(1035), @@ -981,6 +997,7 @@ sub forumPropertiesSave { searchTemplateId=>$session{form}{searchTemplateId}, notificationTemplateId=>$session{form}{notificationTemplateId}, postFormTemplateId=>$session{form}{postFormTemplateId}, + postPreviewTemplateId=>$session{form}{postPreviewTemplateId}, editTimeout=>WebGUI::FormProcessor::interval("editTimeout"), archiveAfter=>WebGUI::FormProcessor::interval("archiveAfter"), addEditStampToPosts=>$session{form}{addEditStampToPosts}, @@ -993,7 +1010,8 @@ sub forumPropertiesSave { groupToView=>$session{form}{groupToView}, groupToPost=>$session{form}{groupToPost}, moderatePosts=>$session{form}{moderatePosts}, - groupToModerate=>$session{form}{groupToModerate} + groupToModerate=>$session{form}{groupToModerate}, + usePreview=>$session{form}{usePreview} ); my $forum; if ($session{form}{forumId} eq "new") { @@ -1035,7 +1053,10 @@ sub forumOp { my $forumId = $session{form}{forumId}; if ($session{form}{forumPostId}) { my $post = WebGUI::Forum::Post->new($session{form}{forumPostId}); - $forumId = $post->getThread->get("forumId"); + if($session{form}{forumPostId} ne ''){ + $forumId = $post->getThread->get("forumId"); + } + } elsif ($session{form}{forumThreadId}) { my $thread = WebGUI::Forum::Thread->new($session{form}{forumThreadId}); $forumId = $thread->get("forumId"); @@ -1473,7 +1494,7 @@ sub recurseThread { } #------------------------------------------------------------------- -=head2 recurseThread ( post, thread, forum, caller, currentPost ) +=head2 getFlatThread ( post, thread, forum, caller, currentPost ) Returns an array reference with the template variables from all the posts in a thread in flat mode. In flat mode messages are ordered by submission date, so threading is not maintained. @@ -1945,9 +1966,10 @@ sub www_post { name=>'visitorName' }); } + my $forumOp = ($forum->get("usePreview"))? "postPreview" : "postSave"; $var->{'form.begin'} .= WebGUI::Form::hidden({ name=>'forumOp', - value=>'postSave' + value=>$forumOp }); $var->{'form.submit'} = WebGUI::Form::submit(); $var->{'subject.label'} = WebGUI::International::get(229); @@ -1956,8 +1978,70 @@ sub www_post { value=>$subject }); $var->{'form.end'} = WebGUI::Form::formFooter(); - return WebGUI::Template::process($forum->get("postformTemplateId"),"Forum/PostForm", $var); + return WebGUI::Template::process($forum->get("postformTemplateId"),"Forum/PostForm", $var); } +#------------------------------------------------------------------- + +=head2 www_postPreview ( caller ) + +The web method to generate a preview of a posting. + +=over + +=item caller + +A hash reference containing information passed from the calling object. + +=back + +=cut + +sub www_postPreview { + my ($caller) = @_; + + + my $forumId = $session{form}{forumId}; + my $threadId = $session{form}{forumThreadId}; + my $postId = $session{form}{forumPostId}; + my $subject = $session{form}{subject}; + $subject = WebGUI::International::get(232) if ($subject eq ""); + $subject .= ' '.WebGUI::International::get(233) if ($session{form}{message} eq ""); + if ( $subject ne "") { # subjects could never contain anything other than text + $subject = WebGUI::HTML::filter(WebGUI::HTML::processReplacements($subject),"all"); + } + my $newPost = WebGUI::Forum::Post->new(); + + $newPost->{_properties}->{message} = $session{form}{message}; + $newPost->{_properties}->{subject} = $subject; + $newPost->{_properties}->{contentType} = $session{form}{contentType}; + $newPost->{_properties}->{userId} = $session{user}{userId}; + $newPost->{_properties}->{username} = ($session{form}{visitorName} || $session{user}{alias}); + $newPost->{_properties}->{dateOfPost} = WebGUI::DateTime::time(); + + + my $var = getPostTemplateVars($newPost, WebGUI::Forum::Thread->new($threadId), WebGUI::Forum->new($forumId), $caller); + $var->{'newpost.header'} = WebGUI::International::get('Forum, Preview Heading'); + + $var->{'form.begin'} = WebGUI::Form::formHeader({ + action=>$caller->{callback} + }); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'forumId', value=>$forumId}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'forumThreadId', value=>$threadId}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'forumPostId', value=>$postId}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'parentId', value=>$session{form}{parentId}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'subject', value=>$subject}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'message', value=>$session{form}{message}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'contentType', value=>$session{form}{contentType}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'visitorName', value=>$session{form}{visitorName}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'subscribe', value=>$session{form}{subscribe}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'isLocked', value=>$session{form}{isLocked}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'isSticky', value=>$session{form}{isSticky}}); + $var->{'form.begin'} .= WebGUI::Form::hidden({name=>'forumOp', value=>"postSave"}); + $var->{'form.submit'} = WebGUI::Form::submit(); + $var->{'form.end'} = WebGUI::Form::formFooter(); + return WebGUI::Template::process(1,"Forum/PostPreview", $var); +} + #------------------------------------------------------------------- diff --git a/lib/WebGUI/i18n/English/WebGUI.pm b/lib/WebGUI/i18n/English/WebGUI.pm index 360c0b50d..826015527 100644 --- a/lib/WebGUI/i18n/English/WebGUI.pm +++ b/lib/WebGUI/i18n/English/WebGUI.pm @@ -7232,6 +7232,21 @@ config file.

message => q|Threads Per Page|, lastUpdated =>1092652208, context => q|Field label for Edit Forum| + }, + 'Forum, Preview Heading' => { + message => q|Message Preview|, + lastUpdated =>1092745088, + context => q|Label for Forum Preview heading| + }, + 'Forum, Post Preview Template' => { + message => q|Post Preview Template|, + lastUpdated =>1092748557, + context => q|Label for Forum Settings| + }, + 'Forum, use preview' => { + message => q|Use Post Preview?|, + lastUpdated =>1092748557, + context => q|Label for Forum Settings| } };