Diff for /loncom/xml/lonxml.pm between versions 1.541 and 1.549

version 1.541, 2013/06/04 22:20:20 version 1.549, 2014/07/27 11:20:13
Line 144  $metamode = 0; Line 144  $metamode = 0;
 # turns on and of run::evaluate actually derefencing var refs  # turns on and of run::evaluate actually derefencing var refs
 $evaluate = 1;  $evaluate = 1;
   
 # data structure for eidt mode, determines what tags can go into what other tags  # data structure for edit mode, determines what tags can go into what other tags
 %insertlist=();  %insertlist=();
   
 # stores the list of active tag namespaces  # stores the list of active tag namespaces
Line 306  sub xmlparse { Line 306  sub xmlparse {
  &clean_safespace($safeeval);   &clean_safespace($safeeval);
   
  if (@script_var_displays) {   if (@script_var_displays) {
      my $scriptoutput = join('',@script_var_displays);       if ($finaloutput =~ m{</body>\s*</html>\s*$}s) {
      $finaloutput=~s{(</body>\s*</html>)\s*$}{$scriptoutput$1}s;           my $scriptoutput = join('',@script_var_displays);
            $finaloutput=~s{(</body>\s*</html>)\s*$}{$scriptoutput$1}s;
        } else {
            $finaloutput .= join('',@script_var_displays);
        }
      undef(@script_var_displays);       undef(@script_var_displays);
  }   }
  &init_state();   &init_state();
Line 651  sub init_safespace { Line 655  sub init_safespace {
   my ($target,$safeeval,$safehole,$safeinit) = @_;    my ($target,$safeeval,$safehole,$safeinit) = @_;
   $safeeval->reval('use LaTeX::Table;');    $safeeval->reval('use LaTeX::Table;');
   $safeeval->deny_only(':dangerous');    $safeeval->deny_only(':dangerous');
   $safeeval->reval('use Math::Complex;');    $safeeval->reval('use LONCAPA::LCMathComplex;');
   $safeeval->permit_only(":default");    $safeeval->permit_only(":default");
   $safeeval->permit("entereval");    $safeeval->permit("entereval");
   $safeeval->permit(":base_math");    $safeeval->permit(":base_math");
Line 1359  sub do_registered_ssi { Line 1363  sub do_registered_ssi {
   
 sub add_script_result {  sub add_script_result {
     my ($display) = @_;      my ($display) = @_;
     push(@script_var_displays, $display);      if ($display ne '') {
           push(@script_var_displays, $display);
       }
 }  }
   
 #  #
Line 1510  sub renderingoptions { Line 1516  sub renderingoptions {
 }  }
   
 sub inserteditinfo {  sub inserteditinfo {
       my ($filecontents,$filetype,$filename,$symb,$itemtitle,$folderpath,$uri) = @_;        my ($filecontents,$filetype,$filename,$symb,$itemtitle,$folderpath,$uri,$action) = @_;
       $filecontents = &HTML::Entities::encode($filecontents,'<>&"');        $filecontents = &HTML::Entities::encode($filecontents,'<>&"');
       my $xml_help = '';        my $xml_help = '';
       my $initialize='';        my $initialize='';
       my $textarea_id = 'filecont';        my $textarea_id = 'filecont';
       my ($dragmath_button,$deps_button);        my ($dragmath_button,$deps_button,$context,$cnum,$cdom,$add_to_onload,
       my ($add_to_onload, $add_to_onresize);            $add_to_onresize,$init_dragmath);
       $initialize=&Apache::lonhtmlcommon::spellheader();        $initialize=&Apache::lonhtmlcommon::spellheader();
       if (($filetype eq 'html') && (&Apache::lonhtmlcommon::htmlareabrowser())) {        if ($filetype eq 'html') {
   my $lang = &Apache::lonhtmlcommon::htmlarea_lang();            if ($env{'request.course.id'}) {
           my %textarea_args = (                $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                                 fullpage => 'true',                $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                                 dragmath => 'math',                if ($uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E}) {
                               );                    $context = 'syllabus';
           $initialize .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args);                 }
             }
             if (&Apache::lonhtmlcommon::htmlareabrowser()) {
         my $lang = &Apache::lonhtmlcommon::htmlarea_lang();
                 my %textarea_args = (
                                       fullpage => 'true',
                                       dragmath => 'math',
                                     );
                 $initialize .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args);
                 if ($context eq 'syllabus') {
                     $init_dragmath = "editmath_visibility('filecont','none')";
                 }
             }
       }        }
       $initialize .= (<<FULLPAGE);        $initialize .= (<<FULLPAGE);
 <script type="text/javascript">  <script type="text/javascript">
 // <![CDATA[  // <![CDATA[
     function initDocument() {      function initDocument() {
  resize_textarea('$textarea_id','LC_aftertextarea');   resize_textarea('$textarea_id','LC_aftertextarea');
           $init_dragmath
     }      }
 // ]]>  // ]]>
 </script>  </script>
 FULLPAGE  FULLPAGE
       my $textareaclass;        my $textareaclass;
       if ($filetype eq 'html') {        if ($filetype eq 'html') {
           my $context;            if ($context eq 'syllabus') {
           if ($env{'request.course.id'}) {                $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";
               my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};                $initialize .=
               my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};                    &Apache::lonhtmlcommon::dependencycheck_js(undef,&mt('Syllabus'),
               if ($uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E}) {                                                               $uri,undef,
                   $context = 'syllabus';                                                               "/public/$cdom/$cnum/syllabus").
                   $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";                    "\n";
                   $initialize .=                if (&Apache::lonhtmlcommon::htmlareabrowser()) {
                       &Apache::lonhtmlcommon::dependencycheck_js(undef,&mt('Syllabus'),                    $textareaclass = 'class="LC_richDefaultOn"';
                                                                  $uri,undef,  
                                                                  "/public/$cdom/$cnum/syllabus").  
                       "\n";  
                   if (&Apache::lonhtmlcommon::htmlareabrowser()) {  
                       $textareaclass = 'class="LC_richDefaultOn"';  
                   }  
               }  
           }  
           unless ($context eq 'syllabus') {  
               if ($symb || $folderpath) {  
                   $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";  
                   $initialize .=   
                       &Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle,  
                                                                  undef,$folderpath,$uri)."\n";  
               }                }
             } elsif ($symb || $folderpath) {
                 $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";
                 $initialize .= 
                     &Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle,
                                                                undef,$folderpath,$uri)."\n";
           }            }
           $dragmath_button = '<span id="math_filecont">'.&Apache::lonhtmlcommon::dragmath_button('filecont',1).'</span>';            $dragmath_button = '<span id="math_filecont">'.&Apache::lonhtmlcommon::dragmath_button('filecont',1).'</span>';
           $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');            $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');
Line 1569  FULLPAGE Line 1579  FULLPAGE
       $add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');";        $add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');";
   
       if ($filetype eq 'html') {        if ($filetype eq 'html') {
   $xml_help=&Apache::loncommon::helpLatexCheatsheet();            my $not_author;
             if ($uri =~ m{^/uploaded/}) {
                 $not_author = 1;
             }
     $xml_help=&Apache::loncommon::helpLatexCheatsheet(undef,undef,$not_author);
       }        }
   
       my $titledisplay=&display_title();        my $titledisplay=&display_title();
