--- loncom/interface/portfolio.pm 2004/07/01 18:59:33 1.10
+++ loncom/interface/portfolio.pm 2004/07/28 19:00:19 1.18
@@ -18,12 +18,9 @@
#
# /home/httpd/html/adm/gpl.txt
#
-
-
# http://www.lon-capa.org/
#
-
package Apache::portfolio;
use strict;
use Apache::Constants qw(:common :http);
@@ -32,17 +29,19 @@ use Apache::lonnet;
use Apache::lontexconvert;
use Apache::lonfeedback;
use Apache::lonlocal;
+
+# receives a file name and path stub from username/userfiles/portfolio/
+# returns an anchor tag consisting encoding filename and currentpath
sub makeAnchor{
- # receives a file name and path stub from username/userfiles/portfolio/
- # returns an anchor tag consisting encoding filename and currentpath
my ($fileName, $currentPath) = @_;
my $anchor = ''.$fileName.'';
return $anchor;
}
+
+# returns html with
separated contents of the directory
+# returns a currentFile (bolds the selected file/dir)
sub displayDirectory {
- # returns html with
separated contents of the directory
- # returns a currentFile (bolds the selected file/dir)
- my ($currentPath, $currentFile, $isDir, @dirList,) = @_;
+ my ($currentPath, $currentFile, @dirList,) = @_;
my $displayOut='';
my $fileName;
my $upPath;
@@ -57,9 +56,9 @@ sub displayDirectory {
$upPath = $1;
}
- $displayOut = $displayOut.'..
';
+ # $displayOut = $displayOut.'..
';
} else {
- $displayOut = $displayOut.'at root '.$currentPath.'
';
+ # $displayOut = $displayOut.'at root '.$currentPath.'
';
}
foreach my $line (@dirList) {
#$strip holds directory/file name
@@ -69,17 +68,18 @@ sub displayDirectory {
if ($testdir =~ m:^1:){
# handle directories different from files
if ($fileName eq $currentFile){ #checks to bold the selected file
- $displayOut.= ''.(makeAnchor($fileName.'/', $currentPath.$fileName.'/').'
');
+ $displayOut.= ''.(makeAnchor($fileName.'/', $fileName.'/').'
'."\n");
}else{
- $displayOut.= (makeAnchor($fileName.'/', $currentPath.$fileName.'/').'
');
+ $displayOut.= (makeAnchor($fileName.'/', $fileName.'/').'
'."\n");
}
}else{
if ($fileName eq $currentFile){ #checks to bold the selected file
- $displayOut.=''.(makeAnchor($fileName, $currentPath).'
');
+ $displayOut.=''.(makeAnchor($fileName, $currentPath).'
'."\n");
}else{
- $displayOut.=(makeAnchor($fileName, $currentPath).'
');
+ $displayOut.=(makeAnchor($fileName, $currentPath).'
'."\n");
}
}
+
}
}
@@ -88,7 +88,7 @@ sub displayDirectory {
sub displayActions {
# returns html to offer user appropriate actions depending on selected file/directory
my $displayOut;
- my ($currentPath, $currentFile, $isDir, $isEmpty) = @_;
+ my ($currentPath, $currentFile, $isEmpty) = @_;
# $displayOut = 'here are actions for '.$currentFile;
if ($currentFile =~ m:/$:){
# if the selected file is a directory, these are the options
@@ -158,6 +158,7 @@ sub displayActions {
sub handler {
# this handles file management
my $r = shift;
+ my $iconpath= $r->dir_config('lonIconsURL') . "/";
my @dirList; # will hold directory listing as array
my $udir; # returned from home server
my $currentPath; # path assuming /userfiles/portfolio/ as root
@@ -165,49 +166,29 @@ sub handler {
my $action; # delete, rename, makedirectory, removedirectory,
my $filenewname; # for rename action (guess what we do with it!)
my $isFile;
- my $isDir;
my $isEmpty;
- # send header
- # FIXME need to start using
+ my $dirptr=16384;
&Apache::loncommon::no_cache($r);
- &Apache::loncommon::content_type($r, 'text/html');
- &Apache::loncommon::bodytag('Portfolio Managment', 'bgcolor="dogfood"');
-#
-# $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
-# $r->print('
'.
-# 'Portfolio Management'.
-# "\n");
-#
- # FIXME need to start using
-# $r->print('
-#
-# ');
-
-# $r->content_type('text/html');
-# $r->send_http_header;
-# $r->print(''.
-# 'Portfolio Management'.
-# "\n");
-#
-# $r->print ('
-#
-# ');
- #grab stuff that was sent
+ # Give the LON-CAPA page header
+ $r->print(''.
+ &mt('Portfolio Manager').
+ "\n".
+ &Apache::loncommon::bodytag('Portfolio Manager'));
+ $r->rflush();
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['selectfile','currentpath', 'currentfile']);
-# $r->print ('
CP= '.$ENV{'form.currentpath'}.'
');
# 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'}){
+ if ($ENV{'form.currentpath'}) {
$currentPath = $ENV{'form.currentpath'};
- }else{
+ } else {
$currentPath = '/';
}
- if ($ENV{'form.selectfile'}){
- $r->print('
found selectfile'.$ENV{'form.selectfile'} .'
');
+ if ($ENV{'form.selectfile'}) {
# have to check if the selected file is a subdirectory
if ($ENV{'form.selectfile'} =~ /-\(Dir\)/){
# $currentPath =~ /\-\(Dir\)/;
@@ -215,68 +196,46 @@ sub handler {
$r->print('
'.$currentPath.'
');
}
$currentFile = $ENV{'form.selectfile'};
- }else{
+ } 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'}.'
');
- $r->print (&Apache::lonnet::userfileupload('uploaddoc','','portfolio'.$currentPath).'
');
+ if ($ENV{'form.uploaddoc.filename'}) {
+ $r->print($ENV{'form.storeupl'}.'
');
+ $r->print(&Apache::lonnet::userfileupload('uploaddoc','','portfolio'.$currentPath).'
');
}
# similarly, we need to delete or rename files before getting directory list
if ($ENV{'form.selectfile'}){
- if ($ENV{'form.fileaction'} eq 'delete'){
+ if ($ENV{'form.fileaction'} eq 'delete') {
$r->print('
trying to delete '.$currentPath.$ENV{'form.selectfile'}.'
');
$r->print(&Apache::lonnet::removeuserfile($ENV{'user.name'}, $ENV{'user.domain'},'portfolio'.$currentPath.$ENV{'form.selectfile'}));
$currentFile = '';
- }elsif($ENV{'form.fileaction'} eq 'rename') {
+ } elsif ($ENV{'form.fileaction'} eq 'rename') {
&Apache::lonnet::portfoliomanage($currentPath.$ENV{'form.selectfile'}, 'rename', $currentPath.$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
+ # as well as information about the home server directory structure, specifically
# the path to the users userfiles directory.
-# $r->print('dir list follows
'.&Apache::lonnet::portfoliolist($currentPath, $currentFile).'
');
- my $list = &Apache::lonnet::portfoliolist($currentPath, $currentFile);
- @dirList = split(/:/,$list);
-# foreach my $line (@dirlist) {
-#
-# #$strip holds directory/file name
-# #$dom
-# my ($strip,$dom,undef,$testdir,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
-# $r->print ($strip.' '.$testdir.'
');
-# }
-# @dirList = split /
/, (&Apache::lonnet::portfoliolist($currentPath, $currentFile));
+ #
+ my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'},
+ $ENV{'user.name'}).
+ '/userfiles/portfolio'.$currentPath;
+ @dirList = &Apache::lonnet::dirlist($currentPath, $ENV{'user.domain'}, $ENV{'user.name'}, $portfolio_root);
- # 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, contains the command sent to lond
- # my $londcall = pop @dirList;
- # $r->print ('
udir '.$londcall.'
');
- # $udir = pop @dirList;
- # $r->print ('
path returned '.$udir.'
');
- # $isFile = pop @dirList;
-# $r->print ('
isfile '.$isFile.'
');
-# $isDir = pop @dirList;
- if (@dirList == 2){ # need to know if directory is empty to it can be removed if desired
+ if (@dirList == 2) { # need to know if directory is empty so it can be removed if desired
$isEmpty = 1;
- }else{
+ } else {
$isEmpty = 0;
}
-# $r->print ('
lines left ind dirlist '.@dirList.'
');
-# return OK if $r->header_only;
- # Stuff to maintain proper setting for selected file
- if ($ENV{'form.selectfile'}){
- if ($ENV{'form.fileaction'} eq 'delete'){
+
+ 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{
-
+ } elsif ($ENV{'form.fileaction'} eq 'rename') {
+ &Apache::lonnet::portfoliomanage($ENV{'form.selectfile'}, 'rename', $ENV{'form.filenewname'});
+ } else {
# Remember user's file selection for later
$ENV{'portfolio.file'} = $ENV{'form.selectfile'};
# offer things user can do with selected file
@@ -291,15 +250,27 @@ sub handler {
# Display begins here
#
##############################
- $r->print ('
start ');
- $r->print ($udir);
- $r->print ('');
- $r->print (displayDirectory ($currentPath, $currentFile, $isDir, @dirList));
- $r->print (' | >');
- $r->print (displayActions ($currentPath, $currentFile, $isDir, $isEmpty));
- $r->print (' | >
');
- $r->print ('
end display
');
- $r->print ('
');
+ $r->print(''.
+ ' | Actions | Name | Title | Status | Last Modified |
');
+ foreach my $line (@dirList) {
+ #$strip holds directory/file name
+ #$dom
+ my ($fileName,$dom,undef,$testdir,undef,undef,undef,undef,undef,undef,undef,undef,undef,undef,$obs,undef)=split(/\&/,$line,16);
+ if ($dirptr&$testdir){
+ $r->print('![]('.$iconpath.'folder_closed.gif) |
');
+ }else{
+ $r->print('![]('.$iconpath.'doc.gif) |
');
+ }
+ }
+# pink bg
+#
blue bg
+# $r->print(displayDirectory($currentPath, $currentFile, @dirList));
+# $r->print('>');
+# $r->print(displayActions($currentPath, $currentFile, $isEmpty));
+ $r->print(' |
');
+ $r->print('
');
+ $r->print("\n\n");
+ $r->rflush();
return OK;
}