Diff for /loncom/xml/lonxml.pm between versions 1.497 and 1.504

version 1.497, 2009/06/23 03:01:26 version 1.504, 2009/12/02 18:33:43
Line 111  use Apache::loncacc(); Line 111  use Apache::loncacc();
 use Apache::lonmaxima();  use Apache::lonmaxima();
 use Apache::lonr();  use Apache::lonr();
 use Apache::lonlocal;  use Apache::lonlocal;
   use Apache::lonhtmlcommon();
   
 #====================================   Main subroutine: xmlparse    #====================================   Main subroutine: xmlparse  
   
Line 1043  sub get_id { Line 1044  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 1546  sub renderingoptions { Line 1547  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 1606  FULLPAGE Line 1617  FULLPAGE
     }      }
 </script>  </script>
 FULLPAGE  FULLPAGE
           if ($filetype eq 'html') {            if ($filetype eq 'html' || $filetype eq 'tex') {
               $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');                $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');
               $dragmath_button = &Apache::lonhtmlcommon::dragmath_button('filecont',1);                $dragmath_button = &Apache::lonhtmlcommon::dragmath_button('filecont',1);
           }            }
Line 1620  FULLPAGE Line 1631  FULLPAGE
       }        }
   
       my $titledisplay=&display_title();        my $titledisplay=&display_title();
         my $wysiwyglink;
       my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit',        my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit',
  'vi' => 'Save and View',   'vi' => 'Save and View',
  'dv' => 'Discard Edits and View',   'dv' => 'Discard Edits and View',
Line 1634  FULLPAGE Line 1646  FULLPAGE
           if ($htmlerror) {            if ($htmlerror) {
               $htmlerror='<span class="LC_error">'.$htmlerror.'</span>';                $htmlerror='<span class="LC_error">'.$htmlerror.'</span>';
           }            }
             if (&Apache::lonhtmlcommon::htmlareabrowser()) {
                 if (&Apache::lonhtmlcommon::htmlareablocked()) {
                     $wysiwyglink = &Apache::lonhtmlcommon::enablelink($textarea_id);
                 } else {
                     $wysiwyglink = &Apache::lonhtmlcommon::disablelink($textarea_id);
                 }
             }
       }        }
       my $editfooter=(<<ENDFOOTER);        my $editfooter=(<<ENDFOOTER);
 $initialize  $initialize
Line 1658  $initialize Line 1677  $initialize
   </div>    </div>
   <textarea $textarea_events style="width:100%" cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea>    <textarea $textarea_events style="width:100%" cols="80" rows="44" name="filecont" id="filecont">$filecontents</textarea>
   <div id="LC_aftertextarea">    <div id="LC_aftertextarea">
       $wysiwyglink
     <br />      <br />
     $titledisplay      $titledisplay
   </div>    </div>
Line 1706  sub handler { Line 1726  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 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;
   
   
     my $file=&Apache::lonnet::filelocation("",$request->uri);      my $file=&Apache::lonnet::filelocation("",$request->uri);
     my $filetype;      my ($filetype,$breadcrumbtext);
     if ($file =~ /\.(sty|css|js|txt)$/) {      if ($file =~ /\.(sty|css|js|txt|tex)$/) {
  $filetype=$1;   $filetype=$1;
     } else {      } else {
  $filetype='html';   $filetype='html';
     }      }
       if ($filetype eq 'sty') {
           $breadcrumbtext = 'Style File Editor';
       } elsif ($filetype eq 'js') {
           $breadcrumbtext = 'Javascript Editor';
       } elsif ($filetype eq 'css') {
           $breadcrumbtext = 'CSS Editor';
       } elsif ($filetype eq 'txt') {
           $breadcrumbtext = 'Text Editor';
       } elsif ($filetype eq 'tex') {
           $breadcrumbtext = 'TeX Editor';
       } else {
           $breadcrumbtext = 'HTML Editor';
       }
   
 #  #
 # Edit action? Save file.  # Edit action? Save file.
Line 1752  ENDNOTFOUND Line 1800  ENDNOTFOUND
  $filecontents=&createnewsty();   $filecontents=&createnewsty();
             } elsif ($filetype eq 'js') {              } elsif ($filetype eq 'js') {
                 $filecontents=&createnewjs();                  $filecontents=&createnewjs();
             } elsif (($filetype ne 'css') && ($filetype ne 'txt')) {              } elsif ($filetype ne 'css' && $filetype ne 'txt' && $filetype ne 'tex') {
  $filecontents=&createnewhtml();   $filecontents=&createnewhtml();
     }      }
     $env{'form.editmode'}='Edit'; #force edit mode      $env{'form.editmode'}='Edit'; #force edit mode
