version 1.162, 2005/12/09 20:54:26
|
version 1.173.2.2, 2006/06/19 09:36:14
|
Line 105 users in their domain. The XML packagin
|
Line 105 users in their domain. The XML packagin
|
similar. The differences are the use of <recuser>$uname</recuser> and |
similar. The differences are the use of <recuser>$uname</recuser> and |
<recdomain>$udom</recdomain> in stored internal messages, compared |
<recdomain>$udom</recdomain> in stored internal messages, compared |
with <recipient username="$uname:$udom">$email</recipient> in stored |
with <recipient username="$uname:$udom">$email</recipient> in stored |
Domain Coordinator e-mail for teh storage of information about |
Domain Coordinator e-mail for the storage of information about |
recipients of the message/e-mail. |
recipients of the message/e-mail. |
|
|
=head1 FUNCTIONS |
=head1 FUNCTIONS |
Line 241 sub unpackagemsg {
|
Line 241 sub unpackagemsg {
|
} |
} |
} |
} |
} |
} |
|
if (!exists($content{'recuser'})) { $content{'recuser'} = []; } |
if ($content{'attachmenturl'}) { |
if ($content{'attachmenturl'}) { |
my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|); |
my ($fname)=($content{'attachmenturl'}=~m|/([^/]+)$|); |
if ($notoken) { |
if ($notoken) { |
Line 266 sub buildmsgid {
|
Line 267 sub buildmsgid {
|
} |
} |
|
|
sub unpackmsgid { |
sub unpackmsgid { |
my ($msgid,$folder)=@_; |
my ($msgid,$folder,$skipstatus,$status_cache)=@_; |
$msgid=&Apache::lonnet::unescape($msgid); |
$msgid=&Apache::lonnet::unescape($msgid); |
my $suffix=&foldersuffix($folder); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid)=split(/\:/, |
$processid)=split(/\:/,&Apache::lonnet::unescape($msgid)); |
&Apache::lonnet::unescape($msgid)); |
if (!defined($processid)) { $fromcid = ''; } |
my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]); |
my %status=(); |
if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; } |
unless ($skipstatus) { |
unless ($status{$msgid}) { $status{$msgid}='new'; } |
if (ref($status_cache)) { |
|
$status{$msgid} = $status_cache->{$msgid}; |
|
} else { |
|
my $suffix=&foldersuffix($folder); |
|
%status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]); |
|
} |
|
if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; } |
|
unless ($status{$msgid}) { $status{$msgid}='new'; } |
|
} |
return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid},$fromcid); |
return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid},$fromcid); |
} |
} |
|
|
Line 422 sub all_url_author_res_msg {
|
Line 431 sub all_url_author_res_msg {
|
return %returnhash; |
return %returnhash; |
} |
} |
|
|
|
# ====================================== Add a comment to the User Notes screen |
|
|
|
sub store_instructor_comment { |
|
my ($msg,$uname,$udom) = @_; |
|
my $cid = $env{'request.course.id'}; |
|
my $cnum = $env{'course.'.$cid.'.num'}; |
|
my $cdom = $env{'course.'.$cid.'.domain'}; |
|
my $subject= &mt('Record').' ['.$uname.':'.$udom.']'; |
|
my $result = &user_normal_msg_raw($cnum,$cdom,$subject,$msg); |
|
return $result; |
|
} |
|
|
# ================================================== Critical message to a user |
# ================================================== Critical message to a user |
|
|
sub user_crit_msg_raw { |
sub user_crit_msg_raw { |
Line 529 sub user_normal_msg_raw {
|
Line 550 sub user_normal_msg_raw {
|
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
my ($user,$domain,$subject,$message,$citation,$baseurl,$attachmenturl, |
$toperm,$currid,$newid,$sentmessage)=@_; |
$toperm,$currid,$newid,$sentmessage)=@_; |
# Check if allowed missing |
# Check if allowed missing |
my $status=''; |
my ($status,$packed_message); |
my $msgid='undefined'; |
my $msgid='undefined'; |
my $text=$message; |
my $text=$message; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
unless (($message)&&($user)&&($domain)) { $status='empty'; }; |
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
my $homeserver=&Apache::lonnet::homeserver($user,$domain); |
if ($homeserver ne 'no_host') { |
if ($homeserver ne 'no_host') { |
($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl, |
($msgid,$packed_message)= |
|
&packagemsg($subject,$message,$citation,$baseurl, |
|
$attachmenturl,$user,$domain,$currid); |
|
(undef, my $packed_message_no_citation)= |
|
&packagemsg($subject,$message,undef ,$baseurl, |
$attachmenturl,$user,$domain,$currid); |
$attachmenturl,$user,$domain,$currid); |
# Store in user folder |
# Store in user folder |
$status=&Apache::lonnet::critical( |
$status=&Apache::lonnet::critical( |
'put:'.$domain.':'.$user.':nohist_email:'. |
'put:'.$domain.':'.$user.':nohist_email:'. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($message),$homeserver); |
&Apache::lonnet::escape($packed_message),$homeserver); |
# Save new message received time |
# Save new message received time |
&Apache::lonnet::put |
&Apache::lonnet::put |
('email_status',{'recnewemail'=>time},$domain,$user); |
('email_status',{'recnewemail'=>time},$domain,$user); |
Line 549 sub user_normal_msg_raw {
|
Line 574 sub user_normal_msg_raw {
|
unless (($env{'request.course.id'}) && |
unless (($env{'request.course.id'}) && |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.sendmode'} eq 'group') || |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'})))) { |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
$status .= &store_sent_mail($msgid,$message); |
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'})))) { |
|
$status .= &store_sent_mail($msgid,$packed_message_no_citation); |
} |
} |
} else { |
} else { |
$status='no_host'; |
$status='no_host'; |
Line 559 sub user_normal_msg_raw {
|
Line 586 sub user_normal_msg_raw {
|
$$newid = $msgid; |
$$newid = $msgid; |
} |
} |
if (defined($sentmessage)) { |
if (defined($sentmessage)) { |
$$sentmessage = $message; |
$$sentmessage = $packed_message; |
} |
} |
|
|
# Notifications |
# Notifications |
Line 598 sub user_normal_msg {
|
Line 625 sub user_normal_msg {
|
$domain,$user); |
$domain,$user); |
my $msgforward=$userenv{'msgforward'}; |
my $msgforward=$userenv{'msgforward'}; |
if ($msgforward) { |
if ($msgforward) { |
foreach (split(/\,/,$msgforward)) { |
foreach (split(/\,/,$msgforward)) { |
my ($forwuser,$forwdomain)=split(/\:/,$_); |
my ($forwuser,$forwdomain)=split(/\:/,$_); |
$status.= |
$status.= |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
&user_normal_msg_raw($forwuser,$forwdomain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm,undef,undef,$sentmessage).' '; |
$citation,$baseurl,$attachmenturl,$toperm, |
} |
undef,undef,$sentmessage).' '; |
|
} |
} else { |
} else { |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
$status=&user_normal_msg_raw($user,$domain,$subject,$message, |
$citation,$baseurl,$attachmenturl,$toperm,undef,undef,$sentmessage); |
$citation,$baseurl,$attachmenturl,$toperm, |
|
undef,undef,$sentmessage); |
} |
} |
return $status; |
return $status; |
} |
} |
|
|
sub store_sent_mail { |
sub store_sent_mail { |
my ($msgid,$message) = @_; |
my ($msgid,$message) = @_; |
my $status =' '.&Apache::lonnet::critical( |
my $status =' '.&Apache::lonnet::critical( |
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
'put:'.$env{'user.domain'}.':'.$env{'user.name'}. |
':nohist_email_sent:'. |
':nohist_email_sent:'. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($msgid).'='. |
&Apache::lonnet::escape($message),$env{'user.home'}); |
&Apache::lonnet::escape($message),$env{'user.home'}); |
return $status; |
return $status; |
} |
} |
|
|
Line 683 sub statuschange {
|
Line 712 sub statuschange {
|
&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus}); |
&Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus}); |
} |
} |
if ($newstatus eq 'deleted') { |
if ($newstatus eq 'deleted') { |
&movemsg(&Apache::lonnet::unescape($msgid),$folder,'trash'); |
return &movemsg($msgid,$folder,'trash'); |
} |
} |
|
return ; |
} |
} |
|
|
# ============================================================= Make new folder |
# ============================================================= Make new folder |
Line 705 sub movemsg {
|
Line 735 sub movemsg {
|
if ($srcfolder eq 'new') { $srcfolder=''; } |
if ($srcfolder eq 'new') { $srcfolder=''; } |
my $srcsuffix=&foldersuffix($srcfolder); |
my $srcsuffix=&foldersuffix($srcfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
|
if ($srcsuffix eq $trgsuffix) { |
|
return (0,&mt('Message not moved, Attempted to move message to the same folder as it already is in.')); |
|
} |
|
|
# Copy message |
# Copy message |
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); |
&Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}}); |
if (!exists($message{$msgid}) || $message{$msgid} eq '') { |
|
if (&Apache::slotrequest::network_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.')); |
|
} |
|
} |
|
|
|
my $result =&Apache::lonnet::put('nohist_email'.$trgsuffix, |
|
{$msgid => $message{$msgid}}); |
|
if (&Apache::slotrequest::network_error($result)) { |
|
return (0,&mt('Message not moved, A network error occurred.')); |
|
} |
|
|
# Copy status |
# Copy status |
unless ($trgfolder eq 'trash') { |
unless ($trgfolder eq 'trash') { |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); |
&Apache::lonnet::put('email_status'.$trgsuffix,{$msgid => $status{$msgid}}); |
# a non-existant status is the mark of an unread msg |
|
if (&Apache::slotrequest::network_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)) { |
|
return (0,&mt('Message copied to new folder but status was not, A network error occurred.')); |
|
} |
} |
} |
|
|
# Delete orginals |
# Delete orginals |
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); |
my $result_del_msg = |
&Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]); |
&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)) { |
|
return (0,&mt('Message copied, but unable to delete the original from the source folder.')); |
|
} |
|
if (&Apache::slotrequest::network_error($result_del_stat)) { |
|
return (0,&mt('Message copied, but unable to delete the original status from the source folder.')); |
|
} |
|
|
|
return (1); |
} |
} |
|
|
# ======================================================= Display a course list |
# ======================================================= Display a course list |
Line 853 sub sortedmessages {
|
Line 917 sub sortedmessages {
|
my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix); |
my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix); |
#unpack the varibles and repack into temp for sorting |
#unpack the varibles and repack into temp for sorting |
my @temp; |
my @temp; |
|
my %descriptions; |
|
my %status_cache = |
|
&Apache::lonnet::get('email_status'.&foldersuffix($folder),\@messages); |
foreach (@messages) { |
foreach (@messages) { |
my $msgid=&Apache::lonnet::escape($_); |
my $msgid=&Apache::lonnet::escape($_); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid)= |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$fromcid)= |
&Apache::lonmsg::unpackmsgid($msgid,$folder); |
&Apache::lonmsg::unpackmsgid($msgid,$folder,undef, |
my $description = &get_course_desc($fromcid); |
\%status_cache); |
|
my $description = &get_course_desc($fromcid,\%descriptions); |
my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status, |
my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status, |
$msgid,$description); |
$msgid,$description); |
# Check whether message was sent during blocking period. |
# Check whether message was sent during blocking period. |
Line 911 sub sortedmessages {
|
Line 979 sub sortedmessages {
|
} |
} |
|
|
sub get_course_desc { |
sub get_course_desc { |
my ($fromcid) = @_; |
my ($fromcid,$descriptions) = @_; |
my $description; |
my $description; |
if (defined($env{'course.'.$fromcid.'.description'})) { |
if (!$fromcid) { |
$description = $env{'course.'.$fromcid.'.description'}; |
return $description; |
} else { |
} else { |
my %courseinfo=&Apache::lonnet::coursedescription($fromcid); |
if (defined($$descriptions{$fromcid})) { |
$description = $courseinfo{'description'}; |
$description = $$descriptions{$fromcid}; |
|
} else { |
|
if (defined($env{'course.'.$fromcid.'.description'})) { |
|
$description = $env{'course.'.$fromcid.'.description'}; |
|
} else { |
|
my %courseinfo=&Apache::lonnet::coursedescription($fromcid); $description = $courseinfo{'description'}; |
|
$description = $courseinfo{'description'}; |
|
} |
|
$$descriptions{$fromcid} = $description; |
|
} |
|
return $description; |
} |
} |
return $description; |
|
} |
} |
|
|
# ======================================================== Display new messages |
# ======================================================== Display new messages |
Line 936 sub disnew {
|
Line 1013 sub disnew {
|
'op' => 'Open', |
'op' => 'Open', |
'do' => 'Domain' |
'do' => 'Domain' |
); |
); |
my @msgids = sort split(/\&/,&Apache::lonnet::reply |
my @msgids = sort(&Apache::lonnet::getkeys('nohist_email')); |
('keys:'.$env{'user.domain'}.':'. |
|
$env{'user.name'}.':nohist_email', |
|
$env{'user.home'})); |
|
my @newmsgs; |
my @newmsgs; |
my %setters = (); |
my %setters = (); |
my $startblock = 0; |
my $startblock = 0; |
Line 948 sub disnew {
|
Line 1022 sub disnew {
|
my $numblocked = 0; |
my $numblocked = 0; |
# Check for blocking of display because of scheduled online exams. |
# Check for blocking of display because of scheduled online exams. |
&blockcheck(\%setters,\$startblock,\$endblock); |
&blockcheck(\%setters,\$startblock,\$endblock); |
|
my %status_cache = |
|
&Apache::lonnet::get('email_status',\@msgids); |
|
my %descriptions; |
foreach (@msgids) { |
foreach (@msgids) { |
|
my $msgid=&Apache::lonnet::escape($_); |
my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= |
my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)= |
&Apache::lonmsg::unpackmsgid($_); |
&Apache::lonmsg::unpackmsgid($msgid,undef,undef,\%status_cache); |
if (defined($sendtime) && $sendtime!~/error/) { |
if (defined($sendtime) && $sendtime!~/error/) { |
my $description = &get_course_desc($fromcid); |
my $description = &get_course_desc($fromcid,\%descriptions); |
my $numsendtime = $sendtime; |
my $numsendtime = $sendtime; |
$sendtime = &Apache::lonlocal::locallocaltime($sendtime); |
$sendtime = &Apache::lonlocal::locallocaltime($sendtime); |
if ($status eq 'new') { |
if ($status eq 'new') { |
Line 961 sub disnew {
|
Line 1039 sub disnew {
|
$numblocked ++; |
$numblocked ++; |
} else { |
} else { |
push @newmsgs, { |
push @newmsgs, { |
msgid => $_, |
msgid => $msgid, |
sendtime => $sendtime, |
sendtime => $sendtime, |
shortsub => &Apache::lonnet::unescape($shortsubj), |
shortsub => &Apache::lonnet::unescape($shortsubj), |
from => $fromname, |
from => $fromname, |
Line 1132 ENDDISHEADER
|
Line 1210 ENDDISHEADER
|
$description.'</td><td>'.$status.'</td></tr>'."\n"); |
$description.'</td><td>'.$status.'</td></tr>'."\n"); |
} elsif ($status eq 'deleted') { |
} elsif ($status eq 'deleted') { |
# purge |
# purge |
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash'); |
my ($result,$msg) = |
|
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash'); |
|
|
} |
} |
} |
} |
$r->print("</table>\n<p>". |
$r->print("</table>\n<p>". |
Line 1205 sub compout {
|
Line 1285 sub compout {
|
'ca' => 'Cancel', |
'ca' => 'Cancel', |
'ma' => 'Mail'); |
'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"); |
my $crithelp = Apache::loncommon::help_open_topic("Course_Critical_Message"); |
$dispcrit= |
$dispcrit= |
'<p><label><input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').'</label> ' . $crithelp . |
'<p><label><input type="checkbox" name="critmsg" /> '.&mt('Send as critical message').'</label> ' . $crithelp . |
Line 1331 $dispcrit
|
Line 1413 $dispcrit
|
ENDUPLOAD |
ENDUPLOAD |
} |
} |
if ($broadcast eq 'group') { |
if ($broadcast eq 'group') { |
&discourse; |
&discourse($r); |
} |
} |
$r->print('</form>'. |
$r->print('</form>'. |
&Apache::lonfeedback::generate_preview_button('compemail','message'). |
&Apache::lonfeedback::generate_preview_button('compemail','message'). |
Line 1344 sub retrieve_instructor_comments {
|
Line 1426 sub retrieve_instructor_comments {
|
my ($user,$domain)=@_; |
my ($user,$domain)=@_; |
my $target=$env{'form.grade_target'}; |
my $target=$env{'form.grade_target'}; |
if (! $env{'request.course.id'}) { return; } |
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; |
return; |
} |
} |
my %records=&Apache::lonnet::dump('nohist_email', |
my %records=&Apache::lonnet::dump('nohist_email', |
Line 1369 sub disfacetoface {
|
Line 1453 sub disfacetoface {
|
my ($r,$user,$domain)=@_; |
my ($r,$user,$domain)=@_; |
my $target=$env{'form.grade_target'}; |
my $target=$env{'form.grade_target'}; |
unless ($env{'request.course.id'}) { return; } |
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; |
return; |
} |
} |
my %records=&Apache::lonnet::dump('nohist_email', |
my %records=&Apache::lonnet::dump('nohist_email', |
Line 1423 $content{'sendername'}.'@'.
|
Line 1510 $content{'sendername'}.'@'.
|
|
|
sub facetoface { |
sub facetoface { |
my ($r,$stage)=@_; |
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; |
return; |
} |
} |
&printheader($r, |
&printheader($r, |
Line 1466 ENDTREC
|
Line 1556 ENDTREC
|
($env{'form.recdomain'}) && ($env{'form.recuname'})) { |
($env{'form.recdomain'}) && ($env{'form.recuname'})) { |
chomp($env{'form.newrecord'}); |
chomp($env{'form.newrecord'}); |
if ($env{'form.newrecord'}) { |
if ($env{'form.newrecord'}) { |
my $recordtxt = $env{'form.newrecord'}; |
&Apache::lonmsg::store_instructor_comment($env{'form.newrecord'}, |
&user_normal_msg_raw( |
$env{'form.recuname'}, |
$env{'course.'.$env{'request.course.id'}.'.num'}, |
$env{'form.recdomain'}); |
$env{'course.'.$env{'request.course.id'}.'.domain'}, |
|
&mt('Record'). |
|
' ['.$env{'form.recuname'}.':'.$env{'form.recdomain'}.']', |
|
$recordtxt); |
|
} |
} |
$r->print('<h3>'.&Apache::loncommon::plainname($env{'form.recuname'}, |
$r->print('<h3>'.&Apache::loncommon::plainname($env{'form.recuname'}, |
$env{'form.recdomain'}).'</h3>'); |
$env{'form.recdomain'}).'</h3>'); |
Line 1498 ENDBFORM
|
Line 1584 ENDBFORM
|
sub examblock { |
sub examblock { |
my ($r,$action) = @_; |
my ($r,$action) = @_; |
unless ($env{'request.course.id'}) { return;} |
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( |
my %lt=&Apache::lonlocal::texthash( |
'comb' => 'Communication Blocking', |
'comb' => 'Communication Blocking', |
'cbds' => 'Communication blocking during scheduled exams', |
'cbds' => 'Communication blocking during scheduled exams', |
Line 1989 sub displayresource {
|
Line 2080 sub displayresource {
|
$content{'sendername'}, |
$content{'sendername'}, |
$content{'senderdomain'}, |
$content{'senderdomain'}, |
$content{'courseid'}); |
$content{'courseid'}); |
} else { |
} elsif ($env{'user.adv'}) { |
return $content{'citation'}; |
return $content{'citation'}; |
} |
} |
|
return ''; |
} |
} |
|
|
# ================================================================== The Header |
# ================================================================== The Header |
Line 2114 sub sendoffmail {
|
Line 2206 sub sendoffmail {
|
my $msgtype; |
my $msgtype; |
my %sentmessage; |
my %sentmessage; |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'}) |
|
)) { |
$savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
$savemsg=&Apache::lonfeedback::clear_out_html($env{'form.message'},1); |
$msgtype = 'critical'; |
$msgtype = 'critical'; |
} else { |
} else { |
Line 2127 sub sendoffmail {
|
Line 2222 sub sendoffmail {
|
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
if ($toaddr{$_}) { $msgtxt.='<hr />'.$toaddr{$_}; } |
my $thismsg; |
my $thismsg; |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
if ((($env{'form.critmsg'}) || ($env{'form.sendbck'})) && |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}))) { |
(&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
|
|| &Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
|
'/'.$env{'request.course.sec'}))) { |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
$r->print(&mt('Sending critical message').' '.$recuname.'@'.$recdomain.': '); |
$thismsg=&user_crit_msg($recuname,$recdomain, |
$thismsg=&user_crit_msg($recuname,$recdomain, |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
&Apache::lonfeedback::clear_out_html($env{'form.subject'}), |
Line 2326 sub handler {
|
Line 2423 sub handler {
|
&compout($r,$env{'form.forward'},undef,undef,undef,$folder); |
&compout($r,$env{'form.forward'},undef,undef,undef,$folder); |
} elsif ($env{'form.markdel'}) { |
} elsif ($env{'form.markdel'}) { |
&printheader($r,'','Deleted Message'); |
&printheader($r,'','Deleted Message'); |
&statuschange($env{'form.markdel'},'deleted',$folder); |
my ($result,$msg) = |
|
&statuschange($env{'form.markdel'},'deleted',$folder); |
|
if (!$result) { |
|
$r->print('<p style="color: red">Failed to delete the message.</p>'. |
|
'<p style="color: red">'.$msg."</p>\n"); |
|
} |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |
} elsif ($env{'form.markedmove'}) { |
} elsif ($env{'form.markedmove'}) { |
my $total=0; |
my ($total,$failed,@failed_msg)=(0,0); |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.delmark_(.*)$/) { |
if ($key=~/^form\.delmark_(.*)$/) { |
&movemsg(&Apache::lonnet::unescape($1),$folder, |
my ($result,$msg) = |
$env{'form.movetofolder'}); |
&movemsg(&Apache::lonnet::unescape($1),$folder, |
$total++; |
$env{'form.movetofolder'}); |
|
if ($result) { |
|
$total++; |
|
} else { |
|
$failed++; |
|
push(@failed_msg,$msg); |
|
} |
} |
} |
} |
} |
&printheader($r,'','Moved Messages'); |
&printheader($r,'','Moved Messages'); |
|
if ($failed) { |
|
$r->print('<p style="color: red;"> |
|
Failed to move '.$failed.' message(s)</p>'); |
|
$r->print('<p style="color: red;">'. |
|
join("</p>\n<p style=\"color: red;\">",@failed_msg). |
|
"</p>\n"); |
|
} |
$r->print('Moved '.$total.' message(s)<p>'); |
$r->print('Moved '.$total.' message(s)<p>'); |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |
} elsif ($env{'form.markeddel'}) { |
} elsif ($env{'form.markeddel'}) { |
my $total=0; |
my ($total,$failed,@failed_msg)=(0,0); |
foreach (keys %env) { |
foreach my $key (keys(%env)) { |
if ($_=~/^form\.delmark_(.*)$/) { |
if ($key=~/^form\.delmark_(.*)$/) { |
&statuschange(&Apache::lonnet::unescape($1),'deleted',$folder); |
my ($result,$msg) = |
$total++; |
&statuschange(&Apache::lonnet::unescape($1),'deleted', |
|
$folder); |
|
if ($result) { |
|
$total++; |
|
} else { |
|
$failed++; |
|
push(@failed_msg,$msg); |
|
} |
} |
} |
} |
} |
&printheader($r,'','Deleted Messages'); |
&printheader($r,'','Deleted Messages'); |
|
if ($failed) { |
|
$r->print('<p style="color: red;"> |
|
Failed to delete '.$failed.' message(s)</p>'); |
|
$r->print('<p style="color: red;">'. |
|
join("</p>\n<p style=\"color: red;\">",@failed_msg). |
|
"</p>\n"); |
|
} |
$r->print('Deleted '.$total.' message(s)<p>'); |
$r->print('Deleted '.$total.' message(s)<p>'); |
&Apache::loncommunicate::menu($r); |
&Apache::loncommunicate::menu($r); |
&disall($r,($folder?$folder:$dismode)); |
&disall($r,($folder?$folder:$dismode)); |