version 1.107, 2004/09/10 08:42:21
|
version 1.109, 2004/09/28 14:12:40
|
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 564 sub movemsg {
|
Line 587 sub movemsg {
|
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]); |
my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]); |
&Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}}); |
&Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}}); |
# See if was deleted -> becomes "read" in trash |
# See if was deleted -> becomes "read" in trash |
my $currentstatus=(&unpackmsgid($status{$unmsgid})); |
my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder); |
if ($currentstatus eq 'deleted') { |
if ($currentstatus eq 'deleted') { |
&statuschange($msgid,'read',$trgfolder); |
&statuschange($msgid,'read',$trgfolder); |
} |
} |
Line 577 sub movemsg {
|
Line 600 sub movemsg {
|
|
|
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 622 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><p><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></p>'); |
} |
} |
|
|
# ==================================================== Display Critical Message |
# ==================================================== Display Critical Message |
Line 694 $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 706 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 784 sub disall {
|
Line 801 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 841 ENDDISHEADER
|
Line 865 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 872 $r->print('<p><input type="submit" name=
|
Line 896 $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 924 sub compout {
|
Line 948 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 935 sub compout {
|
Line 959 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 1594 sub displaymessage {
|
Line 1618 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'}. |
Line 1651 sub handler {
|
Line 1680 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 1675 sub handler {
|
Line 1707 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 1721 sub handler {
|
Line 1760 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++; |
} |
} |
} |
} |