--- loncom/xml/lonxml.pm 2006/02/05 18:30:56 1.397
+++ loncom/xml/lonxml.pm 2006/03/08 22:15:47 1.399
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# XML Parser Module
#
-# $Id: lonxml.pm,v 1.397 2006/02/05 18:30:56 albertel Exp $
+# $Id: lonxml.pm,v 1.399 2006/03/08 22:15:47 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -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)= @_;
@@ -1031,6 +1041,28 @@ sub store_counter {
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();
+ &Apache::lonxml::store_counter();
+ }
+
+ sub remember_problem_counter {
+ &Apache::lonnet::transfer_profile_to_env();
+ $state = $env{'form.counter'};
+ }
+
+ sub restore_problem_counter {
+ if (defined($state)) {
+ &Apache::lonnet::appenv(('form.counter' => $state));
+ }
+ }
+}
+
sub get_all_text {
my($tag,$pars,$style)= @_;
my $gotfullstack=1;