--- loncom/interface/londocs.pm	2010/03/18 16:33:44	1.423
+++ loncom/interface/londocs.pm	2010/12/07 17:33:36	1.443
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Documents
 #
-# $Id: londocs.pm,v 1.423 2010/03/18 16:33:44 onken Exp $
+# $Id: londocs.pm,v 1.443 2010/12/07 17:33:36 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1607,13 +1607,12 @@ sub editor {
     my $shown=0;
     if (($ishidden) || ($isencrypted) || ($randompick>=0) || ($is_random_order)) {
 	$r->print('<div class="LC_Box">'.
-          '<p>'.&mt('Parameters:').
-          '<ul>'.
+          '<ol class="LC_docs_parameters"><li class="LC_docs_parameters_title">'.&mt('Parameters:').'</li>'.
 		  ($randompick>=0?'<li>'.&mt('randomly pick [quant,_1,resource]',$randompick).'</li>':'').
 		  ($ishidden?'<li>'.&mt('contents hidden').'</li>':'').
 		  ($isencrypted?'<li>'.&mt('URLs hidden').'</li>':'').
 		  ($is_random_order?'<li>'.&mt('random order').'</li>':'').
-		  '</ul></p>');
+		  '</ol>');
         if ($randompick>=0) {
             $r->print('<p class="LC_warning">'
                  .&mt('Caution: this folder is set to randomly pick a subset'
@@ -1637,7 +1636,9 @@ sub editor {
         $r->print('</div>');
     }
 
-    my $output;
+    my $output;  
+
+    &Apache::loncommon::start_data_table_count(); #setup a row counter 
     foreach my $res (@LONCAPA::map::order) {
         my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
         $name=&LONCAPA::map::qtescape($name);
@@ -1649,6 +1650,8 @@ sub editor {
         $idx++;
         $shown++;
     }
+    &Apache::loncommon::end_data_table_count();
+    
     if ($shown) {
         $r->print(&Apache::loncommon::start_data_table());
         if ($allowed) {
@@ -1679,11 +1682,10 @@ sub editor {
 sub process_file_upload {
     my ($upload_output,$coursenum,$coursedom,$allfiles,$codebase,$uploadcmd) = @_;
 # upload a file, if present
-    my $parseaction;
-   if ($env{'form.parserflag'}) {
+    my ($parseaction,$showupload,$nextphase,$mimetype);
+    if ($env{'form.parserflag'}) {
         $parseaction = 'parse';
     }
-    my $phase_status;
     my $folder=$env{'form.folder'};
     if ($folder eq '') {
         $folder='default';
@@ -1702,7 +1704,8 @@ sub process_file_upload {
             $LONCAPA::map::resources[1]='';
         }
         if ($fatal) {
-            return 'failed';
+            $$upload_output = '<p><span class="LC_error">'.&mt('The uploaded file has not been stored as an error occurred reading the contents of the current folder.').'</span></p>';
+            return;
         }
         my $destination = 'docs/';
         if ($folder =~ /^supplemental/) {
@@ -1713,13 +1716,23 @@ sub process_file_upload {
         } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) {
             $destination .=  $2.'/';
         }
-# this is for a course, not a user, so set coursedoc flag
-# probably the only place in the system where this should be "1"
+# this is for a course, not a user, so set context to coursedoc.
         my $newidx=&LONCAPA::map::getresidx();
         $destination .= $newidx;
-        my $url=&Apache::lonnet::userfileupload('uploaddoc',1,$destination,
+        my $url=&Apache::lonnet::userfileupload('uploaddoc','coursedoc',$destination,
 						$parseaction,$allfiles,
-						$codebase);
+						$codebase,undef,undef,undef,undef,
+                                                undef,undef,\$mimetype);
+        if ($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E.*/([^/]+)$}) {
+            my $stored = $1;
+            $showupload = '<p>'.&mt('Uploaded [_1]','<span class="LC_filename">'.
+                          $stored.'</span>').'</p>';
+        } else {
+            my ($filename) = ($env{'form.uploaddoc.filename'} =~ m{([^/]+)$});
+            
+            $$upload_output = '<p><span class="LC_error">'.&mt('Unable to save file [_1].','<span class="LC_filename">'.$filename.'</span>').'</span></p>';
+            return;
+        }
         my $ext='false';
         if ($url=~m{^http://}) { $ext='true'; }
 	$url     = &LONCAPA::map::qtunescape($url);
@@ -1736,51 +1749,37 @@ sub process_file_upload {
         ($errtext,$fatal)=&storemap($coursenum,$coursedom,
 				    $folder.'.'.$container);
         if ($fatal) {
-            $$upload_output .= '<p><span class="LC_error">'.$errtext.'</span></p>';
-            return 'failed';
+            $$upload_output = '<p><span class="LC_error">'.$errtext.'</span></p>';
+            return;
         } else {
-            if ($parseaction eq 'parse') {
+            if ($parseaction eq 'parse' && $mimetype eq 'text/html') {
+                $$upload_output = $showupload;
                 my $total_embedded = scalar(keys(%{$allfiles}));
                 if ($total_embedded > 0) {
-                    my $num = 0;
-		    my $state = '
-   <input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />
-   <input type="hidden" name="cmd" value="upload_embedded" />
-   <input type="hidden" name="newidx" value="'.$newidx.'" />
-   <input type="hidden" name="primaryurl" value="'.&escape($url).'" />
-   <input type="hidden" name="phasetwo" value="'.$total_embedded.'" />';
-		    $phase_status = 'phasetwo';
-
-                    $$upload_output .=
-			'This file contains embedded multimedia objects, which need to be uploaded to LON-CAPA.<br />'.
-			&Apache::loncommon::ask_for_embedded_content(
-                            '/adm/coursedocs',$state,$allfiles,$codebase);
+                    my $uploadphase = 'upload_embedded';
+                    my $primaryurl = &HTML::Entities::encode($url,'<>&"');
+		    my $state = &embedded_form_elems($uploadphase,$primaryurl,$newidx); 
+                    my ($embedded,$num) = 
+                        &Apache::loncommon::ask_for_embedded_content(
+                            '/adm/coursedocs',$state,$allfiles,$codebase,{'docs_url' => $url});
+                    if ($embedded) {
+                        if ($num) {
+                            $$upload_output .=
+			         '<p>'.&mt('This file contains embedded multimedia objects, which need to be uploaded.').'</p>'.$embedded;
+                            $nextphase = $uploadphase;
+                        } else {
+                            $$upload_output .= $embedded;
+                        }
+                    } else {
+                        $$upload_output .= &mt('Embedded item(s) already present, so no additional upload(s) required').'<br />';
+                    }
                 } else {
-                    $$upload_output .= 'No embedded items identified<br />';
+                    $$upload_output .= &mt('No embedded items identified').'<br />';
                 }
             }
         }
     }
-    return $phase_status;
-}
-
-sub process_secondary_uploads {
-    my ($upload_output,$coursedom,$coursenum,$formname,$num,$newidx) = @_;
-    my $folder=$env{'form.folder'};
-    my $destination = 'docs/';
-    if ($folder =~ /^supplemental/) {
-        $destination = 'supplemental/';
-    }
-    if (($folder eq 'default') || ($folder eq 'supplemental')) {
-        $destination .= 'default/';
-    } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) {
-        $destination .=  $2.'/';
-    }
-    $destination .= $newidx;
-    my ($url,$filename);
-    $url=&Apache::lonnet::userfileupload($formname.$num,1,$destination);
-    ($filename) = ($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/\Q$destination\E/(.+)$});
-    return $filename;
+    return $nextphase;
 }
 
 sub is_supplemental_title {
@@ -1845,7 +1844,7 @@ sub entryline {
     }
     if ($env{'form.pagepath'}) {
         $type = $container = 'page';
-        $esc_path=&escape($path = $env{'form.pagepath'});
+        $esc_path=&escape($env{'form.pagepath'});
 	$path = &HTML::Entities::encode($env{'form.pagepath'},'<>&"');
         $symb=&escape($env{'form.pagesymb'});
     }
@@ -2239,6 +2238,7 @@ sub list_symbs {
     my $crstype = &Apache::loncommon::course_type();
     $r->print(&Apache::loncommon::start_page('Symb List'));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs('Symb List'));
+    &startContentScreen($r,'tools');
     my $navmap = Apache::lonnavmaps::navmap->new();
     if (!defined($navmap)) {
         $r->print('<h2>'.&mt('Retrieval of List Failed').'</h2>'.
@@ -2253,17 +2253,15 @@ sub list_symbs {
         }
         $r->print("\n</pre>\n");
     }
-    $r->print('<hr /><a href="/adm/coursedocs">'.&mt('Back to Course Editor').'</a>');
 }
 
 
 sub verifycontent {
     my ($r) = @_;
     my $crstype = &Apache::loncommon::course_type();
-   my $loaderror=&Apache::lonnet::overloaderror($r);
-   if ($loaderror) { return $loaderror; }
    $r->print(&Apache::loncommon::start_page('Verify '.$crstype.' Documents'));
    $r->print(&Apache::lonhtmlcommon::breadcrumbs('Verify '.$crstype.' Documents'));
+   &startContentScreen($r,'tools');
    $hashtied=0;
    undef %alreadyseen;
    %alreadyseen=();
@@ -2282,13 +2280,7 @@ sub verifycontent {
        }
    }
    &untiehash();
-   $r->print(
-       '<p class="LC_success">'.&mt('Done').'</p>'
-      .'<hr />'
-      .'<p><a href="/adm/coursedocs">'
-	  .&mt('Back to Course Editor')
-      .'</a></p>'
-   );
+   $r->print('<p class="LC_success">'.&mt('Done').'</p>');
 }
 
 
@@ -2303,6 +2295,8 @@ sub checkversions {
     my $crstype = &Apache::loncommon::course_type();
     $r->print(&Apache::loncommon::start_page("Check $crstype Document Versions"));
     $r->print(&Apache::lonhtmlcommon::breadcrumbs("Check $crstype Document Versions"));
+    &startContentScreen($r,'tools');
+
     my $header='';
     my $startsel='';
     my $monthsel='';
@@ -2480,11 +2474,11 @@ ENDHEADERS
 # Set version
 	    $r->print(&Apache::loncommon::select_form($setversions{$linkurl},
 						      'set_version_'.$linkurl,
-						      ('select_form_order' =>
+						      {'select_form_order' =>
 						       ['',1..$currentversion,'mostrecent'],
 						       '' => '',
 						       'mostrecent' => &mt('most recent'),
-						       map {$_,$_} (1..$currentversion))));
+						       map {$_,$_} (1..$currentversion)}));
 	    $r->print('</span></td></tr><tr><td></td>');
 	    my $lastold=1;
 	    for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) {
@@ -2613,8 +2607,76 @@ sub init_breadcrumbs {
 					    bug=>'Instructor Interface'});
 }
 
+# subroutine to list form elements
+sub create_list_elements {
+   my @formarr = @_;
+   my $list = '';
+   for my $button (@formarr){
+        for my $picture(keys %$button) {
+            $list .= &Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'});
+        }
+   }
+   return $list;
+}
+
+# subroutine to create ul from list elements
+sub create_form_ul {
+   my $list = shift;
+   my $ul = &Apache::lonhtmlcommon::htmltag('ul',$list, {class => 'LC_ListStyleNormal'});
+   return $ul;
+}
+
+#
+# Start tabs
+#
+
+sub startContentScreen {
+    my ($r,$mode)=@_;
+    $r->print('<ul class="LC_TabContentBigger" id="mainnav">');
+    $r->print('<li'.(($mode eq 'navmaps')?' class="active"':'').'><a href="/adm/navmaps"><b>&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Content Overview').'&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>');
 
+    my $active = '';
+# does this user have privileges to modify docs
+    my $allowed=&Apache::lonnet::allowed('mdc',$env{'request.course.id'});
 
+    my $onclick;
+    my $href;
+
+    if ($allowed) {
+#        if (($mode eq 'navmaps') || ($mode eq 'tools')) {
+           $href="/adm/coursedocs?forcestandard=1";
+           $onclick=''; 
+#        } else {
+#           $href='#';
+#           $onclick=' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"';
+#        }
+        $r->print('<li '.(($mode eq 'docs')?' class="active"':'').$onclick.
+               '><a href="'.$href.'"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Content Editor').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>');
+    }
+#    if (($mode eq 'navmaps') || ($mode eq 'tools')) {
+       $href="/adm/coursedocs?forcesupplement=1";
+       $onclick='';
+#    } else {
+#       $href='#';
+#       $onclick=' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"';
+#   }
+
+    $r->print('<li '.(($mode eq 'supdocs')?' class="active"':'').$onclick.
+           '><a href="'.$href.'"><b>'.&mt('Supplemental Documents').'</b></a></li>');
+    $r->print('</ul>');
+    $r->print('<div class="LC_Box" style="clear:both;margin:0;">'
+             .'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">');
+    $r->print('<div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">');
+}
+
+#
+# End tabs
+#
+
+sub endContentScreen {
+   my ($r)=@_;
+   $r->print('</div></div></div>');
+}
 
 sub handler {
     my $r = shift;
@@ -2623,7 +2685,7 @@ sub handler {
     return OK if $r->header_only;
     my $crstype = &Apache::loncommon::course_type();
 
-
+#
 # --------------------------------------------- Initialize help topics for this
     foreach my $topic ('Adding_Course_Doc','Main_Course_Documents',
 	               'Adding_External_Resource','Navigate_Content',
@@ -2681,7 +2743,7 @@ sub handler {
 
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
 					    ['folderpath','pagepath',
-					     'pagesymb']);
+					     'pagesymb','forcesupplement','forcestandard']);
 # No folderpath, no pagepath, see if we have something stored
     if ((!$env{'form.folderpath'}) && (!$env{'form.pagepath'})) {
         &Apache::loncommon::restore_course_settings('docs_folderpath',
@@ -2717,9 +2779,22 @@ sub handler {
         $env{'form.pagename'}=&unescape(pop(@pagepath));
         $env{'form.folder'}=pop(@pagepath);
         $containertag = '<input type="hidden" name="pagepath" value="" />'.
-	    '<input type="hidden" name="pagesymb" value="" />';
-        $uploadtag = '<input type="hidden" name="pagepath" value="'.&HTML::Entities::encode($env{'form.pagepath'},'<>&"').'" />'.
-	    '<input type="hidden" name="pagesymb" value="'.&HTML::Entities::encode($env{'form.pagesymb'},'<>&"').'" />';
+	                '<input type="hidden" name="pagesymb" value="" />';
+        $uploadtag = 
+            '<input type="hidden" name="pagepath" value="'.&HTML::Entities::encode($env{'form.pagepath'},'<>&"').'" />'.
+	    '<input type="hidden" name="pagesymb" value="'.&HTML::Entities::encode($env{'form.pagesymb'},'<>&"').'" />'.
+            '<input type="hidden" name="folderpath" value="" />';
+    } else {
+        my $folderpath=$env{'form.folderpath'};
+        if (!$folderpath) {
+            if ($env{'form.folder'} eq '' ||
+                $env{'form.folder'} eq 'supplemental') {
+                $folderpath='default&'.
+                    &escape(&mt('Main '.$crstype.' Documents'));
+            }
+        }
+        $containertag = '<input type="hidden" name="folderpath" value="" />';
+        $uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />';
     }
     if ($r->uri=~/^\/adm\/coursedocs\/showdoc\/(.*)$/) {
        $showdoc='/'.$1;
@@ -2739,26 +2814,6 @@ sub handler {
        }
     }
 
-# subroutine to list form elements
-sub create_list_elements {
-   my @formarr = @_; 
-   my $list = '';
-   for my $button (@formarr){
-	for my $picture(keys %$button) {
-		#my $link = Apache::lonhtmlcommon::htmltag('a' ,$button->{$picture}, {href => "test"}); 
-		$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'});	
-	}
-   }
-   return $list;
-}
-
-# subroutine to create ul from list elements
-sub create_form_ul {
-   my $list = shift;
-   my $ul = Apache::lonhtmlcommon::htmltag('ul',$list, {class => 'LC_ListStyleNormal'});
-   return $ul;
-}
-
 # get course data
     my $coursenum=$env{'course.'.$env{'request.course.id'}.'.num'};
     my $coursedom=$env{'course.'.$env{'request.course.id'}.'.domain'};
@@ -2811,92 +2866,49 @@ sub create_form_ul {
 
   my %allfiles = ();
   my %codebase = ();
-  my ($upload_result,$upload_output);
+  my ($upload_result,$upload_output,$uploadphase);
   if ($allowed) {
       if (($env{'form.uploaddoc.filename'}) &&
 	  ($env{'form.cmd'}=~/^upload_(\w+)/)) {
-# Process file upload - phase one - upload and parse primary file.
+          my $context = $1; 
+          # Process file upload - phase one - upload and parse primary file.
 	  undef($hadchanges);
-          $upload_result = &process_file_upload(\$upload_output,$coursenum,
-						$coursedom,\%allfiles,
-						\%codebase,$1);
+          $uploadphase = &process_file_upload(\$upload_output,$coursenum,$coursedom,
+                                              \%allfiles,\%codebase,$context);
 	  if ($hadchanges) {
 	      &mark_hash_old();
 	  }
-          if ($upload_result eq 'phasetwo') {
-              $r->print($upload_output);
-          }
-      } elsif ($env{'form.phasetwo'}) {
-          my %newname = ();
-          my %origname = ();
-          my %attribs = ();
-          my $updateflag = 0;
-          my $residx = $env{'form.newidx'};
-          my $primary_url = &unescape($env{'form.primaryurl'});
-# Process file upload - phase two - gather secondary files.
-          for (my $i=0; $i<$env{'form.phasetwo'}; $i++) {
-              if ($env{'form.embedded_item_'.$i.'.filename'}) {
-                  my $javacodebase;
-                  $newname{$i} = &process_secondary_uploads(\$upload_output,$coursedom,$coursenum,'embedded_item_',$i,$residx);
-                  $origname{$i} = &unescape($env{'form.embedded_orig_'.$i});
-                  if (exists($env{'form.embedded_codebase_'.$i})) {
-                      $javacodebase =  &unescape($env{'form.embedded_codebase_'.$i});
-                      $origname{$i} =~ s#^\Q$javacodebase\E/##;
-                  }
-                  my @attributes = ();
-                  if ($env{'form.embedded_attrib_'.$i} =~ /:/) {
-                      @attributes = split(/:/,$env{'form.embedded_attrib_'.$i});
-                  } else {
-                      @attributes = ($env{'form.embedded_attrib_'.$i});
-                  }
-                  foreach my $attr (@attributes) {
-                      push(@{$attribs{$i}},&unescape($attr));
-                  }
-                  if ($javacodebase) {
-                      $codebase{$i} = $javacodebase;
-                      $codebase{$i} =~ s#/$##;
-                      $updateflag = 1;
-                  }
-              }
-              unless ($newname{$i} eq $origname{$i}) {
-                  $updateflag = 1;
-              }
-          }
-# Process file upload - phase three - modify primary file
-          if ($updateflag) {
-              my ($content,$rtncode);
-              my $updateflag = 0;
-              my $getstatus = &Apache::lonnet::getuploaded('GET',$primary_url,$coursedom,$coursenum,\$content,\$rtncode);
-              if ($getstatus eq 'ok') {
-                  foreach my $item (keys(%newname)) {
-                      if ($newname{$item} ne $origname{$item}) {
-                          my $attrib_regexp = '';
-                          if (@{$attribs{$item}} > 1) {
-                              $attrib_regexp = join('|',@{$attribs{$item}});
-                          } else {
-                              $attrib_regexp = $attribs{$item}[0];
-                          }
-                          if ($content =~ m#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#) {
-                          }
-                          $content =~ s#($attrib_regexp\s*=\s*['"]?)\Q$origname{$item}\E(['"]?)#$1$newname{$item}$2#gi;
-                      }
-                      if (exists($codebase{$item})) {
-                          $content =~ s/(codebase\s*=\s*["']?)\Q$codebase{$item}\E(["']?)/$1.$2/i; #' stupid emacs
-                      }
-                  }
-# Save edited file.
-                  my $saveresult;
-                  my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
-                  my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'};
-                  my $url = &Apache::lonnet::store_edited_file($primary_url,$content,$docudom,$docuname,\$saveresult);
-              } else {
-                  &Apache::lonnet::logthis('retrieval of uploaded file - '.$primary_url.' - for editing, failed: '.$getstatus);
-              }
-          }
+          $r->print($upload_output);
+      } elsif ($env{'form.phase'} eq 'upload_embedded') {
+          # Process file upload - phase two - upload embedded objects 
+          $uploadphase = 'check_embedded';
+          my $primaryurl = &HTML::Entities::encode($env{'form.primaryurl'},'<>&"');   
+          my $state = &embedded_form_elems($uploadphase,$primaryurl,
+                                           $env{'form.newidx'});
+          my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
+          my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'};
+          my ($destination,$dir_root) = &embedded_destination();
+          my $url_root = '/uploaded/'.$docudom.'/'.$docuname;
+          my $actionurl = '/adm/coursedocs';
+          my ($result,$flag) = 
+              &Apache::loncommon::upload_embedded('coursedoc',$destination,
+                  $docuname,$docudom,$dir_root,$url_root,undef,undef,undef,$state,
+                  $actionurl);
+          $r->print($result.&return_to_editor());
+      } elsif ($env{'form.phase'} eq 'check_embedded') {
+          # Process file upload - phase three - modify references in HTML file
+          $uploadphase = 'modified_orightml';
+          my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'};
+          my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'};
+          my ($destination,$dir_root) = &embedded_destination();
+          $r->print(&Apache::loncommon::modify_html_refs('coursedoc',$destination,
+                                                         $docuname,$docudom,undef,
+                                                         $dir_root).
+                   &return_to_editor());
       }
   }
 
-  unless ($showdoc ||  $upload_result eq 'phasetwo') {
+  unless ($showdoc || $uploadphase) {  
 # -----------------------------------------------------------------------------
        my %lt=&Apache::lonlocal::texthash(
                 'uplm' => 'Upload a new main '.lc($crstype).' document',
@@ -2906,7 +2918,7 @@ sub create_form_ul {
                 'upld' => 'Import Document',
                 'srch' => 'Search',
                 'impo' => 'Import',
-		'book' => 'Import Bookmarks',
+		'wish' => 'Import from Wishlist',
                 'selm' => 'Select Map',
                 'load' => 'Load Map',
                 'reco' => 'Recover Deleted Documents',
@@ -2914,7 +2926,7 @@ sub create_form_ul {
                 'newp' => 'New Composite Page',
                 'extr' => 'External Resource',
                 'syll' => 'Syllabus',
-                'navc' => 'Navigate Contents',
+                'navc' => 'Table of Contents',
                 'sipa' => 'Simple Course Page',
                 'sipr' => 'Simple Problem',
                 'drbx' => 'Drop Box',
@@ -2957,7 +2969,7 @@ CHBO
 	$fileupload
 	<br />
 	$lt{'title'}:<br />
-	<input type="text" size="50" name="comment" />
+	<input type="text" size="80" name="comment" />
 	$uploadtag
 	<input type="hidden" name="cmd" value="upload_default" />
 	<br />
@@ -2967,10 +2979,7 @@ CHBO
 FUFORM
     #$list .= Apache::lonhtmlcommon::htmltag('li', $picture.' '.$button->{$picture}, {class => 'LC_menubuttons_inline_text'});	
     #$fileuploadform .= create_form_ul(create_list_elements(@fileuploada));
-    $fileuploadform .= create_form_ul(Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'}));
-	$fileuploadform .= (<<FUFORM);
-	</form>
-FUFORM
+    $fileuploadform .= &create_form_ul(&Apache::lonhtmlcommon::htmltag('li',$fileuploada,{class => 'LC_menubuttons_inline_text'})).'</form>';
 
 	my $simpleeditdefaultform=(<<SEDFFORM);
 	<form action="/adm/coursedocs" method="post" name="simpleeditdefault">
@@ -2979,9 +2988,9 @@ SEDFFORM
 	my @simpleeditdefaultforma = ( 
 	{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/src.png" alt="'.$lt{srch}.'"  onclick="javascript:groupsearch()" />' => "$uploadtag<a class='LC_menubuttons_link' href='javascript:groupsearch()'>$lt{'srch'}</a>" },
 	{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/res.png" alt="'.$lt{impo}.'"  onclick="javascript:groupimport();"/>' => "<a class='LC_menubuttons_link' href='javascript:groupimport();'>$lt{'impo'}</a>$help{'Importing_LON-CAPA_Resource'}" },
-	{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/vbkm.png" alt="'.$lt{book}.'" onclick="javascript:groupopen(0,1,1);" />' => "<a class='LC_menubuttons_link' href='javascript:groupopen(0,1,1);'>$lt{'book'}</a>" },
+	{ '<img class="LC_noBorder LC_middle" src="/res/adm/pages/wishlist.png" alt="'.$lt{wish}.'" onclick="javascript:open_Wishlist_Import();" />' => "<a class='LC_menubuttons_link' href='javascript:open_Wishlist_Import();'>$lt{'wish'}</a>" },
 	);
-	$simpleeditdefaultform .= create_form_ul(create_list_elements(@simpleeditdefaultforma));
+	$simpleeditdefaultform .= &create_form_ul(&create_list_elements(@simpleeditdefaultforma));
 	$simpleeditdefaultform .=(<<SEDFFORM);
 	<hr />
 	<p>
@@ -2995,14 +3004,15 @@ SEDFFORM
 	</form>
 SEDFFORM
 
-	my $extresourcesform=(<<ERFORM);
-	<form action="/adm/coursedocs" method="post" name="newext">
-	$uploadtag
-	<input type="hidden" name="importdetail" value="" />
-	<a class="LC_menubuttons_link" href="javascript:makenewext('newext');">$lt{'extr'}</a>$help{'Adding_External_Resource'}
-	</form>
+      my $extresourcesform=(<<ERFORM);
+      <form action="/adm/coursedocs" method="post" name="newext">
+      $uploadtag
+      <input type="hidden" name="importdetail" value="" />
+      <a class="LC_menubuttons_link" href="javascript:makenewext('newext');">$lt{'extr'}</a>$help{'Adding_External_Resource'}
+      </form>
 ERFORM
 
+
     if ($allowed) {
 	&update_paste_buffer($coursenum,$coursedom);
        my %lt=&Apache::lonlocal::texthash(
@@ -3012,18 +3022,6 @@ ERFORM
                                          'sl' => 'Show Log'
 					  );
 
-       my $folderpath=$env{'form.folderpath'};
-       if (!$folderpath) {
-	   if ($env{'form.folder'} eq '' ||
-	       $env{'form.folder'} eq 'supplemental') {
-	       $folderpath='default&'.
-		   &escape(&mt('Main '.$crstype.' Documents'));
-	   }
-       }
-       unless ($env{'form.pagepath'}) {
-           $containertag = '<input type="hidden" name="folderpath" value="" />';
-           $uploadtag = '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($folderpath,'<>&"').'" />';
-       }
 	$r->print(<<HIDDENFORM);
 	<form name="renameform" method="post" action="/adm/coursedocs">
    <input type="hidden" name="title" />
@@ -3038,55 +3036,33 @@ ERFORM
  </form>
 HIDDENFORM
     }
-# --------------------------------------------------------- Main tab structure
- 
-    my $activeClass = 1;
-    my $active = '';
-    my %tabtitles = (
-                       main => {
-                                 Course => &mt('Main Course Documents'),
-                                 Community => &mt('Main Community Documents'),
-                               },
-                       supplemental => {
-                                 Course => &mt('Supplemental Course Documents'),        
-                                 Community => &mt('Supplemental Community Documents'),
-                               },
-                    );
-    if ($allowed) {
-        $r->print('<ul class="LC_TabContentBigger" id="mainnav">');
-        if (($standard) && ($allowed) && (!$forcesupplement) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'}eq"" || ($env{'form.pagepath'}))) {
-            if($activeClass == 1){
-                $active = 'class="active"';
-	        $activeClass = 0;
-	    }
-        }
-        $r->print('<li '.$active.' onclick="javascript:showPage(this,\'mainCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.$tabtitles{'main'}{$crstype}.'</b></a></li>');
-        $active = '';
-        if (!$forcestandard || ($env{'form.folderpath'}=~/^supplemental/)) {
-            if($activeClass == 1){
-                $active = 'class="active"';
-            }
-        }
-        $r->print('<li '.$active.' onclick="javascript:showPage(this,\'supplCourseDocuments\',\'mainnav\',\'maincoursedoc\');"><a href="#"><b>'.$tabtitles{'supplemental'}{$crstype}.'</b></a></li>');
-        $r->print('</ul>');
-    } else {
-        $r->print('<br />');
+
+#
+# Decide whether this should display supplemental or main content
+# supplementalflag=1: show supplemental documents
+# supplementalflag=0: show standard documents
+
+    my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/);
+    if (($standard) && ($allowed) && (($env{'form.folderpath'}=~/^default/) || $env{'form.folderpath'} eq "" || ($env{'form.pagepath'}))) {
+       $supplementalflag=0;
     }
-    $r->print('<div class="LC_Box" style="clear:both;margin:0;">'
-             .'<div id="maincoursedoc" style="margin:0 0;padding:0 0;">');
-# --------------------------------------------------------- Standard documents
-       my $savefolderpath;
-       $active = 'style="display: none;"';
-       if($activeClass == 0){
-          $active = 'style="display: block;"';
-       }
-       if ($allowed) {
-       $r->print('<div class="LC_ContentBox" id="mainCourseDocuments" '.$active.'>');
+    if ($env{'form.forcesupplement'}) { $supplementalflag=1; }
+    if ($env{'form.forcestandard'})   { $supplementalflag=0; }
+
+# Generate the tabs
+    &startContentScreen($r,($supplementalflag?'supdocs':'docs'));
+
+
+#
+
+    my $savefolderpath;
+
+    if ($allowed) {
        my $folder=$env{'form.folder'};
-       if ($folder eq '' || $folder=~/^supplemental/) {
+       if ($folder eq '' || $supplementalflag) {
            $folder='default';
 	   $savefolderpath = $env{'form.folderpath'};
-	   $env{'form.folderpath'}='default&'.&escape($tabtitles{'main'}{$crstype});
+	   $env{'form.folderpath'}='default&'.&escape(&mt('Content'));
            $uploadtag = '<input type="hidden" name="folderpath" value="'.
 	       &HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" />';
        }
@@ -3115,7 +3091,7 @@ HIDDENFORM
 
 	my $recoverform=(<<RFORM);
 	<form action="/adm/groupsort" method="post" name="recover">
-	<a class="LC_menubuttons_link" href="javascript:groupopen('$readfile',1,0)">$lt{'reco'}</a>
+	<a class="LC_menubuttons_link" href="javascript:groupopen('$readfile',1)">$lt{'reco'}</a>
 	</form>
 RFORM
 
@@ -3272,9 +3248,13 @@ NGFFORM
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/page.png" alt="'.$lt{newp}.'"  onclick="javascript:makenewpage(document.newpage,\''.$pageseq.'\');" />'=>$newpageform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="document.newsyl.submit()" />'=>$newsylform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/groupportfolio.png" alt="'.$lt{grpo}.'" onclick="document.newgroupfiles.submit()" />'=>$newgroupfileform},
-	); 
-	
-      }
+	);
+
+        my @importdoc = (
+        {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform},
+        {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform},);
+        $fileuploadform =  &create_form_ul(&create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform;
+
 	push @specialdocumentsforma, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="document.newnav.submit()" />'=>$newnavform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.$lt{sipr}.'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform},
@@ -3283,9 +3263,10 @@ NGFFORM
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/bchat.png" alt="'.$lt{bull}.'" onclick="javascript:makebulboard();" />'=>$newbulform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="javascript:makebulboard();" />'=>$newaboutmeform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/aboutme.png" alt="'.$lt{abou}.'" onclick="javascript:makeabout();" />'=>$newaboutsomeoneform},
-	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/chrt.png" alt="'.$lt{rost}.'" onclick="document.newroster.submit()" />'=>$newrosterform},);
+	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/clst.png" alt="'.$lt{rost}.'" onclick="document.newroster.submit()" />'=>$newrosterform},);
 
-	$specialdocumentsform = create_form_ul(create_list_elements(@specialdocumentsforma));
+	$specialdocumentsform = &create_form_ul(&create_list_elements(@specialdocumentsforma));
+      }
 
 if($env{'form.pagepath'}) {
 	
@@ -3293,52 +3274,45 @@ if($env{'form.pagepath'}) {
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/simpprob.png" alt="'.&mt('Simple Problem').'" onclick="javascript:makesmpproblem();" />'=>$newsmpproblemform},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/scoreupfrm.png" alt="'.&mt('Score Upload Form').'" onclick="javascript:makeexamupload();" />'=>$newexuploadform}
 	);
-	$specialdocumentsform= create_form_ul(create_list_elements(@specialdocumentsforma));
+	$specialdocumentsform= &create_form_ul(&create_list_elements(@specialdocumentsforma));
 }
 
 my @tools = (
 #	{'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" />'=>$extresourcesform},
 #	{'<img class="LC_noBorder LC_middle" align="left" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" />'=>$imspform},
-	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/recover.png" alt="'.$lt{reco}.'" onclick="javascript:groupopen(\''.$readfile.'\',1,0)" />'=>$recoverform},
+	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/recover.png" alt="'.$lt{reco}.'" onclick="javascript:groupopen(\''.$readfile.'\',1)" />'=>$recoverform},
 	);
 
-my @importdoc = (
-    {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'newext\');" />'=>$extresourcesform},
-    {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/ims.png" alt="'.$lt{imsf}.'" onclick="javascript:makeims();" />'=>$imspform}, 
-);
-$fileuploadform =  create_form_ul(create_list_elements(@importdoc)) . '<hr/>' . $fileuploadform;
 my %orderhash = (
-		'00' => ['Newfolder',$newfolderform],
                 'aa' => ['Import Documents',$fileuploadform],
                 'bb' => ['Published Resources',$simpleeditdefaultform],
                 'cc' => ['Special Documents',$specialdocumentsform],
-		'dd' => ['Tools', create_form_ul(create_list_elements(@tools)).&generate_admin_options($containertag,$uploadtag,\%help,\%env)],
+		'dd' => ['Tools', &create_form_ul(&create_list_elements(@tools)).&generate_admin_options(\%help,\%env)],
                 );
-my $tid='1';
+unless($env{'form.pagepath'}) {
+    $orderhash{'00'} = ['Newfolder',$newfolderform];
+}
+
  $hadchanges=0;
-        my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype);
-       if ($error) {
-           $r->print('<p><span class="LC_error">'.$error.'</span></p>');
-       }
-       if ($hadchanges) {
-           &mark_hash_old();
-       }
+       unless ($supplementalflag) {
+          my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype);
+          if ($error) {
+             $r->print('<p><span class="LC_error">'.$error.'</span></p>');
+          }
+          if ($hadchanges) {
+             &mark_hash_old();
+          }
 
-       &changewarning($r,'');
-$r->print(&generate_edit_table($tid,\%orderhash));
+          &changewarning($r,'');
+          $r->print(&generate_edit_table('1',\%orderhash));
+        }
 
-$r->print('</div>');
 	}
-       if ($env{'form.pagepath'}) {
-       }
-# ----------------------------------------------------- Supplemental documents
-       $active = 'style="display: none;"';
-       if($activeClass == 1){
-          $active = 'style="display: block;"';
-       }
-       $r->print('<div class="LC_ContentBox" id="supplCourseDocuments" '.$active.'>');
+
+# Supplemental documents start here
+
        my $folder=$env{'form.folder'};
-       unless ($folder=~/^supplemental/) {
+       unless ($supplementalflag) {
 	   $folder='supplemental';
        }
        if ($folder =~ /^supplemental$/ &&
@@ -3373,7 +3347,7 @@ $r->print('</div>');
 	<input type="hidden" name="folderpath" value="$path" />
 	<input type="hidden" name="cmd" value="upload_supplemental" />
 SUPDOCFORM
-	$supupdocform .=  create_form_ul(Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."</form>";
+	$supupdocform .=  &create_form_ul(&Apache::lonhtmlcommon::htmltag('li',$supupdocformbtn,{class => 'LC_menubuttons_inline_text'}))."</form>";
 
 	my $supnewfolderform=(<<SNFFORM);
 	<form action="/adm/coursedocs" method="post" name="supnewfolder">
@@ -3428,30 +3402,27 @@ my @supimportdoc = (
 		{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/extres.png" alt="'.$lt{extr}.'" onclick="javascript:makenewext(\'supnewext\');" />'
             =>$supnewextform},
         );
-$supupdocform =  create_form_ul(create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform;
+$supupdocform =  &create_form_ul(&create_list_elements(@supimportdoc)) . '<hr/>' . $supupdocform;
 my %suporderhash = (
 		'00' => ['Supnewfolder', $supnewfolderform],
                 'ee' => ['Import Documents',$supupdocform],
-                'ff' => ['Special Documents',create_form_ul(create_list_elements(@specialdocs))]
+                'ff' => ['Special Documents',&create_form_ul(&create_list_elements(@specialdocs))]
                 );
-
-        my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype);
-        if ($error) {
-            $r->print('<p><span class="LC_error">'.$error.'</span></p>');
+        if ($supplementalflag) {
+           my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype);
+           if ($error) {
+              $r->print('<p><span class="LC_error">'.$error.'</span></p>');
+           }
+           $r->print(&generate_edit_table('2',\%suporderhash));
         }
-        my $tid='2';
-        $r->print(&generate_edit_table($tid,\%suporderhash));
-    } else {
+    } elsif ($supplementalflag) {
         my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype);
         if ($error) {
             $r->print('<p><span class="LC_error">'.$error.'</span></p>');
         }
     }
 
-
-$r->print('</div>');
-$r->print('</div></div>');
-
+    &endContentScreen($r);
 
     if ($allowed) {
 	$r->print('
@@ -3463,7 +3434,7 @@ $r->print('</div></div>');
 </form>');
     }
   } else {
-      unless ($upload_result eq 'phasetwo') {
+      unless ($uploadphase) {
 # -------------------------------------------------------- This is showdoc mode
           $r->print("<h1>".&mt('Uploaded Document').' - '.
 		&Apache::lonnet::gettitle($r->uri).'</h1><p>'.
@@ -3476,9 +3447,45 @@ $r->print('</div></div>');
  return OK;
 }
 
+sub embedded_form_elems {
+    my ($phase,$primaryurl,$newidx) = @_;
+    my $folderpath = &HTML::Entities::encode($env{'form.folderpath'},'<>&"');
+    return <<STATE;
+    <input type="hidden" name="folderpath" value="$folderpath" />
+    <input type="hidden" name="cmd" value="upload_embedded" />
+    <input type="hidden" name="newidx" value="$newidx" />
+    <input type="hidden" name="phase" value="$phase" />
+    <input type="hidden" name="primaryurl" value="$primaryurl" />
+STATE
+}
+
+sub embedded_destination {
+    my $folder=$env{'form.folder'};
+    my $destination = 'docs/';
+    if ($folder =~ /^supplemental/) {
+        $destination = 'supplemental/';
+    }
+    if (($folder eq 'default') || ($folder eq 'supplemental')) {
+        $destination .= 'default/';
+    } elsif ($folder =~ /^(default|supplemental)_(\d+)$/) {
+        $destination .=  $2.'/';
+    }
+    $destination .= $env{'form.newidx'};
+    my $dir_root = '/userfiles';
+    return ($destination,$dir_root);
+}
+
+sub return_to_editor {
+    my $actionurl = '/adm/coursedocs';
+    return '<p><form name="backtoeditor" method="post" action="'.$actionurl.'" />'."\n". 
+           '<input type="hidden" name="folderpath" value="'.&HTML::Entities::encode($env{'form.folderpath'},'<>&"').'" /></form>'."\n".
+           '<a href="javascript:document.backtoeditor.submit();">'.&mt('Return to Editor').
+           '</a></p>';
+}
+
 sub generate_admin_options {
-  my ($containertag,$uploadtag,$help_ref,$env_ref) = @_;
- my %lt=&Apache::lonlocal::texthash(
+  my ($help_ref,$env_ref) = @_;
+  my %lt=&Apache::lonlocal::texthash(
                                          'vc' => 'Verify Content',
                                          'cv' => 'Check/Set Resource Versions',
                                          'ls' => 'List Symbs',
@@ -3499,14 +3506,14 @@ sub generate_admin_options {
   if($dumpbut ne ''){
   push @list, {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/dump.png" alt="'.$lt{dcd}.'" />'=>$dumpbut};
   }
-  push @list, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/imsexport.png" alt="'.$lt{imse}.'" class="LC_menubuttons_link" href=\'javascript:injectData(document.courseverify, "dummy", "exportcourse", "'.&mt('IMS Export').'")\' />'
+  push @list, ({'<img class="LC_noBorder LC_middle" src="/res/adm/pages/imsexport.png" alt="'.$lt{imse}.'" onclick="javascript:injectData(document.courseverify, \'dummy\', \'exportcourse\', \''.&mt('IMS Export').'\');" />'
           =>$exportbut},
 	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/symbs.png" alt="'.$lt{ls}.'"  onclick=\'javascript:injectData(document.courseverify, "dummy", "listsymbs", "'.$lt{'ls'}.'")\'  />'
         =>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"listsymbs\", \"$lt{'ls'}\")'>$lt{'ls'}</a><input type='hidden' name='folder' value='$env{'form.folder'}' />"},
-	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/log.png" alt="'.$lt{sl}.'"  onclick=\'javascript:injectData(document.courseverify, "dummy", "docslog", "'.$lt{'sl'}.'")\'  />'
+	{'<img class="LC_noBorder LC_middle" src="/res/adm/pages/document-properties.png" alt="'.$lt{sl}.'"  onclick=\'javascript:injectData(document.courseverify, "dummy", "docslog", "'.$lt{'sl'}.'")\'  />'
         =>"<a class='LC_menubuttons_link' href='javascript:injectData(document.courseverify, \"dummy\", \"docslog\", \"$lt{'sl'}\")'>$lt{'sl'}</a>"},
 	);
-  return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.create_form_ul(create_list_elements(@list)).'</form>';
+  return '<form action="/adm/coursedocs" method="post" name="courseverify"><input type="hidden" id="dummy" />'.&create_form_ul(&create_list_elements(@list)).'</form>';
 
 }
 
@@ -3530,7 +3537,9 @@ sub generate_edit_table {
             }elsif($activetab eq $name){
                $active = 'class="active"';
             }
-            $form .= '<li '.$active.' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"><a href="javascript:;"><b>'.&mt(${$orderhash{$name}}[0]).'</b></a></li>';
+            $form .= '<li '.$active
+                .' onmouseover="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"'
+                .' onclick="javascript:showPage(this, \''.$name.$tid.'\', \'navigation'.$tid.'\',\'content'.$tid.'\');"><a href="javascript:;"><b>'.&mt(${$orderhash{$name}}[0]).'</b></a></li>';
         } else {
 	    $form .= '<li '.$active.'>'.${$orderhash{$name}}[1].'</li>';
 
@@ -3582,6 +3591,18 @@ sub editing_js {
                                           p_ctr2b => '?[_98]'
                                         );
 
+    my $crstype = &Apache::loncommon::course_type();
+    my $docs_folderpath = &HTML::Entities::encode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.folderpath'},'<>&"');
+    my $docs_pagepath = &HTML::Entities::encode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.pagepath'},'<>&"');
+    my $main_container_page;
+    if ($docs_folderpath eq '') {
+        if ($docs_pagepath ne '') {
+            $main_container_page = 1;
+        }
+    }
+    my $toplevelmain = 'default&Main%20'.$crstype.'%20Documents';
+    my $toplevelsupp = 'supplemental&Supplemental%20'.$crstype.'%20Documents';
+
     return <<ENDNEWSCRIPT;
 function makenewfolder(targetform,folderseq) {
     var foldername=prompt('$lt{"p_mnf"}','$lt{"t_mnf"}');
@@ -3810,6 +3831,40 @@ function showPage(current, pageId, nav,
 	current.className = 'active';
 	currentData = document.getElementById(pageId);
 	currentData.style.display = 'block';
+        if (nav == 'mainnav') {
+            var storedpath = "$docs_folderpath";
+            if (storedpath == '') {
+                storedpath = "$docs_pagepath";
+            }
+            var storedpage = "$main_container_page";
+            var reg = new RegExp("^supplemental");
+            if (pageId == 'mainCourseDocuments') {
+                if (storedpage == 1) {
+                    document.simpleedit.folderpath.value = '';
+                    document.uploaddocument.folderpath.value = '';
+                } else {
+                    if (reg.test(storedpath)) {
+                        document.simpleedit.folderpath.value = '$toplevelmain';
+                        document.uploaddocument.folderpath.value = '$toplevelmain';
+                        document.newext.folderpath.value = '$toplevelmain';
+                    } else {
+                        document.simpleedit.folderpath.value = storedpath;
+                        document.uploaddocument.folderpath.value = storedpath;
+                        document.newext.folderpath.value = storedpath;
+                    }
+                }
+            } else {
+                if (reg.test(storedpath)) {
+                    document.simpleedit.folderpath.value = storedpath;
+                    document.supuploaddocument.folderpath.value = storedpath;
+                    document.supnewext.folderpath.value = storedpath;
+                } else {
+                    document.simpleedit.folderpath.value = '$toplevelsupp';
+                    document.supuploaddocument.folderpath.value = '$toplevelsupp';
+                    document.supnewext.folderpath.value = '$toplevelsupp';
+                }
+            }
+        }
 	return false;
 }