--- loncom/interface/lonsyllabus.pm	2022/01/01 21:32:06	1.138.2.8.2.1
+++ loncom/interface/lonsyllabus.pm	2024/01/25 22:23:32	1.155
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # Syllabus
 #
-# $Id: lonsyllabus.pm,v 1.138.2.8.2.1 2022/01/01 21:32:06 raeburn Exp $
+# $Id: lonsyllabus.pm,v 1.155 2024/01/25 22:23:32 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -40,6 +40,7 @@ use Apache::lonannounce;
 use Apache::lonlocal;
 use Apache::lonhtmlcommon;
 use Apache::lonspeller();
+use Apache::lonwrapper();
 use HTML::Entities();
 
 sub handler {
@@ -152,8 +153,20 @@ sub handler {
                     &Apache::structuretags::reset_problem_globals();
                     my $oldfile = $env{'request.filename'};
                     $env{'request.filename'} = $item;
+                    my $oldinhibit;
+                    if ($env{'form.only_body'}) {
+                        $oldinhibit = $env{'form.inhibitmenu'};
+                        $env{'form.inhibitmenu'} = 'yes';
+                    }
                     my $result = &Apache::lonxml::xmlparse($r,$target,$filecontents,
                                                            '',%mystyle);
+                    if ($env{'form.only_body'}) {
+                        if ($oldinhibit ne '') {
+                            $env{'form.inhibitmenu'} = $oldinhibit;
+                        } else {
+                            delete($env{'form.inhibitmenu'});
+                        }
+                    }
                     &Apache::structuretags::reset_problem_globals();
                     &Apache::lonhomework::finished_parsing();
                     $env{'request.filename'} = $oldfile;
@@ -170,6 +183,7 @@ sub handler {
                 } else {
                     my $brcrum;
                     if ($env{'form.folderpath'} =~ /^supplemental/) {
+                        &Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom);
                         my $title = $env{'form.title'};
                         if ($title eq '') {
                             $title = &mt('Syllabus');
@@ -205,10 +219,12 @@ sub handler {
                     $is_pdf = 1;
                 }
                 if ($env{'form.folderpath'} =~ /^supplemental/) {
+                    &Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom);
                     my $title = $env{'form.title'};
                     if ($title eq '') {
                         $title = &mt('Syllabus');
                     }
+                    $title = &HTML::Entities::encode($title,'\'"<>&');
                     $brcrum =
                         &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
                 }
@@ -314,12 +330,8 @@ sub handler {
     if ($allowed) {
 #---------------------------------- Print External URL Syllabus Info if editing
         if ($target ne 'tex') {
-            my $hostname = &Apache::lonnet::hostname($homeserver);
-            my $protocol = $Apache::lonnet::protocol{$homeserver};
-            $protocol = 'http' if ($protocol ne 'https');
-            my $alias = &Apache::lonnet::use_proxy_alias($r,$homeserver);
-            $hostname = $alias if ($alias ne '');
-            my $link = $protocol.'://'.$hostname.$r->uri;
+            my $link = &Apache::lonnet::url_prefix($r,$cdom,$homeserver,'web').
+                       $r->uri;
             $r->print('<div class="LC_left_float">'
                      .'<span class="LC_help_open_topic LC_info">'
                      .'<span class="LC_info">'
@@ -767,6 +779,7 @@ sub get_breadcrumbs{
     my ($cdom,$cnum,$crstype,$args) = @_;
     return unless (ref($args) eq 'HASH');
     if ($env{'form.folderpath'} =~ /^supplemental/) {
+        &Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom);
         my $title = $env{'form.title'};
         if ($title eq '') {
             $title = &mt('Syllabus');
@@ -775,6 +788,7 @@ sub get_breadcrumbs{
             &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
         if (ref($brcrum) eq 'ARRAY') {
             $args->{'bread_crumbs'} = $brcrum;
+            $args->{'bread_crumbs_nomenu'} = 1;
         }
     } else {
         if ((&Apache::lonnet::is_on_map("public/$cdom/$cnum/syllabus"))