--- loncom/publisher/lonpubdir.pm 2002/10/19 06:34:15 1.27 +++ loncom/publisher/lonpubdir.pm 2011/10/30 20:28:02 1.134 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA -# (Publication Handler +# Construction Space Directory Lister # -# $Id: lonpubdir.pm,v 1.27 2002/10/19 06:34:15 albertel Exp $ +# $Id: lonpubdir.pm,v 1.134 2011/10/30 20:28:02 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,20 +25,6 @@ # # http://www.lon-capa.org/ # -# -# (TeX Content Handler -# -# YEAR=2000 -# 05/29/00,05/30,10/11 Gerd Kortemeyer) -# -# 11/28,11/29,11/30,12/01,12/02,12/04,12/23 Gerd Kortemeyer -# YEAR=2001 -# 03/23 Guy Albertelli -# 03/24,03/29 Gerd Kortemeyer) -# 03/31,04/03,05/09,06/23,08/18,08/20 Gerd Kortemeyer -# 12/15 Scott Harrison -# 12/28 Gerd Kortemeyer -# ### package Apache::lonpubdir; @@ -49,69 +35,68 @@ use File::Copy; use Apache::Constants qw(:common :http :methods); use Apache::loncacc; use Apache::loncommon(); +use Apache::lonhtmlcommon(); +use Apache::londiff(); +use Apache::lonlocal; +use Apache::lonmsg; +use Apache::lonmenu; +use Apache::lonnet; +use LONCAPA; sub handler { my $r=shift; - my $fn; - - - - $fn = getEffectiveUrl($r); - # Validate access to the construction space and get username@domain. my $uname; my $udom; - ($uname,$udom)= - &Apache::loncacc::constructaccess( - $fn,$r->dir_config('lonDefDomain')); + ($uname,$udom)=&Apache::loncacc::constructaccess($r->uri); unless (($uname) && ($udom)) { - $r->log_reason($uname.' at '.$udom. - ' trying to publish file '.$ENV{'form.filename'}. - ' ('.$fn.') - not authorized', - $r->filename); return HTTP_NOT_ACCEPTABLE; } - # Remove trailing / from direcgtory name. +# ----------------------------------------------------------- Start page output + my $fn=$r->filename; $fn=~s/\/$//; - unless ($fn) { - $r->log_reason($ENV{'user.name'}.' at '.$ENV{'user.domain'}. - ' trying to list empty directory', $r->filename); - return HTTP_NOT_FOUND; - } - -# ----------------------------------------------------------- Start page output - my $thisdisfn=$fn; - $thisdisfn=~s/^\/home\/$uname\/public_html//; # subdirectory part of - # construction space. my $docroot=$r->dir_config('lonDocRoot'); # Apache londocument root. + $thisdisfn=~s/^\Q$docroot\E\/priv//; - my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory - my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory. - my $linkdir='/priv/'.$uname.$thisdisfn; # Full URL name of constr space. - + my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory + my $targetdir='/res'.$thisdisfn; # Publication target directory. + my $linkdir='/priv'.$thisdisfn; # Full URL name of constr space. + my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom); &startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page. - - # Start off the diretory table. + &dircontrols($r,$uname,$udom,$thisdisfn); # Put out actions for directory, + # browse/upload + new file page. + &resourceactions($r,$uname,$udom,$thisdisfn); #Put out form used for printing/deletion etc. - $r->print('
Actions | Name | Title | '. - 'Status | Last Modified | '.&mt('Type').' | ' + .''.&mt('Actions').' | ' + .''.&mt('Name').' | ' + .''.&mt('Title').' | ' + .''.&mt('Status').' | ' + .''.&mt('Last Modified').' | ' + .&Apache::loncommon::end_data_table_header_row() + ); my $filename; my $dirptr=16384; # Mask indicating a directory in stat.cmode. opendir(DIR,$fn); - my @files=sort(readdir(DIR)); + my @files=sort {uc($a) cmp uc($b)} (readdir(DIR)); foreach my $filename (@files) { my ($cdev,$cino,$cmode,$cnlink, $cuid,$cgid,$crdev,$csize, @@ -121,51 +106,22 @@ sub handler { my $extension=''; if ($filename=~/\.(\w+)$/) { $extension=$1; } if ($cmode&$dirptr) { - putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime); + &putdirectory($r, $thisdisfn, $linkdir, $filename, $cmtime,$targetdir,\%bombs,\$numdir); } elsif (&Apache::loncommon::fileembstyle($extension) ne 'hdn') { - putresource($r, $uname, $filename, $thisdisfn, $resdir, - $targetdir, $linkdir, $cmtime); + &putresource($r, $udom, $uname, $filename, $thisdisfn, $resdir, + $targetdir, $linkdir, $cmtime,\%bombs,\$numres); } else { # "hidden" extension and not a directory, so hide it away. } } closedir(DIR); - $r->print('
---|