Diff for /rat/lonwrapper.pm between versions 1.60 and 1.65

version 1.60, 2017/04/25 22:19:03 version 1.65, 2017/11/30 14:41:30
Line 38  use Apache::loncommon(); Line 38  use Apache::loncommon();
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
 use Apache::lonextresedit();  use Apache::lonextresedit();
 use Apache::lonexttool();  use Apache::lonexttool();
 use LONCAPA qw(:DEFAULT :match);;  use LONCAPA qw(:DEFAULT :match);
   use HTML::Entities();
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
 sub wrapper {  sub wrapper {
     my ($url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,$title) = @_;      my ($url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation,
           $title,$width,$height) = @_;
   
     my $forcereg;      my $forcereg;
     unless ($env{'form.folderpath'}) {      unless ($env{'form.folderpath'}) {
Line 83  sub wrapper { Line 85  sub wrapper {
     my $startpage = &Apache::loncommon::start_page('Menu',undef,$args);      my $startpage = &Apache::loncommon::start_page('Menu',undef,$args);
     my $endpage = &Apache::loncommon::end_page();      my $endpage = &Apache::loncommon::end_page();
           
     if (($env{'browser.mobile'}) || ($exttool eq 'window')) {      if (($env{'browser.mobile'}) || ($exttool eq 'window') || ($exttool eq 'tab')) {
         my $output = $startpage;          my $output = $startpage;
         if ($is_pdf) {          if ($is_pdf) {
             if ($title eq '') {              if ($title eq '') {
Line 99  sub wrapper { Line 101  sub wrapper {
                 $output .= $title.'<br />';                  $output .= $title.'<br />';
             }              }
             $output .= '<a href="'.$url.'">'.&mt('Link to PDF (for mobile devices)').'</a>';              $output .= '<a href="'.$url.'">'.&mt('Link to PDF (for mobile devices)').'</a>';
         } elsif ($exttool eq 'window') {          } elsif (($exttool eq 'window') || ($exttool eq 'tab')) {
             if ($linktext eq '') {              if ($linktext eq '') {
                 $linktext = &mt('Launch External Tool');                  $linktext = &mt('Launch External Tool');
             }              }
             $output .= '<div>'.              $url = &HTML::Entities::encode($url,'"<>&');
                        '<a href="'.$url.'" target="LC_LTI" style="padding:0;clear:both;margin:0;border:0">'.              if ($exttool eq 'tab') {
                        $linktext.'</a>'.                  $output .= '<div>'.
                        '</div>';                             '<a href="'.$url.'" target="LCExternalToolTab" style="padding:0;clear:both;margin:0;border:0">'.
                              $linktext.'</a>'.
                              '</div>';
               } else {
                   $output .= <<"ENDLINK";
   <script type="text/javascript">
   // <![CDATA[
   var windowObjectReference = null; 
   var PreviousUrl; 
                              
   function openSinglePopup(strUrl) {
       if (windowObjectReference == null || windowObjectReference.closed) {
           windowObjectReference = window.open(strUrl, "LCExternalToolPopUp",
                                               "height=$height,width=$width,scrollbars=yes,resizable=yes,status=yes,menubar=no,location=no'");
       } else if(PreviousUrl != strUrl) {
           windowObjectReference = window.open(strUrl, "LCExternalToolPopUp",
                                               "height=$height,width=$width,scrollbars=yes,resizable=yes,status=yes,menubar=no,location=no'");
           windowObjectReference.focus();
       } else {
           windowObjectReference.focus();
       };
       PreviousUrl = strUrl;
   }
   // ]]>
   </script>
   <div>
   <a href="$url" target="LCExternalToolPopUp" onclick="openSinglePopup(this.href); return false;">
   $linktext</a>
   </div>
   ENDLINK
               }
             if ($explanation ne '') {              if ($explanation ne '') {
                 $output .= '<div>'.$explanation.'</div>';                  $output .= '<div>'.$explanation.'</div>';
             }              }
         } else {          } else {
               my $dest = &HTML::Entities::encode($url.$anchor,'&<>"');
             $output .= '<div style="overflow:scroll; -webkit-overflow-scrolling:touch;">'."\n".              $output .= '<div style="overflow:scroll; -webkit-overflow-scrolling:touch;">'."\n".
                        '<iframe src="'.$url.$anchor.'" height="100%" width="100%" frameborder="0">'."\n".                         '<iframe src="'.$dest.'" height="100%" width="100%" frameborder="0">'."\n".
                        "$lt{'noif'} $noiframe\n".                         "$lt{'noif'} $noiframe\n".
                        "</iframe>\n".                         "</iframe>\n".
                        "</div>\n";                         "</div>\n";
Line 151  sub wrapper { Line 184  sub wrapper {
         window.onload = function(){  \$(window).trigger('resize') };          window.onload = function(){  \$(window).trigger('resize') };
 SCRIPT  SCRIPT
         # javascript will position the iframe if window was resized (or zoomed)          # javascript will position the iframe if window was resized (or zoomed)
           my $dest = &HTML::Entities::encode($url.$anchor,'&<>"');
         return <<ENDFRAME;          return <<ENDFRAME;
         $startpage          $startpage
         $script          $script
         <div class="LC_iframecontainer">          <div class="LC_iframecontainer">
             <iframe src="$url$anchor">$lt{'noif'} $noiframe</iframe>              <iframe src="$dest">$lt{'noif'} $noiframe</iframe>
         </div>          </div>
         $endpage          $endpage
 ENDFRAME  ENDFRAME
Line 171  sub handler { Line 205  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);          $linktext,$explanation,$width,$height);
   
     for ($url){      for ($url){
         s|^/adm/wrapper||;          s|^/adm/wrapper||;
Line 183  sub handler { Line 217  sub handler {
   
     if ($url =~ /\.pdf$/i) {      if ($url =~ /\.pdf$/i) {
         $is_pdf = 1;          $is_pdf = 1;
     } elsif ($url =~ m{^/adm/($match_domain)/($match_courseid)/(\d+)/exttools?$}) {      } elsif ($url =~ m{^/adm/($match_domain)/($match_courseid)/(\d+)/ext\.tool$}) {
         $cdom = $1;          $cdom = $1;
         $cnum = $2;          $cnum = $2;
         my $marker = $3;          my $marker = $3;
         $exttool = 'iframe';          $exttool = 'iframe';
         my %toolhash = &Apache::lonnet::get('exttool_'.$marker,['target','linktext','explanation'],          my $exttoolremote;
           my %toolhash = &Apache::lonnet::get('exttool_'.$marker,['target','linktext','explanation','id','width','height'],
                                             $cdom,$cnum);                                              $cdom,$cnum);
           if ($toolhash{'id'}) {
               my %ltitools = &Apache::lonnet::get_domain_lti($cdom,'consumer');
               if (ref($ltitools{$toolhash{'id'}}) eq 'HASH') {
                   $exttoolremote = $ltitools{$toolhash{'id'}}{'url'};
               }
           }
         if ($toolhash{'target'} eq 'window') {          if ($toolhash{'target'} eq 'window') {
             $exttool = 'window';               $exttool = 'window';
               $width = $toolhash{'width'};
               $height = $toolhash{'height'};
           } elsif ($toolhash{'target'} eq 'tab') {
               $exttool = 'tab'; 
           }
           if (($exttool eq 'window') || ($exttool eq 'tab')) {
             $linktext = $toolhash{'linktext'};               $linktext = $toolhash{'linktext'}; 
             $explanation = $toolhash{'explanation'};              $explanation = $toolhash{'explanation'};
           } elsif (($exttoolremote =~ /^http:/) && ($ENV{'SERVER_PORT'} == 443)) {
               $exttool = 'tab';
         }          }
     }      }
     if (($is_ext) || ($exttool)) {      if (($is_ext) || ($exttool)) {
Line 243  sub handler { Line 292  sub handler {
 #  #
 # Actual URL  # Actual URL
 #  #
     if ($url=~/$LONCAPA::assess_re/) {      if (($url=~/$LONCAPA::assess_re/) && (!$exttool)) {
 #  #
 # This is uploaded homework  # This is uploaded homework
 #  #
Line 268  sub handler { Line 317  sub handler {
             &Apache::lonenc::check_encrypt(\$url);              &Apache::lonenc::check_encrypt(\$url);
         }          }
   
         $r->print( wrapper($url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,$linktext,$explanation) );          $r->print( wrapper($url,$brcrum,$absolute,$is_ext,$is_pdf,$exttool,
                              $linktext,$explanation,undef,$width,$height) );
   
     } # not just the menu      } # not just the menu
           
Line 295  described at http://www.lon-capa.org. Line 345  described at http://www.lon-capa.org.
   
 =over  =over
   
 =item wrapper($url,$brcrum,$absolute,$is_ext,$is_pdf,$title))  =item wrapper($url,$brcrum,$absolute,$is_ext,$is_pdf,$linktext,$explanation,$title,$width,$height)
   
 =over  =over
   

Removed from v.1.60  
changed lines
  Added in v.1.65


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