Added forum sorting template variables.

Added forum sorting direction change.
This commit is contained in:
Leendert Bottelberghs 2004-08-18 14:15:27 +00:00
parent e36bf51124
commit dac00a7f33

View file

@ -1131,14 +1131,20 @@ sub getForumTemplateVars {
$query .= "status='approved'"; $query .= "status='approved'";
} }
$query .= " order by isSticky desc, "; $query .= " order by isSticky desc, ";
my $sortDir = $session{scratch}{forumSortDir};
$var{'thread.sorted.'.$sortDir} = 1;
if ($session{scratch}{forumSortBy} eq "date") { if ($session{scratch}{forumSortBy} eq "date") {
$query .= "rootPostId desc"; $var{'thread.sortedby.date'} = 1;
$query .= "rootPostId $sortDir";
} elsif ($session{scratch}{forumSortBy} eq "views") { } elsif ($session{scratch}{forumSortBy} eq "views") {
$query .= "views desc"; $var{'thread.sortedby.views'} = 1;
$query .= "views $sortDir";
} elsif ($session{scratch}{forumSortBy} eq "replies") { } elsif ($session{scratch}{forumSortBy} eq "replies") {
$query .= "replies desc"; $var{'thread.sortedby.replies'} = 1;
$query .= "replies $sortDir";
} elsif ($session{scratch}{forumSortBy} eq "rating") { } elsif ($session{scratch}{forumSortBy} eq "rating") {
$query .= "rating desc"; $var{'thread.sortedby.rating'} = 1;
$query .= "rating $sortDir";
} else { } else {
$query .= "lastPostDate desc"; $query .= "lastPostDate desc";
} }
@ -1483,7 +1489,7 @@ sub recurseThread {
push (@post_loop, getPostTemplateVars($post, $thread, $forum, $caller, { push (@post_loop, getPostTemplateVars($post, $thread, $forum, $caller, {
'post.indent_loop'=>\@depth_loop, 'post.indent_loop'=>\@depth_loop,
'post.indent.depth'=>$depth, 'post.indent.depth'=>$depth,
'post.isCurrent'=>($currentPost == $post->get("forumPostId")) 'post.isCurrent'=>($currentPost eq $post->get("forumPostId"))
})); }));
my $replies = $post->getReplies; my $replies = $post->getReplies;
foreach my $reply (@{$replies}) { foreach my $reply (@{$replies}) {
@ -1532,7 +1538,7 @@ sub getFlatThread {
foreach my $postId (@posts){ foreach my $postId (@posts){
my $post = WebGUI::Forum::Post->new($postId); my $post = WebGUI::Forum::Post->new($postId);
push (@post_loop, getPostTemplateVars($post,$thread, $forum, $caller, { push (@post_loop, getPostTemplateVars($post,$thread, $forum, $caller, {
'post.isCurrent'=>($currentPost == $post->get("forumPostId")) 'post.isCurrent'=>($currentPost eq $post->get("forumPostId"))
})); }));
} }
return \@post_loop; return \@post_loop;
@ -2448,14 +2454,21 @@ Specify a forumId and call this method directly, rather than over the web.
sub www_viewForum { sub www_viewForum {
my ($caller, $forumId) = @_; my ($caller, $forumId) = @_;
# If POST, cause redirect, so new post is displayed using GET instead of POST
# if ($session{env}{REQUEST_METHOD} =~ /POST/i) {
# my $url= formatForumURL($caller->{callback}, $forumId);
# WebGUI::HTTP::setRedirect($url);
# return "";
# }
$forumId = $session{form}{forumId} unless ($forumId); $forumId = $session{form}{forumId} unless ($forumId);
WebGUI::Session::setScratch("forumSortBy",$session{form}{sortBy});
if($session{scratch}{forumSortBy} ne $session{form}{sortBy}){
WebGUI::Session::setScratch("forumSortBy",$session{form}{sortBy});
WebGUI::Session::setScratch("forumSortDir", "desc");
}else{
my $sortDir;
if($session{scratch}{forumSortDir} eq "asc"){
$sortDir = "desc";
}else{
$sortDir = "asc";
}
WebGUI::Session::setScratch("forumSortDir", $sortDir);
}
my $forum = WebGUI::Forum->new($forumId); my $forum = WebGUI::Forum->new($forumId);
return WebGUI::Privilege::insufficient() unless ($forum->canView); return WebGUI::Privilege::insufficient() unless ($forum->canView);
my $var = getForumTemplateVars($caller, $forum); my $var = getForumTemplateVars($caller, $forum);