|
-$lt{'da'} | $lt{'us'} | $lt{'do'} | $lt{'su'} |
+$lt{'da'} | $lt{'us'} | $lt{'do'} | $lt{'su'} | $lt{'co'} |
TABLEHEAD
foreach my $msg (@newmsgs) {
$r->print(<<"ENDLINK");
-
+
$lt{'op'} |
ENDLINK
- foreach ('sendtime','from','fromdom','shortsub') {
+ foreach ('sendtime','from','fromdom','shortsub','course') {
$r->print("$msg->{$_} | ");
}
$r->print("
");
@@ -989,6 +1141,12 @@ ENDDISHEADER
$r->print(''.&mt('Subject').'');
}
$r->print('');
+ if ($env{'form.sortedby'} eq "revcourse") {
+ $r->print(''.&mt('Course').'');
+ } else {
+ $r->print(''.&mt('Course').'');
+ }
+ $r->print(' | ');
if ($env{'form.sortedby'} eq "revstatus") {
$r->print(''.&mt('Status').' | ');
} else {
@@ -996,16 +1154,16 @@ ENDDISHEADER
}
$r->print("\n");
for (my $n=$firstdis;$n<=$lastdis;$n++) {
- my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};
+ my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID,$description)= @{$temp[$n]};
if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
if ($status eq 'new') {
- $r->print('');
+ $r->print('
');
} elsif ($status eq 'read') {
- $r->print('
');
+ $r->print('
');
} elsif ($status eq 'replied') {
- $r->print('
');
+ $r->print('
');
} else {
- $r->print('
');
+ $r->print('
');
}
$r->print(' | '.&mt('Open').' | '.
@@ -1014,7 +1172,7 @@ ENDDISHEADER
' | '.&Apache::lonlocal::locallocaltime($sendtime).' | '.
$fromname.' | '.$fromdomain.' | '.
&Apache::lonnet::unescape($shortsubj).' | '.
- $status." |
\n");
+ $description.''.$status.' | '."\n");
} elsif ($status eq 'deleted') {
# purge
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash');
@@ -1090,7 +1248,9 @@ sub compout {
'ca' => 'Cancel',
'ma' => 'Mail');
- if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) {
+ if (&Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ || &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'})) {
my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message");
$dispcrit=
' ' . $crithelp .
@@ -1098,8 +1258,9 @@ sub compout {
'' . $crithelp .
'
';
- }
+&mt('Send copy to permanent email address (if known)').''.
+''; }
my %message;
my %content;
my $defdom=$env{'user.domain'};
@@ -1215,9 +1376,10 @@ $dispcrit
ENDUPLOAD
}
if ($broadcast eq 'group') {
- &discourse;
+ &discourse($r);
}
$r->print(''.
+ &Apache::lonfeedback::generate_preview_button('compemail','message').
&Apache::lonhtmlcommon::htmlareaselectactive('message'));
}
@@ -1227,7 +1389,9 @@ sub retrieve_instructor_comments {
my ($user,$domain)=@_;
my $target=$env{'form.grade_target'};
if (! $env{'request.course.id'}) { return; }
- if (! &Apache::lonnet::allowed('srm',$env{'request.course.id'})) {
+ if (! &Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ && ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'})) {
return;
}
my %records=&Apache::lonnet::dump('nohist_email',
@@ -1252,7 +1416,10 @@ sub disfacetoface {
my ($r,$user,$domain)=@_;
my $target=$env{'form.grade_target'};
unless ($env{'request.course.id'}) { return; }
- unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) {
+ if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ && ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'})) {
+ $r->print('Not allowed');
return;
}
my %records=&Apache::lonnet::dump('nohist_email',
@@ -1268,12 +1435,30 @@ sub disfacetoface {
$result.=''.&mt('Record').'
';
} elsif ($content{'subject'}=~/^Broadcast/) {
$result .=''.&mt('Broadcast Message').'
';
+ if ($content{'subject'}=~/^Broadcast\./) {
+ if (defined($content{'coursemsgid'})) {
+ my $crsmsgid = &Apache::lonnet::escape($content{'coursemsgid'});
+ my $broadcast_message = &general_message($crsmsgid);
+ $content{'message'} = ''.&mt('Subject').': '.$content{'message'}.'
'.$broadcast_message;
+ } else {
+ %content=&unpackagemsg($content{'message'});
+ $content{'message'} =
+ ''.&mt('Subject').': '.$content{'subject'}.'
'.
+ $content{'message'};
+ }
+ }
} else {
$result.=''.&mt('Critical Message').'
';
- %content=&unpackagemsg($content{'message'});
- $content{'message'}=
+ if (defined($content{'coursemsgid'})) {
+ my $crsmsgid=&Apache::lonnet::escape($content{'coursemsgid'});
+ my $critical_message = &general_message($crsmsgid);
+ $content{'message'} = ''.&mt('Subject').': '.$content{'message'}.'
'.$critical_message;
+ } else {
+ %content=&unpackagemsg($content{'message'});
+ $content{'message'}=
''.&mt('Subject').': '.$content{'subject'}.'
'.
$content{'message'};
+ }
}
$result.=&mt('By').': '.
&Apache::loncommon::aboutmewrapper(
@@ -1296,11 +1481,26 @@ $content{'sendername'}.'@'.
}
}
+sub general_message {
+ my ($crsmsgid) = @_;
+ my %general_content;
+ if ($crsmsgid) {
+ my %course_content = &Apache::lonnet::get('nohist_email',[$crsmsgid],
+ $env{'course.'.$env{'request.course.id'}.'.domain'},
+ $env{'course.'.$env{'request.course.id'}.'.num'});
+ %general_content = &unpackagemsg($course_content{$crsmsgid});
+ }
+ return $general_content{'message'};
+}
+
# ---------------------------------------------------------------- Face to face
sub facetoface {
my ($r,$stage)=@_;
- unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) {
+ if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ && ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'})) {
+ $r->print('Not allowed');
return;
}
&printheader($r,
@@ -1343,12 +1543,13 @@ ENDTREC
($env{'form.recdomain'}) && ($env{'form.recuname'})) {
chomp($env{'form.newrecord'});
if ($env{'form.newrecord'}) {
+ my $recordtxt = $env{'form.newrecord'};
&user_normal_msg_raw(
$env{'course.'.$env{'request.course.id'}.'.num'},
$env{'course.'.$env{'request.course.id'}.'.domain'},
&mt('Record').
' ['.$env{'form.recuname'}.':'.$env{'form.recdomain'}.']',
- $env{'form.newrecord'});
+ $recordtxt);
}
$r->print(''.&Apache::loncommon::plainname($env{'form.recuname'},
$env{'form.recdomain'}).'
');
@@ -1374,7 +1575,12 @@ ENDBFORM
sub examblock {
my ($r,$action) = @_;
unless ($env{'request.course.id'}) { return;}
- unless (&Apache::lonnet::allowed('srm',$env{'request.course.id'})) { $r->print('Not allowed'); }
+ if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'})
+ && ! &Apache::lonnet::allowed('srm',$env{'request.course.id'}.
+ '/'.$env{'request.course.sec'})) {
+ $r->print('Not allowed');
+ return;
+ }
my %lt=&Apache::lonlocal::texthash(
'comb' => 'Communication Blocking',
'cbds' => 'Communication blocking during scheduled exams',
@@ -1807,6 +2013,16 @@ sub displaymessage {
}
$r->print('
');
}
+ my $tolist;
+ my @recipients = ();
+ for (my $i=0; $i<@{$content{'recuser'}}; $i++) {
+ $recipients[$i] = &Apache::loncommon::aboutmewrapper(
+ &Apache::loncommon::plainname($content{'recuser'}[$i],
+ $content{'recdomain'}[$i]),
+ $content{'recuser'}[$i],$content{'recdomain'}[$i]).
+ ' ('.$content{'recuser'}[$i].' at '.$content{'recdomain'}[$i].') ';
+ }
+ $tolist = join(', ',@recipients);
$r->print('