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 by \">\r\n \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 .= '';
- $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 .= '| '.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].'
- |
';
- }
- $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 .= '
';
- 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;