Diff for /loncom/interface/portfolio.pm between versions 1.5 and 1.6

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

Removed from v.1.5  
changed lines
  Added in v.1.6


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