version 1.471, 2008/02/15 12:59:50
|
version 1.484, 2008/08/08 16:50:39
|
Line 361 sub xmlparse {
|
Line 361 sub xmlparse {
|
$safeeval,\%style_for_target,1); |
$safeeval,\%style_for_target,1); |
|
|
if (@stack) { |
if (@stack) { |
&warning("At end of file some tags were still left unclosed, ". |
&warning(&mt('At end of file some tags were still left unclosed:'). |
'<tt><'.join('></tt>, <tt><',reverse(@stack)). |
' <tt><'.join('></tt>, <tt><',reverse(@stack)). |
'></tt>'); |
'></tt>'); |
} |
} |
if ($env{'request.uri'}) { |
if ($env{'request.uri'}) { |
Line 379 sub xmlparse {
|
Line 379 sub xmlparse {
|
} |
} |
&init_state(); |
&init_state(); |
if ($env{'form.return_only_error_and_warning_counts'}) { |
if ($env{'form.return_only_error_and_warning_counts'}) { |
|
if ($env{'request.filename'}=~/\.(html|htm|xml)$/i) { |
|
my $error=&verify_html($content_file_string); |
|
if ($error) { $errorcount++; } |
|
} |
return "$errorcount:$warningcount"; |
return "$errorcount:$warningcount"; |
} |
} |
return $finaloutput; |
return $finaloutput; |
Line 482 sub inner_xmlparse {
|
Line 486 sub inner_xmlparse {
|
while ($token->[1] ne $$stack['-1'] && ($#$stack > -1)) { |
while ($token->[1] ne $$stack['-1'] && ($#$stack > -1)) { |
my $lasttag=$$stack[-1]; |
my $lasttag=$$stack[-1]; |
if ($token->[1] =~ /^\Q$lasttag\E$/i) { |
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; |
last; |
} else { |
} 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); |
&end_tag($stack,$parstack,$token); |
} |
} |
} |
} |
Line 714 sub init_safespace {
|
Line 718 sub init_safespace {
|
$safeeval->permit(":base_math"); |
$safeeval->permit(":base_math"); |
$safeeval->permit("sort"); |
$safeeval->permit("sort"); |
$safeeval->permit("time"); |
$safeeval->permit("time"); |
|
$safeeval->permit("caller"); |
$safeeval->deny("rand"); |
$safeeval->deny("rand"); |
$safeeval->deny("srand"); |
$safeeval->deny("srand"); |
$safeeval->deny(":base_io"); |
$safeeval->deny(":base_io"); |
Line 733 sub init_safespace {
|
Line 738 sub init_safespace {
|
$safehole->wrap(\&Apache::caparesponse::capa_formula_fix,$safeeval, |
$safehole->wrap(\&Apache::caparesponse::capa_formula_fix,$safeeval, |
'&capa_formula_fix'); |
'&capa_formula_fix'); |
|
|
|
$safehole->wrap(\&Apache::lonlocal::locallocaltime,$safeeval, |
|
'&locallocaltime'); |
|
|
$safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); |
$safehole->wrap(\&Math::Cephes::asin,$safeeval,'&asin'); |
$safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); |
$safehole->wrap(\&Math::Cephes::acos,$safeeval,'&acos'); |
$safehole->wrap(\&Math::Cephes::atan,$safeeval,'&atan'); |
$safehole->wrap(\&Math::Cephes::atan,$safeeval,'&atan'); |
Line 1076 Optional Arguments:
|
Line 1084 Optional Arguments:
|
|
|
sub increment_counter { |
sub increment_counter { |
my ($increment, $part_response) = @_; |
my ($increment, $part_response) = @_; |
|
if ($env{'form.grade_noincrement'}) { return; } |
if (!defined($increment) || $increment le 0) { |
if (!defined($increment) || $increment le 0) { |
$increment = 1; |
$increment = 1; |
} |
} |
Line 1117 sub init_counter {
|
Line 1126 sub init_counter {
|
} |
} |
|
|
sub store_counter { |
sub store_counter { |
&Apache::lonnet::appenv(('form.counter' => $Apache::lonxml::counter)); |
&Apache::lonnet::appenv({'form.counter' => $Apache::lonxml::counter}); |
$Apache::lonxml::counter_changed=0; |
$Apache::lonxml::counter_changed=0; |
return ''; |
return ''; |
} |
} |
Line 1138 sub store_counter {
|
Line 1147 sub store_counter {
|
|
|
sub restore_problem_counter { |
sub restore_problem_counter { |
if (defined($state)) { |
if (defined($state)) { |
&Apache::lonnet::appenv(('form.counter' => $state)); |
&Apache::lonnet::appenv({'form.counter' => $state}); |
} |
} |
} |
} |
sub get_problem_counter { |
sub get_problem_counter { |
Line 1375 sub writeallows {
|
Line 1384 sub writeallows {
|
&Apache::lonnet::hreflocation($thisdir,&unescape($_))}=$thisurl; |
&Apache::lonnet::hreflocation($thisdir,&unescape($_))}=$thisurl; |
} |
} |
@extlinks=(); |
@extlinks=(); |
&Apache::lonnet::appenv(%httpref); |
&Apache::lonnet::appenv(\%httpref); |
} |
} |
|
|
sub register_ssi { |
sub register_ssi { |
Line 1442 sub storefile {
|
Line 1451 sub storefile {
|
$fh->close(); |
$fh->close(); |
return 1; |
return 1; |
} else { |
} else { |
&warning("Unable to save file $file"); |
&warning(&mt('Unable to save file [_1]','<tt>'.$file.'</tt>')); |
return 0; |
return 0; |
} |
} |
} |
} |
Line 1475 SIMPLECONTENT
|
Line 1484 SIMPLECONTENT
|
return $filecontents; |
return $filecontents; |
} |
} |
|
|
|
sub verify_html { |
|
my ($filecontents)=@_; |
|
if ($filecontents!~/(?:\<|\<\;)(?:html|xml)[^\<]*(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] starting tag','<html>','<xml>'); |
|
} |
|
if ($filecontents!~/(?:\<|\<\;)\/(?:html|xml)(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] ending tag','<html>','<xml>'); |
|
} |
|
if ($filecontents!~/(?:\<|\<\;)(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] starting tag','<body>','<frameset>'); |
|
} |
|
if ($filecontents!~/(?:\<|\<\;)\/(?:body|frameset)[^\<]*(?:\>|\>\;)/is) { |
|
return &mt('File does not have [_1] or [_2] ending tag','<body>','<frameset>'); |
|
} |
|
return ''; |
|
} |
|
|
|
sub renderingoptions { |
|
my %langchoices=('' => ''); |
|
foreach (&Apache::loncommon::languageids()) { |
|
if (&Apache::loncommon::supportedlanguagecode($_)) { |
|
$langchoices{&Apache::loncommon::supportedlanguagecode($_)} |
|
= &Apache::loncommon::plainlanguagedescription($_); |
|
} |
|
} |
|
return |
|
'<span class="LC_nobreak">'. |
|
&mt('Language:').' '. |
|
&Apache::loncommon::select_form($env{'form.languages'},'languages', |
|
%langchoices).' |
|
</span> |
|
<span class="LC_nobreak">'. |
|
&mt('Math Rendering:').' '. |
|
&Apache::loncommon::select_form($env{'form.texengine'},'texengine', |
|
('' => '', |
|
'tth' => 'tth (TeX to HTML)', |
|
'jsMath' => 'jsMath', |
|
'mimetex' => 'mimetex (Convert to Images)')).' |
|
</span>'; |
|
} |
|
|
sub inserteditinfo { |
sub inserteditinfo { |
my ($filecontents, $filetype, $filename)=@_; |
my ($filecontents, $filetype, $filename)=@_; |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
$filecontents = &HTML::Entities::encode($filecontents,'<>&"'); |
# my $editheader='<a href="#editsection">Edit below</a><hr />'; |
|
my $xml_help = ''; |
my $xml_help = ''; |
my $initialize=''; |
my $initialize=''; |
my $textarea_id = 'filecont'; |
my $textarea_id = 'filecont'; |
Line 1538 FULLPAGE
|
Line 1586 FULLPAGE
|
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=&verify_html($filecontents); |
|
if ($htmlerror) { |
|
$htmlerror='<span class="LC_error">'.$htmlerror.'</span>'; |
|
} |
my $editfooter=(<<ENDFOOTER); |
my $editfooter=(<<ENDFOOTER); |
$initialize |
$initialize |
<a name="editsection" /> |
<a name="editsection" /> |
Line 1552 $initialize
|
Line 1604 $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'}" /> |
$spelllink |
$spelllink $htmlerror |
</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 1629 sub handler {
|
Line 1681 sub handler {
|
if ($env{'form.savethisfile'} || $env{'form.viewmode'} || $env{'form.Undo'}) { |
if ($env{'form.savethisfile'} || $env{'form.viewmode'} || $env{'form.Undo'}) { |
my $html_file=&Apache::lonnet::getfile($file); |
my $html_file=&Apache::lonnet::getfile($file); |
my $error = &Apache::lonhomework::handle_save_or_undo($request, \$html_file, \$env{'form.filecont'}); |
my $error = &Apache::lonhomework::handle_save_or_undo($request, \$html_file, \$env{'form.filecont'}); |
|
if ($env{'form.savethisfile'}) { |
|
$env{'form.editmode'}='Edit'; #force edit mode |
|
} |
} |
} |
} |
} |
my %mystyle; |
my %mystyle; |
Line 1735 sub display_title {
|
Line 1790 sub display_title {
|
$title = $env{'request.filename'}; |
$title = $env{'request.filename'}; |
$title = substr($title, rindex($title, '/') + 1); |
$title = substr($title, rindex($title, '/') + 1); |
} |
} |
$result = "<script type='text/javascript'>top.document.title = '$title - LON-CAPA Construction Space';</script>"; |
$result = "<script type='text/javascript'>top.document.title = '$title - LON-CAPA " |
|
.&mt('Construction Space')."';</script>"; |
} |
} |
return $result; |
return $result; |
} |
} |
Line 1788 sub error {
|
Line 1844 sub error {
|
if ( &show_error_warn_msg() ) { |
if ( &show_error_warn_msg() ) { |
# If printing in construction space, put the error inside <pre></pre> |
# If printing in construction space, put the error inside <pre></pre> |
push(@Apache::lonxml::error_messages, |
push(@Apache::lonxml::error_messages, |
$Apache::lonxml::warnings_error_header. |
$Apache::lonxml::warnings_error_header |
"<b>ERROR:</b>".join("<br />\n",@errors)."<br />\n"); |
.'<div class="LC_error">' |
|
.'<b>'.&mt('ERROR:').' </b>'.join("<br />\n",@errors) |
|
."</div>\n"); |
$Apache::lonxml::warnings_error_header=''; |
$Apache::lonxml::warnings_error_header=''; |
} else { |
} else { |
my $errormsg; |
my $errormsg; |
Line 1799 sub error {
|
Line 1857 sub error {
|
$errormsg=&mt("An error occured while processing this resource. The author has been notified."); |
$errormsg=&mt("An error occured while processing this resource. The author has been notified."); |
} |
} |
my $host=$Apache::lonnet::perlvar{'lonHostID'}; |
my $host=$Apache::lonnet::perlvar{'lonHostID'}; |
push(@errors, "The error occurred on host <tt>$host</tt>"); |
push(@errors, |
|
&mt("The error occurred on host [_1]", |
|
"<tt>$host</tt>")); |
|
|
my $msg = join('<br />', @errors); |
my $msg = join('<br />', @errors); |
|
|
Line 1848 sub warning {
|
Line 1908 sub warning {
|
if ($env{'form.grade_target'} ne 'tex') { |
if ($env{'form.grade_target'} ne 'tex') { |
if ( &show_error_warn_msg() ) { |
if ( &show_error_warn_msg() ) { |
push(@Apache::lonxml::warning_messages, |
push(@Apache::lonxml::warning_messages, |
$Apache::lonxml::warnings_error_header. |
$Apache::lonxml::warnings_error_header |
"<b>W</b>ARNING<b>:</b>".join('<br />',@_)."<br />\n"); |
.'<div class="LC_warning">' |
|
.&mt('[_1]W[_2]ARNING','<b>','</b>')."<b>:</b> ".join('<br />',@_) |
|
."</div>\n" |
|
); |
$Apache::lonxml::warnings_error_header=''; |
$Apache::lonxml::warnings_error_header=''; |
} |
} |
} |
} |