--- loncom/interface/portfolio.pm 2004/12/06 18:13:10 1.63 +++ loncom/interface/portfolio.pm 2004/12/12 01:35:44 1.65 @@ -83,12 +83,7 @@ sub display_directory { my ($r,$current_path,$is_empty,$dir_list)=@_; my $iconpath= $r->dir_config('lonIconsURL') . "/"; my $display_out; - my %locked_files=&Apache::lonnet::dump('file_permissions', - $ENV{'user.domain'},$ENV{'user.name'}); - my $locked_file; - foreach my $key (keys %locked_files) { - $locked_file .= $locked_files{$key}.':'; - } + my %locked_files = &Apache::lonnet::get_marked_as_readonly_hash ($ENV{'user.domain'},$ENV{'user.name'}); if ($is_empty && ($current_path ne '/')) { $display_out = '<form method="post" action="/adm/portfolio">'. '<input type="hidden" name="action" value="deletedir" />'. @@ -103,6 +98,7 @@ sub display_directory { $r->print('<table border="0" cellspacing="2" cellpadding="2">'. '<tr><th>Actions</th><th> </th><th>Name</th><th>Size</th><th>Last Modified</th></tr>'); my $href_location="/uploaded/$ENV{'user.domain'}/$ENV{'user.name'}/portfolio$current_path"; + $r->print('<form method="post" action="/adm/portfolio">'); foreach my $line (sort { my ($afile)=split('&',$a,2); @@ -120,18 +116,13 @@ sub display_directory { $r->print('</tr>'); } else { $r->print('<tr bgcolor="#CCCCFF">'); - $r->print('<td> - <form method="post" action="/adm/portfolio"> - <select name="action"> - <option value=""></option> - <option value="delete">'.&mt("Delete").'</option> - <option value="rename">'.&mt("Rename").'</option> - </select> - <input type="submit" name="doit" value="Go" /> - <input type="hidden" name="selectfile" value="'.$filename.'" /> - <input type="hidden" name="currentpath" value="'.$current_path.'" /> - </form> - </td>'); + if (exists $locked_files{$current_path.$filename}){ + $r->print('<td>Locked</td>'); + } else { + $r->print('<td>Delete<input type="checkbox" name="selectfile" value="'.$filename.'" /> + <a href="/adm/portfolio?rename='.$filename.'&currentpath='.$current_path.'">Rename</a> + </td>'); + } $r->print('<td><img src="'.$iconpath.'unknown.gif"></td>'); $r->print('<td><a href="'.$href_location.$filename.'">'. $filename.'</a></td>'); @@ -146,7 +137,11 @@ sub display_directory { # $r->print(&display_directory($current_path, $currentFile, @dir_list)); # $r->print('</td>><td>'); # $r->print(&display_actions($current_path, $currentFile, $isEmpty)); - $r->print('</table></form>'); + $r->print('</table> + <input type="submit" name="doit" value="Delete Checked Files" /> + <input type="hidden" name="action" value="delete" /> + <input type="hidden" name="currentpath" value="'.$current_path.'" /> + </form>'); } sub display_file_select { my ($r,$current_path,$is_empty,$dir_list)=@_; @@ -190,7 +185,7 @@ sub display_file_select { $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"); @@ -219,12 +214,15 @@ sub display_file_select { 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'}.'" />'); } @@ -244,9 +242,19 @@ sub close_form { 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 { @@ -261,25 +269,31 @@ sub delete { 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()); } @@ -321,7 +335,7 @@ sub delete_dir_confirmed { sub rename { my ($r)=@_; - my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'}; + my $file_name = $ENV{'form.currentpath'}.$ENV{'form.rename'}; if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'}) eq 'true') { $r->print ("The file is locked and cannot be renamed.<br />"); $r->print(&done()); @@ -359,7 +373,7 @@ sub select_files { 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 '/') { @@ -493,7 +507,7 @@ sub handler { $r->rflush(); &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['selectfile','currentpath', - 'currentfile','action','fieldname','mode']); + 'currentfile','action','fieldname','mode','rename']); if (($ENV{'form.storeupl'} eq 'Upload') & (!$ENV{'form.uploaddoc.filename'})){ $r->print('<font color="red"> No file was selected to upload.'. 'To upload a file, click <strong>Browse...</strong>'. @@ -511,7 +525,9 @@ sub handler { &delete_dir($r); } elsif ($ENV{'form.action'} eq 'rename' && $ENV{'form.confirmed'}) { &rename_confirmed($r); - } elsif ($ENV{'form.action'} eq 'rename') { + } elsif ($ENV{'form.rename'}) { + $ENV{'form.selectfile'} = $ENV{'form.rename'}; + $ENV{'form.action'} = 'rename'; &rename($r); } elsif ($ENV{'form.createdir'}) { &createdir($r);