From e0c86a8915e256249c96865e4e75a2c9a69722b8 Mon Sep 17 00:00:00 2001 From: Frank Dillon Date: Fri, 15 Jun 2007 18:17:12 +0000 Subject: [PATCH] inbox changes --- lib/WebGUI/Inbox.pm | 8 ++++++- lib/WebGUI/Operation/Inbox.pm | 39 ++++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/lib/WebGUI/Inbox.pm b/lib/WebGUI/Inbox.pm index 825f6ae79..32f9af83e 100644 --- a/lib/WebGUI/Inbox.pm +++ b/lib/WebGUI/Inbox.pm @@ -105,12 +105,18 @@ sub getMessagesForUser { my $user = shift; my $limit = shift || 50; my $page = shift || 1; + my $sortBy = shift; + my @messages = (); my $counter = 0; + unless($sortBy eq "subject" || $sortBy eq "sentBy" || $sortBy eq "dateStamp") { + $sortBy = "status='pending' desc, dateStamp desc"; + } + my $start = (($page-1) * $limit) + 1; my $end = $page * $limit; - my $rs = $self->session->db->read("select messageId, userId, groupId from inbox order by status='pending' desc, dateStamp desc"); + my $rs = $self->session->db->read("select messageId, userId, groupId from inbox order by $sortBy"); while (my ($messageId, $userId, $groupId) = $rs->array) { if ($user->userId eq $userId || ($groupId && $user->isInGroup($groupId))) { $counter++; diff --git a/lib/WebGUI/Operation/Inbox.pm b/lib/WebGUI/Operation/Inbox.pm index aa3ea38e2..3a486f32e 100644 --- a/lib/WebGUI/Operation/Inbox.pm +++ b/lib/WebGUI/Operation/Inbox.pm @@ -253,20 +253,39 @@ sub www_viewInbox { my $session = shift; return $session->privilege->insufficient() unless ($session->user->isInGroup(2)); - my $i18n = WebGUI::International->new($session); - my $vars = {}; - my @msg = (); - my $pn = $session->form->get("pn") || 1; - my $rpp = 10; + my $i18n = WebGUI::International->new($session); + my $vars = {}; + my @msg = (); + my $rpp = 50; + + #Deal with page number + my $pn = $session->form->get("pn") || 1; + my $pn_url = ""; + $pn_url = ";pn=$pn"; + #Deal with sort order + my $sortBy = $session->form->get("sortBy"); + my $sort_url = ""; + $sort_url = ";sortBy=$sortBy" if($sortBy); + + #Cache the base url + my $inboxUrl = $session->url->page('op=viewInbox'); + $vars->{ title } = $i18n->get(159); $vars->{'subject_label' } = $i18n->get(351); - $vars->{'status_label' } = $i18n->get(553); + $vars->{'subject_url' } = $inboxUrl.$pn_url.";sortBy=subject"; + + $vars->{'status_label' } = $i18n->get(553); + $vars->{'status_url' } = $inboxUrl.$pn_url.";sortBy=status"; + $vars->{'from_label' } = $i18n->get("private message from label"); - $vars->{'dateStamp_label'} = $i18n->get(352); + $vars->{'from_url' } = $inboxUrl.$pn_url.";sortBy=sentBy"; + + $vars->{'dateStamp_label'} = $i18n->get(352); + $vars->{'dateStamp_url' } = $inboxUrl.$pn_url.";sortBy=dateStamp"; my $adminUser = WebGUI::User->new($session,3)->username; - my $messages = WebGUI::Inbox->new($session)->getMessagesForUser($session->user,$rpp,$pn); + my $messages = WebGUI::Inbox->new($session)->getMessagesForUser($session->user,$rpp,$pn,$sortBy); foreach my $message (@$messages) { my $hash = {}; $hash->{ message_url } = $session->url->page('op=viewInboxMessage;messageId='.$message->getId); @@ -296,10 +315,10 @@ sub www_viewInbox { #Pagination has to exist on every page regardless if there are more messages or not. if($pn > 1 ) { - $vars->{'prev_url' } = $session->url->page('op=viewInbox;pn='.($pn-1)); + $vars->{'prev_url' } = $inboxUrl.';pn='.($pn-1).$sort_url; $vars->{'prev_label' } = $i18n->get("private message prev label"); } - $vars->{'next_url' } = $session->url->page('op=viewInbox;pn='.($pn+1)); + $vars->{'next_url' } = $inboxUrl.';pn='.($pn+1).$sort_url; $vars->{'next_label' } = $i18n->get("private message next label"); $vars->{'messages' } = \@msg;