Diff for /loncom/xml/lonxml.pm between versions 1.492 and 1.494.4.3

version 1.492, 2009/04/13 20:15:44 version 1.494.4.3, 2010/01/28 18:46:47
Line 109  use Apache::lonfeedback(); Line 109  use Apache::lonfeedback();
 use Apache::lonmsg();  use Apache::lonmsg();
 use Apache::loncacc();  use Apache::loncacc();
 use Apache::lonmaxima();  use Apache::lonmaxima();
   use Apache::lonr();
 use Apache::lonlocal;  use Apache::lonlocal;
   
 #====================================   Main subroutine: xmlparse    #====================================   Main subroutine: xmlparse  
Line 755  sub init_safespace { Line 756  sub init_safespace {
   $safehole->wrap(\&Apache::lonmaxima::maxima_cas_formula_fix,$safeeval,    $safehole->wrap(\&Apache::lonmaxima::maxima_cas_formula_fix,$safeeval,
   '&maxima_cas_formula_fix');    '&maxima_cas_formula_fix');
   
     $safehole->wrap(\&Apache::lonr::r_eval,$safeeval,'&r_eval');
     $safehole->wrap(\&Apache::lonr::Rentry,$safeeval,'&Rentry');
     $safehole->wrap(\&Apache::lonr::Rarray,$safeeval,'&Rarray');
     $safehole->wrap(\&Apache::lonr::r_check,$safeeval,'&r_check');
     $safehole->wrap(\&Apache::lonr::r_cas_formula_fix,$safeeval,
                     '&r_cas_formula_fix');
    
   $safehole->wrap(\&Apache::caparesponse::capa_formula_fix,$safeeval,    $safehole->wrap(\&Apache::caparesponse::capa_formula_fix,$safeeval,
   '&capa_formula_fix');    '&capa_formula_fix');
   
Line 1035  sub get_id { Line 1043  sub get_id {
     my ($parstack,$safeeval)=@_;      my ($parstack,$safeeval)=@_;
     my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval);      my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval);
     if ($env{'request.state'} eq 'construct' && $id =~ /([._]|[^\w\d\s[:punct:]])/) {      if ($env{'request.state'} eq 'construct' && $id =~ /([._]|[^\w\d\s[:punct:]])/) {
  &error(&mt("ID &quot;[_1]&quot; contains invalid characters, IDs are only allowed to contain letters, numbers, spaces and -",'<tt>'.$id.'</tt>'));   &error(&mt("ID [_1] contains invalid characters, IDs are only allowed to contain letters, numbers, spaces and -",'<tt>'.$id.'</tt>'));
     }      }
     if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; }      if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; }
     return $id;      return $id;
