[LON-CAPA-cvs] cvs: loncom /interface portfolio.pm

banghart lon-capa-cvs@mail.lon-capa.org
Sun, 12 Dec 2004 01:35:44 -0000


banghart		Sat Dec 11 20:35:44 2004 EDT

  Modified files:              
    /loncom/interface	portfolio.pm 
  Log:
  	Multiple file delete now works.
  
  
Index: loncom/interface/portfolio.pm
diff -u loncom/interface/portfolio.pm:1.64 loncom/interface/portfolio.pm:1.65
--- loncom/interface/portfolio.pm:1.64	Sat Dec 11 14:54:22 2004
+++ loncom/interface/portfolio.pm	Sat Dec 11 20:35:44 2004
@@ -185,7 +185,7 @@
                 $r->print('</tr>'); 
             } else {
                 $r->print('<tr bgcolor="#CCCCFF">');
-                $r->print('<td><input type="checkbox" name="selectedfile" value="'.$filename.'"'); 
+                $r->print('<td><input type="checkbox" name="selectfile" value="'.$filename.'"'); 
                 if ($$checked_files{$filename} eq 'selected') {
                     $r->print("CHECKED");
                     &Apache::lonnet::logthis("checked");
@@ -214,12 +214,15 @@
 
 sub open_form {
     my ($r)=@_;
+    my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
     $r->print('<form method="post" action="/adm/portfolio">');
     $r->print('<input type="hidden" name="action" value="'.
 	      $ENV{'form.action'}.'" />');
     $r->print('<input type="hidden" name="confirmed" value="1" />');
-    $r->print('<input type="hidden" name="selectfile" value="'.
-	      $ENV{'form.selectfile'}.'" />');
+    foreach (@files) {
+        $r->print('<input type="hidden" name="selectfile" value="'.
+	      $_.'" />');
+    }
     $r->print('<input type="hidden" name="currentpath" value="'.
 	      $ENV{'form.currentpath'}.'" />');
 }
@@ -239,9 +242,19 @@
 
 sub display_file {
     my ($path,$filename)=@_;
+    my $display_file_text;
     if (!defined($path)) { $path=$ENV{'form.currentpath'}; }
-    if (!defined($filename)) { $filename=$ENV{'form.selectfile'}; }
-    return '<tt>'.$path.$filename.'</tt>';
+    if (!defined($filename)) { 
+        $filename=$ENV{'form.selectfile'};
+        $display_file_text = '<tt>'.$path.$filename.'</tt>';
+    } elsif (ref($filename) eq "ARRAY") {
+        foreach (@$filename) {
+            $display_file_text .= '<tt>'.$path.$_.'</tt>';
+        }
+    } elsif (ref($filename) eq "SCALAR") {
+        $display_file_text = '<tt>'.$path.$filename.'</tt>';        
+    }
+    return $display_file_text;
 }
 
 sub done {
@@ -256,25 +269,31 @@
     my ($r)=@_;
     my @check;
     my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
+    my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
     if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'} ) eq 'true') {
         $r->print ("The file is locked and cannot be deleted.<br />");
         $r->print(&done());
     } else {
         &open_form($r);
-        $r->print('<p>'.&mt('Delete').' '.&display_file().'?</p>');
+        $r->print('<p>'.&mt('Delete').' '.&display_file(undef,\@files).'?</p>');
         &close_form($r);
     }
 } 
 
 sub delete_confirmed {
     my ($r)=@_;
-    my $result=&Apache::lonnet::removeuserfile($ENV{'user.name'},
+    my @files=&Apache::loncommon::get_env_multiple('form.selectfile');
+    my $result;
+    foreach my $delete_file (@files) {
+        &Apache::lonnet::logthis("trying to delete $delete_file");
+        $result=&Apache::lonnet::removeuserfile($ENV{'user.name'},
 					       $ENV{'user.domain'},'portfolio'.
 					       $ENV{'form.currentpath'}.
-					       $ENV{'form.selectfile'});
-    if ($result ne 'ok') {
+					       $delete_file);
+        if ($result ne 'ok') {
 	$r->print('<font color="red"> An error occured ('.$result.
-		  ') while trying to delete '.&display_file().'</font><br />');
+		  ') while trying to delete '.&display_file(undef, $delete_file).'</font><br />');
+        }
     }
     $r->print(&done());
 }
@@ -354,7 +373,7 @@
     if ($ENV{'form.continue'} eq 'true') {
         # here we update the selections for the currentpath
         # eventually, have to handle removing those not checked, but . . . 
-        my @items=&Apache::loncommon::get_env_multiple('form.selectedfile');
+        my @items=&Apache::loncommon::get_env_multiple('form.selectfile');
         &Apache::lonnet::save_selected_files($ENV{'user.name'}, $ENV{'form.currentpath'}, @items);
     } else {
         if ($ENV{'form.currentpath'} eq '/') {