--- loncom/publisher/lonpubdir.pm	2011/10/26 17:31:40	1.133
+++ loncom/publisher/lonpubdir.pm	2011/11/23 19:13:01	1.138
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Construction Space Directory Lister
 #
-# $Id: lonpubdir.pm,v 1.133 2011/10/26 17:31:40 www Exp $
+# $Id: lonpubdir.pm,v 1.138 2011/11/23 19:13:01 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -145,7 +145,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 +154,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');
@@ -437,15 +437,19 @@ sub getSourceRightString {
 }
 #
 #  Put out a directory table row:
-#    putdirectory(r, base, here, dirname, modtime)
-#      r       - Apache request object.
-#      reqfile - File in request.
-#      here    - Where we are in directory tree.
-#      dirname - Name of directory special file.
-#      modtime - Encoded modification time.
-# 
+#    putdirectory(r, base, here, dirname, modtime, targetdir, bombs, numdir)
+#      r         - Apache request object.
+#      reqfile   - File in request.
+#      here      - Where we are in directory tree.
+#      dirname   - Name of directory special file.
+#      modtime   - Encoded modification time.
+#      targetdir - Publication target directory.
+#      bombs     - Reference to hash of URLs with runtime error messages.
+#      numdir    - Reference to scalar used to track number of sub-directories
+#                  in directory (used in form name for each "actions" dropdown).
+#
 sub putdirectory {
-    my ($r, $reqfile, $here, $dirname, $modtime, $resdir, $bombs, $numdir) = @_;
+    my ($r, $reqfile, $here, $dirname, $modtime, $targetdir, $bombs, $numdir) = @_;
 
 # construct the display filename: the directory name unless ..:
    
@@ -455,9 +459,11 @@ sub putdirectory {
 # Don't display directory itself, and there is no way up from root directory
     unless ((($dirname eq '..') && ($reqfile=~/^\/[^\/]+\/[^\/]+$/)) || ($dirname eq '.')) {
 	my $kaputt=0;
-	foreach (keys %{$bombs}) {
-	    if ($_=~m:^\Q$resdir\E/\Q$disfilename\E/:) { $kaputt=1; last; }
-	}
+        if (ref($bombs) eq 'HASH') {
+	    foreach my $key (keys(%{$bombs})) {
+	        if ($key =~ m{^\Q$targetdir/$disfilename\E/}) { $kaputt=1; last; }
+	    }
+        }
 #
 # Get the metadata from that directory's default.meta to display titles
 #
@@ -493,7 +499,7 @@ sub putdirectory {
 		  '<td>'.$actionitem.'</td>'.
 		  '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.
 		  $disfilename.'</a></span></td>'.
-		        '<td colspan="3">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});
+		        '<td colspan="3">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($targetdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});
 	if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {
 	    $r->print(' <i>'.
 		      $Apache::lonpublisher::metadatafields{'subject'}.
@@ -557,7 +563,7 @@ sub putresource {
         $rights_status .=
             $lt_SourceRight{&getSourceRightString($targetdir.'/'.$filename)};
 
-	$title = '<a href="/res/'.$targetdir.'/'.$filename.
+	$title = '<a href="'.$targetdir.'/'.$filename.
 	    '.meta" target="cat">'.
 	    &getTitleString($targetdir.'/'.$filename).'</a>';
 	if ($same) {
@@ -597,11 +603,11 @@ sub putresource {
     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>';
@@ -693,7 +699,7 @@ Apache::lonpubdir - Construction space d
 
 Invoked (for various locations) by /etc/httpd/conf/srm.conf:
 
- <LocationMatch "^/\~.*/$">
+ <LocationMatch "^/+priv.*/$">
  PerlAccessHandler       Apache::loncacc
  SetHandler perl-script
  PerlHandler Apache::lonpubdir
@@ -766,16 +772,20 @@ Output the header of the page.  This inc
     $str = getTitleString($fullname);
         $fullname - Fully qualified filename to check.
 
-=item putdirectory(r, base, here, dirname, modtime)
+=item putdirectory($r, $base, $here, $dirname, $modtime, $targetdir, $bombs,
+                   $numdir)
 
     Put out a directory table row:
     
-    putdirectory($r, $base, $here, $dirname, $modtime)
-        $r       - Apache request object.
-        $reqfile - File in request.
-        $here    - Where we are in directory tree.
-        $dirname - Name of directory special file.
-        $modtime - Encoded modification time.
+        $r        - Apache request object.
+        $reqfile  - File in request.
+        $here     - Where we are in directory tree.
+        $dirname  - Name of directory special file.
+        $modtime  - Encoded modification time.
+        targetdir - Publication target directory.
+        bombs     - Reference to hash of URLs with runtime error messages.
+        numdir    - Reference to scalar used to track number of sub-directories
+                    in directory (used in form name for each "actions" dropdown).
 
 =back