Line 1593  FULLPAGE Line 1607  FULLPAGE
               }                }
           }            }
       }        }
         my $undo;
         unless ($uri =~ m{^/uploaded/}) {
             $undo = '<input type="submit" name="Undo" accesskey="u" value="'.$lt{'un'}.'" />'."\n";
         }
       my $editfooter=(<<ENDFOOTER);        my $editfooter=(<<ENDFOOTER);
 $initialize  $initialize
 <a name="editsection" />  <a name="editsection" />
 <form $form_events method="post" name="xmledit">  <form $form_events method="post" name="xmledit" action="$action">
   <div class="LC_edit_problem_editxml_header">    <div class="LC_edit_problem_editxml_header">
     <table class="LC_edit_problem_header_title"><tr><td>      <table class="LC_edit_problem_header_title"><tr><td>
         $filename          $filename
Line 1606  $initialize Line 1624  $initialize
     </table>      </table>
     <div class="LC_edit_problem_discards">      <div class="LC_edit_problem_discards">
       <input type="submit" name="discardview" accesskey="d" value="$lt{'dv'}" />        <input type="submit" name="discardview" accesskey="d" value="$lt{'dv'}" />
       <input type="submit" name="Undo" accesskey="u" value="$lt{'un'}" />        $undo $htmlerror $deps_button $dragmath_button
       $htmlerror $deps_button $dragmath_button  
     </div>      </div>
     <div class="LC_edit_problem_saves">      <div class="LC_edit_problem_saves">
       <input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" />        <input type="submit" name="savethisfile" accesskey="s" value="$lt{'st'}" />
