Diff for /loncom/interface/portfolio.pm between versions 1.7 and 1.8

version 1.7, 2004/06/25 20:50:05 version 1.8, 2004/06/28 16:07:47
Line 32  use Apache::lonnet; Line 32  use Apache::lonnet;
 use Apache::lontexconvert;  use Apache::lontexconvert;
 use Apache::lonfeedback;  use Apache::lonfeedback;
 use Apache::lonlocal;  use Apache::lonlocal;
 sub makeAnchor{  
  # receives a file name assumed to reside in username/userfiles/portfolio/  # receives a file name assumed to reside in username/userfiles/portfolio/
  # returns a form consisting of a single submit button labeled with the file name  # returns a form consisting of a single submit button labeled with the filename
  my ($fileName, $currentPath) = @_;  sub makeAnchor {
  my $anchor = '<a href="/adm/portfolio?selectfile='.$fileName.'&currentpath='.$currentPath.'">'.$fileName.'</a>';      my ($fileName, $currentPath) = @_;
 # my $button = '      my $anchor = '<a href="/adm/portfolio?selectfile='.$fileName.'&currentpath='.$currentPath.'">'.$fileName.'</a>';
   #    my $button = '
 # <form method="POST" action="/adm/portfolio">  # <form method="POST" action="/adm/portfolio">
 # <input type="hidden" name="selectfile" value="'.$fileName.'">  # <input type="hidden" name="selectfile" value="'.$fileName.'">
 # <input type="submit" value="'.$fileName.'" name="storeupl">  # <input type="submit" value="'.$fileName.'" name="storeupl">
 # </form>  # </form>
 # ';  # ';
  return $anchor;      return $anchor;
 }  }
   
   # returns html with <br /> separated contents of the directory
   # returns a <strong>currentFile</strong> (bolds the selected file/dir)
 sub displayDirectory {  sub displayDirectory {
  # returns html with <br /> separated contents of the directory      my ($currentPath, $currentFile, $isDir, @dirList,) = @_;
  # returns a <strong>currentFile</strong> (bolds the selected file/dir)      my $displayOut='';
       my $fileName;
  my ($currentPath, $currentFile, $isDir, @dirList,) = @_;      my $upPath;
  my $displayOut='';      if ($currentPath ne '/') {
  my $fileName;   $displayOut = 'Listing of '.$currentPath.'<br /><hr />'.
  my $upPath;      # provides the "up one directory level" function
  if ($currentPath ne '/'){      # it means shortening the currentpath to the parent directory
  $displayOut = 'Listing of '.$currentPath.'<br /><hr />'.      $currentPath =~ m:(^/.*)(/.*/$ ):;
  # provides the "up one directory level" function   if ($1 ne '/') {
  # it means shortening the currentpath to the parent directory      $upPath = $1.'/';
  $currentPath =~ m:(^/.*)(/.*/$):;  
  if ($1 ne '/'){  
  $upPath = $1.'/';  
  }else{  
  $upPath = $1;  
  }  
   
  $displayOut = $displayOut.'<a href="/adm/portfolio?selectfile=updir&currentpath='.$upPath.'">..</a><br />';  
  } else {   } else {
  $displayOut = $displayOut.'at root '.$currentPath.'<br />';      $upPath = $1;
  }   }
  while ($fileName = shift @dirList){  
  if (($fileName ne './') && ($fileName ne '../')){   $displayOut = $displayOut.'<a href="/adm/portfolio?selectfile=updir&currentpath='.$upPath.'">..</a><br />';
  if ($fileName =~ m:/$:){      } else {
  # handle directories different from files   $displayOut = $displayOut.'at root '.$currentPath.'<br />';
  if ($fileName eq $currentFile){ #checks to bold the selected file      }
  $displayOut = $displayOut.'<strong>'.(makeAnchor($fileName, $currentPath.$fileName).'</strong><br />');      while ($fileName = shift @dirList) {
  }else{   if (($fileName ne './') && ($fileName ne '../')) {
  $displayOut = $displayOut.(makeAnchor($fileName, $currentPath.$fileName).'<br />');      if ($fileName =~ m:/$:) {
  }   # handle directories different from files
  }else{   if ($fileName eq $currentFile) {
  if ($fileName eq $currentFile){ #checks to bold the selected file      #checks to bold the selected file
  $displayOut = $displayOut.'<strong>'.(makeAnchor($fileName, $currentPath).'</strong><br />');      $displayOut = $displayOut.'<strong>'.(&makeAnchor($fileName, $currentPath.$fileName).'</strong><br />');
  }else{   } else {
  $displayOut = $displayOut.(makeAnchor($fileName, $currentPath).'<br />');      $displayOut = $displayOut.(&makeAnchor($fileName, $currentPath.$fileName).'<br />');
  }   }
  }      } else {
  }   if ($fileName eq $currentFile) {
  }      #checks to bold the selected file
  $displayOut = $displayOut.      $displayOut = $displayOut.'<strong>'.(&makeAnchor($fileName, $currentPath).'</strong><br />');
  return $displayOut;   } else {
       $displayOut = $displayOut.(&makeAnchor($fileName, $currentPath).'<br />');
    }
       }
    }
       }
       #$displayOut = $displayOut.
       return $displayOut;
 }  }
   
   # returns html to offer user appropriate actions depending on selected
   # file/directory
 sub displayActions {  sub displayActions {
  # returns html to offer user appropriate actions depending on selected file/directory      my $displayOut;
  my $displayOut;      my ($currentPath, $currentFile, $isDir, $isFile) = @_;
  my ($currentPath, $currentFile, $isDir, $isFile) = @_;  #   $displayOut = 'here are actions for '.$currentFile;
 # $displayOut = 'here are actions for '.$currentFile;      if ($isDir){
  if ($isDir){   $displayOut = 'Directory';
  $displayOut = 'Directory';      }
  }      if ($isFile){
  if ($isFile){   $displayOut = 'File';
  $displayOut = 'File';      }
  }      
       $displayOut = $displayOut.'<form method="POST">
  $displayOut = $displayOut.'<form method="POST">  
  <input type="hidden" name="selectfile"    <input type="hidden" name="selectfile" 
  value="'.$currentFile.'">   value="'.$currentFile.'">
  <input type="hidden" name="fileaction" value="delete">    <input type="hidden" name="fileaction" value="delete"> 
Line 121  sub displayActions { Line 126  sub displayActions {
  value="Rename '.$currentFile.'">   value="Rename '.$currentFile.'">
  </form>   </form>
  <hr>';   <hr>';
  $displayOut = $displayOut.'<hr>Add a file to your portfolio';      $displayOut = $displayOut.'<hr>Add a file to your portfolio';
  # file upload form       # file upload form 
  $displayOut = $displayOut.'<form method="post" enctype="multipart/form-data">';      $displayOut = $displayOut.'<form method="post" enctype="multipart/form-data">';
  $displayOut = $displayOut.'<input name="uploaddoc" type="file">'.      $displayOut = $displayOut.'<input name="uploaddoc" type="file">'.
  '<input type="hidden" name="currentpath" value="'.$currentPath.'">'.   '<input type="hidden" name="currentpath" value="'.$currentPath.'">'.
  '<input type="submit" name="storeupl" value="Upload">'.   '<input type="submit" name="storeupl" value="Upload">'.
  '</form><hr>';   '</form><hr>';
  $displayOut = $displayOut.'<form method="POST">      $displayOut = $displayOut.'<form method="POST">
  <input name="subdir" type="text" >   <input name="subdir" type="text" >
  <input type="submit" value="Create Subdirectory">   <input type="submit" value="Create Subdirectory">
  </form>   </form>
  ';   ';
  return $displayOut;      return $displayOut;
 }  }
   
 sub handler {  sub handler {
  # this handles file management      # this handles file management
  my ($r)=@_;      my ($r)=@_;
  my @dirList; # will hold directory listing as array      my @dirList; # will hold directory listing as array
  my $udir; # returned from home server      my $udir; # returned from home server
  my $currentPath; # path assuming /userfiles/portfolio/ as root      my $currentPath; # path assuming /userfiles/portfolio/ as root
  my $currentFile; # directory or file contained in $pathToRoot.$currentPath      my $currentFile; # directory or file contained in $pathToRoot.$currentPath
  my $action; # delete, rename, makedirectory, removedirectory,      my $action; # delete, rename, makedirectory, removedirectory,
  my $filenewname; # for rename action (guess what we do with it!)      my $filenewname; # for rename action (guess what we do with it!)
  my $isFile;      my $isFile;
  my $isDir;      my $isDir;
  # send header      # send header
  $r->content_type('text/html');      $r->content_type('text/html');
  $r->send_http_header;      $r->send_http_header;
  $r->print('<html><head><title>'.      $r->print('<html><head><title>'.
               'Portfolio Management'.                'Portfolio Management'.
               "</title></head>\n");                "</title></head>\n");
   
  $r->print ('      $r->print('
  <body bgcolor="dogfood">   <body bgcolor="dogfood">
  <blockquote>');   <blockquote>');
  #grab stuff that was sent      #grab stuff that was sent
  &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['selectfile','currentpath', 'currentfile']);                                              ['selectfile','currentpath',
  $r->print ('<br />CP= '.$ENV{'form.currentpath'}.'<br />');       'currentfile']);
  # currentPath and currentFile need to be set for the rest of things to happen      $r->print ('<br />CP= '.$ENV{'form.currentpath'}.'<br />');
  # sometimes, currentFile will be passed by a form field, selectedfile      # currentPath and currentFile need to be set for the rest of things to happen
  # if there is no 'form.selectedfile' then the current directory is       # sometimes, currentFile will be passed by a form field, selectedfile
  # considered as selected       # if there is no 'form.selectedfile' then the current directory is 
  if ($ENV{'form.currentpath'}){      # considered as selected 
  $currentPath = $ENV{'form.currentpath'};      if ($ENV{'form.currentpath'}) {
  }else{   $currentPath = $ENV{'form.currentpath'};
  $currentPath = '/';      } else {
  }   $currentPath = '/';
  if ($ENV{'form.selectfile'}){      }
  $r->print('<br />found selectfile'.$ENV{'form.selectfile'} .'<br />');      if ($ENV{'form.selectfile'}) {
  # have to check if the selected file is a subdirectory   $r->print('<br />found selectfile'.$ENV{'form.selectfile'} .'<br />');
  if ($ENV{'form.selectfile'} =~ /-\(Dir\)/){   # have to check if the selected file is a subdirectory
  # $currentPath =~ /\-\(Dir\)/;   if ($ENV{'form.selectfile'} =~ /-\(Dir\)/) {
  $currentPath = $`.'/';      # $currentPath =~ /\-\(Dir\)/;
  $r->print('<br />'.$currentPath.'<br />');      $currentPath = $`.'/';
  }      $r->print('<br />'.$currentPath.'<br />');
  $currentFile = $ENV{'form.selectfile'};   }
  }else{   $currentFile = $ENV{'form.selectfile'};
  $currentFile = '';      } else {
  }   $currentFile = '';
  # if we're uploading a file, we need to do it early so it will show in the directory list      }
  if ($ENV{'form.uploaddoc.filename'}){      # if we're uploading a file, we need to do it early so it will show in the directory list
  $r->print ($ENV{'form.storeupl'}.'<br />');      if ($ENV{'form.uploaddoc.filename'}) {
  $r->print (&Apache::lonnet::userfileupload('uploaddoc','','portfolio'.$currentPath).'<br />');   $r->print($ENV{'form.storeupl'}.'<br />');
  }   $r->print(&Apache::lonnet::userfileupload('uploaddoc','','portfolio'.$currentPath).'<br />');
  # similarly, we need to delete or rename files before getting directory list      }
  if ($ENV{'form.selectfile'}){      # similarly, we need to delete or rename files before getting directory list
  if ($ENV{'form.fileaction'} eq 'delete'){      if ($ENV{'form.selectfile'}) {
  &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'delete', undef );   if ($ENV{'form.fileaction'} eq 'delete') {
  $currentFile = '';      &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'delete', undef );
  }elsif($ENV{'form.fileaction'} eq 'rename')  {      $currentFile = '';
  &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'rename', $ENV{'form.filenewname'} );   } elsif($ENV{'form.fileaction'} eq 'rename') {
  # $r->print ('We will rename your file');      &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'rename', $ENV{'form.filenewname'} );
  }      # $r->print('We will rename your file');
  }   }
  # we always need $dirList, plus this will return information about the current file      }
  # as well as information about he home server directory structure, specifically      # we always need $dirList, plus this will return information about the current file
  # the path to the users userfiles directory.      # as well as information about he home server directory structure, specifically
  @dirList = split /<br\s\/>/, (&Apache::lonnet::portfoliolist($currentPath, $currentFile));      # the path to the users userfiles directory.
  # portfoliolist returns isdir, isfile and udir as the final array elements      @dirList = split /<br\s\/>/, (&Apache::lonnet::portfoliolist($currentPath, $currentFile));
  # we'll pop them off the bottom of the array, and put them where they belong      # portfoliolist returns isdir, isfile and udir as the final array elements
       # we'll pop them off the bottom of the array, and put them where they belong
  # $londcall added to help debug      
  my $londcall = pop @dirList;      # $londcall added to help debug
  $r->print ('<br />udir '.$londcall.'<br />');      my $londcall = pop(@dirList);
  $udir = pop @dirList;      $r->print('<br />udir '.$londcall.'<br />');
  $r->print ('<br />path returned '.$udir.'<br />');      $udir = pop(@dirList);
  $isFile = pop @dirList;      $r->print('<br />path returned '.$udir.'<br />');
 # $r->print ('<br />isfile '.$isFile.'<br />');      $isFile = pop(@dirList);
  $isDir = pop @dirList;  #   $r->print('<br />isfile '.$isFile.'<br />');
 # $r->print ('<br />isdir '.$isDir.'<br />');      $isDir = pop(@dirList);
 # return OK if $r->header_only;  #   $r->print('<br />isdir '.$isDir.'<br />');
  # Stuff to maintain proper setting for selected file  #   return OK if $r->header_only;
  if ($ENV{'form.selectfile'}){      # Stuff to maintain proper setting for selected file
  if ($ENV{'form.fileaction'} eq 'delete'){      if ($ENV{'form.selectfile'}) {
  &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'delete', undef );   if ($ENV{'form.fileaction'} eq 'delete') {
  $ENV{'portfolio.file'} = 'Selected File Deleted';      &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'delete', undef );
  }elsif($ENV{'form.fileaction'} eq 'rename')  {      $ENV{'portfolio.file'} = 'Selected File Deleted';
  &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'rename', $ENV{'form.filenewname'} );   } elsif($ENV{'form.fileaction'} eq 'rename') {
 # $r->print ('We will rename your file');      &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'rename', $ENV{'form.filenewname'} );
  }else{  # $r->print('We will rename your file');
    } else {
  # Remember user's file selection for later      
  $ENV{'portfolio.file'} = $ENV{'form.selectfile'};      # Remember user's file selection for later
  # offer things user can do with selected file      $ENV{'portfolio.file'} = $ENV{'form.selectfile'};
  }      # offer things user can do with selected file
  }else{   }
  unless ($ENV{'portfolio.file'}){      } else {
  $ENV{'portfolio.file'} = 'No File Selected';   unless ($ENV{'portfolio.file'}) {
  }      $ENV{'portfolio.file'} = 'No File Selected';
  }   }
  ##############################      }
  #      ##############################
  # Display begins here      #
  #      # Display begins here
  ##############################      #
  $r->print ('<hr /> start ');      ##############################
  $r->print ($udir);      $r->print('<hr /> start ');
  $r->print ('<table border=1><tr><td>');      $r->print($udir);
  $r->print (displayDirectory ($currentPath, $currentFile, $isDir, @dirList));      $r->print('<table border=1><tr><td>');
  $r->print ('</td>><td>');      $r->print(&displayDirectory($currentPath, $currentFile, $isDir, @dirList));
  $r->print (displayActions ($currentPath, $currentFile, $isDir, $isFile));      $r->print('</td>><td>');
  $r->print ('</td>></tr></table>');      $r->print(&displayActions($currentPath, $currentFile, $isDir, $isFile));
  $r->print ('<br />end display<br /><hr />');      $r->print('</td>></tr></table>');
  $r->print ('</blockquote></body>');      $r->print('<br />end display<br /><hr />');
  return OK;      $r->print('</blockquote></body>');
       return OK;
 }  }
   
 1;  1;

Removed from v.1.7  
changed lines
  Added in v.1.8


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