Diff for /loncom/interface/portfolio.pm between versions 1.50 and 1.63

version 1.50, 2004/10/19 19:13:04 version 1.63, 2004/12/06 18:13:10
Line 33  use Apache::lonlocal; Line 33  use Apache::lonlocal;
 # receives a file name and path stub from username/userfiles/portfolio/  # receives a file name and path stub from username/userfiles/portfolio/
 # returns an anchor tag consisting encoding filename and currentpath  # returns an anchor tag consisting encoding filename and currentpath
 sub make_anchor {  sub make_anchor {
     my ($filename, $current_path) = @_;      my ($filename, $current_path, $current_mode, $field_name) = @_;
     my $anchor = '<a href="/adm/portfolio?selectfile='.$filename.'&currentpath='.$current_path.'">'.$filename.'</a>';      my $anchor = '<a href="/adm/portfolio?selectfile='.$filename.'&currentpath='.$current_path.'&mode='.$current_mode.'&fieldname='.$field_name.'">'.$filename.'</a>';
     return $anchor;      return $anchor;
 }  }
 my $dirptr=16384;  my $dirptr=16384;
Line 48  sub display_common { Line 48  sub display_common {
         '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.          '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
         '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.          '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.
         '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.          '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.
           '<input type="hidden" name="mode" value="'.$ENV{"form.mode"}.'" />'. 
         '<input type="submit" name="storeupl" value="Upload" />'.          '<input type="submit" name="storeupl" value="Upload" />'.
         '</form>';          '</form>';
     $r->print($displayOut);      $r->print($displayOut);
Line 57  sub display_common { Line 58  sub display_common {
         '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.          '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
         '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.          '<input type="hidden" name="action" value="'.$ENV{"form.action"}.'" />'.
         '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.          '<input type="hidden" name="fieldname" value="'.$ENV{"form.fieldname"}.'" />'.
           '<input type="hidden" name="mode" value="'.$ENV{"form.mode"}.'" />'. 
         '<input type="submit" name="createdir" value="'.&mt("Create Directory").'" />'.          '<input type="submit" name="createdir" value="'.&mt("Create Directory").'" />'.
         '</form>';          '</form>';
     $r->print($displayOut);      $r->print($displayOut);
     $r->print('</td></tr></table>');      $r->print('</td></tr></table>');
     my @tree = split (/\//,$current_path);      my @tree = split (/\//,$current_path);
     $r->print('<font size="+2">'.&make_anchor('portfolio','/').'/');      $r->print('<font size="+2">'.&make_anchor('portfolio','/',$ENV{"form.mode"},$ENV{"form.fieldname"}).'/');
     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].'/';
             $r->print(&make_anchor($tree[$i],'/'.$newCurrentPath).'/');              $r->print(&make_anchor($tree[$i],'/'.$newCurrentPath, $ENV{"form.mode"},$ENV{"form.fieldname"}).'/');
         }          }
     }      }
     $r->print('</font>');      $r->print('</font>');
     &Apache::lonhtmlcommon::store_recent('portfolio',$current_path,$current_path);      &Apache::lonhtmlcommon::store_recent('portfolio',$current_path,$current_path);
     #Fixme -- remove from recent those paths that are deleted      $r->print('<br /><form method=post action="/adm/portfolio?mode='.$ENV{"form.mode"}.'&fieldname='.$ENV{"form.fieldname"}.'">'.
     $r->print('<br /><form method=post action="/adm/portfolio">'.  
       &Apache::lonhtmlcommon::select_recent('portfolio','currentpath',        &Apache::lonhtmlcommon::select_recent('portfolio','currentpath',
     'this.form.submit();'));      'this.form.submit();'));
     $r->print("</form>");      $r->print("</form>");
