--- loncom/xml/lonxml.pm 2006/03/08 21:49:26 1.398 +++ loncom/xml/lonxml.pm 2006/04/13 18:35:17 1.405 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.398 2006/03/08 21:49:26 albertel Exp $ +# $Id: lonxml.pm,v 1.405 2006/04/13 18:35:17 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -204,9 +204,9 @@ sub xmlend { $discussion.='\keephidden{ENDOFPROBLEM}\vskip 0.5mm\noindent\makebox[\textwidth/$number_of_columns][b]{\hrulefill}\end{document}'; &Apache::lonxml::newparser($parser,\$discussion,''); return ''; - } else { - return $discussion.&Apache::loncommon::endbodytag(); } + + return $discussion.&Apache::loncommon::end_page(); } sub tokeninputfield { @@ -971,6 +971,16 @@ sub decreasedepth { #print "
e $Apache::lonxml::depth : $Apache::lonxml::olddepth : $token->[1] : $curdepth\n"; } +sub get_id { + my ($parstack,$safeeval)=@_; + my $id= &Apache::lonxml::get_param('id',$parstack,$safeeval); + if ($env{'request.state'} eq 'construct' && $id =~ /(\.|_)/) { + &error(&mt("IDs are not allowed to contain "_" or "."")); + } + if ($id =~ /^\s*$/) { $id = $Apache::lonxml::curdepth; } + return $id; +} + sub get_all_text_unbalanced { #there is a copy of this in lonpublisher.pm my($tag,$pars)= @_; @@ -1028,13 +1038,13 @@ sub init_counter { sub store_counter { &Apache::lonnet::appenv(('form.counter' => $Apache::lonxml::counter)); + $Apache::lonxml::counter_changed=0; return ''; } { my $state; sub clear_problem_counter { - &Apache::lonnet::logthis(" cpc called from ".(join(':',caller(0)))); undef($state); &Apache::lonnet::delenv('form.counter'); &Apache::lonxml::init_counter(); @@ -1051,6 +1061,11 @@ sub store_counter { &Apache::lonnet::appenv(('form.counter' => $state)); } } + sub get_problem_counter { + if ($Apache::lonxml::counter_changed) { &store_counter() } + &Apache::lonnet::transfer_profile_to_env(); + return $env{'form.counter'}; + } } sub get_all_text { @@ -1443,17 +1458,13 @@ sub handler { my $result = ''; my $filecontents=&Apache::lonnet::getfile($file); if ($filecontents eq -1) { - my $bodytag=&Apache::loncommon::bodytag('File Error'); + my $start_page=&Apache::loncommon::start_page('File Error'); + my $end_page=&Apache::loncommon::end_page('File Error'); my $fnf=&mt('File not found'); $result=(< - -$fnf - -$bodytag +$start_page $fnf: $file - - +$end_page ENDNOTFOUND $filecontents=''; if ($env{'request.state'} ne 'published') { @@ -1491,18 +1502,21 @@ ENDNOTFOUND if ($env{'form.editmode'} && (!($env{'form.viewmode'}))) { my $displayfile=$request->uri; $displayfile=~s/^\/[^\/]*//; - my $bodytag=''; - if ($env{'environment.remote'} eq 'off') { - $bodytag=&Apache::loncommon::bodytag(); + my %options = (); + if ($env{'environment.remote'} ne 'off') { + $options{'bgcolor'} = '#FFFFFF'; + $options{'only_body'} = 1; } - $result=''.$bodytag. + my $start_page = &Apache::loncommon::start_page(undef,undef, + \%options); + $result=$start_page. &Apache::lonxml::message_location().'

'. $displayfile. - '

'; + ''.&Apache::loncommon::end_page(); $result=&inserteditinfo($result,$filecontents,$filetype); } } - if ($filetype eq 'html') { writeallows($request->uri); } + if ($filetype eq 'html') { &writeallows($request->uri); } &Apache::lonxml::add_messages(\$result); @@ -1565,9 +1579,10 @@ sub error { if ( !$symb ) { #public or browsers $errormsg=&mt("An error occured while processing this resource. The author has been notified."); - } + } + my $msg = join('
',@_); #notify author - &Apache::lonmsg::author_res_msg($env{'request.filename'},join('
',@_)); + &Apache::lonmsg::author_res_msg($env{'request.filename'},$msg); #notify course if ( $symb && $env{'request.course.id'} ) { my $cnum=$env{'course.'.$env{'request.course.id'}.'.num'}; @@ -1585,7 +1600,7 @@ sub error { my $now=time; if ($now-$lastnotified{$key}>86400) { &Apache::lonmsg::user_normal_msg($user,$domain, - "Error [$declutter]",join('
',@_)); + "Error [$declutter]",$msg); &Apache::lonnet::put('nohist_xmlerrornotifications', {$key => $now}, $cdom,$cnum);