Line 1620  $initialize Line 1637  $initialize
     $titledisplay      $titledisplay
   </div>    </div>
 </form>  </form>
 </body>  
 ENDFOOTER  ENDFOOTER
       return ($editfooter,$add_to_onload,$add_to_onresize);;        return ($editfooter,$add_to_onload,$add_to_onresize);;
 }  }
Line 1735  sub handler { Line 1751  sub handler {
             }              }
  }   }
     }      }
       my $inhibit_menu;
     my %mystyle;      my %mystyle;
     my $result = '';      my $result = '';
     my $filecontents=&Apache::lonnet::getfile($file);      my $filecontents=&Apache::lonnet::getfile($file);
Line 1792  ENDNOTFOUND Line 1809  ENDNOTFOUND
     &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 (($env{'request.state'} eq 'construct') &&
                   (($filetype eq 'css') || ($filetype eq 'js')) && ($ENV{'HTTP_REFERER'})) {
                   if ($ENV{'HTTP_REFERER'} =~ m{^https?\://[^\/]+/priv/$LONCAPA::match_domain/$LONCAPA::match_username/[^\?]+\.(x?html?|swf)(|\?)[^\?]*$}) {
                       $inhibit_menu = 1;
                   }
               }
             if (($filetype ne 'html') &&               if (($filetype ne 'html') && 
                 (!$env{'form.return_only_error_and_warning_counts'})) {                  (!$env{'form.return_only_error_and_warning_counts'}) &&
                   (!$inhibit_menu)) {
                 my $nochgview = 1;                  my $nochgview = 1;
                 my $controls = '';                  my $controls = '';
                     if ($env{'request.state'} eq 'construct') {                      if ($env{'request.state'} eq 'construct') {
Line 1831  ENDNOTFOUND Line 1855  ENDNOTFOUND
 #  #
 # Edit action? Insert editing commands  # Edit action? Insert editing commands
 #  #
     unless ($env{'request.state'} eq 'published') {      unless (($env{'request.state'} eq 'published') || ($inhibit_menu)) {
  if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'})))   if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'})))
  {   {
             my ($displayfile,$url,$symb,$itemtitle);              my ($displayfile,$url,$symb,$itemtitle,$action);
     $displayfile=$request->uri;      $displayfile=$request->uri;
             if ($request->uri =~ m{^/uploaded/}) {              if ($request->uri =~ m{^/uploaded/}) {
                 if ($env{'request.course.id'}) {                  if ($env{'request.course.id'}) {
Line 1845  ENDNOTFOUND Line 1869  ENDNOTFOUND
                         my $filename = $1;                          my $filename = $1;
                         if ($1 eq 'loncapa.html') {                          if ($1 eq 'loncapa.html') {
                             $displayfile = &mt('Syllabus (minimal template)');                              $displayfile = &mt('Syllabus (minimal template)');
                               $action = $request->uri.'?forceedit=1';
                         } else {                          } else {
                             $displayfile = &mt('Syllabus file: [_1]',$1);                              $displayfile = &mt('Syllabus file: [_1]',$1);
                         }                          }
Line 1863  ENDNOTFOUND Line 1888  ENDNOTFOUND
   
     my ($edit_info, $add_to_onload, $add_to_onresize)=      my ($edit_info, $add_to_onload, $add_to_onresize)=
  &inserteditinfo($filecontents,$filetype,$displayfile,$symb,   &inserteditinfo($filecontents,$filetype,$displayfile,$symb,
                                 $itemtitle,$env{'form.folderpath'},$request->uri);                                  $itemtitle,$env{'form.folderpath'},$request->uri,$action);
   
     my %options =       my %options = 
  ('add_entries' =>   ('add_entries' =>
Line 2287  sub description { Line 2312  sub description {
 sub helpinfo {  sub helpinfo {
     my ($token)=@_;      my ($token)=@_;
     my $tag = &get_tag($token);      my $tag = &get_tag($token);
     return ($insertlist{$tag.'.helpfile'}, $insertlist{$tag.'.helpdesc'});      return ($insertlist{$tag.'.helpfile'}, &mt($insertlist{$tag.'.helpdesc'}));
 }  }
   
 sub get_tag {  sub get_tag {

Removed from v.1.541  
changed lines
  Added in v.1.549


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