Diff for /rat/lonwrapper.pm between versions 1.49.2.11.2.7 and 1.79

version 1.49.2.11.2.7, 2024/02/28 19:01:41 version 1.79, 2022/08/30 11:41:27
Line 47  use Digest::MD5(); Line 47  use Digest::MD5();
 # ================================================================ Main Handler  # ================================================================ Main Handler
 sub wrapper {  sub wrapper {
     my ($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,      my ($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,
         $title,$width,$height,$reuse,$is_supp) = @_;          $title,$width,$height,$reuse) = @_;
   
     my $forcereg;      my $forcereg;
     unless ($env{'form.folderpath'}) {      unless ($env{'form.folderpath'}) {
Line 82  sub wrapper { Line 82  sub wrapper {
         }          }
     }      }
   
     my $noiframe = &Apache::loncommon::modal_link(&HTML::Entities::encode($url.$anchor,'&<>"\''),$lt{'show'},500,400);      my $noiframe = &Apache::loncommon::modal_link($url.$anchor,$lt{'show'},500,400);
     my $args = {'bgcolor' => '#FFFFFF'};      my $args = {'bgcolor' => '#FFFFFF'};
     if ($forcereg) {      if ($forcereg) {
         $args->{'force_register'} = $forcereg;          $args->{'force_register'} = $forcereg;
Line 95  sub wrapper { Line 95  sub wrapper {
     }      }
     if ($env{'form.only_body'}) {      if ($env{'form.only_body'}) {
         $args->{'only_body'} = $env{'form.only_body'};          $args->{'only_body'} = $env{'form.only_body'};
     } elsif (($is_supp) && ($env{'form.folderpath'} ne '')) {  
         $args->{'bread_crumbs_nomenu'} = 1;  
     }      }
   
     my ($countdown,$donemsg,$headjs);      my ($countdown,$donemsg,$headjs);
Line 153  sub wrapper { Line 151  sub wrapper {
 #  #
   
     unless ($clientmobile || ($exttool eq 'window') || ($exttool eq 'tab') || $uselink) {      unless ($clientmobile || ($exttool eq 'window') || ($exttool eq 'tab') || $uselink) {
         $headjs = &Apache::loncommon::iframe_wrapper_headjs();          $headjs = '
   <script type="text/javascript">
   // <![CDATA[
   var LCnotready = 0;
   var LCresizedef = 0;
   // ]]>
   </script>'."\n";
     }      }
   
     my $startpage = &Apache::loncommon::start_page('Menu',$headjs,$args).$countdown.$donemsg;      my $startpage = &Apache::loncommon::start_page('Menu',$headjs,$args).$countdown.$donemsg;
Line 162  sub wrapper { Line 166  sub wrapper {
     if (($uselink) && ($title eq '')) {      if (($uselink) && ($title eq '')) {
         if ($env{'form.symb'}) {          if ($env{'form.symb'}) {
             $title=&Apache::lonnet::gettitle($env{'form.symb'});              $title=&Apache::lonnet::gettitle($env{'form.symb'});
         } elsif (!$is_supp) {          } else {
             my $symb=&Apache::lonnet::symbread($r->uri);              my $symb=&Apache::lonnet::symbread($r->uri);
             if ($symb) {              if ($symb) {
                 $title=&Apache::lonnet::gettitle($symb);                  $title=&Apache::lonnet::gettitle($symb);
Line 221  sub wrapper { Line 225  sub wrapper {
                     unless ($reuse) {                      unless ($reuse) {
                         my $resid;                          my $resid;
                         if ($env{'request.course.id'}) {                          if ($env{'request.course.id'}) {
                             unless (($is_supp) || ($env{'form.folderpath'} =~ /^supplemental/)) {                              unless ($env{'form.folderpath'} =~ /^supplemental/) {
                                 my $symb=&Apache::lonnet::symbread($r->uri);                                  my $symb=&Apache::lonnet::symbread($r->uri);
                                 if ($symb) {                                  if ($symb) {
                                     my $navmap = Apache::lonnavmaps::navmap->new();                                      my $navmap = Apache::lonnavmaps::navmap->new();
Line 296  ENDLINK Line 300  ENDLINK
         $linktext = &mt('Link to resource');          $linktext = &mt('Link to resource');
         return $startpage.&create_link($url,$anchor,$title,$linktext).$endpage;          return $startpage.&create_link($url,$anchor,$title,$linktext).$endpage;
     } else {      } else {
           my $offset = 5;
           &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['inhibitmenu']);
           if ($env{'form.inhibitmenu'} eq 'yes') {
               $offset = 0;
           }
           my $script = &Apache::lonhtmlcommon::scripttag(<<SCRIPT);
           \$(document).ready( function() {
               \$(window).unbind('resize').resize(function(){
                   var header = null;
                   var offset = $offset;
                   var height = 0;
                   var hdrtop = 0;
                   if (\$('div.LC_head_subbox:first').length) {
                       header = \$('div.LC_head_subbox:first');
                       offset = 9;
                   } else {
                       if (\$('#LC_breadcrumbs').length) {
                           header = \$('#LC_breadcrumbs');
                       }
                   }
                   if (header != null && header.length) {
                       height = header.height();
                       hdrtop = header.position().top;
                   }
                   var pos = height + hdrtop + offset;
                   \$('.LC_iframecontainer').css('top', pos);
               });
               LCresizedef = 1;
               if (LCnotready == 1) {
                   LCnotready = 0;
                   \$(window).trigger('resize');
               }
           });
           window.onload = function(){
                if (LCresizedef) {
                    LCnotready = 0;
                    \$(window).trigger('resize');
                } else {
                    LCnotready = 1;
                }
           };
   SCRIPT
         # javascript will position the iframe if window was resized (or zoomed)          # javascript will position the iframe if window was resized (or zoomed)
         my $script = &Apache::loncommon::iframe_wrapper_resizejs();  
         my $dest = &HTML::Entities::encode($url.$anchor,'&<>"');          my $dest = &HTML::Entities::encode($url.$anchor,'&<>"');
         return <<ENDFRAME;          return <<ENDFRAME;
         $startpage          $startpage
Line 339  sub handler { Line 384  sub handler {
   
     my $url = $r->uri;      my $url = $r->uri;
     my ($is_ext,$brcrum,$absolute,$is_pdf,$exttool,$cdom,$cnum,$hostname,      my ($is_ext,$brcrum,$absolute,$is_pdf,$exttool,$cdom,$cnum,$hostname,
         $linktext,$explanation,$width,$height,$reuse,$is_supp);          $linktext,$explanation,$width,$height,$reuse);
   
     for ($url){      for ($url){
         s|^/adm/wrapper||;          s|^/adm/wrapper||;
Line 380  sub handler { Line 425  sub handler {
         my %toolhash = &Apache::lonnet::get('exttool_'.$marker,['target','linktext','explanation','id','width','height'],          my %toolhash = &Apache::lonnet::get('exttool_'.$marker,['target','linktext','explanation','id','width','height'],
                                             $cdom,$cnum);                                              $cdom,$cnum);
         if ($toolhash{'id'}) {          if ($toolhash{'id'}) {
             my ($idx,%ltitools);              my %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer');
             if ($toolhash{'id'} =~ /^c(\d+)$/) {              if (ref($ltitools{$toolhash{'id'}}) eq 'HASH') {
                 $idx = $1;                  $exttoolremote = $ltitools{$toolhash{'id'}}{'url'};
                 %ltitools = &Apache::lonnet::get_course_lti($cnum,$cdom,'consumer');  
             } else {  
                 $idx = $toolhash{'id'};  
                 %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer');  
             }  
             if (ref($ltitools{$idx}) eq 'HASH') {  
                 $exttoolremote = $ltitools{$idx}{'url'};  
             }              }
         }          }
         if ($toolhash{'target'} eq 'window') {          if ($toolhash{'target'} eq 'window') {
Line 408  sub handler { Line 446  sub handler {
     }      }
     if (($is_ext) || ($exttool)) {      if (($is_ext) || ($exttool)) {
         &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},          &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
             ['forceedit','register','folderpath','symb','idx','title','anchor','only_body']);              ['forceedit','register','folderpath','symb','idx','title','anchor']);
         if (($env{'form.forceedit'}) &&          if (($env{'form.forceedit'}) &&
             (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) &&              (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) &&
             (($env{'form.folderpath'} =~ /^supplemental/) ||              (($env{'form.folderpath'} =~ /^supplemental/) ||
Line 422  sub handler { Line 460  sub handler {
                 if ($env{'form.anchor'} ne '') {                  if ($env{'form.anchor'} ne '') {
                     $url .= '#'.$env{'form.anchor'};                      $url .= '#'.$env{'form.anchor'};
                 }                  }
                 $is_supp = 1;  
             }              }
             my $type = 'ext';              my $type = 'ext';
             if ($exttool) {              if ($exttool) {
Line 446  sub handler { Line 483  sub handler {
                     $title = &mt('External Tool');                      $title = &mt('External Tool');
                 }                  }
             }              }
             $title = &HTML::Entities::encode($title,'\'"<>&');              $brcrum =
             $is_supp = 1;                  &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);
             if ($env{'request.course.id'}) {  
                 $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
                 $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
                 &Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom);  
             }  
             unless ($env{'form.only_body'}) {   
                 $brcrum =  
                     &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);  
             }  
         }  
     } elsif ($env{'request.course.id'}) {  
         my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'});  
         $courseurl =~ s{^/}{};  
         if ($url =~ m{^\Q/uploaded/$courseurl/supplemental/\E}) {  
             $is_supp = 1;  
             &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},  
                                                     ['folderpath','title','only_body']);  
             if ($env{'form.folderpath'}) {  
                 $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
                 $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
                 &Apache::loncommon::validate_folderpath(1,'',$cnum,$cdom);  
             }  
             my $title = $env{'form.title'};  
             $title = &HTML::Entities::encode($title,'\'"<>&');  
             my $crstype = &Apache::loncommon::course_type();  
             unless ($env{'form.only_body'}) {  
                 $brcrum =  
                     &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype,undef,$title,1);  
             }  
         }          }
     }      }
   
Line 509  sub handler { Line 517  sub handler {
         }          }
   
         $r->print( wrapper($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,          $r->print( wrapper($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,
                            $linktext,$explanation,undef,$width,$height,$reuse,                             $linktext,$explanation,undef,$width,$height,$reuse) );
                            $is_supp) );  
   
     } # not just the menu      } # not just the menu
           
Line 537  described at http://www.lon-capa.org. Line 544  described at http://www.lon-capa.org.
   
 =over  =over
   
 =item wrapper($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,$title,$width,$height,$reuse,$is_supp)  =item wrapper($r,$url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,$title,$width,$height,$reuse)
   
 =over  =over
   

Removed from v.1.49.2.11.2.7  
changed lines
  Added in v.1.79


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