Line 1776  ENDNOTFOUND Line 1824  ENDNOTFOUND
     # 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();
               } elsif ($filetype eq 'tex') {
                   $result = &Apache::lontexconvert::converted(\$filecontents,
                                 $env{'form.texengine'});
                   if ($env{'form.return_only_error_and_warning_counts'}) {
                       if (&verify_html('<html><body>'.$result.'</body></html>')) {
                           $errorcount++;
                       }
                       $result = "$errorcount:$warningcount";
                   }
             } else {              } else {
                 $result = $filecontents;                  $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 ne 'html') {              if (($filetype ne 'html') && 
                 my $nochgview = 1;                   (!$env{'form.return_only_error_and_warning_counts'})) {
                   my $nochgview = 1;
                 my $controls = '';                  my $controls = '';
                     if ($env{'request.state'} eq 'construct') {                      if ($env{'request.state'} eq 'construct') {
                         $controls = &Apache::loncommon::head_subbox(                          $controls = &Apache::loncommon::head_subbox(
                                         &Apache::loncommon::CSTR_pageheader()                                          &Apache::loncommon::CSTR_pageheader()
                                        .&Apache::londefdef::edit_controls($nochgview));                                         .&Apache::londefdef::edit_controls($nochgview));
                     }                      }
                 if ($filetype ne 'sty') {                  if ($filetype ne 'sty' && $filetype ne 'tex') {
                     $result =~ s/</&lt;/g;                      $result =~ s/</&lt;/g;
                     $result =~ s/>/&gt;/g;                      $result =~ s/>/&gt;/g;
                     $result = '<table class="LC_sty_begin">'.                      $result = '<table class="LC_sty_begin">'.
Line 1803  ENDNOTFOUND Line 1861  ENDNOTFOUND
                         $brcrum = [{'href' => &Apache::loncommon::authorspace(),                          $brcrum = [{'href' => &Apache::loncommon::authorspace(),
                                     'text' => 'Construction Space'},                                      'text' => 'Construction Space'},
                                    {'href' => '',                                     {'href' => '',
                                     'text' => 'Editor'}];                                      'text' => $breadcrumbtext}];
                     } else {                      } else {
                         $brcrum = ''; # FIXME: Where are we?                          $brcrum = ''; # FIXME: Where are we?
                     }                      }
Line 1837  ENDNOTFOUND Line 1895  ENDNOTFOUND
  ('add_entries' =>   ('add_entries' =>
                    {'onresize'     => $add_to_onresize,                     {'onresize'     => $add_to_onresize,
                     'onload'       => $add_to_onload,   });                      'onload'       => $add_to_onload,   });
               my $header;
          $options{'bread_crumbs'} = [{              if ($env{'request.state'} eq 'construct') {
                         'href' => &Apache::loncommon::authorspace(),                  $options{'bread_crumbs'} = [{
                         'text' => 'Construction Space'},                              'href' => &Apache::loncommon::authorspace(),
                        {'href' => '',                              'text' => 'Construction Space'},
                         'text' => 'HTML Editor'}];                             {'href' => '',
                               'text' => $breadcrumbtext}];
                   $header = &Apache::loncommon::head_subbox(
                                 &Apache::loncommon::CSTR_pageheader());
               }
     if ($env{'environment.remote'} ne 'off') {      if ($env{'environment.remote'} ne 'off') {
  $options{'bgcolor'}   = '#FFFFFF';   $options{'bgcolor'}   = '#FFFFFF';
  $options{'only_body'} = 1;   $options{'only_body'} = 1;
Line 1854  ENDNOTFOUND Line 1915  ENDNOTFOUND
     my $start_page = &Apache::loncommon::start_page(undef,$js,      my $start_page = &Apache::loncommon::start_page(undef,$js,
     \%options);      \%options);
             $result = $start_page              $result = $start_page
                      .&Apache::loncommon::head_subbox(                       .$header
                           &Apache::loncommon::CSTR_pageheader())  
                      .&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); }
       
     &Apache::lonxml::add_messages(\$result);      &Apache::lonxml::add_messages(\$result);
     $request->print($result);      $request->print($result);
           

Removed from v.1.497  
changed lines
  Added in v.1.504


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