--- loncom/publisher/lonpubdir.pm 2001/05/26 15:29:22 1.8 +++ loncom/publisher/lonpubdir.pm 2001/12/04 15:34:57 1.16 @@ -1,6 +1,30 @@ # The LearningOnline Network with CAPA -# # (Publication Handler +# +# $Id: lonpubdir.pm,v 1.16 2001/12/04 15:34:57 albertel Exp $ +# +# Copyright Michigan State University Board of Trustees +# +# This file is part of the LearningOnline Network with CAPA (LON-CAPA). +# +# LON-CAPA is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# LON-CAPA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LON-CAPA; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# /home/httpd/html/adm/gpl.txt +# +# http://www.lon-capa.org/ +# # # (TeX Content Handler # @@ -10,7 +34,7 @@ # 03/23 Guy Albertelli # 03/24,03/29 Gerd Kortemeyer) # -# 03/31,04/03,05/09 Gerd Kortemeyer +# 03/31,04/03,05/09,06/23,08/18,08/20 Gerd Kortemeyer package Apache::lonpubdir; @@ -39,9 +63,10 @@ sub handler { my $uname; my $udom; - unless (($uname,$udom)= + ($uname,$udom)= &Apache::loncacc::constructaccess( - $fn,$r->dir_config('lonDefDomain'))) { + $fn,$r->dir_config('lonDefDomain')); + unless (($uname) && ($udom)) { $r->log_reason($uname.' at '.$udom. ' trying to publish file '.$ENV{'form.filename'}. ' ('.$fn.') - not authorized', @@ -85,19 +110,34 @@ sub handler { my $linkdir='/~'.$uname.$thisdisfn; $r->print(''. - ''); + ''); my $filename; my $dirptr=16384; opendir(DIR,$fn); - while ($filename=readdir(DIR)) { + my @files=sort(readdir(DIR)); + foreach my $filename (@files) { my ($cdev,$cino,$cmode,$cnlink, $cuid,$cgid,$crdev,$csize, $catime,$cmtime,$cctime, $cblksize,$cblocks)=stat($fn.'/'.$filename); - $filename=~/\.(\w+)$/; - if (($1 ne 'meta') && (&Apache::lonnet::fileembstyle($1))) { + + my $extension=''; + if ($filename=~/\.(\w+)$/) { $extension=$1; } + if ($cmode&$dirptr) { + my $disfilename=$filename; + if ($filename eq '..') { + $disfilename='Parent Directory'; + } + unless ((($filename eq '..') && ($thisdisfn eq '')) || + ($filename eq '.')) { + $r->print('' + ); + } + } elsif (&Apache::lonnet::fileembstyle($extension) ne 'hdn') { my $status='Unpublished'; my $bgcol='#FFBBBB'; if (-e $resdir.'/'.$filename) { @@ -114,25 +154,21 @@ sub handler { if (&Apache::lonnet::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') { $status.='
Diffs'; } } + $status.='
Retrieve'; } $r->print(''); - } elsif ($cmode&$dirptr) { - my $disfilename=$filename; - if ($filename eq '..') { - $disfilename='Parent Directory'; - } - unless ((($filename eq '..') && ($thisdisfn eq '')) || - ($filename eq '.')) { - $r->print(''); - } + ''. + ''); + } else { + # "hidden" extension and not a directory, so hide it away. } } closedir(DIR);
FilenameModifiedStatus
FilenameModifiedStatus 
'.$disfilename. + ''.localtime($cmtime).'  
'.$filename. - ''.localtime($cmtime).''.$status.'
'.$disfilename. - ''.localtime($cmtime).' 
'.localtime($cmtime).''.$status.''. + 'Publish