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

version 1.5, 2004/06/21 14:10:05 version 1.8, 2004/06/28 16:07:47
Line 33  use Apache::lontexconvert; Line 33  use Apache::lontexconvert;
 use Apache::lonfeedback;  use Apache::lonfeedback;
 use Apache::lonlocal;  use Apache::lonlocal;
   
   # receives a file name assumed to reside in username/userfiles/portfolio/
   # returns a form consisting of a single submit button labeled with the filename
   sub makeAnchor {
       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;
   }
   
   # returns html with <br /> separated contents of the directory
   # returns a <strong>currentFile</strong> (bolds the selected file/dir)
   sub displayDirectory {
       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;
   }
   
   # returns html to offer user appropriate actions depending on selected
   # file/directory
   sub displayActions {
       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
  $r->content_type('text/html');      my ($r)=@_;
  $r->send_http_header;      my @dirList; # will hold directory listing as array
  return OK if $r->header_only;      my $udir; # returned from home server
 # my $file=&Apache::lonnet::filelocation("",$r->uri);      my $currentPath; # path assuming /userfiles/portfolio/ as root
 # my $contents=&Apache::lonnet::getfile($file);      my $currentFile; # directory or file contained in $pathToRoot.$currentPath
 # upload a file if we enter with a filename set      my $action; # delete, rename, makedirectory, removedirectory,
  $r->print ('<body bgcolor="dogfood">      my $filenewname; # for rename action (guess what we do with it!)
  <blockquote>');      my $isFile;
       my $isDir;
  if ($ENV{'form.uploaddoc.filename'}){      # send header
  $r->print (&Apache::lonnet::userfileupload('uploaddoc',undef,'portfolio').'<br />');      $r->content_type('text/html');
  }      $r->send_http_header;
  $r->print ('<br />Current contents of your portfolio directory: <br /><hr />');      $r->print('<html><head><title>'.
  $r->print (&Apache::lonnet::portfoliolist($r->uri, $ENV{'user.domain'}, $ENV{'user.name'}, undef ));                'Portfolio Management'.
  $r->print ('<hr />');                "</title></head>\n");
 # $r->print ($ENV{'form.uploaddoc.filename'}.'<br />');  
 # $r->print ($ENV{'form.storeupl'}.'<br />');  
 # $r->print ($ENV{'form.saywhat'}.'<br />');  
   
  $r->print("Upload files to your portfolio<br />");  
  # file upload form   
  $r->print('<form method="post" enctype="multipart/form-data">');  
  $r->print('<input name="uploaddoc" type="file">'.  
   
  '<input type="submit" name="storeupl" value="Upload">'  
  );  
  $r->print('</form>  
  </blockquote>  
  </body>');  
   
  return OK;  
   
       $r->print('
    <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'}) {
    $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'}) {
    if ($ENV{'form.fileaction'} eq 'delete') {
       &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'delete', undef );
       $currentFile = '';
    } elsif($ENV{'form.fileaction'} eq 'rename') {
       &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
       # 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
       
       # $londcall added to help debug
       my $londcall = pop(@dirList);
       $r->print('<br />udir '.$londcall.'<br />');
       $udir = pop(@dirList);
       $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;
 }  }
   
 1;  1;

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


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