Line 1504  SIMPLECONTENT Line 1512  SIMPLECONTENT
   return $filecontents;    return $filecontents;
 }  }
   
   sub createnewjs {
       my $filecontents=(<<SIMPLECONTENT);
   <script type="text/javascript" language="Javascript">
   
   </script>
   SIMPLECONTENT
       return $filecontents;
   }
   
 sub verify_html {  sub verify_html {
     my ($filecontents)=@_;      my ($filecontents)=@_;
     if ($filecontents!~/(?:\<|\&lt\;)(?:html|xml)[^\<]*(?:\>|\&gt\;)/is) {      if ($filecontents!~/(?:\<|\&lt\;)(?:html|xml)[^\<]*(?:\>|\&gt\;)/is) {
Line 1529  sub renderingoptions { Line 1546  sub renderingoptions {
                        = &Apache::loncommon::plainlanguagedescription($_);                         = &Apache::loncommon::plainlanguagedescription($_);
         }          }
     }      }
     return      my $output;
        '<span class="LC_nobreak">'.      unless ($env{'form.forceedit'}) {
        &mt('Language:').' '.         $output .=
        &Apache::loncommon::select_form($env{'form.languages'},'languages',             '<span class="LC_nobreak">'.
                                                      %langchoices).'             &mt('Language:').' '.
      </span>             &Apache::loncommon::select_form(
      <span class="LC_nobreak">'.                 $env{'form.languages'},
                  'languages',
                  &Apache::lonlocal::texthash(%langchoices)).
              '</span>';
       }
       $output .=
        ' <span class="LC_nobreak">'.
        &mt('Math Rendering:').' '.         &mt('Math Rendering:').' '.
        &Apache::loncommon::select_form($env{'form.texengine'},'texengine',         &Apache::loncommon::select_form(
                                                      ('' => '',             $env{'form.texengine'},
                                                       'tth' => 'tth (TeX to HTML)',             'texengine',
                                                       'jsMath' => 'jsMath',             &Apache::lonlocal::texthash
                                                       'mimetex' => 'mimetex (Convert to Images)')).'                 (''        => '',
      </span>';                  'tth'     => 'tth (TeX to HTML)',
                   'jsMath'  => 'jsMath',
                   'mimetex' => 'mimetex (Convert to Images)')).
        '</span>';
       return $output;
 }  }
   
 sub inserteditinfo {  sub inserteditinfo {
Line 1679  sub get_target { Line 1706  sub get_target {
   
 sub handler {  sub handler {
     my $request=shift;      my $request=shift;
       
     my $target=&get_target();      my $target=&get_target();
       
     $Apache::lonxml::debug=$env{'user.debug'};      $Apache::lonxml::debug=$env{'user.debug'};
           
     &Apache::loncommon::content_type($request,'text/html');      &Apache::loncommon::content_type($request,'text/html');
Line 1690  sub handler { Line 1716  sub handler {
  $request->set_last_modified(&Apache::lonnet::metadata($request->uri,   $request->set_last_modified(&Apache::lonnet::metadata($request->uri,
       'lastrevisiondate'));        'lastrevisiondate'));
     }      }
       # Embedded Flash movies (e.g., from Camtasia) served from https will not display in IE
       #   if XML config file has expired from cache.
       if ($ENV{'SERVER_PORT'} == 443) {
           if ($request->uri =~ /\.xml$/) {
               my ($httpbrowser,$clientbrowser) =
                   &Apache::loncommon::decode_user_agent($request);
               if ($clientbrowser =~ /^explorer$/i) {
                   delete $request->headers_out->{'Cache-control'};
                   delete $request->headers_out->{'Pragma'};
                   my $expiration = time + 60;
                   my $date=strftime("%a, %d %b %Y %H:%M:%S GMT",gmtime($expiration));
                   $request->headers_out->set("Expires" => $date);
               }
           }
       }
     $request->send_http_header;      $request->send_http_header;
           
     return OK if $request->header_only;      return OK if $request->header_only;
Line 1697  sub handler { Line 1738  sub handler {
   
     my $file=&Apache::lonnet::filelocation("",$request->uri);      my $file=&Apache::lonnet::filelocation("",$request->uri);
     my $filetype;      my $filetype;
     if ($file =~ /\.sty$/) {      if ($file =~ /\.(sty|css|js|txt)$/) {
  $filetype='sty';   $filetype=$1;
     } else {      } else {
  $filetype='html';   $filetype='html';
     }      }
   
 #  #
 # Edit action? Save file.  # Edit action? Save file.
 #  #
Line 1730  ENDNOTFOUND Line 1772  ENDNOTFOUND
  if ($env{'request.state'} ne 'published') {   if ($env{'request.state'} ne 'published') {
     if ($filetype eq 'sty') {      if ($filetype eq 'sty') {
  $filecontents=&createnewsty();   $filecontents=&createnewsty();
     } else {              } elsif ($filetype eq 'js') {
                   $filecontents=&createnewjs();
               } elsif (($filetype ne 'css') && ($filetype ne 'txt')) {
  $filecontents=&createnewhtml();   $filecontents=&createnewhtml();
     }      }
     $env{'form.editmode'}='Edit'; #force edit mode      $env{'form.editmode'}='Edit'; #force edit mode
Line 1746  ENDNOTFOUND Line 1790  ENDNOTFOUND
     ['editmode']);      ['editmode']);
  }   }
  if (!$env{'form.editmode'} || $env{'form.viewmode'} || $env{'form.discardview'}) {   if (!$env{'form.editmode'} || $env{'form.viewmode'} || $env{'form.discardview'}) {
     &Apache::structuretags::reset_problem_globals();              if ($filetype eq 'html' || $filetype eq 'sty') {
     $result = &Apache::lonxml::xmlparse($request,$target,$filecontents,          &Apache::structuretags::reset_problem_globals();
  '',%mystyle);          $result = &Apache::lonxml::xmlparse($request,$target,
                                                       $filecontents,'',%mystyle);
     # .html files may contain <problem> or <Task> need to clean      # .html files may contain <problem> or <Task> need to clean
     # up if it did      # up if it did
     &Apache::structuretags::reset_problem_globals();          &Apache::structuretags::reset_problem_globals();
     &Apache::lonhomework::finished_parsing();          &Apache::lonhomework::finished_parsing();
               } else {
                   $result = $filecontents;
               }
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
     ['rawmode']);      ['rawmode']);
     if ($env{'form.rawmode'}) { $result = $filecontents; }      if ($env{'form.rawmode'}) { $result = $filecontents; }
     if ($filetype eq 'sty') {      if ($filetype ne 'html') {
                   my $nochgview = 1; 
  my $controls =   my $controls =
     ($env{'request.state'} eq 'construct') ? &Apache::londefdef::edit_controls()      ($env{'request.state'} eq 'construct') ? &Apache::londefdef::edit_controls($nochgview)
                                            : '';                                             : '';
  my %options = ('bgcolor' => '#FFFFFF');                  if ($filetype ne 'sty') {
  $result =                       $result =~ s/</&lt;/g;
     &Apache::loncommon::start_page(undef,undef,\%options).                      $result =~ s/>/&gt;/g;
     $controls.                      $result = '<table class="LC_sty_begin">'.
     $result.                                '<tr><td><b><pre>'.$result.
     &Apache::loncommon::end_page();                                '</pre></b></td></tr></table>';
     }                  }
                   if ($env{'environment.remote'} eq 'off') {
                       my %options = ('bgcolor' => '#FFFFFF');
       $result = 
           &Apache::loncommon::start_page(undef,undef,\%options).
           $controls.
           $result.
           &Apache::loncommon::end_page();
                   } else {
                       $result = $controls.$result;
                   }
               }
  }   }
     }      }
   
Line 1800  ENDNOTFOUND Line 1860  ENDNOTFOUND
  &Apache::lonxml::message_location().   &Apache::lonxml::message_location().
  $edit_info.   $edit_info.
  &Apache::loncommon::end_page();   &Apache::loncommon::end_page();
  }          }
     }      }
     if ($filetype eq 'html') { &writeallows($request->uri); }      if ($filetype eq 'html') { &writeallows($request->uri); }
           

Removed from v.1.492  
changed lines
  Added in v.1.494.4.3


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