--- loncom/homework/structuretags.pm 2003/11/01 16:37:21 1.220 +++ loncom/homework/structuretags.pm 2004/02/16 18:40:18 1.237 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # definition of tags that give a structure to a document # -# $Id: structuretags.pm,v 1.220 2003/11/01 16:37:21 www Exp $ +# $Id: structuretags.pm,v 1.237 2004/02/16 18:40:18 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,6 +37,7 @@ use Apache::lonnet; use Apache::File(); use Apache::lonmenu; use Apache::lonlocal; +use Apache::lonxml; BEGIN { &Apache::lonxml::register('Apache::structuretags',('block','languageblock','instructorcomment','while','randomlist','problem','library','web','tex','part','preduedate','postanswerdate','solved','notsolved','startouttext','endouttext', @@ -157,8 +158,8 @@ sub setup_rndseed { $rndseed=$Apache::lonhomework::history{'rndseed'}; if (!$rndseed) { $rndseed=time; - $ENV{'form.rndseed'}=$rndseed; } + $ENV{'form.rndseed'}=$rndseed; } if ($ENV{'form.resetdata'} eq &mt('New Problem Variation') || $ENV{'form.newrandomization'} eq &mt('New Randomization')) { @@ -171,8 +172,10 @@ sub setup_rndseed { if (defined($rndseed) && $rndseed ne int($rndseed)) { $rndseed=join(',',&Math::Random::random_seed_from_phrase($rndseed)); } - &Apache::lonxml::debug("Setting rndseed to $rndseed"); - &Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval); + if ($safeeval) { + &Apache::lonxml::debug("Setting rndseed to $rndseed"); + &Apache::run::run('$external::randomseed='.$rndseed.';',$safeeval); + } } return $rndseed; } @@ -184,8 +187,12 @@ sub problem_edit_header {
- ';
+
|
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
\n"; - } - } elsif ($status eq 'SHOW_ANSWER' || $status eq 'CANNOT_ANSWER' || - $status eq 'UNCHECKEDOUT' || $status eq 'INVALID_ACCESS') { - if ($target ne 'tex' && - $ENV{'form.answer_output_mode'} ne 'tex') { - $result.="\n"; - } + if ($target ne 'tex' && + $ENV{'form.answer_output_mode'} ne 'tex') { + $result.="\n"; } if ($target eq 'web') { $result.=&Apache::lonxml::xmlend(); @@ -946,7 +992,9 @@ sub start_part { &Apache::run::run($expression,$safeeval); if ($target eq 'meta') { - return &Apache::response::mandatory_part_meta; + my $display=&Apache::lonxml::get_param('display',$parstack,$safeeval); + return &Apache::response::mandatory_part_meta. + &Apache::response::meta_parameter_write('display','string',$display,'Part Description'); } elsif ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { if ($hidden) { @@ -978,7 +1026,17 @@ sub start_part { $result.='\noindent \end{minipage}\vskip 0 mm \noindent \begin{minipage}{\textwidth}\noindent'; } my $weight = &Apache::lonnet::EXT("resource.$id.weight"); - if ($Apache::lonhomework::type eq 'exam') { $result .= '\fbox{\textit{'.$weight.' pt}}';} + my $allkeys=&Apache::lonnet::metadata($ENV{'request.uri'},'packages'); + my @allkeys = split /,/,$allkeys; + my $allow_print_points = 0; + foreach my $partial_key (@allkeys) { + if ($partial_key=~m/^part_(.*)$/) { + if ($1 ne '0') {$allow_print_points=1;} + } + } + if (($Apache::lonhomework::type eq 'exam') && ($allow_print_points)) { $result .= '\fbox{\textit{'.$weight.' pt}}';} + } elsif ($target eq 'web') { + $result.=''; } } } @@ -986,11 +1044,15 @@ sub start_part { $result.=&Apache::edit::tag_start($target,$token); $result.=&Apache::edit::text_arg('Part ID:','id',$token). &Apache::loncommon::help_open_topic("Part_Tag_Edit_Help"). + ' '. +&Apache::edit::text_arg('Displayed Part Description:','display',$token). &Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, - $safeeval,'id'); + $safeeval,'id','display'); if ($constructtag) { + #limiting ids to only letters numbers, and space + $token->[2]->{'id'}=~s/[^A-Za-z0-9 ]//gs; $result = &Apache::edit::rebuild_tag($token); $result.=&Apache::edit::handle_insert(); } @@ -1006,7 +1068,9 @@ sub end_part { my $result=''; if ( $target eq 'meta' ) { $result=''; - } elsif ( $target eq 'grade' && $status eq 'CAN_ANSWER' && !$hidden) { + } elsif ($target eq 'grade' && + ($status eq 'CAN_ANSWER' || $Apache::lonhomework::scantronmode) && + !$hidden) { $result=&Apache::inputtags::grade; } elsif (($target eq 'web' || $target eq 'tex') && !$hidden ) { my $gradestatus=&Apache::inputtags::gradestatus($Apache::inputtags::part, @@ -1026,9 +1090,10 @@ sub end_part { sub start_preduedate { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; if ($target eq 'web' || $target eq 'grade' || $target eq 'answer' || $target eq 'tex') { + &Apache::lonxml::debug("State in preduedate is ". $Apache::inputtags::status['-1']); if ($Apache::inputtags::status['-1'] ne 'CAN_ANSWER' && - $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER' && - $Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { + $Apache::inputtags::status['-1'] ne 'CANNOT_ANSWER') { + &Apache::lonxml::debug("Wha? ". ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER')); &Apache::lonxml::get_all_text("/preduedate",$parser); } } @@ -1041,12 +1106,12 @@ sub end_preduedate { sub start_postanswerdate { my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_; - if ($target eq 'web' || $target eq 'grade' || $target eq 'tex') { + if ($target eq 'web' || $target eq 'grade') { if ($Apache::inputtags::status['-1'] ne 'SHOW_ANSWER') { &Apache::lonxml::get_all_text("/postanswerdate",$parser); } } elsif ($target eq 'tex') { - return '\vskip 0 mm \noindent'; + &Apache::lonxml::get_all_text("/postanswerdate",$parser); } return ''; }