Diff for /loncom/xml/lonxml.pm between versions 1.507 and 1.531.2.11

version 1.507, 2010/03/21 18:32:02 version 1.531.2.11, 2013/09/22 02:41:23
Line 112  use Apache::lonmaxima(); Line 112  use Apache::lonmaxima();
 use Apache::lonr();  use Apache::lonr();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonhtmlcommon();  use Apache::lonhtmlcommon();
   use Apache::functionplotresponse();
   use Apache::lonnavmaps();
   
 #====================================   Main subroutine: xmlparse    #====================================   Main subroutine: xmlparse  
   
Line 209  sub xmlend { Line 211  sub xmlend {
     my $discussion;      my $discussion;
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
    ['LONCAPA_INTERNAL_no_discussion']);     ['LONCAPA_INTERNAL_no_discussion']);
     if (! exists($env{'form.LONCAPA_INTERNAL_no_discussion'}) ||      if (
         $env{'form.LONCAPA_INTERNAL_no_discussion'} ne 'true') {             (   (!exists($env{'form.LONCAPA_INTERNAL_no_discussion'})) 
               || ($env{'form.LONCAPA_INTERNAL_no_discussion'} ne 'true')
              ) 
           && ($env{'form.inhibitmenu'} ne 'yes')
          ) {
         $discussion=&Apache::lonfeedback::list_discussion($mode,$status);          $discussion=&Apache::lonfeedback::list_discussion($mode,$status);
     }      }
     if ($target eq 'tex') {      if ($target eq 'tex') {
Line 222  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 300  sub xmlparse { Line 400  sub xmlparse {
  &clean_safespace($safeeval);   &clean_safespace($safeeval);
   
  if (@script_var_displays) {   if (@script_var_displays) {
      $finaloutput .= join('',@script_var_displays);       my $scriptoutput = join('',@script_var_displays);
        $finaloutput=~s{(</body>\s*</html>)\s*$}{$scriptoutput$1}s;
      undef(@script_var_displays);       undef(@script_var_displays);
  }   }
  &init_state();   &init_state();
Line 476  sub inner_xmlparse { Line 577  sub inner_xmlparse {
   }    }
   if (($ENV{'QUERY_STRING'}) && ($target eq 'web')) {    if (($ENV{'QUERY_STRING'}) && ($target eq 'web')) {
     $finaloutput=&afterburn($finaloutput);      $finaloutput=&afterburn($finaloutput);
     }
     if ($target eq 'modified') {
   # if modfied, handle startpart and endpart
        $finaloutput=~s/\<startpartmarker[^\>]*\>(.*)\<endpartmarker[^\>]*\>/<part>$1<\/part>/gs;
   }        }    
   return $finaloutput;    return $finaloutput;
 }  }
Line 638  sub setup_globals { Line 743  sub setup_globals {
   
 sub init_safespace {  sub init_safespace {
   my ($target,$safeeval,$safehole,$safeinit) = @_;    my ($target,$safeeval,$safehole,$safeinit) = @_;
     $safeeval->reval('use LaTeX::Table;');
   $safeeval->deny_only(':dangerous');    $safeeval->deny_only(':dangerous');
   $safeeval->reval('use Math::Complex;');    $safeeval->reval('use Math::Complex;');
   $safeeval->permit_only(":default");    $safeeval->permit_only(":default");
Line 782  sub init_safespace { Line 888  sub init_safespace {
   $safehole->wrap(\&Apache::lonnet::logthis,$safeeval,'&LONCAPA_INTERNAL_LOGTHIS');    $safehole->wrap(\&Apache::lonnet::logthis,$safeeval,'&LONCAPA_INTERNAL_LOGTHIS');
   $safehole->wrap(\&Apache::inputtags::finalizeawards,$safeeval,'&LONCAPA_INTERNAL_FINALIZEAWARDS');    $safehole->wrap(\&Apache::inputtags::finalizeawards,$safeeval,'&LONCAPA_INTERNAL_FINALIZEAWARDS');
   $safehole->wrap(\&Apache::caparesponse::get_sigrange,$safeeval,'&LONCAPA_INTERNAL_get_sigrange');    $safehole->wrap(\&Apache::caparesponse::get_sigrange,$safeeval,'&LONCAPA_INTERNAL_get_sigrange');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_val,$safeeval,'&fpr_val');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_f,$safeeval,'&fpr_f');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_dfdx,$safeeval,'&fpr_dfdx');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_d2fdx2,$safeeval,'&fpr_d2fdx2');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorcoords,$safeeval,'&fpr_vectorcoords');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_objectcoords,$safeeval,'&fpr_objectcoords');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorlength,$safeeval,'&fpr_vectorlength');
     $safehole->wrap(\&Apache::functionplotresponse::fpr_vectorangle,$safeeval,'&fpr_vectorangle');
   
 #  use Data::Dumper;  #  use Data::Dumper;
 #  $safehole->wrap(\&Data::Dumper::Dumper,$safeeval,'&LONCAPA_INTERNAL_Dumper');  #  $safehole->wrap(\&Data::Dumper::Dumper,$safeeval,'&LONCAPA_INTERNAL_Dumper');
 #need to inspect this class of ops  #need to inspect this class of ops
Line 833  sub initialize_rndseed { Line 948  sub initialize_rndseed {
 sub default_homework_load {  sub default_homework_load {
     my ($safeeval)=@_;      my ($safeeval)=@_;
     &Apache::lonxml::debug('Loading default_homework');      &Apache::lonxml::debug('Loading default_homework');
     my $default=&Apache::lonnet::getfile('/home/httpd/html/res/adm/includes/default_homework.lcpm');      my $default=&Apache::lonnet::getfile($Apache::lonnet::perlvar{'lonIncludes'}.
                                            '/default_homework.lcpm');
     if ($default eq -1) {      if ($default eq -1) {
  &Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>");   &Apache::lonxml::error("<b>Unable to find <i>default_homework.lcpm</i></b>");
     } else {      } else {
Line 1003  the current 'bubble line number' is stor Line 1119  the current 'bubble line number' is stor
 The value of it is stored in $Apache:lonxml::counter when live and  The value of it is stored in $Apache:lonxml::counter when live and
 stored back to env after done.  stored back to env after done.
   
 =item &increment_counter($increment);  =item &increment_counter($increment, $part_response);
   
 Increments the internal counter environment variable a specified amount  Increments the internal counter environment variable a specified amount
   
Line 1429  SIMPLECONTENT Line 1545  SIMPLECONTENT
   
 sub verify_html {  sub verify_html {
     my ($filecontents)=@_;      my ($filecontents)=@_;
     if ($filecontents!~/(?:\<|\&lt\;)(?:html|xml)[^\<]*(?:\>|\&gt\;)/is) {      my ($is_html,$is_xml);
        return &mt('File does not have [_1] or [_2] starting tag','&lt;html&gt;','&lt;xml&gt;');      if ($filecontents =~/(?:\<|\&lt\;)\?xml[^\<]*\?(?:\>|\&gt\;)/is) {
     }          $is_xml = 1;
     if ($filecontents!~/(?:\<|\&lt\;)\/(?:html|xml)(?:\>|\&gt\;)/is) {      } elsif ($filecontents =~/(?:\<|\&lt\;)html(?:\s+[^\<]+|\s*)(?:\>|\&gt\;)/is) {
        return &mt('File does not have [_1] or [_2] ending tag','&lt;html&gt;','&lt;xml&gt;');          $is_html = 1;
     }      }
     if ($filecontents!~/(?:\<|\&lt\;)(?:body|frameset)[^\<]*(?:\>|\&gt\;)/is) {      unless ($is_xml || $is_html) {
        return &mt('File does not have [_1] or [_2] starting tag','&lt;body&gt;','&lt;frameset&gt;');          return &mt('File does not have [_1] or [_2] starting tag','&lt;html&gt;','&lt;?xml ?&gt;');
     }      }
     if ($filecontents!~/(?:\<|\&lt\;)\/(?:body|frameset)[^\<]*(?:\>|\&gt\;)/is) {      if ($is_html) {
        return &mt('File does not have [_1] or [_2] ending tag','&lt;body&gt;','&lt;frameset&gt;');          if ($filecontents!~/(?:\<|\&lt\;)\/html(?:\>|\&gt\;)/is) {
               return &mt('File does not have [_1] ending tag','&lt;html&gt;');
           }
           if ($filecontents!~/(?:\<|\&lt\;)(?:body|frameset)[^\<]*(?:\>|\&gt\;)/is) {
               return &mt('File does not have [_1] or [_2] starting tag','&lt;body&gt;','&lt;frameset&gt;');
           }
           if ($filecontents!~/(?:\<|\&lt\;)\/(?:body|frameset)[^\<]*(?:\>|\&gt\;)/is) {
               return &mt('File does not have [_1] or [_2] ending tag','&lt;body&gt;','&lt;frameset&gt;');
           }
     }      }
     return '';      return '';
 }  }
Line 1460  sub renderingoptions { Line 1584  sub renderingoptions {
            &Apache::loncommon::select_form(             &Apache::loncommon::select_form(
                $env{'form.languages'},                 $env{'form.languages'},
                'languages',                 'languages',
                &Apache::lonlocal::texthash(%langchoices)).                 {&Apache::lonlocal::texthash(%langchoices)}).
            '</span>';             '</span>';
     }      }
     $output .=      $output .=
Line 1469  sub renderingoptions { Line 1593  sub renderingoptions {
        &Apache::loncommon::select_form(         &Apache::loncommon::select_form(
            $env{'form.texengine'},             $env{'form.texengine'},
            'texengine',             'texengine',
            &Apache::lonlocal::texthash             {&Apache::lonlocal::texthash
                (''        => '',                 (''        => '',
                 'tth'     => 'tth (TeX to HTML)',                  'tth'     => 'tth (TeX to HTML)',
                 'jsMath'  => 'jsMath',                  'MathJax' => 'MathJax',
                 'mimetex' => 'mimetex (Convert to Images)')).    'jsMath'  => 'jsMath',
                   'mimetex' => 'mimetex (Convert to Images)')}).
      '</span>';       '</span>';
     return $output;      return $output;
 }  }
   
 sub inserteditinfo {  sub inserteditinfo {
       my ($filecontents, $filetype, $filename)=@_;        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;        my ($dragmath_button,$deps_button);
       my ($add_to_onload, $add_to_onresize);        my ($add_to_onload, $add_to_onresize);
       $initialize=&Apache::lonhtmlcommon::spellheader();        $initialize=&Apache::lonhtmlcommon::spellheader();
       if ($filetype eq 'html'         if (($filetype eq 'html') && (&Apache::lonhtmlcommon::htmlareabrowser())) {
   && (!&Apache::lonhtmlcommon::htmlareablocked() &&  
       &Apache::lonhtmlcommon::htmlareabrowser())) {  
   $textarea_id .= '___Frame';  
   my $lang = &Apache::lonhtmlcommon::htmlarea_lang();    my $lang = &Apache::lonhtmlcommon::htmlarea_lang();
   $initialize.=(<<FULLPAGE);            my %textarea_args = (
 <script type="text/javascript">                                  fullpage => 'true',
 lonca                                  dragmath => 'math',
     function initDocument() {                                );
         var oFCKeditor = new FCKeditor('filecont');            $initialize .= &Apache::lonhtmlcommon::htmlareaselectactive(\%textarea_args); 
  oFCKeditor.Config['CustomConfigurationsPath'] = '/fckeditor/loncapaconfig.js'  ;        }
  oFCKeditor.Config['FullPage'] = true        $initialize .= (<<FULLPAGE);
  oFCKeditor.Config['AutoDetectLanguage'] = false;  
         oFCKeditor.Config['DefaultLanguage'] = "$lang";  
  oFCKeditor.ReplaceTextarea();  
     }  
     function check_if_dirty(editor) {  
  if (editor.IsDirty()) {  
     unClean();  
  }  
     }  
     function FCKeditor_OnComplete(editor) {  
  editor.Events.AttachEvent("OnSelectionChange",check_if_dirty);  
  resize_textarea('$textarea_id','LC_aftertextarea');  
     }  
 </script>  
 FULLPAGE  
       } else {  
   $initialize.=(<<FULLPAGE);  
 <script type="text/javascript">  <script type="text/javascript">
   // <![CDATA[
     function initDocument() {      function initDocument() {
  resize_textarea('$textarea_id','LC_aftertextarea');   resize_textarea('$textarea_id','LC_aftertextarea');
     }      }
   // ]]>
 </script>  </script>
 FULLPAGE  FULLPAGE
           if ($filetype eq 'html' || $filetype eq 'tex') {        my $textareaclass;
               $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');        if ($filetype eq 'html') {
               $dragmath_button = &Apache::lonhtmlcommon::dragmath_button('filecont',1);            my $context;
             if ($env{'request.course.id'}) {
                 my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
                 my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                 if ($uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E}) {
                     $context = 'syllabus';
                     $deps_button = &Apache::lonhtmlcommon::dependencies_button()."\n";
                     $initialize .=
                         &Apache::lonhtmlcommon::dependencycheck_js(undef,&mt('Syllabus'),
                                                                    $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";
                 }
             }
             $dragmath_button = '<span id="math_filecont">'.&Apache::lonhtmlcommon::dragmath_button('filecont',1).'</span>';
             $initialize .= "\n".&Apache::lonhtmlcommon::dragmath_js('EditMathPopup');
       }        }
   
       $add_to_onload = 'initDocument();';        $add_to_onload = 'initDocument();';
       $add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');";        $add_to_onresize = "resize_textarea('$textarea_id','LC_aftertextarea');";
   
Line 1536  FULLPAGE Line 1667  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',
  'un' => 'undo',   'un' => 'undo',
  'ed' => 'Edit');   'ed' => 'Edit');
       my $spelllink .=&Apache::lonhtmlcommon::spelllink('xmledit','filecont');        my $spelllink = &Apache::lonhtmlcommon::spelllink('xmledit','filecont');
       my $textarea_events = &Apache::edit::element_change_detection();        my $textarea_events = &Apache::edit::element_change_detection();
       my $form_events     = &Apache::edit::form_change_detection();        my $form_events     = &Apache::edit::form_change_detection();
       my $htmlerror;        my $htmlerror;
Line 1552  FULLPAGE Line 1682  FULLPAGE
               $htmlerror='<span class="LC_error">'.$htmlerror.'</span>';                $htmlerror='<span class="LC_error">'.$htmlerror.'</span>';
           }            }
           if (&Apache::lonhtmlcommon::htmlareabrowser()) {            if (&Apache::lonhtmlcommon::htmlareabrowser()) {
               if (&Apache::lonhtmlcommon::htmlareablocked()) {                unless ($textareaclass) {
                   $wysiwyglink = &Apache::lonhtmlcommon::enablelink($textarea_id);                    $textareaclass = 'class="LC_richDefaultOff"';
               } else {  
                   $wysiwyglink = &Apache::lonhtmlcommon::disablelink($textarea_id);  
               }                }
           }            }
       }        }
       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 1573  $initialize Line 1701  $initialize
     <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'}" />        <input type="submit" name="Undo" accesskey="u" value="$lt{'un'}" />
       $dragmath_button $spelllink $htmlerror        $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'}" />
       <input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" />        <input type="submit" name="viewmode" accesskey="v" value="$lt{'vi'}" />
     </div>      </div>
   </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" $textareaclass>$filecontents</textarea><br />$spelllink
   <div id="LC_aftertextarea">    <div id="LC_aftertextarea">
     $wysiwyglink  
     <br />      <br />
     $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 1658  sub handler { Line 1784  sub handler {
     } else {      } else {
  $filetype='html';   $filetype='html';
     }      }
       unless ($env{'request.uri'}) {
           $env{'request.uri'}=$request->uri;
           &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                                   ['todocs']);
       }
       my ($cdom,$cnum);
       if ($env{'request.course.id'}) {
           $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           if ($filetype eq 'html') {
               if ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E.+$}) {
                   if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {
                       &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                                               ['editmode']);
                   }
               }
           }
       }
     if ($filetype eq 'sty') {      if ($filetype eq 'sty') {
         $breadcrumbtext = 'Style File Editor';          $breadcrumbtext = 'Style File Editor';
     } elsif ($filetype eq 'js') {      } elsif ($filetype eq 'js') {
Line 1733  ENDNOTFOUND Line 1877  ENDNOTFOUND
                 $result = &Apache::lontexconvert::converted(\$filecontents,                  $result = &Apache::lontexconvert::converted(\$filecontents,
                               $env{'form.texengine'});                                $env{'form.texengine'});
                 if ($env{'form.return_only_error_and_warning_counts'}) {                  if ($env{'form.return_only_error_and_warning_counts'}) {
                     if (&verify_html('<html><body>'.$result.'</body></html>')) {  
                         $errorcount++;  
                     }  
                     $result = "$errorcount:$warningcount";                      $result = "$errorcount:$warningcount";
                 }                  }
             } else {              } else {
Line 1762  ENDNOTFOUND Line 1903  ENDNOTFOUND
                 }                  }
                 my $brcrum;                  my $brcrum;
                 if ($env{'request.state'} eq 'construct') {                  if ($env{'request.state'} eq 'construct') {
                     $brcrum = [{'href' => &Apache::loncommon::authorspace(),                      $brcrum = [{'href' => &Apache::loncommon::authorspace($request->uri),
                                 'text' => 'Construction Space'},                                  'text' => 'Authoring Space'},
                                {'href' => '',                                 {'href' => '',
                                 'text' => $breadcrumbtext}];                                  'text' => $breadcrumbtext}];
                 } else {                  } else {
Line 1786  ENDNOTFOUND Line 1927  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=$request->uri;              my ($displayfile,$url,$symb,$itemtitle,$action);
     $displayfile=~s/^\/[^\/]*//;      $displayfile=$request->uri;
               if ($request->uri =~ m{^/uploaded/}) {
                   if ($env{'request.course.id'}) {
                       if ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/supplemental/\E}) {
                           &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                                                   ['folderpath','title']);
                       } elsif ($request->uri =~ m{^\Q/uploaded/$cdom/$cnum/portfolio/syllabus/\E(.+)$}) {
                           my $filename = $1;
                           if ($1 eq 'loncapa.html') {
                               $displayfile = &mt('Syllabus (minimal template)');
                               $action = $request->uri.'?forceedit=1';
                           } else {
                               $displayfile = &mt('Syllabus file: [_1]',$1);
                           }
                           $itemtitle = &mt('Syllabus');
                       }
                   }
                   unless ($itemtitle) {
                       ($symb,$itemtitle,$displayfile) = 
                           &get_courseupload_hierarchy($request->uri,
                                                       $env{'form.folderpath'},
                                                       $env{'form.title'});
                   }
               } else {
           $displayfile=~s/^\/[^\/]*//;
               }
   
     my ($edit_info, $add_to_onload, $add_to_onresize)=      my ($edit_info, $add_to_onload, $add_to_onresize)=
  &inserteditinfo($filecontents,$filetype,$displayfile);   &inserteditinfo($filecontents,$filetype,$displayfile,$symb,
                                   $itemtitle,$env{'form.folderpath'},$request->uri,$action);
   
     my %options =       my %options = 
  ('add_entries' =>   ('add_entries' =>
Line 1799  ENDNOTFOUND Line 1966  ENDNOTFOUND
             my $header;              my $header;
             if ($env{'request.state'} eq 'construct') {              if ($env{'request.state'} eq 'construct') {
                 $options{'bread_crumbs'} = [{                  $options{'bread_crumbs'} = [{
                             'href' => &Apache::loncommon::authorspace(),                              'href' => &Apache::loncommon::authorspace($request->uri),
                             'text' => 'Construction Space'},                              'text' => 'Authoring Space'},
                            {'href' => '',                             {'href' => '',
                             'text' => $breadcrumbtext}];                              'text' => $breadcrumbtext}];
                 $header = &Apache::loncommon::head_subbox(                  $header = &Apache::loncommon::head_subbox(
Line 1835  sub display_title { Line 2002  sub display_title {
     $title = substr($title, rindex($title, '/') + 1);      $title = substr($title, rindex($title, '/') + 1);
  }   }
         $result = "<script type='text/javascript'>top.document.title = '$title - LON-CAPA "          $result = "<script type='text/javascript'>top.document.title = '$title - LON-CAPA "
                   .&mt('Construction Space')."';</script>";                    .&mt('Authoring Space')."';</script>";
     }      }
     return $result;      return $result;
 }  }
   
   sub get_courseupload_hierarchy {
       my ($url,$folderpath,$title) = @_;
       my ($symb,$itemtitle,$displaypath);
       if ($env{'request.course.id'}) {
           if ($folderpath =~ /^supplemental/) {
               my @folders = split(/\&/,$folderpath);
               my @pathitems;
               while (@folders) {
                   my $folder=shift(@folders);
                   my $foldername=shift(@folders);
                   $foldername =~ s/\:(\d*)\:(\w*)\:(\w*):(\d*)\:?(\d*)$//;
                   push(@pathitems,&unescape($foldername));
               }
               if ($title) {
                   push(@pathitems,&unescape($title));
               }
               $displaypath = join(' &raquo; ',@pathitems);
           } else {
               $symb = &Apache::lonnet::symbread($url);
               my ($map,$id,$res)=&Apache::lonnet::decode_symb($symb);
               my $navmap=Apache::lonnavmaps::navmap->new;
               if (ref($navmap)) {
                   my $res = $navmap->getBySymb($symb);
                   if (ref($res)) {
                       my @pathitems =
                           &Apache::loncommon::get_folder_hierarchy($navmap,$map,1);
                       $itemtitle = $res->compTitle();
                       push(@pathitems,$itemtitle);
                       $displaypath = join(' &raquo; ',@pathitems);
                   }
               }
           }
       }
       return ($symb,$itemtitle,$displaypath);
   }
   
 sub debug {  sub debug {
     if ($Apache::lonxml::debug eq "1") {      if ($Apache::lonxml::debug eq "1") {
  $|=1;   $|=1;
Line 1856  sub debug { Line 2059  sub debug {
 }  }
   
 sub show_error_warn_msg {  sub show_error_warn_msg {
     if ($env{'request.filename'} eq '/home/httpd/html/res/lib/templates/simpleproblem.problem' &&      if (($env{'request.filename'} eq 
  &Apache::lonnet::allowed('mdc',$env{'request.course.id'})) {           $Apache::lonnet::perlvar{'lonDocRoot'}.'/res/lib/templates/simpleproblem.problem') &&
           (&Apache::lonnet::allowed('mdc',$env{'request.course.id'}))) {
  return 1;   return 1;
     }      }
     return (($Apache::lonxml::debug eq 1) ||      return (($Apache::lonxml::debug eq 1) ||
Line 1921  sub error { Line 2125  sub error {
     my @userlist;      my @userlist;
     foreach (keys %users) {      foreach (keys %users) {
  my ($user,$domain) = split(/:/, $_);   my ($user,$domain) = split(/:/, $_);
  push(@userlist,"$user\@$domain");   push(@userlist,"$user:$domain");
  my $key=$declutter.'_'.$user.'_'.$domain;   my $key=$declutter.'_'.$user.'_'.$domain;
  my %lastnotified=&Apache::lonnet::get('nohist_xmlerrornotifications',   my %lastnotified=&Apache::lonnet::get('nohist_xmlerrornotifications',
       [$key],        [$key],
Line 1944  sub error { Line 2148  sub error {
  $errormsg=&mt("An error occurred while processing this resource. The instructor has been notified.");   $errormsg=&mt("An error occurred while processing this resource. The instructor has been notified.");
     }      }
  }   }
  push(@Apache::lonxml::error_messages,"<b>$errormsg</b> <br />");   push(@Apache::lonxml::error_messages,"<span class=\"LC_warning\">$errormsg</span><br />");
     }      }
 }  }
   
Line 1989  sub add_messages { Line 2193  sub add_messages {
 }  }
   
 sub get_param {  sub get_param {
     my ($param,$parstack,$safeeval,$context,$case_insensitive) = @_;      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]; }
     if ( ! $Apache::lonxml::usestyle ) {      if ( ! $Apache::lonxml::usestyle ) {
  $args=$Apache::lonxml::style_values.$args;   $args=$Apache::lonxml::style_values.$args;
     }      }
   
       if ($noelide) {
           $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) {
Line 2052  sub register_insert_xml { Line 2261  sub register_insert_xml {
     while (my $token = $parser->get_token()) {      while (my $token = $parser->get_token()) {
  if ($token->[0] eq 'S') {   if ($token->[0] eq 'S') {
     my $key;      my $key;
     if      ($token->[1] eq 'tag') {      if ($token->[1] eq 'tag') {
  $tag = $token->[2]{'name'};   $tag = $token->[2]{'name'};
  $insertlist{"$tagnum.tag"} = $tag;                  if (defined($tag)) {
  $insertlist{"$tag.num"}   = $tagnum;      $insertlist{$tagnum.'.tag'} = $tag;
  push(@alltags,$tag);      $insertlist{$tag.'.num'}   = $tagnum;
       push(@alltags,$tag);
                   }
     } elsif ($in_help && $token->[1] eq 'file') {      } elsif ($in_help && $token->[1] eq 'file') {
  $key = $tag.'.helpfile';   $key = $tag.'.helpfile';
     } elsif ($in_help && $token->[1] eq 'description') {      } elsif ($in_help && $token->[1] eq 'description') {
Line 2088  sub register_insert_xml { Line 2299  sub register_insert_xml {
           
     # parse the allows and ignore tags set to <show>no</show>      # parse the allows and ignore tags set to <show>no</show>
     foreach my $tag (@alltags) {      foreach my $tag (@alltags) {
         next if (!exists($insertlist{"$tag.allow"}));          next if (!exists($insertlist{$tag.'.allow'}));
  my $allow =  $insertlist{"$tag.allow"};   my $allow =  $insertlist{$tag.'.allow'};
         foreach my $element (split(',',$allow)) {          foreach my $element (split(',',$allow)) {
     $element =~ s/(^\s*|\s*$ )//gx;      $element =~ s/(^\s*|\s*$ )//gx;
     if (!exists($insertlist{"$element.show"})      if (!exists($insertlist{$element.'.show'})
                 || $insertlist{"$element.show"} ne 'no') {                  || $insertlist{$element.'.show'} ne 'no') {
  push(@{ $insertlist{$tag.'.which'} },$element);   push(@{ $insertlist{$tag.'.which'} },$element);
     }      }
  }   }
Line 2188  sub get_tag { Line 2399  sub get_tag {
   
 =pod  =pod
   
 =item &print_pdf_radiobutton(fieldname, value,  text)  =item &print_pdf_radiobutton(fieldname, value)
   
 Returns a latexline to generate a PDF-Form-Radiobutton with Text.  Returns a latexline to generate a PDF-Form-Radiobutton.
   Note: Radiobuttons with equal names are automaticly grouped 
         in a selection-group.
   
 $fieldname: PDF internalname of the radiobutton  $fieldname: PDF internalname of the radiobutton(group)
 $value:     Value of radiobutton (read when dumping the PDF data)  $value:     Value of radiobutton
 $text:      Text on the rightside of the radiobutton  
   
 =cut  =cut
 sub print_pdf_radiobutton {  sub print_pdf_radiobutton {
     my $result = '';      my ($fieldname, $value) = @_;
     my ($fieldName, $value, $text) = @_;      return '\radioButton[\symbolchoice{circle}]{'
     $result .= '\begin{tabularx}{\textwidth}{p{0cm}X}'."\n";             .$fieldname.'}{10bp}{10bp}{'.$value.'}';
     $result .= '\radioButton[\symbolchoice{circle}]{'.   
                $fieldName.'}{10bp}{10bp}{'.$value.'}&'.$text."\n";  
     $result .= '\end{tabularx}' . "\n";  
     $result .= '\hspace{2mm}' . "\n";  
     return $result;  
 }  }
   
   

Removed from v.1.507  
changed lines
  Added in v.1.531.2.11


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