Diff for /loncom/homework/daxepage.pm between versions 1.5 and 1.6

version 1.5, 2023/08/23 20:58:32 version 1.6, 2023/11/19 21:28:17
Line 30 Line 30
 package Apache::daxepage;  package Apache::daxepage;
 use strict;  use strict;
   
 use Apache::Constants  qw(:common);  use Apache::loncommon();
   use Apache::lonhtmlcommon();
   use Apache::lonmenu();
   use Apache::lonlocal;
   use Apache::Constants qw(:common);
   use HTML::Entities();
   
 sub handler {  sub handler {
     my $request = shift;      my $request = shift;
Line 41  sub handler { Line 46  sub handler {
         $request->status(406);          $request->status(406);
         return OK;          return OK;
     }      }
     my $result = '';      my %editors = &Apache::loncommon::permitted_editors();
     $result .= "<!DOCTYPE html>\n";      unless ($editors{'daxe'}) {
     $result .= "<html>\n";          my $msg = '<p class="LC_warning">'.
     $result .= "<head>\n";                    &mt('Daxe editor is not enabled for this Authoring Space.').'</p>';
           &do_redirect($request,$uri,$msg);
           return OK;
       }
       my %lt = &Apache::lonlocal::texthash(
                                             'noif' => 'No iframe support.',
                                             'show' => 'Show content in pop-up window',
                                           );
     my $name = $uri;      my $name = $uri;
     $name =~ s/^.*\/([^\/]+)$/$1/;      $name =~ s/^.*\/([^\/]+)$/$1/;
     $result .= "  <title>LON-CAPA Daxe: $name</title>\n";      my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&save=/daxesave'.
     $result .= "  <style>\n";                    '&file=/daxeopen'.$uri;
     $result .= "    body { margin: 0; }\n";      my $headjs = &Apache::loncommon::iframe_wrapper_headjs().
     $result .= "    #daxe { position:absolute; top:0; left:0; width:100%; height:100%; border:none; }\n";                   &toggle_LCmenus_js();
     $result .= "  </style>\n";      my $args = {
     $result .= "</head>\n";                  'collapsible_header' => 1,
     $result .= "<body>\n";                 };
     my $daxeurl = '/adm/daxe/daxe.html?config=config/loncapa_config.xml&amp;file=/daxeopen'.$uri.      my $startpage = &Apache::loncommon::start_page('Daxe: '.$name,$headjs,$args).
         '&amp;save=/daxesave';                      &Apache::lonmenu::constspaceform();
     $result .= '  <iframe id="daxe" src="'.$daxeurl.'"></iframe>'."\n";      my $endpage = &Apache::loncommon::end_page();
     $result .= "</body>\n";  
     $result .= "</html>\n";      # javascript will position the iframe if window was resized (or zoomed)
     $request->print($result);      my $script = &Apache::loncommon::iframe_wrapper_resizejs();
       my $dest = &HTML::Entities::encode($daxeurl,'&<>"');
       my $noiframe = &Apache::loncommon::modal_link($dest,$lt{'show'},500,400);
   
       $request->print(<<"ENDFRAME");
   $startpage
   $script
   <div class="LC_iframecontainer" style="padding-right: 5px">
   <iframe src="$dest">$lt{'noif'} $noiframe</iframe>
   </div>
   $endpage
   ENDFRAME
     return OK;      return OK;
 }  }
   
   sub toggle_LCmenus_js {
       my %lt = &Apache::lonlocal::texthash(
                                            altc => 'menu state: collapsed',
                                            alte => 'menu state: explanded',
                                            ttlc => 'display standard menus',
                                            ttle => 'hide standard menus',
       );
       return <<"ENDJS";
   <script type="text/javascript">
   //<![CDATA[
   \$(document).ready (function () {
       \$(".LC_collapse_trigger").on("click", function (e) {
           var id = this.id;
           var \$content = \$(this).next (".LC_menus_content");
           var expanded = \$content.hasClass ("shown");
           var frameleftpos;
           if (expanded) {
               \$content.removeClass ("shown");
               \$content.addClass ("hidden");
           } else {
               \$content.removeClass ("hidden");
               \$content.addClass ("shown");
           }
   
           \$(this).find ("[aria-expanded]")
           .attr ("aria-expanded", !expanded);
   
           \$(this).find ("[aria-pressed]")
           .attr ("aria-pressed", !expanded);
   
           \$(this).find (".LC_collapsible_indicator").attr ({
           "src":
           (expanded)? "/res/adm/pages/collapsed.png" : "/res/adm/pages/expanded.png",
           "alt":
           (expanded)? "$lt{altc}" : "$lt{alte}",
           "title":
           (expanded)? "$lt{ttlc}" : "$lt(ttle}"
           });
   
           \$(window).trigger('resize');
           \$(this).focus ();
       });
   
       \$("#LC_expandingContainer").attr ("aria-live", "off");
   });
   //]]>
   </script>
   ENDJS
   
   }
   
   sub do_redirect {
       my ($request,$uri,$msg) = @_;
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       $request->print(
           &Apache::loncommon::start_page('Authoring Space',undef,
                                          {'redirect'       => [2,$uri]}).
   
           '<div style="padding:0;clear:both;margin:0;border:0"></div>'."\n".
           "$msg\n".
           &Apache::loncommon::end_page());
       return;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.5  
changed lines
  Added in v.1.6


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