--- loncom/publisher/lonpubdir.pm 2002/04/09 06:01:56 1.24 +++ loncom/publisher/lonpubdir.pm 2003/06/16 21:32:43 1.33 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA -# (Publication Handler +# Construction Space Directory Lister # -# $Id: lonpubdir.pm,v 1.24 2002/04/09 06:01:56 albertel Exp $ +# $Id: lonpubdir.pm,v 1.33 2003/06/16 21:32:43 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,7 +36,6 @@ # 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 # ### @@ -70,13 +69,13 @@ sub handler { $fn,$r->dir_config('lonDefDomain')); unless (($uname) && ($udom)) { $r->log_reason($uname.' at '.$udom. - ' trying to publish file '.$ENV{'form.filename'}. + ' trying to list directory '.$ENV{'form.filename'}. ' ('.$fn.') - not authorized', $r->filename); return HTTP_NOT_ACCEPTABLE; } - # Remove trailing / from direcgtory name. + # Remove trailing / from directory name. $fn=~s/\/$//; @@ -95,11 +94,11 @@ sub handler { my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory. - my $linkdir='/~'.$uname.$thisdisfn; # Full URL name of constr space. + my $linkdir='/priv/'.$uname.$thisdisfn; # Full URL name of constr space. - startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page. + &startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page. # Start off the diretory table. @@ -148,7 +147,9 @@ sub getEffectiveUrl { # Replace the ~username of the URL with /home/username/public_html # so that we don't have to worry about ~ expansion internally. # - $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/; + $fn=~s/^http\:\/\/[^\/]+\///; + $fn=~s/^\///; + $fn=~s/\~(\w+)/\/home\/$1\/public_html/; # Remove trailing / strings (?) @@ -176,6 +177,7 @@ sub getEffectiveUrl { # $uname - User name. # $udom - Domain name the user is logged in under. # $thisdisfn - Displayable version of the filename. + sub startpage { my ($r, $uname, $udom, $thisdisfn) = @_; @@ -184,11 +186,36 @@ sub startpage { $r->print('LON-CAPA Construction Space'); - $r->print(''); - + $r->print(&Apache::loncommon::bodytag(undef,undef,undef,1)); + my $pubdirscript=(< + function pubdir(theform) { + if (confirm('Publish complete directory?')) { + theform.submit(); + } + } + function pubrecdir(theform) { + if (confirm('Publish directory and all subdirectories?')) { + theform.pubrec.value='1'; + theform.submit(); + } + } + +ENDPUBDIRSCRIPT + $r->print('

Construction Space Directory '. - $thisdisfn.'/

'); + $thisdisfn.'/'. + ''. + $pubdirscript. + '
'. + ''. + ''. + ''. + ''. +'
'); if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) { $r->print('

Co-Author: '.$uname.' at '.$udom. @@ -236,14 +263,14 @@ sub putdirectory { } unless (( ($dirname eq '..') && ($reqfile eq '')) || ($dirname eq '.')) { - $r->print(''. - 'Click to cwd'. - ''. + $r->print(''. + 'Go to ...'. + ''. $disfilename.''. ' '. ' '. ''.localtime($modtime).''. - ''); + "\n"); } return OK; } @@ -256,6 +283,7 @@ sub putresource { $cmtime) = @_; my $status='Unpublished'; + my $bgcolor='#FFCCCC'; my $title=' '; if (-e $resdir.'/'.$filename) { my ($rdev,$rino,$rmode,$rnlink, @@ -264,33 +292,40 @@ sub putresource { $rblksize,$rblocks)=stat($resdir.'/'.$filename); if ($rmtime>=$cmtime) { $status='Published'; + $bgcolor='#CCFFCC'; $title=''. getTitleString($targetdir.'/'.$filename, 'title').''; } else { $status='Modified'; + $bgcolor='#FFFFCC'; $title=''. - &Apache::lonnet::metadata($targetdir.'/'.$filename,'title').''; + getTitleString($targetdir.'/'.$filename,'title').''; if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') { $status.='
Diffs'; + '&versiontwo=priv" target=cat>Diffs'; } } $status.='
Retrieve'; } - $r->print(''. + my $editlink=''; + if ($filename=~/\.(xml|html|htm|xhtml|xhtm|problem|exam|quiz|assess|survey|form|library)$/) { + $editlink=' (Edit)'; + } + $r->print(''. ''.'Publish'. ''. ''. - ''.$filename.''. + ''. + $filename.''.$editlink. ''. ''.$title.''. ''.$status.''. ''.localtime($cmtime).''. - ''); + "\n"); return OK; } # @@ -324,7 +359,7 @@ __END__ =head1 NAME -Apache::lonpubdir - Publication Handler for Directories +Apache::lonpubdir - Construction space directory lister =head1 SYNOPSIS 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.