--- loncom/xml/lonxml.pm 2008/06/10 16:20:39 1.480 +++ loncom/xml/lonxml.pm 2008/12/07 23:41:02 1.490 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.480 2008/06/10 16:20:39 www Exp $ +# $Id: lonxml.pm,v 1.490 2008/12/07 23:41:02 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,25 @@ # to any other parties under any circumstances. # +=pod + +=head1 NAME + +Apache::lonxml + +=head1 SYNOPSIS + +XML Parsing Module + +This is part of the LearningOnline Network with CAPA project +described at http://www.lon-capa.org. + + +=head1 SUBROUTINES + +=cut + + package Apache::lonxml; use vars @@ -361,8 +380,8 @@ sub xmlparse { $safeeval,\%style_for_target,1); if (@stack) { - &warning("At end of file some tags were still left unclosed, ". - '<'.join('>, <',reverse(@stack)). + &warning(&mt('At end of file some tags were still left unclosed:'). + ' <'.join('>, <',reverse(@stack)). '>'); } if ($env{'request.uri'}) { @@ -486,10 +505,10 @@ sub inner_xmlparse { while ($token->[1] ne $$stack['-1'] && ($#$stack > -1)) { my $lasttag=$$stack[-1]; if ($token->[1] =~ /^\Q$lasttag\E$/i) { - &Apache::lonxml::warning('Using tag </'.$token->[1].'> on line '.$token->[3].' as end tag to <'.$$stack[-1].'>'); + &Apache::lonxml::warning(&mt('Using tag [_1] on line [_2] as end tag to [_3]','</'.$token->[1].'>','.$token->[3].','<'.$$stack[-1].'>')); last; } else { - &Apache::lonxml::warning('Found tag </'.$token->[1].'> on line '.$token->[3].' when looking for </'.$$stack[-1].'> in file'); + &Apache::lonxml::warning(&mt('Found tag [_1] on line [_2] when looking for [_3] in file.','</'.$token->[1].'>',$token->[3],'</'.$$stack[-1].'>')); &end_tag($stack,$parstack,$token); } } @@ -505,11 +524,11 @@ sub inner_xmlparse { if (!$Apache::lonxml::usestyle) { $extras=$Apache::lonxml::style_values; } - if ( $#$parstack > -1 ) { - $result=&Apache::run::evaluate($result,$safeeval,$extras.$$parstack[-1]); - } else { - $result= &Apache::run::evaluate($result,$safeeval,$extras); - } + if ( $#$parstack > -1 ) { + $result=&Apache::run::evaluate($result,$safeeval,$extras.$$parstack[-1]); + } else { + $result= &Apache::run::evaluate($result,$safeeval,$extras); + } } $Apache::lonxml::post_evaluate=1; @@ -658,6 +677,7 @@ sub setup_globals { $Apache::lonxml::request=$request; $errorcount=0; $warningcount=0; + $Apache::lonxml::internal_error=0; $Apache::lonxml::default_homework_loaded=0; $Apache::lonxml::usestyle=1; &init_counter(); @@ -1084,7 +1104,7 @@ Optional Arguments: sub increment_counter { my ($increment, $part_response) = @_; - if ($env{'form.grade_target'} eq 'analyze') { return; } + if ($env{'form.grade_noincrement'}) { return; } if (!defined($increment) || $increment le 0) { $increment = 1; } @@ -1451,7 +1471,7 @@ sub storefile { $fh->close(); return 1; } else { - &warning("Unable to save file $file"); + &warning(&mt('Unable to save file [_1]',''.$file.'')); return 0; } } @@ -1519,7 +1539,7 @@ sub renderingoptions { &mt('Math Rendering:').' '. &Apache::loncommon::select_form($env{'form.texengine'},'texengine', ('' => '', - 'tth' => 'tth (Tex-to-HTML)', + 'tth' => 'tth (TeX to HTML)', 'jsMath' => 'jsMath', 'mimetex' => 'mimetex (Convert to Images)')).' '; @@ -1828,6 +1848,8 @@ sub error { $errorcount++; + $Apache::lonxml::internal_error=1; + if (defined($Apache::inputtags::part)) { if ( @Apache::inputtags::response ) { push(@errors, @@ -1844,15 +1866,17 @@ sub error { if ( &show_error_warn_msg() ) { # If printing in construction space, put the error inside

 	push(@Apache::lonxml::error_messages,
-	     $Apache::lonxml::warnings_error_header.
-             "".&mt('ERROR:')."".join("
\n",@errors)."
\n"); + $Apache::lonxml::warnings_error_header + .'
' + .''.&mt('ERROR:').' '.join("
\n",@errors) + ."
\n"); $Apache::lonxml::warnings_error_header=''; } else { my $errormsg; my ($symb)=&Apache::lonnet::symbread(); if ( !$symb ) { #public or browsers - $errormsg=&mt("An error occured while processing this resource. The author has been notified."); + $errormsg=&mt("An error occurred while processing this resource. The author has been notified."); } my $host=$Apache::lonnet::perlvar{'lonHostID'}; push(@errors, @@ -1891,9 +1915,9 @@ sub error { } } if ($env{'request.role.adv'}) { - $errormsg=&mt("An error occured while processing this resource. The course personnel ([_1]) and the author have been notified.",join(', ',@userlist)); + $errormsg=&mt("An error occurred while processing this resource. The course personnel ([_1]) and the author have been notified.",join(', ',@userlist)); } else { - $errormsg=&mt("An error occured 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,"$errormsg
"); @@ -1906,8 +1930,11 @@ sub warning { if ($env{'form.grade_target'} ne 'tex') { if ( &show_error_warn_msg() ) { push(@Apache::lonxml::warning_messages, - $Apache::lonxml::warnings_error_header. - "WARNING:".join('
',@_)."
\n"); + $Apache::lonxml::warnings_error_header + .'
' + .&mt('[_1]W[_2]ARNING','','').": ".join('
',@_) + ."
\n" + ); $Apache::lonxml::warnings_error_header=''; } } @@ -2132,7 +2159,109 @@ sub get_tag { return $insertlist{"$tagnum.tag"}; } +############################################################ +# PDF-FORM-METHODS + +=pod + +=item &print_pdf_radiobutton(fieldname, value, text) + +Returns a latexline to generate a PDF-Form-Radiobutton with Text. + +$fieldname: PDF internalname of the radiobutton +$value: Value of radiobutton (read when dumping the PDF data) +$text: Text on the rightside of the radiobutton + +=cut +sub print_pdf_radiobutton { + my $result = ''; + my ($fieldName, $value, $text) = @_; + $result .= '\begin{tabularx}{\textwidth}{p{0cm}X}'."\n"; + $result .= '\radioButton[\symbolchoice{circle}]{'. + $fieldName.'}{10bp}{10bp}{'.$value.'}&'.$text."\n"; + $result .= '\end{tabularx}' . "\n"; + $result .= '\hspace{2mm}' . "\n"; + return $result; +} + + +=pod + +=item &print_pdf_start_combobox(fieldname) + +Starts a latexline to generate a PDF-Form-Combobox with text. + +$fieldname: PDF internal name of the Combobox + +=cut +sub print_pdf_start_combobox { + my $result; + my ($fieldName) = @_; + $result .= '\begin{tabularx}{\textwidth}{p{2.5cm}X}'."\n"; + $result .= '\comboBox[]{'.$fieldName.'}{2.3cm}{14bp}{'; # + + return $result; +} + + +=pod + +=item &print_pdf_add_combobox_option(options) + +Generates a latexline to add Options to a PDF-Form-ComboBox. + +$option: PDF internal name of the Combobox-Option + +=cut +sub print_pdf_add_combobox_option { + + my $result; + my ($option) = @_; + + $result .= '('.$option.')'; + + return $result; +} + + +=pod + +=item &print_pdf_end_combobox(text) { + +Returns latexcode to end a PDF-Form-Combobox with text. + +=cut +sub print_pdf_end_combobox { + my $result; + my ($text) = @_; + + $result .= '}&'.$text."\\\\\n"; + $result .= '\end{tabularx}' . "\n"; + $result .= '\hspace{2mm}' . "\n"; + return $result; +} + + +=pod + +=item &print_pdf_hiddenField(fieldname, user, domain) + +Returns a latexline to generate a PDF-Form-hiddenField with userdata. + +$fieldname label for hiddentextfield +$user: name of user +$domain: domain of user + +=cut +sub print_pdf_hiddenfield { + my $result; + my ($fieldname, $user, $domain) = @_; + + $result .= '\textField [\F{\FHidden}\F{-\FPrint}\V{'.$domain.'&'.$user.'}]{'.$fieldname.'}{0in}{0in}'."\n"; + + return $result; +} + 1; __END__ -