--- loncom/publisher/lonpubdir.pm 2006/06/26 22:47:27 1.94
+++ loncom/publisher/lonpubdir.pm 2007/01/19 02:36:04 1.100
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Construction Space Directory Lister
#
-# $Id: lonpubdir.pm,v 1.94 2006/06/26 22:47:27 albertel Exp $
+# $Id: lonpubdir.pm,v 1.100 2007/01/19 02:36:04 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -41,6 +41,7 @@ use Apache::lonlocal;
use Apache::lonmsg;
use Apache::lonmenu;
use Apache::lonnet;
+use LONCAPA;
sub handler {
@@ -157,7 +158,7 @@ sub getEffectiveUrl {
#
$fn=~s/^http\:\/\/[^\/]+\///;
$fn=~s/^\///;
- $fn=~s/\~(\w+)/\/home\/$1\/public_html/;
+ $fn=~s{~($LONCAPA::username_re)}{/home/$1/public_html};
# Remove trailing / strings (?)
@@ -170,7 +171,7 @@ sub getEffectiveUrl {
#internal authentication, needs fixup.
$fn = $r->uri(); # non users do not get the full path request
# through SCRIPT_FILENAME
- $fn=~s|^/~(\w+)|/home/$1/public_html|;
+ $fn=~s{^/~($LONCAPA::username_re)}{/home/$1/public_html};
}
}
$fn=~s/\/+/\//g;
@@ -309,8 +310,9 @@ parent.lastknownpriv='/~$uname$thisdisfn
return
}
function changename(theform,activity) {
- var newname=prompt('New Name');
- if (newname == "" || !newname) {
+ var oldname=theform.dispfilename.value;
+ var newname=prompt('New Name',oldname);
+ if (newname == "" || !newname || newname == oldname) {
return
}
document.moveresource.newfilename.value = newname
@@ -513,9 +515,9 @@ sub putdirectory {
%Apache::lonpublisher::metadatafields=();
%Apache::lonpublisher::metadatakeys=();
my $construct=$here;
- $construct=~s:^/priv/(\w+)$:/home/$1/public_html:;
+ $construct=~s{^/priv/($LONCAPA::username_re)$}{/home/$1/public_html};
my $dirpath = $here;
- $dirpath=~s:^/priv/:/~:;
+ $dirpath=~s{^/priv/}{/~};
&Apache::lonpublisher::metaeval(&Apache::lonnet::getfile(
$construct.'/'.$dirname.'/default.meta'
));
@@ -571,6 +573,7 @@ sub putresource {
my $css_class='LC_browser_file';
my $title=' ';
my $publish_button=&mt('Publish');
+ my $cstr_dir = '/home/'.$uname.'/public_html/'.$thisdisfn.'/';
# my $action_buttons=
# '
'.
@@ -585,44 +588,66 @@ sub putresource {
$same=1;
} else {
if (&Apache::londiff::are_different_files($resdir.'/'.$filename,
- '/home/'.$uname.'/public_html/'.$thisdisfn.'/'.$filename)) {
+ $cstr_dir.'/'.$filename)) {
$same=0;
} else {
$same=1;
}
}
+ my $meta_cmtime = (stat($cstr_dir.'/'.$filename.'.meta'))[9];
+ my $meta_rmtime = (stat($resdir.'/'.$filename.'.meta'))[9];
+ my $meta_same = 1;
+ if ($meta_rmtime < $meta_cmtime
+ && &Apache::londiff::are_different_files($resdir.'/'.$filename.'.meta',
+ $cstr_dir.'/'.$filename.'.meta')) {
+ $meta_same = 0;
+ }
$publish_button=&mt('Re-publish');
+ my $rights_status =
+ &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
+ &mt(&getSourceRightString($targetdir.'/'.$filename));
+ $title = ''.
+ &getTitleString($targetdir.'/'.$filename).'';
if ($same) {
- $pubstatus = 'published';
- $status=&mt('Published').'
'.
- &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
- &mt(&getSourceRightString($targetdir.'/'.$filename));
if (&Apache::lonnet::metadata($targetdir.'/'.$filename,'obsolete')) {
$pubstatus = 'obsolete';
$status=&mt('Obsolete');
- }
+ } else {
+ if (!$meta_same) {
+ $pubstatus = 'metamodified';
+ } else {
+ $pubstatus = 'published';
+ }
+ $status=&mt('Published').
+ '
'. $rights_status;
+ }
# } else {
# $action_buttons='';
# }
- $title=''.
- &getTitleString($targetdir.'/'.$filename).'';
} else {
$pubstatus = 'modified';
- $status=&mt('Modified').'
'.
- &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
- &mt(&getSourceRightString($targetdir.'/'.$filename));
+ $status=&mt('Modified').
+ '
'. $rights_status;
# $action_buttons='';
- $title=''.
- &getTitleString($targetdir.'/'.$filename).'';
if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {
$status.='
'.&mt('Diffs').'';
}
- }
+ }
+
$title.="\n".'
'.
($$bombs{$targetdir.'/'.$filename}?'':'Edit Metadata').'';
+
+ if (!$meta_same) {
+ $title = &mt('Metadata Modified').'
'.$title.
+ '
'.&mt('Metadata Diffs').'';
+ $title.="\n".'
'.&mt('Retrieve Metadata').'';
+ }
$status.="\n".'
'.&mt('Retrieve').'';
}
@@ -688,7 +713,9 @@ sub create_pubselect {
''.
'
';
+ &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" />
+ ';
$$numres ++;
}