--- loncom/interface/lonmsg.pm	2004/09/10 08:42:21	1.107
+++ loncom/interface/lonmsg.pm	2004/11/09 16:29:32	1.112
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.107 2004/09/10 08:42:21 www Exp $
+# $Id: lonmsg.pm,v 1.112 2004/11/09 16:29:32 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -117,11 +117,14 @@ use Apache::loncommunicate;
 
 # Querystring component with sorting type
 my $sqs;
+my $startdis;
+my $interdis;
 
 # ===================================================================== Package
 
 sub packagemsg {
-    my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+    my ($subject,$message,$citation,$baseurl,$attachmenturl,
+	$recuser,$recdomain)=@_;
     $message =&HTML::Entities::encode($message,'<>&"');
     $citation=&HTML::Entities::encode($citation,'<>&"');
     $subject =&HTML::Entities::encode($subject,'<>&"');
@@ -156,6 +159,8 @@ sub packagemsg {
 	   '<role>'.$ENV{'request.role'}.'</role>'.
 	   '<resource>'.$ENV{'request.filename'}.'</resource>'.
            '<msgid>'.$msgid.'</msgid>'.
+	   '<recuser>'.$recuser.'</recuser>'.
+	   '<recdomain>'.$recdomain.'</recdomain>'.
 	   '<message>'.$message.'</message>';
     if (defined($citation)) {
 	$result.='<citation>'.$citation.'</citation>';
@@ -447,13 +452,21 @@ sub user_normal_msg_raw {
     my $homeserver=&Apache::lonnet::homeserver($user,$domain);
     if ($homeserver ne 'no_host') {
        ($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl,
-                                     $attachmenturl);
+                                     $attachmenturl,$user,$domain);
+# Store in user folder
        $status=&Apache::lonnet::critical(
            'put:'.$domain.':'.$user.':nohist_email:'.
            &Apache::lonnet::escape($msgid).'='.
            &Apache::lonnet::escape($message),$homeserver);
+# Save new message received time
        &Apache::lonnet::put
                          ('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 {
        $status='no_host';
     }
@@ -507,15 +520,25 @@ sub folderlist {
     my @allfolders=&Apache::lonnet::getkeys('email_folders');
     if ($allfolders[0]=~/^error:/) { @allfolders=(); }
     return '<form method="post" action="/adm/email">'.
-	'<input type="submit" value="'.&mt('View Folder').'" />'.
+	&mt('Folder').': '.
 	&Apache::loncommon::select_form($folder,'folder',
 			     ('' => &mt('INBOX'),'trash' => &mt('TRASH'),
 			      'sent' => &mt('Sent Messages'),
 			      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>'.
-        '</form>';
+	    '</form>';
 }
+
 # =============================================================== Folder suffix
 
 sub foldersuffix {
@@ -564,7 +587,7 @@ sub movemsg {
     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}));
+    my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder);
     if ($currentstatus eq 'deleted') {
 	&statuschange($msgid,'read',$trgfolder);
     }
@@ -577,10 +600,7 @@ sub movemsg {
 
 sub discourse {
     my $r=shift;
-    my %courselist=&Apache::lonnet::dump(
-                   'classlist',
-		   $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
-		   $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+    my $classlist = &Apache::loncoursedata::get_classlist();
     my $now=time;
     my %lt=&Apache::lonlocal::texthash('cfa' => 'Check for All',
             'cfs' => 'Check for Section/Group',
@@ -622,39 +642,36 @@ sub discourse {
 <input type="button" onClick="uncheckall()" value="$lt{'cfn'}" />
 <p>
 ENDDISHEADER
-    my %coursepersonnel=
-       &Apache::lonnet::get_course_adv_roles();
+    my %coursepersonnel=&Apache::lonnet::get_course_adv_roles();
+    $r->print('<table>');
     foreach my $role (sort keys %coursepersonnel) {
-       foreach (split(/\,/,$coursepersonnel{$role})) {
-	   my ($puname,$pudom)=split(/\:/,$_);
-	   $r->print(
-             '<br /><input type="checkbox" name="send_to_&&&&&&_'.
-             $puname.':'.$pudom.'" /> '.
-		     &Apache::loncommon::plainname($puname,
-                          $pudom).' ('.$_.'), <i>'.$role.'</i>');
-	}
+        foreach (split(/\,/,$coursepersonnel{$role})) {
+            my ($puname,$pudom)=split(/\:/,$_);
+            $r->print('<tr><td><label>'.
+                      '<input type="checkbox" name="send_to_&&&&&&_'.
+                      $puname.':'.$pudom.'" /> '.
+                      &Apache::loncommon::plainname($puname,$pudom).
+                      '</label></td>'.
+                      '<td>('.$_.'),</td><td><i>'.$role.'</i></td></tr>');
+        }
     }
-
-    foreach (sort keys %courselist) {
-        my ($end,$start)=split(/\:/,$courselist{$_});
-        my $active=1;
-        if (($end) && ($now>$end)) { $active=0; }
-        if ($active) {
-           my ($sname,$sdom)=split(/\:/,$_);
-           my %reply=&Apache::lonnet::get('environment',
-              ['firstname','middlename','lastname','generation'],
-              $sdom,$sname);
-           my $section=&Apache::lonnet::usection
-	       ($sdom,$sname,$ENV{'request.course.id'});
-           $r->print(
-        '<br><input type=checkbox name="send_to_&&&'.$section.'&&&_'.$_.'"> '.
-		      $reply{'firstname'}.' '. 
-                      $reply{'middlename'}.' '.
-                      $reply{'lastname'}.' '.
-                      $reply{'generation'}.
-                      ' ('.$_.') '.$section);
-        } 
+    $r->print('</table><table>');
+    while (my ($student,$info) = each(%$classlist)) {
+        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');
+        my $key = 'send_to_&&&'.$section.'&&&'.$student;
+        if (! defined($fullname) || $fullname eq '') { $fullname = $sname; }
+        $r->print('<tr><td><label>'.
+                  qq{<input type="checkbox" name="$key">}.('&nbsp;'x2).
+                  $fullname.'</td><td>'.$sname.'@'.$sdom.'</td><td>'.$section.
+                  '</td></tr>');
     }
+    $r->print('</table>');
 }
 
 # ==================================================== Display Critical Message
@@ -694,7 +711,7 @@ $content{'sendername'}.'@'.
         $r->print($header);
     }
     $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 {
@@ -706,7 +723,7 @@ sub sortedmessages {
     foreach (@messages) {
 	my $msgid=&Apache::lonnet::escape($_);
 	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status)=
-	    &Apache::lonmsg::unpackmsgid($msgid);
+	    &Apache::lonmsg::unpackmsgid($msgid,$folder);
 	my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status,
 		     $msgid);
         # Check whether message was sent during blocking period.
@@ -753,6 +770,90 @@ sub sortedmessages {
     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>&nbsp</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
 
 sub disall {
@@ -784,43 +885,50 @@ sub disall {
     }
 </script>
 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>'.
 	      &folderlist($folder).
 	      '<form method="post" name="disall" action="/adm/email">'.
 	      '<table border=2><tr><th colspan="3">&nbsp</th><th>');
     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 {
-	$r->print('<a href = "?sortedby=revdate">'.&mt('Date').'</a></th>');
+	$r->print('<a href = "?sortedby=revdate'.$fsqs.'">'.&mt('Date').'</a></th>');
     }
     $r->print('<th>');
     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 {
-	$r->print('<a href = "?sortedby=revuser">'.&mt('Username').'</a>');
+	$r->print('<a href = "?sortedby=revuser'.$fsqs.'">'.&mt('Username').'</a>');
     }
     $r->print('</th><th>');
     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 {
-	$r->print('<a href = "?sortedby=revdomain">'.&mt('Domain').'</a>');
+	$r->print('<a href = "?sortedby=revdomain'.$fsqs.'">'.&mt('Domain').'</a>');
     }
     $r->print('</th><th>');
     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 {
-    	$r->print('<a href = "?sortedby=revsubject">'.&mt('Subject').'</a>');
+    	$r->print('<a href = "?sortedby=revsubject'.$fsqs.'">'.&mt('Subject').'</a>');
     }
     $r->print('</th><th>');
     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 {
-     	$r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>');
+     	$r->print('<a href = "?sortedby=revstatus'.$fsqs.'">'.&mt('Status').'</th>');
     }
     $r->print('</tr>');
-    my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
-    foreach (@temp){
-	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_;
+    for (my $n=$firstdis;$n<=$lastdis;$n++) {
+	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};
 	if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
 	    if ($status eq 'new') {
 		$r->print('<tr bgcolor="#FFBB77">');
@@ -841,7 +949,7 @@ ENDDISHEADER
                       $status.'</td></tr>');
 	} elsif ($status eq 'deleted') {
 # purge
-	    &movemsg($origID,$folder,'trash');
+	    &movemsg(&Apache::lonnet::unescape($origID),$folder,'trash');
 	}
     }   
     $r->print('</table><p>'.
@@ -872,7 +980,7 @@ $r->print('<p><input type="submit" name=
 # ============================================================== Compose output
 
 sub compout {
-    my ($r,$forwarding,$replying,$broadcast,$replycrit)=@_;
+    my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder)=@_;
 
     if ($broadcast eq 'individual') {
 	&printheader($r,'/adm/email?compose=individual',
@@ -924,7 +1032,7 @@ sub compout {
     my $defdom=$ENV{'user.domain'};
     if ($forwarding) {
 	%message=&Apache::lonnet::get('nohist_email',[$forwarding]);
-	%content=&unpackagemsg($message{$forwarding});
+	%content=&unpackagemsg($message{$forwarding},$folder);
 	$dispcrit.='<input type="hidden" name="forwid" value="'.
 	    $forwarding.'" />';
 	$func=&mt('Forward');
@@ -935,10 +1043,10 @@ sub compout {
     }
     if ($replying) {
 	%message=&Apache::lonnet::get('nohist_email',[$replying]);
-	%content=&unpackagemsg($message{$replying});
+	%content=&unpackagemsg($message{$replying},$folder);
 	$dispcrit.='<input type="hidden" name="replyid" value="'.
 	    $replying.'" />';
-	$func=&mt('Replying to');
+	$func=&mt('Send Reply to');
 	
 	$dissub=&mt('Reply').': '.$content{'subject'};       
 	$dismsg='> '.$content{'message'};
@@ -946,6 +1054,7 @@ sub compout {
 	$dismsg=~s/\f/\n/g;
 	$dismsg=~s/\n+/\n\> /g;
     }
+    my $citation=&displayresource(%content);
     if ($ENV{'form.recdom'}) { $defdom=$ENV{'form.recdom'}; }
       $r->print(
                 '<form action="/adm/email"  name="compemail" method="post"'.
@@ -986,7 +1095,8 @@ $latexHelp
 </textarea></p><br />
 $dispcrit
 <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
     } else { # $broadcast is 'upload'
 	$r->print(<<ENDUPLOAD);
@@ -1594,21 +1704,60 @@ sub displaymessage {
     }
     $r->print('</tr></table>');
     $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::plainname($content{'sendername'},$content{'senderdomain'}),
 						 $content{'sendername'},$content{'senderdomain'}).' ('.
 	      $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{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):'').
 	      '<br /><b>'.&mt('Time').':</b> '.$content{'time'}.
 	      '<p><pre>'.
 	      &Apache::lontexconvert::msgtexconverted($content{'message'},1).
-	      '</pre><hr />'.$content{'citation'}.'</p>');
+	      '</pre><hr />'.&displayresource(%content).'</p>');
     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
 
 sub header {
@@ -1651,8 +1800,11 @@ sub handler {
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['display','replyto','forward','markread','markdel','markunread',
          'sendreply','compose','sendmail','critical','recname','recdom',
-         'recordftf','sortedby','block','folder']);
-    $sqs='&sortedby='.$ENV{'form.sortedby'};
+         'recordftf','sortedby','block','folder','startdis','interdis']);
+    $sqs='&sortedby='.$ENV{'form.sortedby'}.
+	 '&startdis='.$ENV{'form.startdis'}.
+	 '&interdis='.$ENV{'form.interdis'};
+
 # ------------------------------------------------------ They checked for email
     unless ($ENV{'form.block'}) {
         &Apache::lonnet::put('email_status',{'recnewemail'=>0});
@@ -1675,12 +1827,19 @@ sub handler {
 	$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
 
     if ($ENV{'form.display'}) {
 	&displaymessage($r,$ENV{'form.display'},$folder);
     } elsif ($ENV{'form.replyto'}) {
-	&compout($r,'',$ENV{'form.replyto'});
+	&compout($r,'',$ENV{'form.replyto'},undef,undef,$folder);
     } elsif ($ENV{'form.confirm'}) {
 	&printheader($r,'','Confirmed Receipt');
 	foreach (keys %ENV) {
@@ -1721,7 +1880,7 @@ sub handler {
 	my $total=0;
 	foreach (keys %ENV) {
 	    if ($_=~/^form\.delmark_(.*)$/) {
-		&statuschange(&Apache::lonnet::unescape($1),'deleted');
+		&statuschange(&Apache::lonnet::unescape($1),'deleted',$folder);
 		$total++;
 	    }
 	}