--- loncom/publisher/lonpubdir.pm 2002/09/16 13:05:49 1.26
+++ loncom/publisher/lonpubdir.pm 2003/12/05 14:26:25 1.47
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
-# (Publication Handler
+# Construction Space Directory Lister
#
-# $Id: lonpubdir.pm,v 1.26 2002/09/16 13:05:49 www Exp $
+# $Id: lonpubdir.pm,v 1.47 2003/12/05 14:26:25 sakharuk 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
#
###
@@ -49,6 +48,7 @@ use File::Copy;
use Apache::Constants qw(:common :http :methods);
use Apache::loncacc;
use Apache::loncommon();
+use Apache::lonlocal;
sub handler {
@@ -70,13 +70,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/\/$//;
@@ -104,14 +104,16 @@ sub handler {
# Start off the diretory table.
$r->print('
'.
- '
Actions
Name
Title
'.
- '
Status
Last Modified
');
+ '
'.&mt('Actions').'
'.&mt('Name').'
'.
+ &mt('Title').'
'.
+ '
'.&mt('Status').'
'.&mt('Last Modified').
+ '
');
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,
@@ -148,7 +150,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 (?)
@@ -164,6 +168,7 @@ sub getEffectiveUrl {
$fn=~s|^/~(\w+)|/home/$1/public_html|;
}
}
+ $fn=~s/\/+/\//g;
return $fn;
}
#
@@ -180,23 +185,53 @@ sub getEffectiveUrl {
sub startpage {
my ($r, $uname, $udom, $thisdisfn) = @_;
- $r->content_type('text/html');
+ &Apache::loncommon::content_type($r,'text/html');
$r->send_http_header;
$r->print('LON-CAPA Construction Space');
$r->print(&Apache::loncommon::bodytag(undef,undef,undef,1));
-
- $r->print('
Construction Space Directory '.
+ my $pubdirscript=(<
+// Store directory location for menu bar to find
+
+parent.lastknownpriv='/~$uname/$thisdisfn/';
+
+// Confirmation dialogues
+
+ 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('
'.&mt('Construction Space Directory').' '.
$thisdisfn.'/
'.
+ ''.
+ $pubdirscript.
'');
+ ''.
+ ''.
+ '
'.
+'
'.&mt('Force publication of unmodified files').'.
');
if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
- $r->print('