Diff for /rat/lonwrapper.pm between versions 1.19 and 1.30

version 1.19, 2006/02/10 21:44:02 version 1.30, 2008/11/20 14:38:00
Line 26 Line 26
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
   
   
 package Apache::lonwrapper;  package Apache::lonwrapper;
   
 use strict;  use strict;
 use Apache::Constants qw(:common);  use Apache::Constants qw(:common);
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonxml();  use Apache::lonxml();
 use Apache::lonmenu;  use Apache::lonenc();
   use Apache::lonmenu();
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
   
 sub handler {  sub simple_menu {
   my $r=shift;  
   &Apache::loncommon::content_type($r,'text/html');  
   $r->send_http_header;  
   
   return OK if $r->header_only;  
   
   &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},  
                                           ['wrapperdisplay']);  
   my $orgurl=$r->uri;  
   my $url=$orgurl;  
   $orgurl.=(($orgurl=~/\?/)?'&':'?').$ENV{'QUERY_STRING'};  
   $orgurl.=(($orgurl=~/\?/)?'&':'?').'wrapperdisplay=menu';  
   $url=~s/^\/adm\/wrapper//;  
   my $is_ext = $url =~ m|^/ext/|;  
   $url=~s/^\/ext\//http\:\/\//;  
   $url=~s|:|:|g;  
   if ($env{'form.wrapperdisplay'} eq 'menu') {  
 #  #
 # Producing the menu buttons  # Producing the menu buttons
 #  #
       $r->print('<html><body bgcolor="#FFFFFF">'.      return &Apache::loncommon::start_page('Menu',undef,
                 &Apache::lonmenu::menubuttons(1,'web',1).'</body></html>');    {'only_body' => 1,
   } else {     'bgcolor'   => '#FFFFFF',}).
    &Apache::lonmenu::menubuttons(1,'web',1).
    &Apache::loncommon::end_page();
   }
   
   
   sub wrapper {
       my ($topurl,$bottomurl) = @_;
   
       if ($env{'browser.interface'} eq 'textual') {
 #  #
 # Actual URL  # ssi-based rendering for text-based interface
 #  #
       if ($url=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {   return 
       &Apache::loncommon::start_page('Menu',undef,
     {'bgcolor'        => '#FFFFFF',
      'force_register' => 1,
          }).
       &Apache::lonnet::ssi_body($bottomurl).
       &Apache::loncommon::end_page();
       }
   
   
       my %layout = ('border' => 0);
       if ($env{'environment.remote'} eq 'off') {
           if ($env{'environment.icons'} eq 'iconsonly') {
              $layout{'rows'} = "100,*";
           } else {
      $layout{'rows'} = "200,*";
           }
       } else {
    $layout{'rows'} = "1,*";
    $topurl = "/adm/rat/empty.html";
       }
   
       my $start_page = 
    &Apache::loncommon::start_page(undef,undef,
          {'force_register' => 1,
    'frameset'       => 1,
    'add_entries'    => \%layout, });
   
       my $end_page = 
    &Apache::loncommon::end_page({'frameset' => 1});
       
       foreach my $url ($topurl,$bottomurl) {
    if ($url !~ /^http:/) {
       $url = &Apache::lonenc::check_encrypt($url);
    }
       }
 #  #
 # This is uploaded homework  # frame-based rendering for graphical interface
 #  #
           $env{'request.state'}='uploaded';      my $result =<<ENDDOCUMENT;
           &Apache::lonhomework::renderpage($r,$url);  $start_page
       } else {  test
   <frame src="$topurl" />
   <frame src="$bottomurl" />
   $end_page
   ENDDOCUMENT
   
       return $result;
   }
   
   sub handler {
       my $r=shift;
       &Apache::loncommon::content_type($r,'text/html');
       $r->send_http_header;
   
       return OK if $r->header_only;
   
       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
       ['wrapperdisplay']);
       if ($env{'form.wrapperdisplay'} eq 'menu') {
    $r->print(&simple_menu());
    return OK;
       }
   
       my $orgurl=$r->uri;
       my $url=$orgurl;
       $orgurl.=(($orgurl=~/\?/)?'&':'?').$ENV{'QUERY_STRING'};
       $orgurl.=(($orgurl=~/\?/)?'&':'?').'wrapperdisplay=menu';
       $url=~s/^\/adm\/wrapper//;
       my $is_ext = $url =~ m|^/ext/|;
       $url=~s{^/ext/}{http://};
       $url=~s|http://https://|https://|;
       $url=~s|&colon;|:|g;
 #  #
 # This is not homework  # Actual URL
 #  #
   if ($is_ext) {      if ($url=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
       $ENV{'QUERY_STRING'}=~s/(^|\&)symb=[^\&]*/$1/;  
   }  
   $url.=(($url=~/\?/)?'&':'?').$ENV{'QUERY_STRING'};   
                                                  # reappend the query arguments  
   my $events='onLoad="'.&Apache::lonmenu::loadevents.  
       '" onUnload="'.&Apache::lonmenu::unloadevents.'"';  
   my $script=&Apache::lonmenu::registerurl(1,undef);  
   
   if ($env{'browser.interface'} eq 'textual') {  
 #  #
 # ssi-based rendering for text-based interface  # This is uploaded homework
 #  #
       $r->print('<html><head>'.   $env{'request.state'}='uploaded';
  &Apache::lonmenu::registerurl(1).   &Apache::lonhomework::renderpage($r,$url);
  '</head><body bgcolor="#FFFFFF">'.      } else {
  &Apache::lonmenu::menubuttons(1).  
  &Apache::lonnet::ssi_body($url).'</body></html>');  
   } elsif ($env{'environment.remote'} eq 'off') {  
 #  
 # This is inline remote  
 #   
       $r->print(<<ENDDOCUMENTINL);  
 <html>  
 <head>  
 $script  
 </head>  
 <frameset rows="180,*" border=0 $events>  
 <frame src="$orgurl">  
 <frame src="$url">  
 </frameset>  
 </html>  
 ENDDOCUMENTINL  
           } else {  
 #  #
 # frame-based rendering for graphical interface  # This is not homework
 #  #
   $r->print(<<ENDDOCUMENT);   if ($is_ext) {
 <html>      $ENV{'QUERY_STRING'}=~s/(^|\&)symb=[^\&]*/$1/;
 <head>   }
 $script   $url.=(($url=~/\?/)?'&':'?').$ENV{'QUERY_STRING'}; 
 </head>   # reappend the query arguments
 <frameset rows="1,*" border=0 $events>   $r->print(&wrapper($orgurl,$url));
 <frame src="/adm/rat/empty.html">      } # not just the menu
 <frame src="$url">      return OK;
 </frameset>  
 </html>  
 ENDDOCUMENT  
           }  
       } # not homework  
   } # not just the menu  
   return OK;  
 } # handler  } # handler
   
 1;  1;
 __END__  __END__
   
   =pod
   
   =head1 NAME
   
   Apache::lonwrapper - External and binary file management.
   
   =head1 SYNOPSIS
   
   Wrapper for external and binary files as standalone resources. Edit handler for rat maps; TeX content handler.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 Subroutines
   
   =over
   
   =item simple_menu()
   
   =item wrapper()
   
   =item handler()
   
   =back
   
   =cut
   
   
   
   

Removed from v.1.19  
changed lines
  Added in v.1.30


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