--- loncom/publisher/lonpubdir.pm	2011/10/30 20:28:02	1.134
+++ loncom/publisher/lonpubdir.pm	2012/10/29 17:38:55	1.144
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Construction Space Directory Lister
 #
-# $Id: lonpubdir.pm,v 1.134 2011/10/30 20:28:02 raeburn Exp $
+# $Id: lonpubdir.pm,v 1.144 2012/10/29 17:38:55 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -33,7 +33,6 @@ use strict;
 use Apache::File;
 use File::Copy;
 use Apache::Constants qw(:common :http :methods);
-use Apache::loncacc;
 use Apache::loncommon();
 use Apache::lonhtmlcommon();
 use Apache::londiff();
@@ -52,7 +51,7 @@ sub handler {
   my $uname;
   my $udom;
 
-  ($uname,$udom)=&Apache::loncacc::constructaccess($r->uri); 
+  ($uname,$udom)=&Apache::lonnet::constructaccess($r->uri); 
   unless (($uname) && ($udom)) {
      return HTTP_NOT_ACCEPTABLE;
   }
@@ -145,7 +144,7 @@ sub startpage {
     &Apache::lonhtmlcommon::clear_breadcrumbs();
     &Apache::lonhtmlcommon::add_breadcrumb({
         'text'  => 'Construction Space',
-        'href'  => &Apache::loncommon::authorspace(),
+        'href'  => &Apache::loncommon::authorspace($formaction),
     });
     # breadcrumbs (and tools) will be created 
     # in start_page->bodytag->innerregister
@@ -154,7 +153,7 @@ sub startpage {
     $r->print(&Apache::loncommon::start_page('Construction Space',undef));
 
     $r->print(&Apache::loncommon::head_subbox(
-                &Apache::loncommon::CSTR_pageheader(1)));
+                &Apache::loncommon::CSTR_pageheader()));
 
     my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);
     my $doctitle = 'LON-CAPA '.&mt('Construction Space');
@@ -458,11 +457,12 @@ sub putdirectory {
     my $disfilename = $dirname;
 # Don't display directory itself, and there is no way up from root directory
     unless ((($dirname eq '..') && ($reqfile=~/^\/[^\/]+\/[^\/]+$/)) || ($dirname eq '.')) {
-	my $kaputt=0;
+        my $kaputt=0;
         if (ref($bombs) eq 'HASH') {
-	    foreach my $key (keys(%{$bombs})) {
-	        if ($key =~ m{^\Q$targetdir/$disfilename\E/}) { $kaputt=1; last; }
-	    }
+            foreach my $key (keys(%{$bombs})) {
+                my $currentdir = &Apache::lonnet::declutter("$targetdir/$disfilename");
+                if (($key) =~ m{^\Q$currentdir\E/}) { $kaputt=1; last; }
+            }
         }
 #
 # Get the metadata from that directory's default.meta to display titles
@@ -522,9 +522,9 @@ sub putresource {
     my $pubstatus = 'unpublished';
     my $status=&mt('Unpublished');
     my $css_class='LC_browser_file';
-    my $title=' ';
+    my $title='';
     my $publish_button=&mt('Publish');
-    my $cstr_dir = $r->dir_config('lonDocRoot').'/priv/'.$udom.'/'.$uname.'/'.$thisdisfn.'/';
+    my $cstr_dir = $r->dir_config('lonDocRoot').'/priv'.$thisdisfn;
     my $linkfilename=&HTML::Entities::encode('/priv'.$thisdisfn.'/'.$filename,'<>&"');
 
     if (-e $resdir.'/'.$filename) {
@@ -584,30 +584,43 @@ sub putresource {
 	    $status=&mt('Modified').
 		'<br />'. $rights_status;
 	    if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {
-		$status.='<br /><a href="/adm/diff?filename='.$linkfilename.
-		    '&amp;versiontwo=priv" target="cat">'.&mt('Diffs').'</a>';
+		$status.='<br />'.
+                         &Apache::loncommon::modal_link(
+                             '/adm/diff?filename='.$linkfilename.'&amp;versiontwo=priv',
+                             &mt('Diffs'),600,500);
 	    }
 	} 
-
-	$title.="\n".'<br /><a href="'.$linkfilename.'.meta">'. 
-	    ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="'.&mt('bomb').'" />':&mt('Edit Metadata')).'</a>';
-
 	if (!$meta_same) {
 	    $title = &mt('Metadata Modified').'<br />'.$title.
-		'<br /><a href="/adm/diff?filename=/priv/'.$linkfilename.'.meta'.
-		'&amp;versiontwo=priv" target="cat">'.&mt('Metadata Diffs').'</a>';
-	    $title.="\n".'<br /><a href="/adm/retrieve?filename='.$linkfilename.'.meta" target="_parent">'.&mt('Retrieve Metadata').'</a>';
+		'<br />'.
+                &Apache::loncommon::modal_link(
+                    '/adm/diff?filename='.$linkfilename.'.meta'.'&amp;versiontwo=priv',
+                    &mt('Metadata Diffs'),600,500);
+	    $title.="\n".'<br />'.
+                &Apache::loncommon::modal_link(
+                    '/adm/retrieve?filename='.$linkfilename.'.meta&amp;inhibitmenu=yes&amp;add_modal=yes',
+                    &mt('Retrieve Metadata'),600,500);
 	}
-	$status.="\n".'<br /><a href="/adm/retrieve?filename='.$linkfilename.'" target="_parent">'.&mt('Retrieve').'</a>';
+	$status.="\n".'<br />'.
+             &Apache::loncommon::modal_link(
+                 '/adm/retrieve?filename='.$linkfilename.'&amp;inhibitmenu=yes&amp;add_modal=yes',&mt('Retrieve'),600,500);
     }
+    # Allow editing metadata of published and unpublished resources
+    $title .= "\n".'<br />' if ($title);
+    $title .= '<a href="'.$linkfilename.'.meta">'.
+              ($$bombs{&Apache::lonnet::declutter($targetdir.'/'.$filename)}?
+                  '<img src="/adm/lonMisc/bomb.gif" border="0" alt="'.&mt('bomb').'" />':
+                  &mt('Edit Metadata')).
+              '</a>';
+
     my $editlink='';
     my $editlink2='';
     if ($filename=~/\.(xml|html|htm|xhtml|xhtm|sty)$/) {
-	$editlink=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_parent">'.&mt('Edit').'</a>)';
+	$editlink=' <br />(<a href="'.$linkdir.'/'.$filename.'?editmode=Edit&problemmode=edit">'.&mt('Edit').'</a>)';
     }
-    if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
-	$editlink=' (<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_parent">'.&mt('EditXML').'</a>)';
-	$editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?forceColoredit=1" target="_parent">'.&mt('Edit').'</a>)';
+    if ($filename=~/$LONCAPA::assess_re/) {
+	$editlink=' (<a href="'.$linkdir.'/'.$filename.'?editmode=Edit&problemmode=editxml">'.&mt('EditXML').'</a>)';
+	$editlink2=' <br />(<a href="'.$linkdir.'/'.$filename.'?editmode=Edit&problemmode=edit">'.&mt('Edit').'</a>)';
     }
     if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm|sty)$/) {
 	$editlink.=' (<a href="/adm/cleanup?filename='.$linkfilename.'" target="_parent">'.&mt('Clean Up').')</a>';