--- loncom/interface/lonmsgdisplay.pm 2006/04/23 05:34:45 1.9
+++ loncom/interface/lonmsgdisplay.pm 2006/05/30 20:09:25 1.30
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.9 2006/04/23 05:34:45 albertel Exp $
+# $Id: lonmsgdisplay.pm,v 1.30 2006/05/30 20:09:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -125,6 +125,9 @@ use Apache::lonlocal;
use Apache::loncommunicate;
use Apache::lonfeedback;
use Apache::lonrss();
+use Apache::lonselstudent();
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
# Querystring component with sorting type
my $sqs;
@@ -259,89 +262,32 @@ sub movemsg {
# ======================================================= Display a course list
sub discourse {
- my $r=shift;
- my $classlist = &Apache::loncoursedata::get_classlist();
- my $now=time;
- my %lt=&Apache::lonlocal::texthash('cfa' => 'Check All',
- 'cfs' => 'Check Section/Group',
- 'cfn' => 'Uncheck All');
- $r->print(<
-ENDDISHEADER - my %coursepersonnel=&Apache::lonnet::get_course_adv_roles(); - $r->print('
'. - ' | ('.$_.'), | '.$role.' |
'.$sname.'@'.$sdom.' | '.$section. - ' |
'. @@ -374,7 +320,7 @@ $content{'sendername'}.'@'. # Check to see if there were any messages. if ($result eq '') { $result = "".&mt('You have no critical messages.')."
". - ''.&mt('Select a course').'
'. + ''.&mt('Select a course or group').'
'. ''.&mt('Communicate').''; } else { $r->print($header); @@ -392,18 +338,30 @@ sub sortedmessages { my %descriptions; my %status_cache = &Apache::lonnet::get('email_status'.&Apache::lonmsg::foldersuffix($folder),\@messages); - foreach (@messages) { - my $msgid=&Apache::lonnet::escape($_); + + my $get_received; + if ($folder eq 'sent' + && ($env{'form.sortedby'} =~ m/^(rev)?(user|domain)$/)) { + $get_received = 1; + } + + foreach my $msgid (@messages) { + my $esc_msgid=&escape($msgid); my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid)= - &Apache::lonmsg::unpackmsgid($msgid,$folder,undef, + &Apache::lonmsg::unpackmsgid($esc_msgid,$folder,undef, \%status_cache); my $description = &get_course_desc($fromcid,\%descriptions); my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status, - $msgid,$description); + $esc_msgid,$description); + if ($get_received) { + my %message = &Apache::lonnet::get('nohist_email'.$suffix, + [$msgid]); + my %content = &Apache::lonmsg::unpackagemsg($message{$msgid}); + push(@temp1,$content{'recuser'},$content{'recdomain'}); + } # Check whether message was sent during blocking period. if ($sendtime >= $startblock && ($sendtime <= $endblock && $endblock > 0) ) { - my $escid = &Apache::lonnet::unescape($msgid); - $$blocked{$escid} = 'ON'; + $$blocked{$msgid} = 'ON'; $$numblocked ++; } else { push @temp ,\@temp1; @@ -418,16 +376,32 @@ sub sortedmessages { @temp = sort {$b->[0] <=> $a->[0]} @temp; } if ($env{'form.sortedby'} eq "user"){ - @temp = sort {lc($a->[2]) cmp lc($b->[2])} @temp; + if ($get_received) { + @temp = sort {lc($a->[7][0]) cmp lc($b->[7][0])} @temp; + } else { + @temp = sort {lc($a->[2]) cmp lc($b->[2])} @temp; + } } if ($env{'form.sortedby'} eq "revuser"){ - @temp = sort {lc($b->[2]) cmp lc($a->[2])} @temp; + if ($get_received) { + @temp = sort {lc($b->[7][0]) cmp lc($a->[7][0])} @temp; + } else { + @temp = sort {lc($b->[2]) cmp lc($a->[2])} @temp; + } } if ($env{'form.sortedby'} eq "domain"){ - @temp = sort {$a->[3] cmp $b->[3]} @temp; + if ($get_received) { + @temp = sort {$a->[8][0] cmp $b->[8][0]} @temp; + } else { + @temp = sort {$a->[3] cmp $b->[3]} @temp; + } } if ($env{'form.sortedby'} eq "revdomain"){ - @temp = sort {$b->[3] cmp $a->[3]} @temp; + if ($get_received) { + @temp = sort {$b->[8][0] cmp $a->[8][0]} @temp; + } else { + @temp = sort {$b->[3] cmp $a->[3]} @temp; + } } if ($env{'form.sortedby'} eq "subject"){ @temp = sort {lc($a->[1]) cmp lc($b->[1])} @temp; @@ -479,7 +453,7 @@ sub disnew { my %lt=&Apache::lonlocal::texthash( 'nm' => 'New Messages', 'su' => 'Subject', - 'co' => 'Course', + 'co' => 'Course/Group', 'da' => 'Date', 'us' => 'Username', 'op' => 'Open', @@ -498,7 +472,7 @@ sub disnew { &Apache::lonnet::get('email_status',\@msgids); my %descriptions; foreach (@msgids) { - my $msgid=&Apache::lonnet::escape($_); + my $msgid=&escape($_); my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= &Apache::lonmsg::unpackmsgid($msgid,undef,undef,\%status_cache); if (defined($sendtime) && $sendtime!~/error/) { @@ -584,7 +558,7 @@ sub disfolder { my $numblocked = 0; &blockcheck(\%setters,\$startblock,\$endblock); $r->print(<+