--- loncom/interface/lonmsgdisplay.pm 2006/04/23 05:49:57 1.10
+++ loncom/interface/lonmsgdisplay.pm 2006/10/04 20:26:48 1.41
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.10 2006/04/23 05:49:57 albertel Exp $
+# $Id: lonmsgdisplay.pm,v 1.41 2006/10/04 20:26:48 albertel 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;
@@ -214,7 +217,7 @@ sub movemsg {
# Copy message
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]);
if (!exists($message{$msgid}) || $message{$msgid} eq '') {
- if (&Apache::slotrequest::network_error(%message)) {
+ if (&Apache::lonnet::error(%message)) {
return (0,&mt('Message not moved, A network error occurred.'));
} else {
return (0,&mt('Message not moved as the message is no longer in the source folder.'));
@@ -223,7 +226,7 @@ sub movemsg {
my $result =&Apache::lonnet::put('nohist_email'.$trgsuffix,
{$msgid => $message{$msgid}});
- if (&Apache::slotrequest::network_error($result)) {
+ if (&Apache::lonnet::error($result)) {
return (0,&mt('Message not moved, A network error occurred.'));
}
@@ -231,12 +234,12 @@ sub movemsg {
unless ($trgfolder eq 'trash') {
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]);
# a non-existant status is the mark of an unread msg
- if (&Apache::slotrequest::network_error(%status)) {
+ if (&Apache::lonnet::error(%status)) {
return (0,&mt('Message copied to new folder but status was not, A network error occurred.'));
}
my $result=&Apache::lonnet::put('email_status'.$trgsuffix,
{$msgid => $status{$msgid}});
- if (&Apache::slotrequest::network_error($result)) {
+ if (&Apache::lonnet::error($result)) {
return (0,&mt('Message copied to new folder but status was not, A network error occurred.'));
}
}
@@ -246,10 +249,10 @@ sub movemsg {
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
my $result_del_stat =
&Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]);
- if (&Apache::slotrequest::network_error($result_del_msg)) {
+ if (&Apache::lonnet::error($result_del_msg)) {
return (0,&mt('Message copied, but unable to delete the original from the source folder.'));
}
- if (&Apache::slotrequest::network_error($result_del_stat)) {
+ if (&Apache::lonnet::error($result_del_stat)) {
return (0,&mt('Message copied, but unable to delete the original status from the source folder.'));
}
@@ -259,89 +262,219 @@ 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. - ' |
'. @@ -392,18 +525,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 +563,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 +640,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 +659,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 +745,7 @@ sub disfolder { my $numblocked = 0; &blockcheck(\%setters,\$startblock,\$endblock); $r->print(<+