--- loncom/publisher/lonpubdir.pm	2008/12/05 09:41:59	1.116
+++ loncom/publisher/lonpubdir.pm	2011/10/21 17:51:23	1.127
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Construction Space Directory Lister
 #
-# $Id: lonpubdir.pm,v 1.116 2008/12/05 09:41:59 bisitz Exp $
+# $Id: lonpubdir.pm,v 1.127 2011/10/21 17:51:23 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -47,58 +47,37 @@ sub handler {
 
   my $r=shift;
 
-  my $fn;
-
-
-
-  $fn = getEffectiveUrl($r);
-
   # Validate access to the construction space and get username@domain.
 
   my $uname;
   my $udom;
 
-  ($uname,$udom)=
-    &Apache::loncacc::constructaccess(
-             $fn,$r->dir_config('lonDefDomain')); 
+  ($uname,$udom)=&Apache::loncacc::constructaccess($r->uri); 
   unless (($uname) && ($udom)) {
-     $r->log_reason($uname.' at '.$udom.
-         ' trying to list directory '.$env{'form.filename'}.
-         ' ('.$fn.') - not authorized', 
-         $r->filename); 
      return HTTP_NOT_ACCEPTABLE;
   }
 
-  # Remove trailing / from directory name.
-
-  $fn=~s/\/$//;
-
-  unless ($fn) { 
-     $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}.
-         ' trying to list empty directory', $r->filename); 
-     return HTTP_NOT_FOUND;
-  } 
-
 # ----------------------------------------------------------- Start page output
 
+  my $fn=$r->filename;
+
   my $thisdisfn=$fn;
-  $thisdisfn=~s/^\/home\/$uname\/public_html//;	# subdirectory part of
-                                                # construction space. 
   my $docroot=$r->dir_config('lonDocRoot');     # Apache  londocument root.
+  $thisdisfn=~s/^\Q$docroot\E\/priv//;
+
+&Apache::lonnet::logthis("Thisdisfn: $thisdisfn");
 
-  my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory
-  my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory.
-  my $linkdir='/priv/'.$uname.$thisdisfn;      # Full URL name of constr space.
+  my $resdir=$docroot.'/res'.$thisdisfn; # Resource directory
+  my $targetdir='/res'.$thisdisfn; # Publication target directory.
+  my $linkdir='/priv'.$thisdisfn;      # Full URL name of constr space.
+
+&Apache::lonnet::logthis("Values: $resdir $targetdir $linkdir");
 
   my %bombs=&Apache::lonmsg::all_url_author_res_msg($uname,$udom);
 
   &startpage($r, $uname, $udom, $thisdisfn);   # Put out the start of page.
-  if ($env{'environment.remote'} eq 'off') {
-      &dircontrols($r,$uname,$udom,$thisdisfn);    # Put out actions for directory, 
+  &dircontrols($r,$uname,$udom,$thisdisfn);    # Put out actions for directory, 
                                                # browse/upload + new file page.
-  } else {
-      &pubbuttons($r,$uname,$thisdisfn);
-  }
   &resourceactions($r,$uname,$udom,$thisdisfn); #Put out form used for printing/deletion etc.
 
   my $numdir = 0;
@@ -145,41 +124,7 @@ sub handler {
   );
   return OK;  
 }
-#
-#  Gets the effective URL of the request and returns it:
-#    $effn = getEffectiveUrl($r);
-#       $r  - The Apache Request object.
-sub getEffectiveUrl {
-    my $r = shift;
-    my $fn;
-    
-    if ($env{'form.filename'}) {	# If a form filename is defined.
-	$fn=$env{'form.filename'};
-	#
-	#   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\:\/\/[^\/]+\///;
-        $fn=~s/^\///;
-        $fn=~s{~($LONCAPA::username_re)}{/home/$1/public_html};
-	
-	#  Remove trailing / strings (?) 
-	
-	$fn=~s/\/[^\/]+$//;
-    } else {
-	#   If no form is defined, use request filename.
-	$fn = $r->filename();
-	my $lonDocRoot=$r->dir_config('lonDocRoot');
-	if ( $fn =~ /$lonDocRoot/ ) {
-	    #internal authentication, needs fixup.
-	    $fn = $r->uri(); # non users do not get the full path request
-                             # through SCRIPT_FILENAME
-	    $fn=~s{^/~($LONCAPA::username_re)}{/home/$1/public_html};
-	}
-    }
-    $fn=~s/\/+/\//g;
-    return $fn;
-}
+
 #
 #   Output the header of the page.  This includes:
 #   - The HTML header 
