From ee750a0471aa3886dd61aa8e9d959db15b4d23a8 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 30 Nov 2002 18:17:13 +0000 Subject: [PATCH] Templatized the message board. --- docs/upgrades/upgrade_4.8.0-4.9.0.sql | 6 ++ lib/WebGUI/Wobject/MessageBoard.pm | 138 +++++++++++--------------- 2 files changed, 66 insertions(+), 78 deletions(-) diff --git a/docs/upgrades/upgrade_4.8.0-4.9.0.sql b/docs/upgrades/upgrade_4.8.0-4.9.0.sql index 8eb641cbb..3ef3bbefb 100644 --- a/docs/upgrades/upgrade_4.8.0-4.9.0.sql +++ b/docs/upgrades/upgrade_4.8.0-4.9.0.sql @@ -962,3 +962,9 @@ insert into international (internationalId,languageId,namespace,message,lastUpda insert into international (internationalId,languageId,namespace,message,lastUpdated) values (818,1,'WebGUI','Deactivated', 1038431300); insert into international (internationalId,languageId,namespace,message,lastUpdated) values (817,1,'WebGUI','Active', 1038431287); insert into international (internationalId,languageId,namespace,message,lastUpdated) values (816,1,'WebGUI','Status', 1038431169); +alter table MessageBoard add column templateId int not null default 1; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (72,1,'MessageBoard','Main Template', 1038678090); +INSERT INTO template VALUES (1,'Default Message Board','\r\n

\r\n
\r\n\r\n\r\n

\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \"> ·\r\n \r\n \">\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \">\r\n \r\n ()\r\n \r\n \">\r\n \r\n \r\n @ \r\n by \">\r\n \r\n
\r\n\r\n\r\n\r\n

\r\n · · \r\n
\r\n
\r\n\r\n','MessageBoard'); + + + diff --git a/lib/WebGUI/Wobject/MessageBoard.pm b/lib/WebGUI/Wobject/MessageBoard.pm index 332fa6c29..544d85a5f 100644 --- a/lib/WebGUI/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Wobject/MessageBoard.pm @@ -41,13 +41,14 @@ sub duplicate { $w = $_[0]->SUPER::duplicate($_[1]); $w = WebGUI::Wobject::MessageBoard->new({wobjectId=>$w,namespace=>$namespace}); $w->set({ - messagesPerPage=>$_[0]->get("messagesPerPage") + messagesPerPage=>$_[0]->get("messagesPerPage"), + templateId=>$_[0]->get("templateId") }); } #------------------------------------------------------------------- sub set { - $_[0]->SUPER::set($_[1],[qw(messagesPerPage)]); + $_[0]->SUPER::set($_[1],[qw(templateId messagesPerPage)]); } #------------------------------------------------------------------- @@ -59,6 +60,13 @@ sub www_edit { $output .= '

'.WebGUI::International::get(6,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->integer("messagesPerPage",WebGUI::International::get(4,$namespace),$messagesPerPage); + $f->template( + -name=>"templateId", + -value=>$_[0]->get("templateId"), + -namespace=>$namespace, + -label=>WebGUI::International::get(72,$namespace), + -afterEdit=>'func=edit&wid='.$_[0]->get("wobjectId") + ); $f->raw($_[0]->SUPER::discussionProperties); $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; @@ -68,7 +76,8 @@ sub www_edit { sub www_editSave { return WebGUI::Privilege::insufficient() unless (WebGUI::Privilege::canEditPage()); $_[0]->SUPER::www_editSave({ - messagesPerPage=>$session{form}{messagesPerPage} + messagesPerPage=>$session{form}{messagesPerPage}, + templateId=>$session{form}{templateId} }); return ""; } @@ -80,84 +89,57 @@ sub www_showMessage { #------------------------------------------------------------------- sub www_view { - my ($sth, %data, $html, $i, $pn, $lastId, @last, $replies); - tie %data, 'Tie::CPHash'; - if ($session{form}{pn} < 1) { - $pn = 0; - } else { - $pn = $session{form}{pn}; - } - $html = $_[0]->displayTitle; - $html .= $_[0]->description; - $html = $_[0]->processMacros($html); - $html .= ''. - '
'; - if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"))) { - $html .= ''. - WebGUI::International::get(17,$namespace).' · '; - } - $html .= '' - .WebGUI::International::get(364).'
'; - $html .= ''; - $html .= ' - - - - - '; - $sth = WebGUI::SQL->read("select messageId,subject,username,dateOfPost,userId,views,status + my ($data, $html, %var, @message_loop, $rows, $lastId, @last, $replies); + $var{title} = $_[0]->processMacros($_[0]->get("title")); + $var{description} = $_[0]->processMacros($_[0]->get("description")); + $var{canPost} = WebGUI::Privilege::isInGroup($_[0]->get("groupToPost")); + $var{"post.url"} = WebGUI::URL::page('func=post&mid=new&wid='.$_[0]->get("wobjectId")); + $var{"post.label"} = WebGUI::International::get(17,$namespace); + $var{"search.url"} = WebGUI::URL::page('func=search&wid='.$_[0]->get("wobjectId")); + $var{"search.label"} = WebGUI::International::get(364); + $var{"subject.label"} = WebGUI::International::get(229); + $var{"user.label"} = WebGUI::International::get(15,$namespace); + $var{"date.label"} = WebGUI::International::get(18,$namespace); + $var{"views.label"} = WebGUI::International::get(514); + $var{"replies.label"} = WebGUI::International::get(19,$namespace); + $var{"last.label"} = WebGUI::International::get(20,$namespace); + $p = WebGUI::Paginator->new('wid='.$_[0]->get("wobjectId").'&func=view'); + $p->setDataByQuery("select messageId,subject,username,dateOfPost,userId,views,status from discussion where wobjectId=".$_[0]->get("wobjectId")." and pid=0 and (status='Approved' or userId=$session{user}{userId}) order by dateOfPost desc"); - while (%data = $sth->hash) { - if ($i >= ($_[0]->get("messagesPerPage")*$pn) && $i < ($_[0]->get("messagesPerPage")*($pn+1))) { - @last = WebGUI::SQL->quickArray("select messageId,dateOfPost,username,subject,userId - from discussion where wobjectId=".$_[0]->get("wobjectId")." and rid=$data{messageId} - and status='Approved' order by dateOfPost desc"); - $last[3] = WebGUI::HTML::filter($last[3],'all'); - ($replies) = WebGUI::SQL->quickArray("select count(*) from discussion - where rid=$data{messageId} and status='Approved'"); - $replies--; - $html .= ' - - - - - '; - } - $i++; + $rows = $p->getPageData; + foreach $data (@$rows) { + @last = WebGUI::SQL->quickArray("select messageId,dateOfPost,username,subject,userId + from discussion where wobjectId=".$_[0]->get("wobjectId")." and rid=$data->{messageId} + and status='Approved' order by dateOfPost desc"); + ($replies) = WebGUI::SQL->quickArray("select count(*) from discussion + where rid=$data->{messageId} and status='Approved'"); + $replies--; + @message_loop = ({ + "last.url" => WebGUI::URL::page('func=showMessage&mid='.$last[0].'&wid='.$_[0]->get("wobjectId")), + "last.subject" => substr(WebGUI::HTML::filter($last[3],'all'),0,30), + "last.date" => epochToHuman($last[1]), + "last.userProfile" => WebGUI::URL::page('op=viewProfile&uid='.$last[4]), + "last.username" => $last[2], + "message.replies" => $replies, + "message.url" => WebGUI::URL::page('func=showMessage&mid='.$data->{messageId}.'&wid='.$_[0]->get("wobjectId")), + "message.subject" => substr($data{subject},0,30), + "message.currentUser" => ($data{userId} == $session{user}{userId}), + "message.status" => $status{$data{status}}, + "message.userProfile" => WebGUI::URL::page('op=viewProfile&uid='.$data{userId}), + "message.username" => $data{username}, + "message.date" => epochToHuman($data{dateOfPost}), + "message.views" => $data{views} + }); } - $html .= '
'.WebGUI::International::get(229).''.WebGUI::International::get(15,$namespace).''.WebGUI::International::get(18,$namespace).''.WebGUI::International::get(514).''.WebGUI::International::get(19,$namespace).''.WebGUI::International::get(20,$namespace).'
'.substr($data{subject},0,30).''; - if ($data{userId} == $session{user}{userId}) { - $html .= ' ('.$status{$data{status}}.')'; - } - $html .= '' - .$data{username}.''.epochToHuman($data{dateOfPost},"%z %Z").''.$data{views}.''.$replies.'' - .substr($last[3],0,30).' - @ '.epochToHuman($last[1],"%z %Z").' by '.$last[2].' -
'; - if ($i > $_[0]->get("messagesPerPage")) { - $html .= ''; - } - return $html; + $var{message_loop} = \@message_loop; + $var{firstPage} = $p->getFirstPageLink; + $var{lastPage} = $p->getLastPageLink; + $var{nextPage} = $p->getNextPageLink; + $var{pageList} = $p->getPageLinks; + $var{previousPage} = $p->getPreviousPageLink; + $var{multiplePages} = ($p->getNumberOfPages > 1); + return $_[0]->processTemplate($_[0]->get("templateId"),\%var); } 1;