--- loncom/interface/portfolio.pm 2004/08/24 05:01:42 1.23 +++ loncom/interface/portfolio.pm 2004/08/24 06:16:55 1.24 @@ -40,7 +40,7 @@ sub make_anchor { # returns html with
separated contents of the directory # returns a currentFile (bolds the selected file/dir) -sub display_directory { +sub display_directory_old { my ($currentPath, $currentFile, @dirList,) = @_; my $displayOut=''; my $filename; @@ -159,118 +159,27 @@ sub displayActions { return $displayOut; } -sub handler { - # this handles file management - my $r = shift; +my $dirptr=16384; +sub display_directory { + my ($r,$current_path,$dir_list)=@_; 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 - 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 $isEmpty; - my $dirptr=16384; - &Apache::loncommon::no_cache($r); - &Apache::loncommon::content_type($r,'text/html'); - $r->send_http_header; - # 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']); - # 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'}) { - # have to check if the selected file is a subdirectory - if ($ENV{'form.selectfile'} =~ /-\(Dir\)/) { - # $currentPath =~ /\-\(Dir\)/; - $currentPath = $`.'/'; - $r->print('
'.$currentPath.'
'); - } - $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'}.'
'); - $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') { - $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') { - &Apache::lonnet::portfoliomanage($currentPath.$ENV{'form.selectfile'}, 'rename', $currentPath.$ENV{'form.filenewname'} ); - } - } - # we always need $dirList, plus this will return information about the current file - # as well as information about the home server directory structure, specifically - # the path to the users userfiles directory. - # - my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'}, - $ENV{'user.name'}). - '/userfiles/portfolio'; - @dirList = &Apache::lonnet::dirlist($currentPath, $ENV{'user.domain'}, $ENV{'user.name'}, $portfolio_root); - - if (@dirList == 2) { # need to know if directory is empty so it can be removed if desired - $isEmpty = 1; - } else { - $isEmpty = 0; - } - - 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'}); - } 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(''); $r->print('
'); my $displayOut = '
'; $displayOut = $displayOut.''. - ''. + ''. ''. '
'; $r->print($displayOut); $r->print('
'); - my $displayOut = '
'; - $displayOut = $displayOut.''. - ''. + $displayOut = ''; + $displayOut .= ''. + ''. ''. '
'; $r->print($displayOut); $r->print('
'); - my @tree = split (/\//,$currentPath); + my @tree = split (/\//,$current_path); $r->print(''.&make_anchor('/','/')); if (@tree > 1){ my $newCurrentPath = ''; @@ -280,15 +189,15 @@ sub handler { } } $r->print(''); - &Apache::lonhtmlcommon::store_recent('portfolio',$currentPath,$currentPath); + &Apache::lonhtmlcommon::store_recent('portfolio',$current_path,$current_path); $r->print('
'. &Apache::lonhtmlcommon::select_recent('portfolio','currentpath', 'this.form.submit();')); $r->print("
"); $r->print(''. ''); - my $href_location="/uploaded/$ENV{'user.domain'}/$ENV{'user.name'}/portfolio/$currentPath/"; - foreach my $line (@dirList) { + my $href_location="/uploaded/$ENV{'user.domain'}/$ENV{'user.name'}/portfolio/$current_path/"; + foreach my $line (@$dir_list) { #$strip holds directory/file name #$dom my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); @@ -296,17 +205,21 @@ sub handler { if ($dirptr&$testdir) { $r->print(''); $r->print(''); - $r->print(''); + $r->print(''); $r->print(''); } else { $r->print(''); $r->print(''); $r->print(''); $r->print(' pink bg # blue bg -# $r->print(&display_directory($currentPath, $currentFile, @dirList)); +# $r->print(&display_directory($current_path, $currentFile, @dir_list)); # $r->print('>
Actions NameSizeLast Modified
Go to ...'.&make_anchor($filename.'/',$currentPath.$filename.'/').''.&make_anchor($filename.'/',$current_path.$filename.'/').'
+
+ + +
'. @@ -319,11 +232,145 @@ sub handler { } #
'); -# $r->print(&display_actions($currentPath, $currentFile, $isEmpty)); +# $r->print(&display_actions($current_path, $currentFile, $isEmpty)); $r->print('
'); - $r->print(''); +} + +sub open_form { + my ($r)=@_; + $r->print('
'); + $r->print(''); + $r->print(''); + $r->print(''); + $r->print(''); +} + +sub close_form { + my ($r)=@_; + $r->print('

'); + $r->print('
+

+ + +

'); + +} + +sub display_file { + return $ENV{'form.currentpath'}.$ENV{'form.selectfile'}; +} + +sub done { + return ('

'.&mt('Done').'

'); +} + +sub delete { + my ($r)=@_; + &open_form($r); + $r->print('

'.&mt('Delete').' '.&display_file().'?

'); + &close_form($r); +} + +sub delete_confirmed { + my ($r)=@_; + my $result=&Apache::lonnet::removeuserfile($ENV{'user.name'}, + $ENV{'user.domain'},'portfolio'. + $ENV{'form.currentpath'}. + $ENV{'form.selectfile'}); + if ($result ne 'ok') { + $r->print(' An errror occured ('.$result. + ')while trying to delete '.&display_file().'
'); + } + $r->print(&done()); +} + +sub rename { + my ($r)=@_; + &open_form($r); + $r->print('

'.&mt('Rename').' '.&display_file().'?

'); + &close_form($r); +} + +sub rename_confirmed { + my ($r)=@_; + &Apache::lonnet::renameuserfile($ENV{'form.currentpath'}.$ENV{'form.selectfile'}, 'rename', $ENV{'form.currentpath'}.$ENV{'form.filenewname'} ); +} + +sub upload { + my ($r)=@_; + my $result=&Apache::lonnet::userfileupload('uploaddoc','', + 'portfolio'.$ENV{'form.currentpath'}); + if ($result !~ m|^/uploaded/|) { + $r->print(' An errror occured ('.$result. + ')while trying to upload '.&display_file().'
'); + } + $r->print(&done()); +} + +sub handler { + # this handles file management + my $r = shift; + my @dir_list; # will hold directory listing as array + my $udir; # returned from home server + my $currentFile; # directory or file contained in $pathToRoot.$current_path + my $action; # delete, rename, makedirectory, removedirectory, + my $filenewname; # for rename action (guess what we do with it!) + my $isFile; + &Apache::loncommon::no_cache($r); + &Apache::loncommon::content_type($r,'text/html'); + $r->send_http_header; + # 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']); + + # 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'}) { + &upload($r); + } elsif ($ENV{'form.action'} eq 'delete') { + if ($ENV{'form.confirmed'}) { + &delete_confirmed($r); + } else { + &delete($r); + } + } elsif ($ENV{'form.action'} eq 'rename') { + # similarly, we need to delete or rename files before getting + # directory list + &rename($r); + } else { + my $current_path='/'; + if ($ENV{'form.currentpath'}) { + $current_path = $ENV{'form.currentpath'}; + } + + my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'}, + $ENV{'user.name'}). + '/userfiles/portfolio'; + @dir_list=&Apache::lonnet::dirlist($current_path,$ENV{'user.domain'}, + $ENV{'user.name'},$portfolio_root); + + # need to know if directory is empty so it can be removed if desired + my $is_empty=(@dir_list == 2); + + &display_directory($r,$current_path,\@dir_list); + + } + $r->print("\n\n"); $r->rflush(); return OK;