@@ -199,25 +144,21 @@ sub startpage {
 
     my $formaction='/priv/'.$uname.$thisdisfn.'/';
     $formaction=~s|/+|/|g;
-    my $pagetitle .= &Apache::loncommon::help_open_menu('','',3,'Authoring').
-        '<font face="Arial, Helvetica, sans-serif" size="+1"><b>'.&mt('Construction Space').'</b>:</font>&nbsp;'.
-        '<form name="dirs" method="post" action="'.$formaction.
-        '" target="_parent"><tt><b>'.
-        &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />".
-        &Apache::lonhtmlcommon::select_recent('construct','recent',
-                 'this.form.action=this.form.recent.value;this.form.submit()').
-              '</form>';
     &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
-    if ($env{'environment.remote'} eq 'off') {
-	$env{'request.noversionuri'}=$currdir.'/';
-	$r->print(&Apache::loncommon::start_page('Construction Space',undef,
-						 {'body_title' =>
-						      $pagetitle,}));
-    } else {
-	$r->print(&Apache::loncommon::start_page('Construction Space',undef,
-						 { 'only_body' => 1,}));
-	$r->print($pagetitle);
-    }
+
+    &Apache::lonhtmlcommon::clear_breadcrumbs();
+    &Apache::lonhtmlcommon::add_breadcrumb({
+        'text'  => 'Construction Space',
+        'href'  => &Apache::loncommon::authorspace(),
+    });
+    # breadcrumbs (and tools) will be created 
+    # in start_page->bodytag->innerregister
+
+    $env{'request.noversionuri'}=$currdir.'/';
+    $r->print(&Apache::loncommon::start_page('Construction Space',undef));
+
+    $r->print(&Apache::loncommon::head_subbox(
+                &Apache::loncommon::CSTR_pageheader(1)));
 
     my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);
     my $doctitle = 'LON-CAPA '.&mt('Construction Space');
@@ -330,12 +271,6 @@ parent.lastknownpriv='/~$uname$esc_thisd
 </script>
 ENDPUBDIRSCRIPT
     $r->print($pubdirscript);
-
-    if ((($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) &&
-	$env{'environment.remote'} ne 'off') {
-	$r->print('<h3>'.&mt('Co-Author').': '.$uname.' at '.$udom.
-		  '</h3>');
-    }
 }
 
 sub dircontrols {
@@ -376,7 +311,7 @@ sub dircontrols {
                                       );
     my $mytype = $lt{'type'}; # avoid conflict with " and ' in javascript
     $r->print(<<END);
-<div class="columnSection">
+<div class="LC_columnSection">
   <div>
     <form name="curractions" method="post" action="">
       <fieldset>
@@ -448,17 +383,6 @@ sub dircontrols {
 END
 }
 
-sub pubbuttons {
-    my ($r,$uname,$thisdisfn) = @_;
-    $r->print('<form method="post" action="/adm/publish" target="_parent">'.
-              '<table><tr><td><input type="hidden" name="filename" value="/~'.
-               $uname.$thisdisfn.'/" />'.
-              '<input type="submit" value="'.&mt('Publish Directory').'" /></td><td>'.
-'<input type="button" onclick="window.location='."'/~".
-               $uname.$thisdisfn."/default.meta'".'" value="'.
-&mt('Edit Directory Catalog Information').'" /></td></tr></table></form>');
-}
-
 sub resourceactions {
     my ($r,$uname,$udom,$thisdisfn) = @_;
     $r->print(<<END);
@@ -569,7 +493,7 @@ sub putdirectory {
         }
 	$r->print('<tr class="LC_browser_folder">'.
 		  '<td><img src="'.
-		  $Apache::lonnet::perlvar{'lonIconsURL'}.'/folder_closed.gif" alt="folder" /></td>'.
+		  $Apache::lonnet::perlvar{'lonIconsURL'}.'/navmap.folder.closed.gif" alt="folder" /></td>'.
 		  '<td>'.$actionitem.'</td>'.
 		  '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.
 		  $disfilename.'</a></span></td>'.
@@ -628,9 +552,17 @@ sub putresource {
 	    $meta_same = 0;
 	}
 	$publish_button=&mt('Re-publish');
-	my $rights_status =
-	    &mt(&getCopyRightString($targetdir.'/'.$filename)).' '.
-	    &mt(&getSourceRightString($targetdir.'/'.$filename));
+
+        my $rights_status =
+            &mt(&getCopyRightString($targetdir.'/'.$filename)).', ';
+
+        my %lt_SourceRight = &Apache::lonlocal::texthash(
+               'open'   => 'Source: open',
+               'closed' => 'Source: closed',
+        );
+        $rights_status .=
+            $lt_SourceRight{&getSourceRightString($targetdir.'/'.$filename)};
+
 	$title = '<a href="/res/'.$targetdir.'/'.$filename.
 	    '.meta" target="cat">'.
 	    &getTitleString($targetdir.'/'.$filename).'</a>';