Diff for /loncom/interface/londocs.pm between versions 1.611 and 1.624

version 1.611, 2016/11/22 00:43:12 version 1.624, 2017/04/25 22:18:59
Line 142  sub clean { Line 142  sub clean {
     return $title;      return $title;
 }  }
   
   sub default_folderpath {
       my ($coursenum,$coursedom,$navmapref) = @_;
       return unless ($coursenum && $coursedom && ref($navmapref));
   # Check if entire course is hidden and/or encrypted
       my ($hiddenmap,$encryptmap,$folderpath,$hiddentop);
       my $toplevel = "uploaded/$coursedom/$coursenum/default.sequence";
       unless (ref($$navmapref)) {
           $$navmapref = Apache::lonnavmaps::navmap->new();
       }
       if (ref($$navmapref)) {
           if (lc($$navmapref->get_mapparam(undef,$toplevel,"0.hiddenresource")) eq 'yes') {
               my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) };
               my @resources = $$navmapref->retrieveResources($toplevel,$filterFunc,1,1);
               unless (@resources) {
                   $hiddenmap = 1;
                   unless ($env{'request.role.adv'}) {
                       $hiddentop = 1;
                       if ($env{'form.folder'}) {
                           undef($env{'form.folder'});
                       }
                   }
               }
           }
           if (lc($$navmapref->get_mapparam(undef,$toplevel,"0.encrypturl")) eq 'yes') {
               $encryptmap = 1;
           }
       }
       unless ($hiddentop) {
           $folderpath='default&'.&escape(&mt('Main Content')).
                       '::'.$hiddenmap.':'.$encryptmap.'::';
       }
       if (wantarray) {
           return ($folderpath,$hiddentop);
       } else {
           return $folderpath;
       }
   }
   
 sub dumpcourse {  sub dumpcourse {
     my ($r) = @_;      my ($r) = @_;
Line 623  sub group_import { Line 659  sub group_import {
                 my $marker = $2;                  my $marker = $2;
                 my $info = $3;                  my $info = $3;
                 my ($toolid,%toolhash,%toolsettings);                  my ($toolid,%toolhash,%toolsettings);
                   my @extras = ('linktext','explanation','crslabel','crstitle');
                 my @toolinfo = split(/:/,$info);                  my @toolinfo = split(/:/,$info);
                 if ($residx) {                  if ($residx) {
                     %toolsettings=&Apache::lonnet::dump('exttool_'.$marker,$coursedom,$coursenum);                      %toolsettings=&Apache::lonnet::dump('exttool_'.$marker,$coursedom,$coursenum);
Line 632  sub group_import { Line 669  sub group_import {
                 }                  }
                 $toolid =~ s/\D//g;                  $toolid =~ s/\D//g;
                 ($toolhash{'target'},$toolhash{'width'},$toolhash{'height'},                  ($toolhash{'target'},$toolhash{'width'},$toolhash{'height'},
                    $toolhash{'linktext'},$toolhash{'explanation'},
                  $toolhash{'crslabel'},$toolhash{'crstitle'}) = @toolinfo;                   $toolhash{'crslabel'},$toolhash{'crstitle'}) = @toolinfo;
                 $toolhash{'crslabel'} = &unescape($toolhash{'crslabel'});                  foreach my $item (@extras) {
                 $toolhash{'crstitle'} = &unescape($toolhash{'crstitle'});                      $toolhash{$item} = &unescape($toolhash{$item});
                   }
                 if (ref($ltitoolsref) eq 'HASH') {                  if (ref($ltitoolsref) eq 'HASH') {
                     my @deleted;                      my @deleted;
                     if (ref($ltitoolsref->{$toolid}) eq 'HASH') {                      if (ref($ltitoolsref->{$toolid}) eq 'HASH') {
Line 647  sub group_import { Line 686  sub group_import {
                                 foreach my $item ('width','height') {                                  foreach my $item ('width','height') {
                                     $toolhash{$item} =~ s/^\s+//;                                      $toolhash{$item} =~ s/^\s+//;
                                     $toolhash{$item} =~ s/\s+$//;                                      $toolhash{$item} =~ s/\s+$//;
                                       if ($toolhash{$item} =~ /\D/) {
                                           delete($toolhash{$item});
                                           if ($residx) {
                                               if ($toolsettings{$item}) {
                                                   push(@deleted,$item);
                                               }
                                           }
                                       }
                                 }                                  }
                             }                              }
                         } elsif ($residx) {                          } elsif ($residx) {
                             $toolhash{'target'} = $toolsettings{'target'};                              $toolhash{'target'} = $toolsettings{'target'};
                             if ($toolhash{'target'} eq 'window') {                              if ($toolhash{'target'} eq 'window') {
                                 $toolhash{'width'} = $toolsettings{'width'};                                  foreach my $item ('width','height') { 
                                 $toolhash{'height'} = $toolsettings{'height'};                                        $toolhash{$item} = $toolsettings{$item};
                                   }
                             }                              }
                         } elsif (ref($ltitoolsref->{$toolid}->{'display'}) eq 'HASH') {                          } elsif (ref($ltitoolsref->{$toolid}->{'display'}) eq 'HASH') {
                             $toolhash{'target'} = $ltitoolsref->{$toolid}->{'display'}->{'target'};                              $toolhash{'target'} = $ltitoolsref->{$toolid}->{'display'}->{'target'};
Line 663  sub group_import { Line 711  sub group_import {
                             }                              }
                         }                          }
                         if ($toolhash{'target'} eq 'iframe') {                          if ($toolhash{'target'} eq 'iframe') {
                             delete($toolhash{'width'});                              foreach my $item ('width','height','linktext','explanation') {
                             delete($toolhash{'height'});                                  delete($toolhash{$item});
                             if ($residx) {                                  if ($residx) {
                                 if ($toolsettings{'width'}) {                                      if ($toolsettings{$item}) {
                                     push(@deleted,'width');                                          push(@deleted,$item);
                                 }                                      }
                                 if ($toolsettings{'height'}) {  
                                     push(@deleted,'height');  
                                 }                                  }
                             }                              }
                         }                          }
                         if (ref($ltitoolsref->{$toolid}->{'crsconf'}) eq 'HASH') {                          if (ref($ltitoolsref->{$toolid}->{'crsconf'}) eq 'HASH') {
                             foreach my $item ('label','title') {                               foreach my $item ('label','title','linktext','explanation') {
                                   my $crsitem;
                                   if (($item eq 'label') || ($item eq 'title')) {
                                       $crsitem = 'crs'.$item;
                                   } else {
                                       $crsitem = $item;
                                   }
                                 if ($ltitoolsref->{$toolid}->{'crsconf'}->{$item}) {                                  if ($ltitoolsref->{$toolid}->{'crsconf'}->{$item}) {
                                     $toolhash{'crs'.$item} =~ s/^\s+//;                                      $toolhash{$crsitem} =~ s/^\s+//;
                                     $toolhash{'crs'.$item} =~ s/\s+$//;                                      $toolhash{$crsitem} =~ s/\s+$//;
                                     if ($toolhash{'crs'.$item} eq '') {                                      if ($toolhash{$crsitem} eq '') {
                                         delete($toolhash{'crs'.$item});                                          delete($toolhash{$crsitem});
                                     }                                      }
                                 } else {                                  } else {
                                     delete($toolhash{'crs'.$item});                                      delete($toolhash{$crsitem});
                                 }                                  }
                                 if (($residx) && (exists($toolsettings{'crs'.$item}))) {                                  if (($residx) && (exists($toolsettings{$crsitem}))) {
                                     unless (exists($toolhash{'crs'.$item})) {                                      unless (exists($toolhash{$crsitem})) {
                                         push(@deleted,'crs'.$item);                                          push(@deleted,$crsitem);
                                     }                                      }
                                 }                                  }
                             }                              }
Line 879  sub log_docs { Line 931  sub log_docs {
 sub docs_change_log {  sub docs_change_log {
     my ($r,$coursenum,$coursedom,$folder,$allowed,$crstype,$iconpath,$canedit)=@_;      my ($r,$coursenum,$coursedom,$folder,$allowed,$crstype,$iconpath,$canedit)=@_;
     my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/);      my $supplementalflag=($env{'form.folderpath'}=~/^supplemental/);
       my $navmap; 
     my $js = '<script type="text/javascript">'."\n".      my $js = '<script type="text/javascript">'."\n".
              '// <![CDATA['."\n".               '// <![CDATA['."\n".
              &Apache::loncommon::display_filter_js('docslog')."\n".               &Apache::loncommon::display_filter_js('docslog')."\n".
              &editing_js($env{'user.domain'},$env{'user.name'},$supplementalflag,               &editing_js($env{'user.domain'},$env{'user.name'},$supplementalflag,
                          $coursedom,$coursenum,'','',$canedit)."\n".                           $coursedom,$coursenum,'','',$canedit,'',\$navmap)."\n".
              &history_tab_js()."\n".               &history_tab_js()."\n".
              &Apache::lonratedt::editscript('simple')."\n".               &Apache::lonratedt::editscript('simple')."\n".
              '// ]]>'."\n".               '// ]]>'."\n".
Line 899  sub docs_change_log { Line 952  sub docs_change_log {
     }      }
     my $folderpath=$env{'form.folderpath'};      my $folderpath=$env{'form.folderpath'};
     if ($folderpath eq '') {      if ($folderpath eq '') {
         $folderpath = 'default&'.&escape(&mt('Main Content').':::::');          $folderpath = &default_folderpath($coursenum,$coursedom,\$navmap);
     }      }
       undef($navmap);
     $pathitem = '<input type="hidden" name="folderpath" value="'.      $pathitem = '<input type="hidden" name="folderpath" value="'.
                 &HTML::Entities::encode($folderpath,'<>&"').'" />';                  &HTML::Entities::encode($folderpath,'<>&"').'" />';
     my $readfile="/uploaded/$coursedom/$coursenum/$folder.$container";      my $readfile="/uploaded/$coursedom/$coursenum/$folder.$container";
Line 2970  sub handle_edit_cmd { Line 3024  sub handle_edit_cmd {
   
 sub editor {  sub editor {
     my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype,      my ($r,$coursenum,$coursedom,$folder,$allowed,$upload_output,$crstype,
         $supplementalflag,$orderhash,$iconpath,$pathitem,$ltitoolsref,$canedit)=@_;          $supplementalflag,$orderhash,$iconpath,$pathitem,$ltitoolsref,
           $canedit,$hostname,$navmapref,$hiddentop)=@_;
     my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order,$container);      my ($randompick,$ishidden,$isencrypted,$plain,$is_random_order,$container);
     if ($allowed) {      if ($allowed) {
         (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,          (my $breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,
Line 2993  sub editor { Line 3048  sub editor {
         $randompick = -1;          $randompick = -1;
     }      }
   
     my ($errtext,$fatal) = &mapread($coursenum,$coursedom,      my ($errtext,$fatal);
     $folder.'.'.$container);      if (($folder eq '') && (!$supplementalflag)) {
     return $errtext if ($fatal);          if (@LONCAPA::map::order) {
               undef(@LONCAPA::map::order);
               undef(@LONCAPA::map::resources);
               undef(@LONCAPA::map::resparms);
               undef(@LONCAPA::map::zombies);
           }
           $folder = 'default';
           $container = 'sequence'; 
       } else {
           ($errtext,$fatal) = &mapread($coursenum,$coursedom,
        $folder.'.'.$container);
           return $errtext if ($fatal);
       }
   
     if ($#LONCAPA::map::order<1) {      if ($#LONCAPA::map::order<1) {
  my $idx=&LONCAPA::map::getresidx();   my $idx=&LONCAPA::map::getresidx();
Line 3284  sub editor { Line 3351  sub editor {
         if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {          if ($url =~ m{/uploaded/.+\.(page|sequence)$}) {
             push(@allmapidx,$res);              push(@allmapidx,$res);
         }          }
   
         $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,          $output .= &entryline($idx,$name,$url,$folder,$allowed,$res,
                               $coursenum,$coursedom,$crstype,                                $coursenum,$coursedom,$crstype,
                               $pathitem,$supplementalflag,$container,                                $pathitem,$supplementalflag,$container,
                               \%filters,\%curr_groups,$ltitoolsref,$canedit);                                \%filters,\%curr_groups,$ltitoolsref,$canedit,
                                 $isencrypted,$navmapref,$hostname);
         $idx++;          $idx++;
         $shown++;          $shown++;
     }      }
Line 3369  sub editor { Line 3438  sub editor {
             if (!$allowed) {              if (!$allowed) {
                 $to_show .= $toolslink;                  $to_show .= $toolslink;
             }              }
               my $noresmsg;
               if ($allowed && $hiddentop && !$supplementalflag) {
                   $noresmsg = &mt('Main Content Hidden'); 
               } else {
                   $noresmsg = &mt('Currently empty');
               }
             $to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll')              $to_show .= &Apache::loncommon::start_scrollbox('400px','380px','200px','contentscroll')
                        .'<div class="LC_info" id="contentlist">'                         .'<div class="LC_info" id="contentlist">'
                        .&mt('Currently empty')                         .$noresmsg
                        .'</div>'                         .'</div>'
                        .&Apache::loncommon::end_scrollbox();                         .&Apache::loncommon::end_scrollbox();
         }          }
Line 3662  sub is_supplemental_title { Line 3737  sub is_supplemental_title {
 sub entryline {  sub entryline {
     my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,      my ($index,$title,$url,$folder,$allowed,$residx,$coursenum,$coursedom,
         $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,          $crstype,$pathitem,$supplementalflag,$container,$filtersref,$currgroups,
         $ltitoolsref,$canedit)=@_;          $ltitoolsref,$canedit,$isencrypted,$navmapref,$hostname)=@_;
     my ($foldertitle,$renametitle,$oldtitle);      my ($foldertitle,$renametitle,$oldtitle);
     if (&is_supplemental_title($title)) {      if (&is_supplemental_title($title)) {
  ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);   ($title,$foldertitle,$renametitle) = &Apache::loncommon::parse_supplemental_title($title);
Line 3765  END Line 3840  END
                 'sv' => 'Save',                  'sv' => 'Save',
                 'ul' => 'URL',                  'ul' => 'URL',
                 'ti' => 'Title',                  'ti' => 'Title',
                 'er' => 'Editing rights unavailable for your current role',                   'er' => 'Editing rights unavailable for your current role.', 
                 );                  );
  my %denied = &action_restrictions($coursenum,$coursedom,$url,   my %denied = &action_restrictions($coursenum,$coursedom,$url,
                                           $env{'form.folderpath'},                                            $env{'form.folderpath'},
Line 3888  END Line 3963  END
     my $isfolder;      my $isfolder;
     my $ispage;      my $ispage;
     my $containerarg;      my $containerarg;
       my $folderurl;
     if ($uploaded) {      if ($uploaded) {
         if (($extension eq 'sequence') || ($extension eq 'page')) {          if (($extension eq 'sequence') || ($extension eq 'page')) {
             $url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/;              $url=~/\Q$coursenum\E\/([\/\w]+)\.\Q$extension\E$/;
Line 3899  END Line 3975  END
                 $icon=$iconpath.'page.gif';                  $icon=$iconpath.'page.gif';
                 $ispage=1;                  $ispage=1;
             }              }
               $folderurl = &Apache::lonnet::declutter($url);
             if ($allowed) {              if ($allowed) {
                 $url='/adm/coursedocs?';                  $url='/adm/coursedocs?';
             } else {              } else {
Line 3909  END Line 3986  END
  }   }
     }      }
   
     my ($editlink,$extresform,$anchor);      my ($editlink,$extresform,$anchor,$hiddenres,$nomodal);
     my $orig_url = $url;      my $orig_url = $url;
     $orig_url=~s{http(&colon;|:)//https(&colon;|:)//}{https$2//};      $orig_url=~s{http(&colon;|:)//https(&colon;|:)//}{https$2//};
     $url=~s{^http(|s)(&colon;|:)//}{/adm/wrapper/ext/};      $url=~s{^http(|s)(&colon;|:)//}{/adm/wrapper/ext/};
Line 3927  END Line 4004  END
         } elsif ($url!~/\.(sequence|page)$/) {          } elsif ($url!~/\.(sequence|page)$/) {
     $url='/adm/coursedocs/showdoc'.$url;      $url='/adm/coursedocs/showdoc'.$url;
         }          }
     } elsif ($url=~m|^/ext/|) {      } elsif ($url=~m{^(|/adm/wrapper)/ext/([^#]+)}) {
         $url='/adm/wrapper'.$url;                  my $wrapped = $1;
                   my $exturl = $2;
                   if ($wrapped eq '') {
                       $url='/adm/wrapper'.$url;
                   }
                   if (($ENV{'SERVER_PORT'} == 443) && ($exturl !~ /^https:/)) {
                       $nomodal = 1;
                   }
     } elsif ($url=~m{^/adm/$coursedom/$coursenum/\d+/exttools?$}) {      } elsif ($url=~m{^/adm/$coursedom/$coursenum/\d+/exttools?$}) {
  $url='/adm/wrapper'.$url;   $url='/adm/wrapper'.$url;
               } elsif ($url eq "/public/$coursedom/$coursenum/syllabus") {
                   if (($ENV{'SERVER_PORT'} == 443) &&
                       ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {
                       $url .= '?usehttp=1';
                       $nomodal = 1;
                   }
             }              }
             if (&Apache::lonnet::symbverify($symb,$url)) {              if (&Apache::lonnet::symbverify($symb,$url)) {
                 my $shownsymb = $symb;                  my $shownsymb = $symb;
Line 3943  END Line 4033  END
                         }                          }
                     }                      }
                 }                  }
                 $url.=(($url=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');                  unless ($env{'request.role.adv'}) {
                       if ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i) {
                           $url = '';
                       }
                       if (&Apache::lonnet::EXT('resource.0.hiddenresource',$symb) =~ /^yes$/i) {
                           $url = '';
                           $hiddenres = 1;
                       }
                   }
                   if ($url ne '') {
                       $url.=(($url=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');
                   }
               } elsif (!$env{'request.role.adv'}) {
                   my $checkencrypt;
                   if (((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i) ||
                         $isencrypted || (&Apache::lonnet::EXT('resource.0.encrypturl',$symb) =~ /^yes$/i)) {
                       $checkencrypt = 1;
                   } elsif (ref($navmapref)) {
                       unless (ref($$navmapref)) {
                           $$navmapref = Apache::lonnavmaps::navmap->new();
                       }
                       if (ref($$navmapref)) {
                           if (lc($$navmapref->get_mapparam($symb,undef,"0.encrypturl")) eq 'yes') {
                               $checkencrypt = 1;       
                           }
                       }
                   }
                   if ($checkencrypt) {
                       my $shownsymb = &Apache::lonenc::encrypted($symb);
                       my $shownurl = &Apache::lonenc::encrypted($url);
                       if (&Apache::lonnet::symbverify($shownsymb,$shownurl)) {
                           $url = $shownurl.(($shownurl=~/\?/)?'&':'?').'symb='.&HTML::Entities::encode($shownsymb,'"<>&');
                           if ($env{'request.enc'} ne '') {
                               delete($env{'request.enc'});
                           }
                       } else {
                           $url='';
                       }
                   } else {
                       $url='';
                   }
             } else {              } else {
                 $url='';                  $url='';
             }              }
  }   }
     } elsif ($supplementalflag) {       } elsif ($supplementalflag) {
         if ($isexternal) {          if ($isexternal) {
             if ($url =~ /^([^#]+)#([^#]+)$/) {              if ($url =~ /^([^#]+)#([^#]+)$/) {
                 $url = $1;                  $url = $1;
                 $anchor = $2;                  $anchor = $2;
                   if (($url =~ m{^(|/adm/wrapper)/ext/(?!https:)}) && ($ENV{'SERVER_PORT'} == 443)) {
                       if ($hostname ne '') {
                           $url = 'http://'.$hostname.$url;
                       }
                       $nomodal = 1;
                   }
               }
           } elsif ($url =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) {
               if (($ENV{'SERVER_PORT'} == 443) &&
                   ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {
                   if ($hostname ne '') {
                       $url = 'http://'.$hostname.$url;
                   }
                   $url .= (($url =~ /\?/) ? '&amp;':'?').'usehttp=1';
                   $nomodal = 1;
             }              }
         }          }
     }      }
     my ($rand_pick_text,$rand_order_text);      my ($rand_pick_text,$rand_order_text,$hiddenfolder);
       my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) };
     if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') {      if ($isfolder || $ispage || $extension eq 'sequence' || $extension eq 'page') {
  my $foldername=&escape($foldertitle);   my $foldername=&escape($foldertitle);
  my $folderpath=$env{'form.folderpath'};   my $folderpath=$env{'form.folderpath'};
Line 3965  END Line 4111  END
             $folderpath.=$containerarg.'&'.$foldername;              $folderpath.=$containerarg.'&'.$foldername;
             $url.='folderpath='.&escape($folderpath);              $url.='folderpath='.&escape($folderpath);
         } else {          } else {
               my $rpicknum = (&LONCAPA::map::getparameter($orderidx,
                                                           'parameter_randompick'))[0];
               my $randorder = ((&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_randomorder'))[0]=~/^yes$/i);
               my $hiddenmap = ((&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_hiddenresource'))[0]=~/^yes$/i);
               my $encryptmap = ((&LONCAPA::map::getparameter($orderidx,
                                                 'parameter_encrypturl'))[0]=~/^yes$/i);
               unless ($hiddenmap) {
                   if (ref($navmapref)) {
                       unless (ref($$navmapref)) {
                           $$navmapref = Apache::lonnavmaps::navmap->new();
                       }
                       if (ref($$navmapref)) {
                           if (lc($$navmapref->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes') {
                               my @resources = $$navmapref->retrieveResources($folderurl,$filterFunc,1,1);
                               unless (@resources) {
                                   $hiddenmap = 1;
                                   unless ($env{'request.role.adv'}) {  
                                       $url = '';
                                       $hiddenfolder = 1;
                                   }
                               }
                           }
                       }
                   }
               }
               unless ($encryptmap) {
                   if ((ref($navmapref)) && (ref($$navmapref))) {
                       if (lc($$navmapref->get_mapparam(undef,$folderurl,"0.encrypturl")) eq 'yes') {
                           $encryptmap = 1;
                       }
                   }
               }
               
 # Append randompick number, hidden, and encrypted with ":" to foldername,  # Append randompick number, hidden, and encrypted with ":" to foldername,
 # so it gets transferred between levels  # so it gets transferred between levels
     $folderpath.=$containerarg.'&'.$foldername.      $folderpath.=$containerarg.'&'.$foldername.
                                               ':'.(&LONCAPA::map::getparameter($orderidx,                           ':'.$rpicknum.':'.$hiddenmap.':'.$encryptmap.':'.$randorder.':'.$ispage;
                                               'parameter_randompick'))[0]              unless ($url eq '') {
                                                .':'.((&LONCAPA::map::getparameter($orderidx,                  $url.='folderpath='.&escape($folderpath);
                                               'parameter_hiddenresource'))[0]=~/^yes$/i)              }
                                                .':'.((&LONCAPA::map::getparameter($orderidx,  
                                               'parameter_encrypturl'))[0]=~/^yes$/i)  
                                                .':'.((&LONCAPA::map::getparameter($orderidx,  
                                               'parameter_randomorder'))[0]=~/^yes$/i)  
                                                .':'.$ispage;  
     $url.='folderpath='.&escape($folderpath);  
             my $rpicknum = (&LONCAPA::map::getparameter($orderidx,  
                                                         'parameter_randompick'))[0];  
             my $rpckchk;              my $rpckchk;
             if ($rpicknum) {              if ($rpicknum) {
                 $rpckchk = ' checked="checked"';                  $rpckchk = ' checked="checked"';
Line 3999  $form_common."\n". Line 4172  $form_common."\n".
             $rand_pick_text .= '</span></span>'.              $rand_pick_text .= '</span></span>'.
                                $form_end;                                 $form_end;
             my $ro_set;              my $ro_set;
             if ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i) {              if ($randorder) {
                 $ro_set = 'checked="checked"';                  $ro_set = 'checked="checked"';
                 if (($ishash) && (ref($filtersref->{'randomorder'}) eq 'ARRAY')) {                  if (($ishash) && (ref($filtersref->{'randomorder'}) eq 'ARRAY')) {
                     push(@{$filtersref->{'randomorder'}},$orderidx);                      push(@{$filtersref->{'randomorder'}},$orderidx);
Line 4059  $form_end; Line 4232  $form_end;
                                                             $forceedit,                                                              $forceedit,
                                                             undef,$symb,                                                              undef,$symb,
                                                             &escape($env{'form.folderpath'}),                                                              &escape($env{'form.folderpath'}),
                                                             $renametitle,'','',1,$suppanchor);                                                              $renametitle,$hostname,
                                                               '','',1,$suppanchor);
                 if ($jscall) {                  if ($jscall) {
                     $editlink = '<a class="LC_docs_ext_edit" href="javascript:'.                      $editlink = '<a class="LC_docs_ext_edit" href="javascript:'.
                                 $jscall.'" >'.&mt('Edit').'</a>&nbsp;'."\n";                                  $jscall.'" >'.&mt('Edit').'</a>&nbsp;'."\n";
Line 4076  $form_end; Line 4250  $form_end;
         $reinit = &mt('(re-initialize course to access)');          $reinit = &mt('(re-initialize course to access)');
     }      }
     $line.='<td class="LC_docs_entry_commands"'.$tdalign.'><span class="LC_nobreak">'.$editlink.$renamelink;      $line.='<td class="LC_docs_entry_commands"'.$tdalign.'><span class="LC_nobreak">'.$editlink.$renamelink;
       my $link;
     if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {      if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
        $line.='<a href="'.$url.'"><img src="'.$icon.'" alt="" class="LC_icon" /></a>';         $line.='<a href="'.$url.'"><img src="'.$icon.'" alt="" class="LC_icon" /></a>';
     } elsif ($url) {      } elsif ($url) {
Line 4086  $form_end; Line 4261  $form_end;
                $anchor = '#'.&HTML::Entities::encode($anchor,'"<>&');                 $anchor = '#'.&HTML::Entities::encode($anchor,'"<>&');
            }             }
        }         }
        $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&amp;':'?').'inhibitmenu=yes'.         if ((!$supplementalflag) && ($nomodal) && ($hostname ne '')) {
                                              (($anchor ne '')?$anchor:''),             $link = 'http://'.$hostname.$url;
                                              '<img src="'.$icon.'" alt="" class="LC_icon" />',600,500);         } else {
              $link = $url;
          }
          $link = &js_escape($link.(($url=~/\?/)?'&amp;':'?').'inhibitmenu=yes'.
                                                  (($anchor ne '')?$anchor:''));
          if ($nomodal) {
              $line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'.
                     '<img src="'.$icon.'" alt="" class="LC_icon" border="0" /></a>';
          } else {
              $line.=&Apache::loncommon::modal_link($link,
                                                    '<img src="'.$icon.'" alt="" class="LC_icon" />',600,500);
          }
     } else {      } else {
        $line.='<img src="'.$icon.'" alt="" class="LC_icon" />';         $line.='<img src="'.$icon.'" alt="" class="LC_icon" />';
     }      }
Line 4096  $form_end; Line 4282  $form_end;
     if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {      if (($url=~m{/adm/(coursedocs|supplemental)}) || (!$allowed && $url)) {
        $line.='<a href="'.$url.'">'.$title.'</a>';         $line.='<a href="'.$url.'">'.$title.'</a>';
     } elsif ($url) {      } elsif ($url) {
        $line.=&Apache::loncommon::modal_link($url.(($url=~/\?/)?'&amp;':'?').'inhibitmenu=yes'.         if ($nomodal) {
                                              (($anchor ne '')?$anchor:''),             $line.='<a href="#" onclick="javascript:window.open('."'$link','syllabuspreview','height=400,width=500,scrollbars=1,resizable=1,menubar=0,location=1')".'; return false;" />'.
                                              $title,600,500);                    $title.'</a>';
          } else {
              $line.=&Apache::loncommon::modal_link($link,$title,600,500);
          }
       } elsif (($hiddenfolder) || ($hiddenres)) {
          $line.=$title.' <span class="LC_warning LC_docs_reinit_warn">'.&mt('(Hidden)').'</span>';
     } else {      } else {
        $line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>';         $line.=$title.' <span class="LC_docs_reinit_warn">'.$reinit.'</span>';
     }      }
Line 5038  sub handler { Line 5229  sub handler {
     my $containertag;      my $containertag;
     my $pathitem;      my $pathitem;
     my %ltitools;      my %ltitools;
       my $hiddentop;
       my $navmap;
       my $filterFunc = sub { my $res = shift; return (!$res->randomout() && !$res->is_map()) };
   
 # Do we directly jump somewhere?  # Do we directly jump somewhere?
   
    if (($env{'form.command'} eq 'direct') || ($env{'form.command'} eq 'directnav')) {     if (($env{'form.command'} eq 'direct') || ($env{'form.command'} eq 'directnav')) {
        if ($env{'form.symb'} ne '') {         if ($env{'form.symb'} ne '') {
            $env{'form.folderpath'}=             $env{'form.folderpath'}=
                &Apache::loncommon::symb_to_docspath($env{'form.symb'});                 &Apache::loncommon::symb_to_docspath($env{'form.symb'},\$navmap);
            &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>             &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} =>
                $env{'form.command'}.'_'.$env{'form.symb'}});                 $env{'form.command'}.'_'.$env{'form.symb'}});
        } elsif ($env{'form.supppath'} ne '') {         } elsif ($env{'form.supppath'} ne '') {
Line 5053  sub handler { Line 5246  sub handler {
                $env{'form.command'}.'_'.$env{'form.supppath'}});                 $env{'form.command'}.'_'.$env{'form.supppath'}});
        }         }
    } elsif ($env{'form.command'} eq 'editdocs') {     } elsif ($env{'form.command'} eq 'editdocs') {
        $env{'form.folderpath'} = 'default&'.         $env{'form.folderpath'} = &default_folderpath($coursenum,$coursedom,\$navmap);
                                  &escape(&mt('Main Content').':::::');  
        &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => $env{'form.command'}});         &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => $env{'form.command'}});
    } elsif ($env{'form.command'} eq 'editsupp') {     } elsif ($env{'form.command'} eq 'editsupp') {
        $env{'form.folderpath'} = 'supplemental&'.         $env{'form.folderpath'} = &supplemental_base();
                                   &escape('Supplemental Content');  
        &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => '/adm/supplemental'});         &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => '/adm/supplemental'});
    } elsif ($env{'form.command'} eq 'contents') {     } elsif ($env{'form.command'} eq 'contents') {
        &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => '/adm/navmaps'});         &Apache::lonnet::appenv({'docs.exit.'.$env{'request.course.id'} => '/adm/navmaps'});
Line 5077  sub handler { Line 5268  sub handler {
     if ((!$env{'form.folderpath'}) && $allowed) {      if ((!$env{'form.folderpath'}) && $allowed) {
         &Apache::loncommon::restore_course_settings($stored_folderpath,          &Apache::loncommon::restore_course_settings($stored_folderpath,
                                           {'folderpath' => 'scalar'});                                            {'folderpath' => 'scalar'});
         unless (&unescape($env{'form.folderpath'}) =~ m{^(default|supplemental)&}) {  
           if (&unescape($env{'form.folderpath'}) =~ m{^(default|supplemental)&}) {
               if ($supplementalflag) {
                   undef($env{'form.folderpath'}) if ($1 eq 'default'); 
               } else {
                   undef($env{'form.folderpath'}) if ($1 eq 'supplemental');
               }
           } else {
             undef($env{'form.folderpath'});              undef($env{'form.folderpath'});
         }          }
     }      }
Line 5094  sub handler { Line 5292  sub handler {
                                   .'&'.                                    .'&'.
                                   $env{'form.folderpath'};                                    $env{'form.folderpath'};
     }      }
   # If allowed and user's role is not advanced check folderpath is not hidden  
       if (($allowed) && (!$env{'request.role.adv'}) && 
           ($env{'form.folderpath'} ne '') && (!$supplementalflag)) {
           my $folderurl;
           my @pathitems = split(/\&/,$env{'form.folderpath'});
           my $folder = $pathitems[-2];
           if ($folder eq '') {
               undef($env{'form.folderpath'});
           } else {
               $folderurl = "uploaded/$coursedom/$coursenum/$folder";
               if ((split(/\:/,$pathitems[-1]))[4]) {
                   $folderurl .= '.page';
               } else {
                   $folderurl .= '.sequence';
               }
               unless (ref($navmap)) {
                   $navmap = Apache::lonnavmaps::navmap->new();
               }
               if (ref($navmap)) {
                   if (lc($navmap->get_mapparam(undef,$folderurl,"0.hiddenresource")) eq 'yes') {
                       my @resources = $navmap->retrieveResources($folderurl,$filterFunc,1,1);
                       unless (@resources) {
                           undef($env{'form.folderpath'});
                       }
                   }
               }
           }
       }
   
   
 # If after all of this, we still don't have any paths, make them  # If after all of this, we still don't have any paths, make them
     unless ($env{'form.folderpath'}) {      unless ($env{'form.folderpath'}) {
        if ($supplementalflag) {         if ($supplementalflag) {
           $env{'form.folderpath'}=&supplemental_base();            $env{'form.folderpath'}=&supplemental_base();
        } else {         } elsif ($allowed) {
           $env{'form.folderpath'}='default&'.&escape(&mt('Main Content').            ($env{'form.folderpath'},$hiddentop) = &default_folderpath($coursenum,$coursedom,\$navmap);
                                   ':::::');  
        }         }
     }      }
   
 # Store this  # Store this
     unless ($toolsflag) {      unless ($toolsflag) {
         if ($allowed) {          if (($allowed) && ($env{'form.folderpath'} ne '')) {
             &Apache::loncommon::store_course_settings($stored_folderpath,              &Apache::loncommon::store_course_settings($stored_folderpath,
                                                       {'folderpath' => 'scalar'});                                                        {'folderpath' => 'scalar'});
         }          }
Line 5124  sub handler { Line 5351  sub handler {
         } else {          } else {
             if ($env{'form.folder'} eq '' ||              if ($env{'form.folder'} eq '' ||
                 $env{'form.folder'} eq 'supplemental') {                  $env{'form.folder'} eq 'supplemental') {
                 $folderpath='default&'.                  if ($env{'form.folder'} eq 'supplemental') {
                             &escape(&mt('Main Content').':::::');                      $folderpath=&supplemental_base();
                   } elsif (!$hiddentop) {
                       $folderpath='default&'.
                                    &escape(&mt('Main Content').':::::');
                   }
             }              }
         }          }
         $containertag = '<input type="hidden" name="folderpath" value="" />';          $containertag = '<input type="hidden" name="folderpath" value="" />';
Line 5177  sub handler { Line 5408  sub handler {
             my $tabidstr = join("','",@tabids);              my $tabidstr = join("','",@tabids);
             %ltitools = &Apache::lonnet::get_domain_ltitools($coursedom);              %ltitools = &Apache::lonnet::get_domain_ltitools($coursedom);
             my $posslti = keys(%ltitools);              my $posslti = keys(%ltitools);
               my $hostname = $r->hostname();
     $script .= &editing_js($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti,      $script .= &editing_js($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti,
                                    $londocroot,$canedit).                                     $londocroot,$canedit,$hostname,\$navmap).
                        &history_tab_js().                         &history_tab_js().
                        &inject_data_js().                         &inject_data_js().
                        &Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr,$tid).                         &Apache::lonhtmlcommon::resize_scrollbox_js('docs',$tabidstr,$tid).
Line 5210  sub handler { Line 5442  sub handler {
                                                 {'force_register' => $showdoc,}));                                                  {'force_register' => $showdoc,}));
     } elsif ($toolsflag) {      } elsif ($toolsflag) {
         my ($breadtext,$breadtitle);          my ($breadtext,$breadtitle);
         $breadtext = "$crstype Contents";          $breadtext = "$crstype Editor";
         if ($canedit) {          if ($canedit) {
             $breadtitle = 'Editing '.$crstype.' Contents';              $breadtitle = 'Editing '.$crstype.' Contents';
         } else {          } else {
Line 5230  sub handler { Line 5462  sub handler {
                                                 {'bread_crumbs' => $brcrum,}));                                                  {'bread_crumbs' => $brcrum,}));
     } else {      } else {
         my ($breadtext,$breadtitle,$helpitem);          my ($breadtext,$breadtitle,$helpitem);
         $breadtext = "$crstype Contents";          $breadtext = "$crstype Editor";
         if ($canedit) {          if ($canedit) {
             $breadtitle = 'Editing '.$crstype.' Contents';              $breadtitle = 'Editing '.$crstype.' Contents';
             $helpitem = 'Docs_Adding_Course_Doc';              $helpitem = 'Docs_Adding_Course_Doc';
Line 5361  sub handler { Line 5593  sub handler {
                 'webctce4' => 'WebCT 4 Campus Edition',                  'webctce4' => 'WebCT 4 Campus Edition',
                 'yes'      => 'Yes',                  'yes'      => 'Yes',
                 'no'       => 'No',                  'no'       => 'No',
                 'er' => 'Editing rights unavailable for your current role',                  'er' => 'Editing rights unavailable for your current role.',
         );          );
 # -----------------------------------------------------------------------------  # -----------------------------------------------------------------------------
   
Line 5391  sub handler { Line 5623  sub handler {
     if ($disk_quota == 0) {      if ($disk_quota == 0) {
         $percent = 100.0;          $percent = 100.0;
     } else {      } else {
         $percent = 100*($current_disk_usage/$disk_quota);          $percent = 100*($usage/$disk_quota);
     }      }
     $usage = sprintf("%.2f",$usage);      $usage = sprintf("%.2f",$usage);
     $quota = sprintf("%.2f",$quota);      $quota = sprintf("%.2f",$quota);
Line 5544  CRSFORM Line 5776  CRSFORM
         if ($folder eq '') {          if ($folder eq '') {
             $folder='default';              $folder='default';
         }          }
  my $output = &update_paste_buffer($coursenum,$coursedom,$folder);          if ($canedit) {
         if ($output) {      my $output = &update_paste_buffer($coursenum,$coursedom,$folder);
             $r->print($output);              if ($output) {
                   $r->print($output);
               }
         }          }
  $r->print(<<HIDDENFORM);   $r->print(<<HIDDENFORM);
  <form name="renameform" method="post" action="/adm/coursedocs">   <form name="renameform" method="post" action="/adm/coursedocs">
Line 5578  HIDDENFORM Line 5812  HIDDENFORM
     }      }
   
 #  #
       my $hostname = $r->hostname();
     my $savefolderpath;      my $savefolderpath;
   
     if ($allowed) {      if ($allowed) {
        my $folder=$env{'form.folder'};         my $folder=$env{'form.folder'};
        if ($folder eq '' || $supplementalflag) {         if ((($folder eq '') && (!$hiddentop)) || ($supplementalflag)) {
            $folder='default';             $folder='default';
    $savefolderpath = $env{'form.folderpath'};     $savefolderpath = $env{'form.folderpath'};
    $env{'form.folderpath'}='default&'.&escape(&mt('Main Content'));     $env{'form.folderpath'}='default&'.&escape(&mt('Main Content'));
Line 5990  NSYLFORM Line 6224  NSYLFORM
 NGFFORM  NGFFORM
  @specialdocumentsforma=(   @specialdocumentsforma=(
  {'<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/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="makenew(document.newsyl);" />'=>$newsylform},   {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="javascript:makenew(document.newsyl);" />'=>$newsylform},
  {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="javascript:makenew(document.newnav);" />'=>$newnavform},   {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/navigation.png" alt="'.$lt{navc}.'" onclick="javascript:makenew(document.newnav);" />'=>$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/simple.png" alt="'.$lt{sipa}.'" onclick="javascript:makesmppage();" />'=>$newsmppageform},
         {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage();" />'=>$newwebpageform},          {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/webpage.png" alt="'.$lt{webp}.'" onclick="javascript:makewebpage();" />'=>$newwebpageform},
Line 6047  unless ($container eq 'page') { Line 6281  unless ($container eq 'page') {
  $hadchanges=0;   $hadchanges=0;
        unless (($supplementalflag || $toolsflag)) {         unless (($supplementalflag || $toolsflag)) {
           my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,            my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                               $supplementalflag,\%orderhash,$iconpath,$pathitem,\%ltitools,$canedit);                                $supplementalflag,\%orderhash,$iconpath,$pathitem,
                                 \%ltitools,$canedit,$hostname,\$navmap,$hiddentop);
             undef($navmap);
           if ($error) {            if ($error) {
              $r->print('<p><span class="LC_error">'.$error.'</span></p>');               $r->print('<p><span class="LC_error">'.$error.'</span></p>');
           }            }
Line 6166  SWEBFORM Line 6402  SWEBFORM
   
   
 my @specialdocs = (  my @specialdocs = (
  {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="makenew(document.supnewsyl);" />'   {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/syllabus.png" alt="'.$lt{syll}.'" onclick="javascript:makenew(document.supnewsyl);" />'
             =>$supnewsylform},              =>$supnewsylform},
  {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="javascript:makenew(document.supnewaboutme);" />'   {'<img class="LC_noBorder LC_middle" src="/res/adm/pages/myaboutme.png" alt="'.$lt{mypi}.'" onclick="javascript:makenew(document.supnewaboutme);" />'
             =>$supnewaboutmeform},              =>$supnewaboutmeform},
Line 6194  my %suporderhash = ( Line 6430  my %suporderhash = (
                 );                  );
         if ($supplementalflag) {          if ($supplementalflag) {
            my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,             my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                                $supplementalflag,\%suporderhash,$iconpath,$pathitem,\%ltitools,$canedit);                                 $supplementalflag,\%suporderhash,$iconpath,$pathitem,
                                  \%ltitools,$canedit,$hostname);
            if ($error) {             if ($error) {
               $r->print('<p><span class="LC_error">'.$error.'</span></p>');                $r->print('<p><span class="LC_error">'.$error.'</span></p>');
            } else {             } else {
Line 6214  my %suporderhash = ( Line 6451  my %suporderhash = (
         }          }
     } elsif ($supplementalflag) {      } elsif ($supplementalflag) {
         my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,          my $error = &editor($r,$coursenum,$coursedom,$folder,$allowed,'',$crstype,
                             $supplementalflag,'',$iconpath,$pathitem,$canedit);                              $supplementalflag,'',$iconpath,$pathitem,'','',$hostname);
         if ($error) {          if ($error) {
             $r->print('<p><span class="LC_error">'.$error.'</span></p>');              $r->print('<p><span class="LC_error">'.$error.'</span></p>');
         }          }
Line 6588  END Line 6825  END
 }  }
   
 sub editing_js {  sub editing_js {
     my ($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti,$londocroot,$canedit) = @_;      my ($udom,$uname,$supplementalflag,$coursedom,$coursenum,$posslti,
           $londocroot,$canedit,$hostname,$navmapref) = @_;
     my %js_lt = &Apache::lonlocal::texthash(      my %js_lt = &Apache::lonlocal::texthash(
                                           p_mnf => 'Name of New Folder',                                            p_mnf => 'Name of New Folder',
                                           t_mnf => 'New Folder',                                            t_mnf => 'New Folder',
Line 6632  sub editing_js { Line 6870  sub editing_js {
                                           nofi    => 'No file selected',                                            nofi    => 'No file selected',
                                           tinc    => 'Title in course',                                            tinc    => 'Title in course',
                                           sunm    => 'Sub-directory name',                                            sunm    => 'Sub-directory name',
                                           edri    => 'Editing rights unavailable for your current role',                                            edri    => 'Editing rights unavailable for your current role.',
                                         );                                          );
     &js_escape(\%js_lt);      &js_escape(\%js_lt);
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
Line 6641  sub editing_js { Line 6879  sub editing_js {
     if (&HTML::Entities::decode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.folderpath'}) =~ /\:1$/) {      if (&HTML::Entities::decode($env{'environment.internal.'.$env{'request.course.id'}.'.docs_folderpath.folderpath'}) =~ /\:1$/) {
         $main_container_page = 1;          $main_container_page = 1;
     }      }
     my $toplevelmain =       my $backtourl;
         &escape(&mt('Main Content').':::::');      my $toplevelmain = &escape(&default_folderpath($coursenum,$coursedom,$navmapref));
     my $toplevelsupp = &supplemental_base();      my $toplevelsupp = &supplemental_base();
   
     my $backtourl;  
     if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) {      if ($env{'docs.exit.'.$env{'request.course.id'}} =~ /^direct_(.+)$/) {
         my $caller = $1;          my $caller = $1;
         if ($caller =~ /^supplemental/) {          if ($caller =~ /^supplemental/) {
Line 6661  sub editing_js { Line 6898  sub editing_js {
                     if (($caller =~ m{^([^#]+)\Q#$anchor\E$})) {                      if (($caller =~ m{^([^#]+)\Q#$anchor\E$})) {
                         $caller = $1.&escape('#').$anchor;                          $caller = $1.&escape('#').$anchor;
                     }                      }
                   } else {
                       $url = $res;
                 }                  }
                 $backtourl = &HTML::Entities::encode(&Apache::lonnet::clutter($url),'<>&"').'?symb='.                  $backtourl = &HTML::Entities::encode(&Apache::lonnet::clutter($url),'<>&"').'?symb='.
                              &HTML::Entities::encode($caller,'<>&"');                               &HTML::Entities::encode($caller,'<>&"');
                   if ($backtourl =~ m{^\Q/public/$coursedom/$coursenum/syllabus\E}) {
                       if (($ENV{'SERVER_PORT'} == 443) &&
                           ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ m{^http://})) {
                           if ($hostname ne '') {
                               $backtourl = 'http://'.$hostname.$backtourl;
                           }
                           $backtourl .= (($backtourl =~ /\?/) ? '&':'?').'usehttp=1';
                       }
                   } elsif ($backtourl =~ m{^/adm/wrapper/ext/(?!https:)}) {
                       if (($ENV{'SERVER_PORT'} == 443) && ($hostname ne '')) {
                           $backtourl = 'http://'.$hostname.$backtourl;
                       }
                   }
                 if ($anchor ne '') {                  if ($anchor ne '') {
                     $backtourl .= '#'.&HTML::Entities::encode($anchor,'<>&"');                      $backtourl .= '#'.&HTML::Entities::encode($anchor,'<>&"');
                 }                  }

Removed from v.1.611  
changed lines
  Added in v.1.624


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>