Line 82  sub display_directory { Line 83  sub display_directory {
     my ($r,$current_path,$is_empty,$dir_list)=@_;      my ($r,$current_path,$is_empty,$dir_list)=@_;
     my $iconpath= $r->dir_config('lonIconsURL') . "/";      my $iconpath= $r->dir_config('lonIconsURL') . "/";
     my $display_out;      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}.':';
       }
     if ($is_empty && ($current_path ne '/')) {      if ($is_empty && ($current_path ne '/')) {
         $display_out = '<form method="post" action="/adm/portfolio">'.          $display_out = '<form method="post" action="/adm/portfolio">'.
         '<input type="hidden" name="action" value="deletedir" />'.          '<input type="hidden" name="action" value="deletedir" />'.
Line 109  sub display_directory { Line 116  sub display_directory {
             if ($dirptr&$testdir) {              if ($dirptr&$testdir) {
                 $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');                  $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');
                 $r->print('<td>Go to ...</td>');                  $r->print('<td>Go to ...</td>');
                 $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/').'</td>');                   $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/',$ENV{'form.mode'},$ENV{"form.fieldname"}).'</td>'); 
                 $r->print('</tr>');                   $r->print('</tr>'); 
             } else {              } else {
                 $r->print('<tr bgcolor="#CCCCFF">');                  $r->print('<tr bgcolor="#CCCCFF">');
Line 145  sub display_file_select { Line 152  sub display_file_select {
     my ($r,$current_path,$is_empty,$dir_list)=@_;      my ($r,$current_path,$is_empty,$dir_list)=@_;
     my $iconpath= $r->dir_config('lonIconsURL') . "/";      my $iconpath= $r->dir_config('lonIconsURL') . "/";
     my $display_out;      my $display_out;
       my $checked_files = &Apache::lonnet::files_in_path($ENV{'user.name'}, $ENV{'form.currentpath'});
       foreach my $key (keys %$checked_files) {
           &Apache::lonnet::logthis("a key is $key $$checked_files{$key} is the value");
       }
     if ($is_empty && ($current_path ne '/')) {      if ($is_empty && ($current_path ne '/')) {
         $display_out = '<form method="post" action="/adm/portfolio">'.          $display_out = '<form method="post" action="/adm/portfolio">'.
         '<input type="hidden" name="action" value="deletedir" />'.          '<input type="hidden" name="action" value="deletedir" />'.
Line 170  sub display_file_select { Line 181  sub display_file_select {
     #$strip holds directory/file name      #$strip holds directory/file name
     #$dom       #$dom 
     my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);       my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); 
       $filename =~ s/\s+$//;
     if (($filename ne '.') && ($filename ne '..')) {      if (($filename ne '.') && ($filename ne '..')) {
             if ($dirptr&$testdir) {              if ($dirptr&$testdir) {
                 $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');                  $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');
                 $r->print('<td>Go to ...</td>');                  $r->print('<td>Go to ...</td>');
                 $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/').'</td>');                   $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/',$ENV{'form.mode'},$ENV{"form.fieldname"}).'</td>'); 
                 $r->print('</tr>');                   $r->print('</tr>'); 
             } else {              } else {
                 $r->print('<tr bgcolor="#CCCCFF">');                  $r->print('<tr bgcolor="#CCCCFF">');
                 $r->print('<td>                  $r->print('<td><input type="checkbox" name="selectedfile" value="'.$filename.'"'); 
                         <input type="checkbox" name="selectedfile" value="'.$filename.'" >                  if ($$checked_files{$filename} eq 'selected') {
                     </td>');                      $r->print("CHECKED");
                       &Apache::lonnet::logthis("checked");
                   } else {
                       &Apache::lonnet::logthis("not checked $$checked_files{$filename} $filename");
                   }
                   $r->print('></td>');
                 $r->print('<td><img src="'.$iconpath.'unknown.gif"></td>');                  $r->print('<td><img src="'.$iconpath.'unknown.gif"></td>');
                 $r->print('<td><a href="'.$href_location.$filename.'">'.                  $r->print('<td><a href="'.$href_location.$filename.'">'.
     $filename.'</a></td>');       $filename.'</a></td>'); 
Line 191  sub display_file_select { Line 208  sub display_file_select {
         }          }
     }      }
     $r->print('</table>      $r->print('</table>
               <input type="hidden" name="continue" value="true">
               <input type="hidden" name="fieldname" value="'.$ENV{'form.fieldname'}.'">
               <input type="hidden" name="mode" value="selectfile">
               <input type="submit" name="submit" value="Select checked files, and continue selecting." /><br />
             <input type="button" name="doit" onClick= "finishSelect();" value="Select checked files, and close window" />              <input type="button" name="doit" onClick= "finishSelect();" value="Select checked files, and close window" />
             <input type="hidden" name="currentpath" value="'.$current_path.'" />              <input type="hidden" name="currentpath" value="'.$current_path.'" />
     </form>');      </form>');
Line 232  sub done { Line 253  sub done {
     return ('<h3><a href="/adm/portfolio?currentpath='.      return ('<h3><a href="/adm/portfolio?currentpath='.
     $ENV{'form.currentpath'}.      $ENV{'form.currentpath'}.
     '&fieldname='.$ENV{'form.fieldname'}.      '&fieldname='.$ENV{'form.fieldname'}.
       '&mode='.$ENV{'form.mode'}.
     '">'.&mt('Done').'</a></h3>');      '">'.&mt('Done').'</a></h3>');
 }  }
   
 sub delete {  sub delete {
     my ($r)=@_;      my ($r)=@_;
     &open_form($r);      my @check;
     $r->print('<p>'.&mt('Delete').' '.&display_file().'?</p>');      my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
     &close_form($r);      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>');
           &close_form($r);
       }
 }   } 
   
 sub delete_confirmed {  sub delete_confirmed {
Line 292  sub delete_dir_confirmed { Line 321  sub delete_dir_confirmed {
   
 sub rename {  sub rename {
     my ($r)=@_;      my ($r)=@_;
     &open_form($r);      my $file_name = $ENV{'form.currentpath'}.$ENV{'form.selectfile'};
     $r->print('<p>'.&mt('Rename').' '.&display_file().' to       if (&Apache::lonnet::is_locked($file_name,$ENV{'user.domain'},$ENV{'user.name'}) eq 'true') {
                <input name="filenewname" type="input" size="50" />?</p>');          $r->print ("The file is locked and cannot be renamed.<br />");
     &close_form($r);          $r->print(&done());
       } else {
           &open_form($r);
           $r->print('<p>'.&mt('Rename').' '.&display_file().' to 
                      <input name="filenewname" type="input" size="50" />?</p>');
           &close_form($r);
       }
 }  }
   
 sub rename_confirmed {  sub rename_confirmed {
Line 311  sub rename_confirmed { Line 346  sub rename_confirmed {
     my $result=      my $result=
  &Apache::lonnet::renameuserfile($ENV{'user.name'},$ENV{'user.domain'},   &Apache::lonnet::renameuserfile($ENV{'user.name'},$ENV{'user.domain'},
             'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.selectfile'},              'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.selectfile'},
             'portfolio'.$ENV{'form.currentpath'}.$ENV{'form.filenewname'});              'portfolio'.$ENV{'form.currentpath'}.$filenewname);
     if ($result ne 'ok') {      if ($result ne 'ok') {
  $r->print('<font color="red"> An errror occured ('.$result.   $r->print('<font color="red"> An errror occured ('.$result.
   ') while trying to rename '.&display_file().' to '.    ') while trying to rename '.&display_file().' to '.
Line 321  sub rename_confirmed { Line 356  sub rename_confirmed {
 }  }
 sub select_files {  sub select_files {
     my ($r)=@_;      my ($r)=@_;
     my $java_script =(<<ENDSMP);      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');
           &Apache::lonnet::save_selected_files($ENV{'user.name'}, $ENV{'form.currentpath'}, @items);
       } else {
           if ($ENV{'form.currentpath'} eq '/') {
               #empty the file for a fresh start
               # &Apache::lonnet::clear_selected_files($ENV{'user.name'});
           }
       }
       my @files = &Apache::lonnet::files_not_in_path($ENV{'user.name'}, $ENV{'form.currentpath'});
       my $java_files = join ",", @files;
       if ($java_files) {
           $java_files.=',';
       }
       my $javascript =(<<ENDSMP);
         <script language='javascript'>          <script language='javascript'>
         function finishSelect() {          function finishSelect() {
             fileList = "";  ENDSMP
       $javascript .= 'fileList = "'.$java_files.'";';
       $javascript .= (<<ENDSMP);
             for (i=0;i<document.forms.checkselect.length;i++) {               for (i=0;i<document.forms.checkselect.length;i++) { 
                 if (document.forms.checkselect[i].checked){                  if (document.forms.checkselect[i].checked){
                     fileList = fileList + document.forms.checkselect[i].value + "," ;                      fileList = fileList + document.forms.checkselect.currentpath.value + document.forms.checkselect[i].value + "," ;
                 }                  }
             }              }
             opener.document.forms.lonhomework.              opener.document.forms.lonhomework.
 ENDSMP  ENDSMP
     $java_script .= $ENV{'form.fieldname'};      $javascript .= $ENV{'form.fieldname'};
     $java_script .= (<<ENDSMP);      $javascript .= (<<ENDSMP);
         .value=fileList;          .value=fileList;
             self.close();              self.close();
         }          }
         </script>          </script>
 ENDSMP  ENDSMP
     $r->print($java_script);      $r->print($javascript);
     $r->print("<h1>Select portfolio files</h1>      $r->print("<h1>Select portfolio files</h1>
                 Check as many as you wish in response to the essay problem.<br />");                  Check as many as you wish in response to the essay problem.<br />");
       $r->print("<strong>Files selected from other directories:</strong><br />");
       foreach (&Apache::lonnet::files_not_in_path($ENV{'user.name'}, $ENV{'form.currentpath'})) {
           $r->print($_."<br />");
       }
 }  }
 sub upload {  sub upload {
     my ($r)=@_;      my ($r)=@_;
Line 436  sub handler { Line 493  sub handler {
     $r->rflush();      $r->rflush();
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['selectfile','currentpath',                                              ['selectfile','currentpath',
      'currentfile','action','fieldname']);       'currentfile','action','fieldname','mode']);
  if (($ENV{'form.storeupl'} eq 'Upload') & (!$ENV{'form.uploaddoc.filename'})){   if (($ENV{'form.storeupl'} eq 'Upload') & (!$ENV{'form.uploaddoc.filename'})){
        $r->print('<font color="red"> No file was selected to upload.'.         $r->print('<font color="red"> No file was selected to upload.'.
                'To upload a file, click <strong>Browse...</strong>'.                 'To upload a file, click <strong>Browse...</strong>'.
Line 488  sub handler { Line 545  sub handler {
  # need to know if directory is empty so it can be removed if desired   # need to know if directory is empty so it can be removed if desired
  my $is_empty=(@dir_list == 2);   my $is_empty=(@dir_list == 2);
  &display_common($r,$current_path,$is_empty,\@dir_list);   &display_common($r,$current_path,$is_empty,\@dir_list);
  if ($ENV{"form.mode"}='selectfile'){   if ($ENV{"form.mode"} eq 'selectfile'){
     &select_files($r);      &select_files($r);
             &display_file_select($r,$current_path,$is_empty,\@dir_list);              &display_file_select($r,$current_path,$is_empty,\@dir_list);
  } else {   } else {

Removed from v.1.50  
changed lines
  Added in v.1.63


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