--- loncom/interface/lonmsgdisplay.pm 2006/04/25 20:02:30 1.14
+++ loncom/interface/lonmsgdisplay.pm 2006/08/29 00:12:02 1.40
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging display
#
-# $Id: lonmsgdisplay.pm,v 1.14 2006/04/25 20:02:30 albertel Exp $
+# $Id: lonmsgdisplay.pm,v 1.40 2006/08/29 00:12:02 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('
');
- foreach my $role (sort keys %coursepersonnel) {
- foreach (split(/\,/,$coursepersonnel{$role})) {
- my ($puname,$pudom)=split(/\:/,$_);
- $r->print('
'.
- '
('.$_.'),
'.$role.'
');
- }
- }
- $r->print('
');
- my $sort = sub {
- my $aname=lc($classlist->{$a}[&Apache::loncoursedata::CL_FULLNAME()]);
- if (!$aname) { $aname=$a; }
- my $bname=lc($classlist->{$b}[&Apache::loncoursedata::CL_FULLNAME()]);
- if (!$bname) { $bname=$b; }
- return $aname cmp $bname;
- };
- foreach my $student (sort $sort (keys(%{$classlist}))) {
- my $info=$classlist->{$student};
- my ($sname,$sdom,$status,$fullname,$section) =
- (@{$info}[&Apache::loncoursedata::CL_SNAME(),
- &Apache::loncoursedata::CL_SDOM(),
- &Apache::loncoursedata::CL_STATUS(),
- &Apache::loncoursedata::CL_FULLNAME(),
- &Apache::loncoursedata::CL_SECTION()]);
- next if ($status ne 'Active');
- next if ($env{'request.course.sec'} &&
- $section ne $env{'request.course.sec'});
- my $key = 'send_to_&&&'.$section.'&&&_'.$student;
- if (! defined($fullname) || $fullname eq '') { $fullname = $sname; }
- $r->print('
'.$sname.':'.$sdom.'
'.$section.
- '
');
+ |;
+}
+
+sub groupmail_header {
+ my ($action,$group,$cdom,$cnum) = @_;
+ my ($description,$refarg);
+ if (!$cdom || !$cnum) {
+ $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+ $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+ }
+ if (exists($env{'form.ref'})) {
+ $refarg = 'ref='.$env{'form.ref'};
+ }
+ if (!$group) {
+ $group = $env{'form.group'};
+ }
+ if ($group eq '') {
+ return '';
+ } else {
+ my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum,$group);
+ if (defined($curr_groups{$group})) {
+ my %groupinfo =
+ &Apache::longroup::get_group_settings($curr_groups{$group});
+ $description = &unescape($groupinfo{'description'});
+ }
}
- $r->print('
');
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ if ($refarg) {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/coursegroups",
+ text=>"Groups",
+ title=>"View course groups"});
+ }
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/$cdom/$cnum/$group/smppg?$refarg",
+ text=>"Group: $description",
+ title=>"Go to group's home page"},
+ {href=>"/adm/email?compose=group&group=".
+ "$env{'form.group'}&$refarg",
+ text=>"Send a Message in a Group",
+ title=>"Compose Group Email Message"},);
+ if ($action eq 'sending') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({text=>"Messages being sent.",
+ title=>"Messages sent"},);
+ }
+ my $groupheader = &Apache::loncommon::start_page('Group Email');
+ $groupheader .= &Apache::lonhtmlcommon::breadcrumbs
+ ('Group - '.$env{'form.group'}.' Email');
+ return $groupheader;
+}
+
+sub groupmail_sent {
+ my ($group,$cdom,$cnum) = @_;
+ my $refarg;
+ if (exists($env{'form.ref'})) {
+ $refarg = 'ref='.$env{'form.ref'};
+ }
+ my $output .= '
'.
+ &mt('Send another group email').''.' '.
+ ''. &mt('Return to group page').'';
+ return $output;
}
# ==================================================== Display Critical Message
@@ -400,7 +533,7 @@ sub sortedmessages {
}
foreach my $msgid (@messages) {
- my $esc_msgid=&Apache::lonnet::escape($msgid);
+ my $esc_msgid=&escape($msgid);
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid)=
&Apache::lonmsg::unpackmsgid($esc_msgid,$folder,undef,
\%status_cache);
@@ -507,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',
@@ -526,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/) {
@@ -612,7 +745,7 @@ sub disfolder {
my $numblocked = 0;
&blockcheck(\%setters,\$startblock,\$endblock);
$r->print(<
+