Diff for /loncom/interface/portfolio.pm between versions 1.175 and 1.185

version 1.175, 2006/12/11 03:43:15 version 1.185, 2007/06/21 20:25:18
Line 147  TABLE Line 147  TABLE
     );      );
     $r->print('<span class="LC_current_location">'.&make_anchor($url,\%anchor_fields,$port_path).'/');      $r->print('<span class="LC_current_location">'.&make_anchor($url,\%anchor_fields,$port_path).'/');
     if (@tree > 1){      if (@tree > 1){
         my $newCurrentPath = '';          my $newCurrentPath = '/';
         for (my $i = 1; $i< @tree; $i++){          for (my $i = 1; $i< @tree; $i++){
             $newCurrentPath .= $tree[$i].'/';              $newCurrentPath .= $tree[$i].'/';
             my %anchor_fields = (              my %anchor_fields = (
                 'selectfile' => $tree[$i],                  'selectfile' => $tree[$i],
                 'currentpath' => '/',                  'currentpath' => $newCurrentPath,
                 'mode' => $env{"form.mode"},                  'mode' => $env{"form.mode"},
                 'fieldname' => $env{"form.fieldname"},                  'fieldname' => $env{"form.fieldname"},
                 'continue' => $env{"form.continue"}                  'continue' => $env{"form.continue"}
Line 289  sub display_directory { Line 289  sub display_directory {
   my ($bfile)=split('&',$b,2);    my ($bfile)=split('&',$b,2);
   return (lc($afile) cmp lc($bfile));    return (lc($afile) cmp lc($bfile));
       } (@$dir_list)) {        } (@$dir_list)) {
     #$strip holds directory/file name  
     #$dom   
     my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16);       my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$dir_line,16); 
     $filename =~ s/\s+$//;      $filename =~ s/\s+$//;
     my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);      my ($fname,$version,$extension) = &Apache::grades::file_name_version_ext($filename);
Line 567  sub delete_confirmed { Line 565  sub delete_confirmed {
        $delete_file);         $delete_file);
         if ($result ne 'ok') {          if ($result ne 'ok') {
     $r->print('<span class="LC_error">'.      $r->print('<span class="LC_error">'.
                      &mt('An error occured ([_1]) while trying to delete                        &mt('An error occurred ([_1]) while trying to delete 
                          [_2].',$result,&display_file(undef, $delete_file)).                           [_2].',$result,&display_file(undef, $delete_file)).
                       '</span><br /><br />');                        '</span><br /><br />');
         } else {          } else {
Line 588  sub delete_confirmed { Line 586  sub delete_confirmed {
                     &Apache::lonnet::modify_access_controls($file_name,\%changes,                      &Apache::lonnet::modify_access_controls($file_name,\%changes,
                                                             $udom,$uname);                                                              $udom,$uname);
                     if ($outcome ne 'ok') {                      if ($outcome ne 'ok') {
                            $r->print('<br />'.&mt("An error occured ([_1]) while ".                             $r->print('<br />'.&mt("An error occurred ([_1]) while ".
                                "trying to delete access controls for the file.",$outcome).                                 "trying to delete access controls for the file.",$outcome).
                                '</span><br /><br />');                                 '</span><br /><br />');
                     } else {                      } else {
Line 596  sub delete_confirmed { Line 594  sub delete_confirmed {
                             $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');                              $r->print('<br />'.&mt('Access controls also deleted for the file.').'<br /><br />');
                         } else {                          } else {
                             $r->print('<span class="LC_error">'.'<br />'.                              $r->print('<span class="LC_error">'.'<br />'.
                                &mt("An error occured ([_1]) while ".                                 &mt("An error occurred ([_1]) while ".
                                    "trying to delete access controls for the file.",$deloutcome).                                     "trying to delete access controls for the file.",$deloutcome).
                                    '</span><br /><br />');                                     '</span><br /><br />');
                         }                          }
Line 626  sub delete_dir_confirmed { Line 624  sub delete_dir_confirmed {
        $directory_name);         $directory_name);
                 
     if ($result ne 'ok') {      if ($result ne 'ok') {
  $r->print('<span class="LC_error"> An error occured (dir) ('.$result.   $r->print('<span class="LC_error"> An error occurred (dir) ('.$result.
   ') while trying to delete '.$directory_name.'</span><br />');    ') while trying to delete '.$directory_name.'</span><br />');
     } else {      } else {
         # now remove from recent          # now remove from recent
 #        $r->print('<br /> removing '.$directory_name.'<br /');  
         &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']);          &Apache::lonhtmlcommon::remove_recent($namespace,[$directory_name.'/']);
         my @dirs = split m!/!, $directory_name;          my @dirs = split m!/!, $directory_name;
           
 #        $directory_name =~ m/^(\/*\/)(\/*.)$/;  
         $directory_name='/';          $directory_name='/';
         for (my $i=1; $i < (@dirs - 1); $i ++){          for (my $i=1; $i < (@dirs - 1); $i ++){
             $directory_name .= $dirs[$i].'/';              $directory_name .= $dirs[$i].'/';
Line 681  sub rename_confirmed { Line 676  sub rename_confirmed {
         $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);          $chg_access = &access_for_renamed($filenewname,$group,$udom,$uname);
     } else {            } else {      
  $r->print('<span class="LC_error">'.   $r->print('<span class="LC_error">'.
   &mt('An error occured ([_1]) while trying to rename [_2]'    &mt('An error occurred ([_1]) while trying to rename [_2]'
       .' to [_3]',$result,&display_file(),        .' to [_3]',$result,&display_file(),
       &display_file('',$filenewname)).'</span><br />');        &display_file('',$filenewname)).'</span><br />');
         return;          return;
Line 718  sub access_for_renamed { Line 713  sub access_for_renamed {
             &Apache::lonnet::modify_access_controls($oldfile,\%change_old,              &Apache::lonnet::modify_access_controls($oldfile,\%change_old,
     $udom,$uname);      $udom,$uname);
         if ($outcome ne 'ok') {          if ($outcome ne 'ok') {
             $chg_text ='<br /><br />'.&mt("An error occured ([_1]) while ".              $chg_text ='<br /><br />'.&mt("An error occurred ([_1]) while ".
                 "trying to delete access control records for the old name.",$outcome).                  "trying to delete access control records for the old name.",$outcome).
                 '</span><br />';                  '</span><br />';
         } else {          } else {
             if ($deloutcome ne 'ok') {              if ($deloutcome ne 'ok') {
                 $chg_text = '<br /><br /><span class="LC_error"><br />'.                  $chg_text = '<br /><br /><span class="LC_error"><br />'.
     &mt("An error occured ([_1]) while ".      &mt("An error occurred ([_1]) while ".
  "trying to delete access control records for the old name.",$deloutcome).   "trying to delete access control records for the old name.",$deloutcome).
  '</span><br />';   '</span><br />';
             }              }
Line 734  sub access_for_renamed { Line 729  sub access_for_renamed {
                                                     $udom,$uname);                                                      $udom,$uname);
         if ($outcome ne 'ok') {          if ($outcome ne 'ok') {
             $chg_text .= '<br /><br />'.              $chg_text .= '<br /><br />'.
  &mt("An error occured ([_1]) while ".   &mt("An error occurred ([_1]) while ".
                 "trying to update access control records for the new name.",$outcome).                  "trying to update access control records for the new name.",$outcome).
                 '</span><br />';                  '</span><br />';
         }          }
Line 1014  sub update_access { Line 1009  sub update_access {
         } else {          } else {
             if ((@{$processing{'activate'}} > 0) || (@{$processing{'update'}} > 0)) {              if ((@{$processing{'activate'}} > 0) || (@{$processing{'update'}} > 0)) {
                 $errors .= '<span class="LC_error">'.                  $errors .= '<span class="LC_error">'.
     &mt('A problem occurred storing access control settings: [_1]',$outcome).      &mt('A problem occurred saving access control settings: [_1]',$outcome).
     '</span>';      '</span>';
             }              }
         }          }
Line 1347  sub display_access_row { Line 1342  sub display_access_row {
                       '</th>');                        '</th>');
             $colspan ++;              $colspan ++;
         } elsif ($type eq 'domains') {          } elsif ($type eq 'domains') {
             @all_doms = &Apache::loncommon::get_domains();              @all_doms = sort(&Apache::lonnet::all_domains());
         }          }
         $r->print(&Apache::loncommon::end_data_table_header_row());          $r->print(&Apache::loncommon::end_data_table_header_row());
         foreach my $key (@{$items}) {          foreach my $key (@{$items}) {
Line 1739  ENDSMP Line 1734  ENDSMP
         </script>          </script>
 ENDSMP  ENDSMP
     $r->print($javascript);      $r->print($javascript);
     $r->print("<h1>Select portfolio files</h1>      $r->print("<h1>".&mt('Select portfolio files')."</h1>".
                 Check as many as you wish in response to the problem.<br />");                  &mt('Check as many as you wish in response to the problem.')."<br />");
     my @otherfiles=&Apache::lonnet::files_not_in_path($env{'user.name'}, $env{'form.currentpath'});      my @otherfiles=&Apache::lonnet::files_not_in_path($env{'user.name'}, $env{'form.currentpath'});
     if (@otherfiles) {      if (@otherfiles) {
  $r->print("<strong>Files selected from other directories:</strong><br />");   $r->print("<strong>".&mt('Files selected from other directories:')."</strong><br />");
  foreach my $file (@otherfiles) {   foreach my $file (@otherfiles) {
     $r->print($file."<br />");      $r->print($file."<br />");
  }   }
     }      }
 }  }
   
 sub upload {  
     my ($r,$url,$group)=@_;  sub check_for_upload {
     my $fname=$env{'form.uploaddoc.filename'};      my ($path,$fname,$group,$element) = @_;
     my $filesize = (length($env{'form.uploaddoc'})) / 1000; #express in k (1024?)  
     my $disk_quota = &get_quota($group);      my $disk_quota = &get_quota($group);
     $fname=&Apache::lonnet::clean_filename($fname);      my $filesize = (length($env{'form.'.$element})) / 1000; #express in k (1024?)
   
     my $portfolio_root=&get_portfolio_root();      my $portfolio_root = &get_portfolio_root();
     my ($uname,$udom) = &get_name_dom();  
     my $port_path = &get_port_path();      my $port_path = &get_port_path();
       my ($uname,$udom) = &get_name_dom();
     # Fixme --- Move the checking for existing file to LOND error return      # Fixme --- Move the checking for existing file to LOND error return
     my @dir_list=&get_dir_list($portfolio_root);      my @dir_list=&get_dir_list($portfolio_root,$path);
     my $found_file = 0;      my $found_file = 0;
     my $locked_file = 0;      my $locked_file = 0;
     foreach my $line (@dir_list) {      foreach my $line (@dir_list) {
         my ($file_name)=split(/\&/,$line,2);          my ($file_name)=split(/\&/,$line,2);
         if ($file_name eq $fname){          if ($file_name eq $fname){
             $file_name = $env{'form.currentpath'}.$file_name;              $file_name = $path.$file_name;
             $file_name = &prepend_group($file_name);              $file_name = &prepend_group($file_name);
             $found_file = 1;              $found_file = 1;
             if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {              if (&Apache::lonnet::is_locked($file_name,$udom,$uname) eq 'true') {
Line 1776  sub upload { Line 1770  sub upload {
         }          }
     }      }
     my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root);      my $current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$portfolio_root);
   
     if (($current_disk_usage + $filesize) > $disk_quota){      if (($current_disk_usage + $filesize) > $disk_quota){
         $r->print('<span class="LC_error">Unable to upload <strong>'.$fname.' (size = '.$filesize.' kilobytes)</strong>. Disk quota will be exceeded.</span>'.          my $msg = '<span class="LC_error">'.
                   '<br />Disk quota is '.$disk_quota.' kilobytes. Your current disk usage is '.$current_disk_usage.' kilobytes.');                  &mt('Unable to upload [_1]. (size = [_2] kilobytes). Disk quota will be exceeded.','<span class="LC_filename">'.$fname.'</span>',$filesize).'</span>'.
         $r->print(&done('Back',$url));                    '<br />'.&mt('Disk quota is [_1] kilobytes. Your current disk usage is [_2] kilobytes.',$disk_quota,$current_disk_usage);
     }    return ('will_exceed_quota',$msg);
     elsif ($found_file){      } elsif ($found_file) {
         if ($locked_file){          if ($locked_file) {
             $r->print('<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a <strong>locked</strong> file by that name was found in <strong>'.$port_path.$env{'form.currentpath'}.'</strong></span>'.              my $msg = '<span class="LC_error">';
                   '<br />You will be able to rename or delete existing '.$fname.' after a grade has been assigned.');              $msg .= &mt('Unable to upload [_1] a locked file by that name was found in [_2].','<span class="LC_filename">'.$fname.'</span>','<span class="LC_filename">'.$port_path.$env{'form.currentpath'}.'</span>');
             $r->print(&done('Back',$url));                    $msg .= '</span><br />';
         } else {                 $msg .= &mt('You will be able to rename or delete existing [_1] after a grade has been assigned.','<span class="LC_filename">'.$fname.'</span>');
             $r->print('<span class="LC_error">'.'Unable to upload <strong>'.$fname.'</strong>, a file by that name was found in <strong>'.$port_path.$env{'form.currentpath'}.'</strong></span>'.      return ('file_locked',$msg);
                   '<br />To upload, rename or delete existing '.$fname.' in '.$port_path.$env{'form.currentpath'});   } else {
             $r->print(&done('Back',$url));              my $msg = '<span class="LC_error">';
         }              $msg .= &mt('Unable to upload [_1]. A file by that name was found in [_2].','<span class="LC_filename">'.$fname.'</span>',$port_path.$env{'form.currentpath'});
     } else {              $msg .= '</span>';
         my $result=&Apache::lonnet::userfileupload('uploaddoc','',              $msg .= '<br />';
          $port_path.$env{'form.currentpath'});              $msg .= &mt('To upload, rename or delete existing [_1] in [_2].','<span class="LC_filename">'.$fname.'</span>', $port_path.$env{'form.currentpath'});
         if ($result !~ m|^/uploaded/|) {      return ('file_exists',$msg);
             $r->print('<span class="LC_error">'.'An errror occured ('.$result.   }
               ') while trying to upload '.&display_file().'</span><br />');  
     $r->print(&done('Back',$url));  
         } else {  
             $r->print(&done(undef,$url));  
         }  
     }      }
 }  }
   
   sub upload {
       my ($r,$url,$group)=@_;
       my $fname=&Apache::lonnet::clean_filename($env{'form.uploaddoc.filename'});
   
       my ($state,$msg) = &check_for_upload($env{'form.currentpath'},
    $fname,$group,'uploaddoc');
   
       if ($state eq 'will_exceed_quota'
    || $state eq 'file_locked'
    || $state eq 'file_exists' ) {
    $r->print($msg.&done('Back',$url));
    return;
       }
   
       my $port_path = &get_port_path();
       my (%allfiles,%codebase,$mode);
       if ($env{'form.uploaddoc.filename'} =~ m/(\.htm|\.html|\.shtml)$/i) {
    $mode = 'parse';
   
       }
       my $result=
    &Apache::lonnet::userfileupload('uploaddoc','',
    $port_path.$env{'form.currentpath'},
    $mode,\%allfiles,\%codebase);
       if ($result !~ m|^/uploaded/|) {
    $r->print('<span class="LC_error">'.'An error occurred ('.$result.
     ') while trying to upload '.&display_file().'</span><br />');
    $r->print(&done('Back',$url));
       } else {
    if (%allfiles) {
       my $state = <<STATE;
       <input type="hidden" name="action"      value="upload_embedded" />
       <input type="hidden" name="currentpath" value="$env{'form.currentpath'}" />
       <input type="hidden" name="fieldname"   value="$env{'form.fieldname'}" />
       <input type="hidden" name="mode"        value="$env{'form.mode'}" />
   STATE
               $r->print("<h2>".&mt("Reference Warning")."</h2>");
               $r->print("<p>".&mt("Completed upload of the file. This file contained references to other files. You must upload the referenced files or else the uploaded file may not work properly.")."</p>");
               $r->print("<p>".&mt("Please select the locations from which the referenced files are to be uploaded.")."</p>");
       $r->print(&Apache::londocs::ask_for_embedded_content('/adm/portfolio',$state,\%allfiles,\%codebase,
         {'error_on_invalid_names'   => 1,
          'ignore_remote_references' => 1,}));
       $r->print('<p>Or '.&done('Return to directory listing',$url).'</p>');
    } else {
       $r->print(&done(undef,$url));
    }
       }
   }
   
   sub upload_embedded {
       my ($r,$url,$group)=@_;
       for (my $i=0; $i<$env{'form.number_embedded_items'}; $i++) {
    next if (!exists($env{'form.embedded_item_'.$i.'.filename'}));
    my $orig_uploaded_filename = 
       $env{'form.embedded_item_'.$i.'.filename'};
   
    $env{'form.embedded_orig_'.$i} = 
       &unescape($env{'form.embedded_orig_'.$i});
    my ($path,$fname) = 
       ($env{'form.embedded_orig_'.$i} =~ m{(.*/)([^/]*)});
    # no path, whole string is fname
    if (!$fname) { $fname = $env{'form.embedded_orig_'.$i} };
   
    $path = $env{'form.currentpath'}.$path;
    $fname = &Apache::lonnet::clean_filename($fname);
   
    my ($state,$msg) = &check_for_upload($path,$fname,$group,
        'embedded_item_'.$i);
   
    if ($state eq 'will_exceed_quota'
       || $state eq 'file_locked'
       || $state eq 'file_exists' ) {
       $r->print($msg);
       next;
    }
   
    my $port_path = &get_port_path();
    my $src_path = $env{'form.embedded_orig_'.$i};
    $env{'form.embedded_item_'.$i.'.filename'}=$fname;
   
    my $result=
       &Apache::lonnet::userfileupload('embedded_item_'.$i,'',
       $port_path.$path);
    if ($result !~ m|^/uploaded/|) {
       $r->print('<span class="LC_error">'.'An error occurred ('.$result.
         ') while trying to upload '.$orig_uploaded_filename.' for embedded element '.$env{'form.embedded_orig_'.$i}.'</span><br />');
       next;
    } else {
       $r->print("<p> Uploaded ".
         &display_file($port_path.$path,$fname).'</p>');
    }
       }
       $r->print(&done(undef,$url));
   }
   
 sub lock_info {  sub lock_info {
     my ($r,$url,$group) = @_;      my ($r,$url,$group) = @_;
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom();
Line 1844  sub lock_info { Line 1929  sub lock_info {
     }      }
         }          }
     }      }
     $r->print(&done('Back',$url));      $r->print(&done(&mt('Back'),$url));
     return 'ok';      return 'ok';
 }  }
   
Line 1868  sub createdir { Line 1953  sub createdir {
         }          }
     }      }
     if ($found_file){      if ($found_file){
        $r->print('<span class="LC_error">'.'Unable to create a directory named <strong>'.$newdir.         $r->print('<span class="LC_error">'.&mt('Unable to create a directory named').' <strong>'.$newdir.
                ' </strong>a file or directory by that name already exists.</span><br />');                 ' </strong>'.&mt('a file or directory by that name already exists.').'</span><br />');
     } else {      } else {
         my ($uname,$udom) = &get_name_dom();          my ($uname,$udom) = &get_name_dom();
         my $port_path = &get_port_path();          my $port_path = &get_port_path();
         my $result=&Apache::lonnet::mkdiruserfile($uname,$udom,          my $result=&Apache::lonnet::mkdiruserfile($uname,$udom,
          $port_path.$env{'form.currentpath'}.$newdir);           $port_path.$env{'form.currentpath'}.$newdir);
         if ($result ne 'ok') {          if ($result ne 'ok') {
        $r->print('<span class="LC_error">'.'An errror occured ('.$result.         $r->print('<span class="LC_error">'.'An error occurred ('.$result.
           ') while trying to create a new directory '.&display_file().'</span><br />');            ') while trying to create a new directory '.&display_file().'</span><br />');
         }          }
     }      }
     if ($newdir ne $env{'form.newdir'}) {      if ($newdir ne $env{'form.newdir'}) {
         $r->print("The new directory name was changed from:<br /><strong>".$env{'form.newdir'}."</strong> to <strong>$newdir </strong>");            $r->print(&mt("The new directory name was changed from:<br /><strong>").$env{'form.newdir'}."</strong> ".&mt('to')." <strong>$newdir </strong>");  
     }      }
     $r->print(&done(undef,$url));      $r->print(&done(undef,$url));
 }  }
Line 1921  sub get_group_quota { Line 2006  sub get_group_quota {
 }   } 
   
 sub get_dir_list {  sub get_dir_list {
     my ($portfolio_root) = @_;      my ($portfolio_root,$path) = @_;
       $path ||= $env{'form.currentpath'};
     my ($uname,$udom) = &get_name_dom();      my ($uname,$udom) = &get_name_dom();
     return &Apache::lonnet::dirlist($env{'form.currentpath'},      return &Apache::lonnet::dirlist($path,$udom,$uname,$portfolio_root);
                                           $udom,$uname,$portfolio_root);  
 }  }
   
 sub get_name_dom {  sub get_name_dom {
Line 2076  sub handler { Line 2161  sub handler {
                                       $env{'request.course.id'}.'/'.$group))) {                                        $env{'request.course.id'}.'/'.$group))) {
                     $portfolio_root = &get_portfolio_root();                      $portfolio_root = &get_portfolio_root();
                 } else {                  } else {
                     $r->print('You do not have the privileges required to access the shared files space for this group.');                      $r->print(&mt('You do not have the privileges required to access the shared files space for this group.'));
                     $earlyout = 1;                      $earlyout = 1;
                 }                  }
             } else {              } else {
                 $r->print('Not a valid group for this course');                  $r->print(&mt('Not a valid group for this course'));
                 $earlyout = 1;                  $earlyout = 1;
             }              }
             $title = &mt('Group files').' for '.$group;               $title = &mt('Group files').' for '.$group; 
         } else {          } else {
             $r->print('Invalid group');              $r->print(&mt('Invalid group'));
             $earlyout = 1;              $earlyout = 1;
         }          }
         if ($earlyout) { return OK; }          if ($earlyout) { return OK; }
Line 2141  sub handler { Line 2226  sub handler {
          return OK;           return OK;
     }      }
  if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){   if (($env{'form.storeupl'}) & (!$env{'form.uploaddoc.filename'})){
        $r->print('<span class="LC_error">'.         $r->print('<span class="LC_error">');
       'No file was selected to upload.'.         $r->print(&mt('No file was selected to upload. '));
       'To upload a file, click <strong>Browse...</strong>'.      $r->print(&mt('To upload a file, click <strong>Browse...</strong> select a file, then click <strong>Upload</strong>.'));
       ', select a file, then click <strong>Upload</strong>.'.      $r->print('</span>');
       '</span>');  
  }   }
     if ($env{'form.meta'}) {      if ($env{'form.meta'}) {
         &open_form($r,$url);          &open_form($r,$url);
 #        $r->print(&edit_meta_data($r, $env{'form.currentpath'}.$env{'form.selectfile'}));          $r->print(&mt('Edit the meta data').'<br />');
         $r->print('Edit the meta data<br />');  
         &close_form($r,$url);          &close_form($r,$url);
     }      }
     if ($env{'form.store'}) {      if ($env{'form.store'}) {
Line 2162  sub handler { Line 2245  sub handler {
         } else {          } else {
             &missing_priv($r,$url,'upload');              &missing_priv($r,$url,'upload');
         }          }
       } elsif ($env{'form.action'} eq 'upload_embedded') {
    if ($can_upload) {
       &upload_embedded($r,$url,$group);
           } else {
               &missing_priv($r,$url,'upload');
           }
     } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {      } elsif ($env{'form.action'} eq 'delete' && $env{'form.confirmed'}) {
         if ($can_delete) {          if ($can_delete) {
     &delete_confirmed($r,$url,$group);      &delete_confirmed($r,$url,$group);

Removed from v.1.175  
changed lines
  Added in v.1.185


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>