version 1.106, 2004/09/10 06:38:24
|
version 1.112, 2004/11/09 16:29:32
|
Line 117 use Apache::loncommunicate;
|
Line 117 use Apache::loncommunicate;
|
|
|
# Querystring component with sorting type |
# Querystring component with sorting type |
my $sqs; |
my $sqs; |
|
my $startdis; |
|
my $interdis; |
|
|
# ===================================================================== Package |
# ===================================================================== Package |
|
|
sub packagemsg { |
sub packagemsg { |
my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_; |
my ($subject,$message,$citation,$baseurl,$attachmenturl, |
|
$recuser,$recdomain)=@_; |
$message =&HTML::Entities::encode($message,'<>&"'); |
$message =&HTML::Entities::encode($message,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$citation=&HTML::Entities::encode($citation,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
$subject =&HTML::Entities::encode($subject,'<>&"'); |
Line 156 sub packagemsg {
|
Line 159 sub packagemsg {
|
'<role>'.$ENV{'request.role'}.'</role>'. |
'<role>'.$ENV{'request.role'}.'</role>'. |
'<resource>'.$ENV{'request.filename'}.'</resource>'. |
'<resource>'.$ENV{'request.filename'}.'</resource>'. |
'<msgid>'.$msgid.'</msgid>'. |
'<msgid>'.$msgid.'</msgid>'. |
|
'<recuser>'.$recuser.'</recuser>'. |
|
'<recdomain>'.$recdomain.'</recdomain>'. |
'<message>'.$message.'</message>'; |
'<message>'.$message.'</message>'; |
if (defined($citation)) { |
if (defined($citation)) { |
$result.='<citation>'.$citation.'</citation>'; |
$result.='<citation>'.$citation.'</citation>'; |
Line 447 sub user_normal_msg_raw {
|
Line 452 sub user_normal_msg_raw {
|
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,$message)=&packagemsg($subject,$message,$citation,$baseurl, |
$attachmenturl); |
$attachmenturl,$user,$domain); |
|
# 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($message),$homeserver); |
|
# Save new message received time |
&Apache::lonnet::put |
&Apache::lonnet::put |
('email_status',{'recnewemail'=>time},$domain,$user); |
('email_status',{'recnewemail'=>time},$domain,$user); |
|
# Into sent-mail folder |
|
$status.=' '.&Apache::lonnet::critical( |
|
'put:'.$ENV{'user.domain'}.':'.$ENV{'user.name'}. |
|
':nohist_email_sent:'. |
|
&Apache::lonnet::escape($msgid).'='. |
|
&Apache::lonnet::escape($message),$ENV{'user.home'}); |
} else { |
} else { |
$status='no_host'; |
$status='no_host'; |
} |
} |
Line 507 sub folderlist {
|
Line 520 sub folderlist {
|
my @allfolders=&Apache::lonnet::getkeys('email_folders'); |
my @allfolders=&Apache::lonnet::getkeys('email_folders'); |
if ($allfolders[0]=~/^error:/) { @allfolders=(); } |
if ($allfolders[0]=~/^error:/) { @allfolders=(); } |
return '<form method="post" action="/adm/email">'. |
return '<form method="post" action="/adm/email">'. |
'<input type="submit" value="'.&mt('View Folder').'" />'. |
&mt('Folder').': '. |
&Apache::loncommon::select_form($folder,'folder', |
&Apache::loncommon::select_form($folder,'folder', |
('' => &mt('INBOX'),'trash' => &mt('TRASH'), |
('' => &mt('INBOX'),'trash' => &mt('TRASH'), |
'sent' => &mt('Sent Messages'), |
'sent' => &mt('Sent Messages'), |
map { $_ => $_ } @allfolders)). |
map { $_ => $_ } @allfolders)). |
'<a href="/adm/email?critical=display">'. |
' '.&mt('Show').' '. |
|
&Apache::loncommon::select_form($interdis,'interdis', |
|
(' 10' => '10', ' 20' => '20', ' 50' => '50', '100' => '100', '200' => '200')). |
|
'<input type="submit" value="'.&mt('View Folder').'" /><br />'. |
|
'<input type="submit" name="firstview" value="'.&mt('First').'" />'. |
|
'<input type="submit" name="prevview" value="'.&mt('Previous').'" />'. |
|
'<input type="text" size="5" name="startdis" value="'.$startdis.'" />'. |
|
'<input type="submit" name="nextview" value="'.&mt('Next').'" />'. |
|
'<input type="submit" name="lastview" value="'.&mt('Last').'" />'. |
|
'<a href="/adm/email?critical=display'.$sqs.'">'. |
&mt('View Critical Messages').'</a>'. |
&mt('View Critical Messages').'</a>'. |
'</form>'; |
'</form>'; |
} |
} |
|
|
# =============================================================== Folder suffix |
# =============================================================== Folder suffix |
|
|
sub foldersuffix { |
sub foldersuffix { |
Line 552 sub makefolder {
|
Line 575 sub makefolder {
|
|
|
sub movemsg { |
sub movemsg { |
my ($msgid,$srcfolder,$trgfolder)=@_; |
my ($msgid,$srcfolder,$trgfolder)=@_; |
|
my $unmsgid=&Apache::lonnet::unescape($msgid); |
my $srcsuffix=&foldersuffix($srcfolder); |
my $srcsuffix=&foldersuffix($srcfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
my $trgsuffix=&foldersuffix($trgfolder); |
my $srcstatus=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]); |
|
my $trgstatus=$srcstatus; |
# Copy message |
if ($trgstatus eq 'deleted') { $trgstatus='read'; } |
my %message=&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid]); |
&Apache::lonnet::put( |
&Apache::lonnet::put('nohist_email'.$trgsuffix,{$msgid => $message{$msgid}}); |
'nohist_email'.$trgsuffix,{$msgid => |
|
&Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid])}); |
# Copy status |
&statuschange($msgid,$trgstatus,$trgfolder); |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]); |
|
&Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}}); |
|
# See if was deleted -> becomes "read" in trash |
|
my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder); |
|
if ($currentstatus eq 'deleted') { |
|
&statuschange($msgid,'read',$trgfolder); |
|
} |
|
# Delete orginals |
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); |
&Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]); |
&Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]); |
&Apache::lonnet::del('email_status'.$srcsuffix,[$unmsgid]); |
} |
} |
|
|
# ======================================================= Display a course list |
# ======================================================= Display a course list |
|
|
sub discourse { |
sub discourse { |
my $r=shift; |
my $r=shift; |
my %courselist=&Apache::lonnet::dump( |
my $classlist = &Apache::loncoursedata::get_classlist(); |
'classlist', |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}); |
|
my $now=time; |
my $now=time; |
my %lt=&Apache::lonlocal::texthash('cfa' => 'Check for All', |
my %lt=&Apache::lonlocal::texthash('cfa' => 'Check for All', |
'cfs' => 'Check for Section/Group', |
'cfs' => 'Check for Section/Group', |
Line 614 sub discourse {
|
Line 642 sub discourse {
|
<input type="button" onClick="uncheckall()" value="$lt{'cfn'}" /> |
<input type="button" onClick="uncheckall()" value="$lt{'cfn'}" /> |
<p> |
<p> |
ENDDISHEADER |
ENDDISHEADER |
my %coursepersonnel= |
my %coursepersonnel=&Apache::lonnet::get_course_adv_roles(); |
&Apache::lonnet::get_course_adv_roles(); |
$r->print('<table>'); |
foreach my $role (sort keys %coursepersonnel) { |
foreach my $role (sort keys %coursepersonnel) { |
foreach (split(/\,/,$coursepersonnel{$role})) { |
foreach (split(/\,/,$coursepersonnel{$role})) { |
my ($puname,$pudom)=split(/\:/,$_); |
my ($puname,$pudom)=split(/\:/,$_); |
$r->print( |
$r->print('<tr><td><label>'. |
'<br /><input type="checkbox" name="send_to_&&&&&&_'. |
'<input type="checkbox" name="send_to_&&&&&&_'. |
$puname.':'.$pudom.'" /> '. |
$puname.':'.$pudom.'" /> '. |
&Apache::loncommon::plainname($puname, |
&Apache::loncommon::plainname($puname,$pudom). |
$pudom).' ('.$_.'), <i>'.$role.'</i>'); |
'</label></td>'. |
} |
'<td>('.$_.'),</td><td><i>'.$role.'</i></td></tr>'); |
|
} |
} |
} |
|
$r->print('</table><table>'); |
foreach (sort keys %courselist) { |
while (my ($student,$info) = each(%$classlist)) { |
my ($end,$start)=split(/\:/,$courselist{$_}); |
my ($sname,$sdom,$status,$fullname,$section) = |
my $active=1; |
(@{$info}[&Apache::loncoursedata::CL_SNAME(), |
if (($end) && ($now>$end)) { $active=0; } |
&Apache::loncoursedata::CL_SDOM(), |
if ($active) { |
&Apache::loncoursedata::CL_STATUS(), |
my ($sname,$sdom)=split(/\:/,$_); |
&Apache::loncoursedata::CL_FULLNAME(), |
my %reply=&Apache::lonnet::get('environment', |
&Apache::loncoursedata::CL_SECTION()]); |
['firstname','middlename','lastname','generation'], |
next if ($status ne 'Active'); |
$sdom,$sname); |
my $key = 'send_to_&&&'.$section.'&&&'.$student; |
my $section=&Apache::lonnet::usection |
if (! defined($fullname) || $fullname eq '') { $fullname = $sname; } |
($sdom,$sname,$ENV{'request.course.id'}); |
$r->print('<tr><td><label>'. |
$r->print( |
qq{<input type="checkbox" name="$key">}.(' 'x2). |
'<br><input type=checkbox name="send_to_&&&'.$section.'&&&_'.$_.'"> '. |
$fullname.'</td><td>'.$sname.'@'.$sdom.'</td><td>'.$section. |
$reply{'firstname'}.' '. |
'</td></tr>'); |
$reply{'middlename'}.' '. |
|
$reply{'lastname'}.' '. |
|
$reply{'generation'}. |
|
' ('.$_.') '.$section); |
|
} |
|
} |
} |
|
$r->print('</table>'); |
} |
} |
|
|
# ==================================================== Display Critical Message |
# ==================================================== Display Critical Message |
Line 686 $content{'sendername'}.'@'.
|
Line 711 $content{'sendername'}.'@'.
|
$r->print($header); |
$r->print($header); |
} |
} |
$r->print($result); |
$r->print($result); |
$r->print('<input type=hidden name="displayedcrit" value="true" /></form>'); |
$r->print('<input type="hidden" name="displayedcrit" value="true" /></form>'); |
} |
} |
|
|
sub sortedmessages { |
sub sortedmessages { |
Line 698 sub sortedmessages {
|
Line 723 sub sortedmessages {
|
foreach (@messages) { |
foreach (@messages) { |
my $msgid=&Apache::lonnet::escape($_); |
my $msgid=&Apache::lonnet::escape($_); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status)= |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status)= |
&Apache::lonmsg::unpackmsgid($msgid); |
&Apache::lonmsg::unpackmsgid($msgid,$folder); |
my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status, |
my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status, |
$msgid); |
$msgid); |
# Check whether message was sent during blocking period. |
# Check whether message was sent during blocking period. |
Line 745 sub sortedmessages {
|
Line 770 sub sortedmessages {
|
return @temp; |
return @temp; |
} |
} |
|
|
|
# ======================================================== Display new messages |
|
|
|
|
|
sub disnew { |
|
my $r=shift; |
|
my %lt=&Apache::lonlocal::texthash( |
|
'nm' => 'New Messages', |
|
'su' => 'Subject', |
|
'da' => 'Date', |
|
'us' => 'Username', |
|
'op' => 'Open', |
|
'do' => 'Domain' |
|
); |
|
my @msgids = sort split(/\&/,&Apache::lonnet::reply |
|
('keys:'.$ENV{'user.domain'}.':'. |
|
$ENV{'user.name'}.':nohist_email', |
|
$ENV{'user.home'})); |
|
my @newmsgs; |
|
my %setters = (); |
|
my $startblock = 0; |
|
my $endblock = 0; |
|
my %blocked = (); |
|
my $numblocked = 0; |
|
# Check for blocking of display because of scheduled online exams. |
|
&blockcheck(\%setters,\$startblock,\$endblock); |
|
foreach (@msgids) { |
|
my ($sendtime,$shortsubj,$fromname,$fromdom,$status)= |
|
&Apache::lonmsg::unpackmsgid($_); |
|
if (defined($sendtime) && $sendtime!~/error/) { |
|
my $numsendtime = $sendtime; |
|
$sendtime = &Apache::lonlocal::locallocaltime($sendtime); |
|
if ($status eq 'new') { |
|
if ($numsendtime >= $startblock && ($numsendtime <= $endblock && $endblock > 0) ) { |
|
$blocked{$_} = 'ON'; |
|
$numblocked ++; |
|
} else { |
|
push @newmsgs, { |
|
msgid => $_, |
|
sendtime => $sendtime, |
|
shortsub => &Apache::lonnet::unescape($shortsubj), |
|
from => $fromname, |
|
fromdom => $fromdom |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($#newmsgs >= 0) { |
|
$r->print(<<TABLEHEAD); |
|
<h2>$lt{'nm'}</h2> |
|
<table border=2><tr><th> </th> |
|
<th>$lt{'da'}</th><th>$lt{'us'}</th><th>$lt{'do'}</th><th>$lt{'su'}</th></tr> |
|
TABLEHEAD |
|
foreach my $msg (@newmsgs) { |
|
$r->print(<<"ENDLINK"); |
|
<tr bgcolor="#FFBB77"> |
|
<td><a href="/adm/email?display=$msg->{'msgid'}">$lt{'op'}</a></td> |
|
ENDLINK |
|
foreach ('sendtime','from','fromdom','shortsub') { |
|
$r->print("<td>$msg->{$_}</td>"); |
|
} |
|
$r->print("</td></tr>"); |
|
} |
|
$r->print('</table></body></html>'); |
|
} elsif ($numblocked == 0) { |
|
$r->print("<h3>".&mt('You have no unread messages')."</h3>"); |
|
} |
|
if ($numblocked > 0) { |
|
my $beginblock = &Apache::lonlocal::locallocaltime($startblock); |
|
my $finishblock = &Apache::lonlocal::locallocaltime($endblock); |
|
if ($numblocked == 1) { |
|
$r->print("<h3>".&mt('You have').' '.$numblocked.' '.&mt('blocked unread message').".</h3>"); |
|
$r->print(&mt('This message is not viewable because').' '); |
|
} else { |
|
$r->print("<h3>".&mt('You have').' '.$numblocked.' '.&mt('blocked unread messages').".</h3>"); |
|
$r->print(&mt('These').' '.$numblocked.' '.&mt('messages are not viewable because ')); |
|
} |
|
$r->print( |
|
&mt('display of LON-CAPA messages sent to you by other students between').' '.$beginblock.' '.&mt('and').' '.$finishblock.' '.&mt('is currently being blocked because of online exams').'.'); |
|
&build_block_table($r,$startblock,$endblock,\%setters); |
|
} |
|
} |
|
|
|
|
# ======================================================== Display all messages |
# ======================================================== Display all messages |
|
|
sub disall { |
sub disall { |
Line 776 sub disall {
|
Line 885 sub disall {
|
} |
} |
</script> |
</script> |
ENDDISHEADER |
ENDDISHEADER |
|
my $fsqs='&folder='.$folder; |
|
my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder); |
|
my $totalnumber=$#temp+1; |
|
my $number=int($totalnumber/$interdis)+1; |
|
my $firstdis=$interdis*$startdis; |
|
if ($firstdis>$#temp) { $firstdis=$#temp-$interdis+1; } |
|
my $lastdis=$firstdis+$interdis-1; |
|
if ($lastdis>$#temp) { $lastdis=$#temp; } |
$r->print('<h2>'.&mt('Display All Messages').'</h2>'. |
$r->print('<h2>'.&mt('Display All Messages').'</h2>'. |
&folderlist($folder). |
&folderlist($folder). |
'<form method="post" name="disall" action="/adm/email">'. |
'<form method="post" name="disall" action="/adm/email">'. |
'<table border=2><tr><th colspan="3"> </th><th>'); |
'<table border=2><tr><th colspan="3"> </th><th>'); |
if ($ENV{'form.sortedby'} eq "revdate") { |
if ($ENV{'form.sortedby'} eq "revdate") { |
$r->print('<a href = "?sortedby=date">'.&mt('Date').'</a></th>'); |
$r->print('<a href = "?sortedby=date'.$fsqs.'">'.&mt('Date').'</a></th>'); |
} else { |
} else { |
$r->print('<a href = "?sortedby=revdate">'.&mt('Date').'</a></th>'); |
$r->print('<a href = "?sortedby=revdate'.$fsqs.'">'.&mt('Date').'</a></th>'); |
} |
} |
$r->print('<th>'); |
$r->print('<th>'); |
if ($ENV{'form.sortedby'} eq "revuser") { |
if ($ENV{'form.sortedby'} eq "revuser") { |
$r->print('<a href = "?sortedby=user">'.&mt('Username').'</a>'); |
$r->print('<a href = "?sortedby=user'.$fsqs.'">'.&mt('Username').'</a>'); |
} else { |
} else { |
$r->print('<a href = "?sortedby=revuser">'.&mt('Username').'</a>'); |
$r->print('<a href = "?sortedby=revuser'.$fsqs.'">'.&mt('Username').'</a>'); |
} |
} |
$r->print('</th><th>'); |
$r->print('</th><th>'); |
if ($ENV{'form.sortedby'} eq "revdomain") { |
if ($ENV{'form.sortedby'} eq "revdomain") { |
$r->print('<a href = "?sortedby=domain">'.&mt('Domain').'</a>'); |
$r->print('<a href = "?sortedby=domain'.$fsqs.'">'.&mt('Domain').'</a>'); |
} else { |
} else { |
$r->print('<a href = "?sortedby=revdomain">'.&mt('Domain').'</a>'); |
$r->print('<a href = "?sortedby=revdomain'.$fsqs.'">'.&mt('Domain').'</a>'); |
} |
} |
$r->print('</th><th>'); |
$r->print('</th><th>'); |
if ($ENV{'form.sortedby'} eq "revsubject") { |
if ($ENV{'form.sortedby'} eq "revsubject") { |
$r->print('<a href = "?sortedby=subject">'.&mt('Subject').'</a>'); |
$r->print('<a href = "?sortedby=subject'.$fsqs.'">'.&mt('Subject').'</a>'); |
} else { |
} else { |
$r->print('<a href = "?sortedby=revsubject">'.&mt('Subject').'</a>'); |
$r->print('<a href = "?sortedby=revsubject'.$fsqs.'">'.&mt('Subject').'</a>'); |
} |
} |
$r->print('</th><th>'); |
$r->print('</th><th>'); |
if ($ENV{'form.sortedby'} eq "revstatus") { |
if ($ENV{'form.sortedby'} eq "revstatus") { |
$r->print('<a href = "?sortedby=status">'.&mt('Status').'</th>'); |
$r->print('<a href = "?sortedby=status'.$fsqs.'">'.&mt('Status').'</th>'); |
} else { |
} else { |
$r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>'); |
$r->print('<a href = "?sortedby=revstatus'.$fsqs.'">'.&mt('Status').'</th>'); |
} |
} |
$r->print('</tr>'); |
$r->print('</tr>'); |
my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder); |
for (my $n=$firstdis;$n<=$lastdis;$n++) { |
foreach (@temp){ |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]}; |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_; |
|
if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) { |
if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) { |
if ($status eq 'new') { |
if ($status eq 'new') { |
$r->print('<tr bgcolor="#FFBB77">'); |
$r->print('<tr bgcolor="#FFBB77">'); |
Line 833 ENDDISHEADER
|
Line 949 ENDDISHEADER
|
$status.'</td></tr>'); |
$status.'</td></tr>'); |
} elsif ($status eq 'deleted') { |
} elsif ($status eq 'deleted') { |
# purge |
# purge |
&movemsg($origID,$folder,'trash'); |
&movemsg(&Apache::lonnet::unescape($origID),$folder,'trash'); |
} |
} |
} |
} |
$r->print('</table><p>'. |
$r->print('</table><p>'. |
Line 864 $r->print('<p><input type="submit" name=
|
Line 980 $r->print('<p><input type="submit" name=
|
# ============================================================== Compose output |
# ============================================================== Compose output |
|
|
sub compout { |
sub compout { |
my ($r,$forwarding,$replying,$broadcast,$replycrit)=@_; |
my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder)=@_; |
|
|
if ($broadcast eq 'individual') { |
if ($broadcast eq 'individual') { |
&printheader($r,'/adm/email?compose=individual', |
&printheader($r,'/adm/email?compose=individual', |
Line 916 sub compout {
|
Line 1032 sub compout {
|
my $defdom=$ENV{'user.domain'}; |
my $defdom=$ENV{'user.domain'}; |
if ($forwarding) { |
if ($forwarding) { |
%message=&Apache::lonnet::get('nohist_email',[$forwarding]); |
%message=&Apache::lonnet::get('nohist_email',[$forwarding]); |
%content=&unpackagemsg($message{$forwarding}); |
%content=&unpackagemsg($message{$forwarding},$folder); |
$dispcrit.='<input type="hidden" name="forwid" value="'. |
$dispcrit.='<input type="hidden" name="forwid" value="'. |
$forwarding.'" />'; |
$forwarding.'" />'; |
$func=&mt('Forward'); |
$func=&mt('Forward'); |
Line 927 sub compout {
|
Line 1043 sub compout {
|
} |
} |
if ($replying) { |
if ($replying) { |
%message=&Apache::lonnet::get('nohist_email',[$replying]); |
%message=&Apache::lonnet::get('nohist_email',[$replying]); |
%content=&unpackagemsg($message{$replying}); |
%content=&unpackagemsg($message{$replying},$folder); |
$dispcrit.='<input type="hidden" name="replyid" value="'. |
$dispcrit.='<input type="hidden" name="replyid" value="'. |
$replying.'" />'; |
$replying.'" />'; |
$func=&mt('Replying to'); |
$func=&mt('Send Reply to'); |
|
|
$dissub=&mt('Reply').': '.$content{'subject'}; |
$dissub=&mt('Reply').': '.$content{'subject'}; |
$dismsg='> '.$content{'message'}; |
$dismsg='> '.$content{'message'}; |
Line 938 sub compout {
|
Line 1054 sub compout {
|
$dismsg=~s/\f/\n/g; |
$dismsg=~s/\f/\n/g; |
$dismsg=~s/\n+/\n\> /g; |
$dismsg=~s/\n+/\n\> /g; |
} |
} |
|
my $citation=&displayresource(%content); |
if ($ENV{'form.recdom'}) { $defdom=$ENV{'form.recdom'}; } |
if ($ENV{'form.recdom'}) { $defdom=$ENV{'form.recdom'}; } |
$r->print( |
$r->print( |
'<form action="/adm/email" name="compemail" method="post"'. |
'<form action="/adm/email" name="compemail" method="post"'. |
Line 978 $latexHelp
|
Line 1095 $latexHelp
|
</textarea></p><br /> |
</textarea></p><br /> |
$dispcrit |
$dispcrit |
<input type="submit" name="send" value="$func $lt{'ma'}" /> |
<input type="submit" name="send" value="$func $lt{'ma'}" /> |
<input type="submit" name="cancel" value="$lt{'ca'}" /> |
<input type="submit" name="cancel" value="$lt{'ca'}" /><hr /> |
|
$citation |
ENDCOMP |
ENDCOMP |
} else { # $broadcast is 'upload' |
} else { # $broadcast is 'upload' |
$r->print(<<ENDUPLOAD); |
$r->print(<<ENDUPLOAD); |
Line 1538 sub displaymessage {
|
Line 1656 sub displaymessage {
|
my $numblocked = 0; |
my $numblocked = 0; |
# info to generate "next" and "previous" buttons and check if message is blocked |
# info to generate "next" and "previous" buttons and check if message is blocked |
&blockcheck(\%setters,\$startblock,\$endblock); |
&blockcheck(\%setters,\$startblock,\$endblock); |
my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked); |
my @messages=&sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder); |
if ( $blocked{$msgid} eq 'ON' ) { |
if ( $blocked{$msgid} eq 'ON' ) { |
&printheader($r,'/adm/email',&mt('Display a Message')); |
&printheader($r,'/adm/email',&mt('Display a Message')); |
$r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.')); |
$r->print(&mt('You attempted to display a message that is currently blocked because you are enrolled in one or more courses for which there is an ongoing online exam.')); |
&build_block_table($r,$startblock,$endblock,\%setters); |
&build_block_table($r,$startblock,$endblock,\%setters); |
return; |
return; |
} |
} |
&statuschange($msgid,'read'); |
&statuschange($msgid,'read',$folder); |
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]); |
my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]); |
my %content=&unpackagemsg($message{$msgid}); |
my %content=&unpackagemsg($message{$msgid}); |
|
|
my $counter=0; |
my $counter=0; |
$r->print('<pre>'); |
$r->print('<pre>'); |
my $escmsgid=&Apache::lonnet::escape($msgid); |
my $escmsgid=&Apache::lonnet::escape($msgid); |
Line 1573 sub displaymessage {
|
Line 1692 sub displaymessage {
|
'<td><a href="/adm/email?markdel='.&Apache::lonnet::escape($msgid).$sqs. |
'<td><a href="/adm/email?markdel='.&Apache::lonnet::escape($msgid).$sqs. |
'"><b>Delete</b></a></td>'. |
'"><b>Delete</b></a></td>'. |
'<td><a href="/adm/email?sortedby='.$ENV{'form.sortedby'}. |
'<td><a href="/adm/email?sortedby='.$ENV{'form.sortedby'}. |
|
'&folder='.&Apache::lonnet::escape($folder). |
'"><b>'.&mt('Display all Messages').'</b></a></td>'); |
'"><b>'.&mt('Display all Messages').'</b></a></td>'); |
if ($counter > 0){ |
if ($counter > 0){ |
$r->print('<td><a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs. |
$r->print('<td><a href="/adm/email?display='.$messages[$counter-1]->[5].$sqs. |
Line 1584 sub displaymessage {
|
Line 1704 sub displaymessage {
|
} |
} |
$r->print('</tr></table>'); |
$r->print('</tr></table>'); |
$r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}. |
$r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}. |
'<br /><b>'.&mt('From').':</b> '. |
($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '. |
&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::aboutmewrapper( |
&Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}), |
&Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}), |
$content{'sendername'},$content{'senderdomain'}).' ('. |
$content{'sendername'},$content{'senderdomain'}).' ('. |
$content{'sendername'}.' at '. |
$content{'sendername'}.' at '. |
$content{'senderdomain'}.') '. |
$content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '. |
|
&Apache::loncommon::aboutmewrapper( |
|
&Apache::loncommon::plainname($content{'recuser'},$content{'recdomain'}), |
|
$content{'recuser'},$content{'recdomain'}).' ('. |
|
$content{'recuser'}.' at '. |
|
$content{'recdomain'}.') '). |
($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}. |
($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}. |
($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). |
($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):''). |
'<br /><b>'.&mt('Time').':</b> '.$content{'time'}. |
'<br /><b>'.&mt('Time').':</b> '.$content{'time'}. |
'<p><pre>'. |
'<p><pre>'. |
&Apache::lontexconvert::msgtexconverted($content{'message'},1). |
&Apache::lontexconvert::msgtexconverted($content{'message'},1). |
'</pre><hr />'.$content{'citation'}.'</p>'); |
'</pre><hr />'.&displayresource(%content).'</p>'); |
return; |
return; |
} |
} |
|
|
|
# =========================================================== Show the citation |
|
|
|
sub displayresource { |
|
my %content=@_; |
|
# |
|
# If the recipient is in the same course that the message was sent from and |
|
# has sufficient privileges, show "all details," else show citation |
|
# |
|
if (($ENV{'request.course.id'} eq $content{'courseid'}) |
|
&& (&Apache::lonnet::allowed('vgr',$content{'courseid'}))) { |
|
my $symb=&Apache::lonnet::symbread($content{'baseurl'}); |
|
# Could not get a symb, give up |
|
unless ($symb) { return $content{'citation'}; } |
|
# Have a symb, can render |
|
return '<h2>'.&mt('Current attempts of student (if applicable)').'</h2>'. |
|
&Apache::loncommon::get_previous_attempt($symb, |
|
$content{'sendername'}, |
|
$content{'senderdomain'}, |
|
$content{'courseid'}). |
|
'<hr /><h2>'.&mt('Current screen output (if applicable)').'</h2>'. |
|
&Apache::loncommon::get_student_view($symb, |
|
$content{'sendername'}, |
|
$content{'senderdomain'}, |
|
$content{'courseid'}). |
|
'<h2>'.&mt('Correct Answer(s) (if applicable)').'</h2>'. |
|
&Apache::loncommon::get_student_answers($symb, |
|
$content{'sendername'}, |
|
$content{'senderdomain'}, |
|
$content{'courseid'}); |
|
} else { |
|
return $content{'citation'}; |
|
} |
|
} |
|
|
# ================================================================== The Header |
# ================================================================== The Header |
|
|
sub header { |
sub header { |
Line 1641 sub handler {
|
Line 1800 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['display','replyto','forward','markread','markdel','markunread', |
['display','replyto','forward','markread','markdel','markunread', |
'sendreply','compose','sendmail','critical','recname','recdom', |
'sendreply','compose','sendmail','critical','recname','recdom', |
'recordftf','sortedby','block','folder']); |
'recordftf','sortedby','block','folder','startdis','interdis']); |
$sqs='&sortedby='.$ENV{'form.sortedby'}; |
$sqs='&sortedby='.$ENV{'form.sortedby'}. |
|
'&startdis='.$ENV{'form.startdis'}. |
|
'&interdis='.$ENV{'form.interdis'}; |
|
|
# ------------------------------------------------------ They checked for email |
# ------------------------------------------------------ They checked for email |
unless ($ENV{'form.block'}) { |
unless ($ENV{'form.block'}) { |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
&Apache::lonnet::put('email_status',{'recnewemail'=>0}); |
Line 1665 sub handler {
|
Line 1827 sub handler {
|
$sqs='&folder='.&Apache::lonnet::escape($folder); |
$sqs='&folder='.&Apache::lonnet::escape($folder); |
} |
} |
|
|
|
# --------------------------------------------------------------------- Display |
|
|
|
$startdis=$ENV{'form.startdis'}; |
|
unless ($startdis) { $startdis=0; } |
|
$interdis=$ENV{'form.interdis'}; |
|
unless ($interdis) { $interdis=20; } |
|
|
# --------------------------------------------------------------- Render Output |
# --------------------------------------------------------------- Render Output |
|
|
if ($ENV{'form.display'}) { |
if ($ENV{'form.display'}) { |
&displaymessage($r,$ENV{'form.display'},$folder); |
&displaymessage($r,$ENV{'form.display'},$folder); |
} elsif ($ENV{'form.replyto'}) { |
} elsif ($ENV{'form.replyto'}) { |
&compout($r,'',$ENV{'form.replyto'}); |
&compout($r,'',$ENV{'form.replyto'},undef,undef,$folder); |
} elsif ($ENV{'form.confirm'}) { |
} elsif ($ENV{'form.confirm'}) { |
&printheader($r,'','Confirmed Receipt'); |
&printheader($r,'','Confirmed Receipt'); |
foreach (keys %ENV) { |
foreach (keys %ENV) { |
Line 1711 sub handler {
|
Line 1880 sub handler {
|
my $total=0; |
my $total=0; |
foreach (keys %ENV) { |
foreach (keys %ENV) { |
if ($_=~/^form\.delmark_(.*)$/) { |
if ($_=~/^form\.delmark_(.*)$/) { |
&statuschange(&Apache::lonnet::unescape($1),'deleted'); |
&statuschange(&Apache::lonnet::unescape($1),'deleted',$folder); |
$total++; |
$total++; |
} |
} |
} |
} |