--- loncom/publisher/lonpubdir.pm 2011/10/26 17:31:40 1.133 +++ loncom/publisher/lonpubdir.pm 2011/10/30 20:28:02 1.134 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Construction Space Directory Lister # -# $Id: lonpubdir.pm,v 1.133 2011/10/26 17:31:40 www Exp $ +# $Id: lonpubdir.pm,v 1.134 2011/10/30 20:28:02 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -437,15 +437,19 @@ sub getSourceRightString { } # # Put out a directory table row: -# putdirectory(r, base, here, dirname, modtime) -# r - Apache request object. -# reqfile - File in request. -# here - Where we are in directory tree. -# dirname - Name of directory special file. -# modtime - Encoded modification time. -# +# putdirectory(r, base, here, dirname, modtime, targetdir, bombs, numdir) +# r - Apache request object. +# reqfile - File in request. +# here - Where we are in directory tree. +# dirname - Name of directory special file. +# modtime - Encoded modification time. +# targetdir - Publication target directory. +# bombs - Reference to hash of URLs with runtime error messages. +# numdir - Reference to scalar used to track number of sub-directories +# in directory (used in form name for each "actions" dropdown). +# sub putdirectory { - my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs, $numdir) = @_; + my ($r, $reqfile, $here, $dirname, $modtime, $targetdir, $bombs, $numdir) = @_; # construct the display filename: the directory name unless ..: @@ -455,9 +459,11 @@ sub putdirectory { # Don't display directory itself, and there is no way up from root directory unless ((($dirname eq '..') && ($reqfile=~/^\/[^\/]+\/[^\/]+$/)) || ($dirname eq '.')) { my $kaputt=0; - foreach (keys %{$bombs}) { - if ($_=~m:^\Q$resdir\E/\Q$disfilename\E/:) { $kaputt=1; last; } - } + if (ref($bombs) eq 'HASH') { + foreach my $key (keys(%{$bombs})) { + if ($key =~ m{^\Q$targetdir/$disfilename\E/}) { $kaputt=1; last; } + } + } # # Get the metadata from that directory's default.meta to display titles # @@ -493,7 +499,7 @@ sub putdirectory { ''.$actionitem.''. ''. $disfilename.''. - ''.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'}); + ''.($kaputt?&Apache::lonhtmlcommon::authorbombs($targetdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'}); if ($Apache::lonpublisher::metadatafields{'subject'} ne '') { $r->print(' '. $Apache::lonpublisher::metadatafields{'subject'}. @@ -557,7 +563,7 @@ sub putresource { $rights_status .= $lt_SourceRight{&getSourceRightString($targetdir.'/'.$filename)}; - $title = ''. &getTitleString($targetdir.'/'.$filename).''; if ($same) { @@ -693,7 +699,7 @@ Apache::lonpubdir - Construction space d Invoked (for various locations) by /etc/httpd/conf/srm.conf: - + PerlAccessHandler Apache::loncacc SetHandler perl-script PerlHandler Apache::lonpubdir @@ -766,16 +772,20 @@ Output the header of the page. This inc $str = getTitleString($fullname); $fullname - Fully qualified filename to check. -=item putdirectory(r, base, here, dirname, modtime) +=item putdirectory($r, $base, $here, $dirname, $modtime, $targetdir, $bombs, + $numdir) Put out a directory table row: - putdirectory($r, $base, $here, $dirname, $modtime) - $r - Apache request object. - $reqfile - File in request. - $here - Where we are in directory tree. - $dirname - Name of directory special file. - $modtime - Encoded modification time. + $r - Apache request object. + $reqfile - File in request. + $here - Where we are in directory tree. + $dirname - Name of directory special file. + $modtime - Encoded modification time. + targetdir - Publication target directory. + bombs - Reference to hash of URLs with runtime error messages. + numdir - Reference to scalar used to track number of sub-directories + in directory (used in form name for each "actions" dropdown). =back