--- loncom/publisher/lonpubdir.pm 2006/06/22 20:49:19 1.93 +++ loncom/publisher/lonpubdir.pm 2006/12/06 22:22:39 1.98 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Construction Space Directory Lister # -# $Id: lonpubdir.pm,v 1.93 2006/06/22 20:49:19 albertel Exp $ +# $Id: lonpubdir.pm,v 1.98 2006/12/06 22:22:39 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; @@ -195,7 +196,7 @@ sub startpage { my $formaction='/priv/'.$uname.$thisdisfn.'/'; $formaction=~s|/+|/|g; - my $pagetitle .= &Apache::loncommon::help_open_menu('','','','',3,'Authoring'). + my $pagetitle .= &Apache::loncommon::help_open_menu('','',3,'Authoring'). 'Construction Space: '. '
'. @@ -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,67 @@ 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).''; + &Apache::lonnet::logthis("same $same meta $meta_same"); 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}?'bomb':'Edit Metadata').''; + + if (!$meta_same) { + $title = &mt('Metadata Modified').'
'.$title. + '
'.&mt('Metadata Diffs').''; + $title.="\n".'
'.&mt('Retrieve Metadata').''; + } $status.="\n".'
'.&mt('Retrieve').''; } @@ -688,7 +714,9 @@ sub create_pubselect { ''. ' '; + &HTML::Entities::encode($uname.$thisdisfn.'/'.$filename,'<>&"').'" /> + '; $$numres ++; }