Diff for /loncom/xml/lonxml.pm between versions 1.531.2.10 and 1.547

version 1.531.2.10, 2013/08/08 12:47:13 version 1.547, 2014/06/21 20:56:40
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 228  sub xmlend { Line 228  sub xmlend {
     return $discussion;      return $discussion;
 }  }
   
 sub tokeninputfield {  
     my $defhost=$Apache::lonnet::perlvar{'lonHostID'};  
     $defhost=~tr/a-z/A-Z/;  
     return (<<ENDINPUTFIELD)  
 <script type="text/javascript">  
     function updatetoken() {  
         var comp=new Array;  
         var barcode=unescape(document.tokeninput.barcode.value);  
         comp=barcode.split('*');  
         if (typeof(comp[0])!="undefined") {  
             document.tokeninput.codeone.value=comp[0];  
         }  
         if (typeof(comp[1])!="undefined") {  
             document.tokeninput.codetwo.value=comp[1];  
         }  
         if (typeof(comp[2])!="undefined") {  
             comp[2]=comp[2].toUpperCase();  
             document.tokeninput.codethree.value=comp[2];  
         }  
         document.tokeninput.barcode.value='';  
     }  
 </script>  
 <form method="post" name="tokeninput" action="">  
 <table border="2" bgcolor="#FFFFBB">  
 <tr><th>DocID Checkin</th></tr>  
 <tr><td>  
 <table>  
 <tr>  
 <td>Scan in Barcode</td>  
 <td><input type="text" size="22" name="barcode"  
 onchange="updatetoken()"/></td>  
 </tr>  
 <tr><td><i>or</i> Type in DocID</td>  
 <td>  
 <input type="text" size="5" name="codeone" />  
 <b><font size="+2">*</font></b>  
 <input type="text" size="5" name="codetwo" />  
 <b><font size="+2">*</font></b>  
 <input type="text" size="10" name="codethree" value="$defhost"  
 onchange="this.value=this.value.toUpperCase()" />  
 </td></tr>  
 </table>  
 </td></tr>  
 <tr><td><input type="submit" value="Check in DocID" /></td></tr>  
 </table>  
 </form>  
 ENDINPUTFIELD  
 }  
   
 sub maketoken {  
     my ($symb,$tuname,$tudom,$tcrsid)=@_;  
     unless ($symb) {  
         $symb=&Apache::lonnet::symbread();  
     }  
     unless ($tuname) {  
         $tuname=$env{'user.name'};  
         $tudom=$env{'user.domain'};  
         $tcrsid=$env{'request.course.id'};  
     }  
     return &Apache::lonnet::checkout($symb,$tuname,$tudom,$tcrsid);  
 }  
   
 sub printtokenheader {  
     my ($target,$token,$tsymb,$tcrsid,$tudom,$tuname)=@_;  
     unless ($token) { return ''; }  
   
     my ($symb,$courseid,$domain,$name) = &Apache::lonnet::whichuser();  
     unless ($tsymb) {  
         $tsymb=$symb;  
     }  
     unless ($tuname) {  
         $tuname=$name;  
         $tudom=$domain;  
         $tcrsid=$courseid;  
     }  
   
     my $plainname=&Apache::loncommon::plainname($tuname,$tudom);  
   
     if ($target eq 'web') {  
         my %idhash=&Apache::lonnet::idrget($tudom,($tuname));  
         return  
  '<img align="right" src="/cgi-bin/barcode.png?encode='.$token.'" />'.  
                &mt('Checked out for').' '.$plainname.  
                '<br />'.&mt('User').': '.$tuname.' at '.$tudom.  
                '<br />'.&mt('ID').': '.$idhash{$tuname}.  
                '<br />'.&mt('CourseID').': '.$tcrsid.  
                '<br />'.&mt('Course').': '.$env{'course.'.$tcrsid.'.description'}.  
                '<br />'.&mt('DocID').': '.$token.  
                '<br />'.&mt('Time').': '.&Apache::lonlocal::locallocaltime().'<hr />';  
     } else {  
         return $token;  
     }  
 }  
   
 sub printalltags {  sub printalltags {
   my $temp;    my $temp;
   foreach $temp (sort keys %Apache::lonxml::alltags) {    foreach $temp (sort keys %Apache::lonxml::alltags) {
Line 400  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 745  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 1453  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 1604  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='';
Line 1651  FULLPAGE Line 1563  FULLPAGE
           unless ($context eq 'syllabus') {            unless ($context eq 'syllabus') {
               if ($symb || $folderpath) {                if ($symb || $folderpath) {
                   $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";                    $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";
                   $initialize .=                    $initialize .= 
                       &Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle,                        &Apache::lonhtmlcommon::dependencycheck_js($symb,$itemtitle,
                                                                  undef,$folderpath,$uri)."\n";                                                                   undef,$folderpath,$uri)."\n";
               }                }
Line 1663  FULLPAGE Line 1575  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 1687  FULLPAGE Line 1603  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" action="">  <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 1700  $initialize Line 1620  $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 1714  $initialize Line 1633  $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 1928  ENDNOTFOUND Line 1846  ENDNOTFOUND
     unless ($env{'request.state'} eq 'published') {      unless ($env{'request.state'} eq 'published') {
  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 1939  ENDNOTFOUND Line 1857  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 1957  ENDNOTFOUND Line 1876  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 2194  sub add_messages { Line 2113  sub add_messages {
   
 sub get_param {  sub get_param {
     my ($param,$parstack,$safeeval,$context,$case_insensitive, $noelide) = @_;      my ($param,$parstack,$safeeval,$context,$case_insensitive, $noelide) = @_;
   
     if ( ! $context ) { $context = -1; }      if ( ! $context ) { $context = -1; }
     my $args ='';      my $args ='';
     if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }      if ( $#$parstack > (-2-$context) ) { $args=$$parstack[$context]; }
Line 2201  sub get_param { Line 2121  sub get_param {
  $args=$Apache::lonxml::style_values.$args;   $args=$Apache::lonxml::style_values.$args;
     }      }
   
   
     if ($noelide) {      if ($noelide) {
         $args =~ s/'\$/'\\\$/g;  # $args =~ s/\\'/'/g;
    $args =~ s/'\$/'\\\$/g;
     }      }
   
     if ( ! $args ) { return undef; }      if ( ! $args ) { return undef; }
     if ( $case_insensitive ) {      if ( $case_insensitive ) {
  if ($args =~ s/(my (?:.*))(\$\Q$param\E[,\)])/$1.lc($2)/ei) {   if ($args =~ s/(my (?:.*))(\$\Q$param\E[,\)])/$1.lc($2)/ei) {
   
     return &Apache::run::run("{$args;".'return $'.$param.'}',      return &Apache::run::run("{$args;".'return $'.$param.'}',
                                      $safeeval); #'                                       $safeeval); #'
  } else {   } else {
Line 2215  sub get_param { Line 2138  sub get_param {
  }   }
     } else {      } else {
  if ( $args =~ /my .*\$\Q$param\E[,\)]/ ) {   if ( $args =~ /my .*\$\Q$param\E[,\)]/ ) {
       
     return &Apache::run::run("{$args;".'return $'.$param.'}',      return &Apache::run::run("{$args;".'return $'.$param.'}',
                                      $safeeval); #'                                       $safeeval); #'
  } else {   } else {
Line 2376  sub description { Line 2300  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.531.2.10  
changed lines
  Added in v.1.547


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