--- loncom/xml/lonxml.pm 2007/10/10 00:02:27 1.463 +++ loncom/xml/lonxml.pm 2007/12/05 14:52:15 1.470 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # XML Parser Module # -# $Id: lonxml.pm,v 1.463 2007/10/10 00:02:27 albertel Exp $ +# $Id: lonxml.pm,v 1.470 2007/12/05 14:52:15 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -377,7 +377,7 @@ sub xmlparse { $finaloutput .= join('',@script_var_displays); undef(@script_var_displays); } - + &init_state(); if ($env{'form.return_only_error_and_warning_counts'}) { return "$errorcount:$warningcount"; } @@ -631,6 +631,24 @@ sub callsub { return $currentstring; } +{ + my %state; + + sub init_state { + undef(%state); + } + + sub set_state { + my ($key,$value) = @_; + $state{$key} = $value; + return $value; + } + sub get_state { + my ($key) = @_; + return $state{$key}; + } +} + sub setup_globals { my ($request,$target)=@_; $Apache::lonxml::request=$request; @@ -640,6 +658,8 @@ sub setup_globals { $Apache::lonxml::usestyle=1; &init_counter(); &clear_bubble_lines_for_part(); + &init_state(); + &set_state('target',$target); @Apache::lonxml::pwd=(); @Apache::lonxml::extlinks=(); @script_var_displays=(); @@ -1047,28 +1067,28 @@ Increments the internal counter environm Optional Arguments: $increment - amount to increment by (defaults to 1) Also 1 if the value is negative or zero. - $part_id - optional part id.. during analysis, this - indicates whic part of a problem is being - counted. + $part_response - A concatenation of the part and response id + identifying exactly what is being 'answered'. + =cut sub increment_counter { - my ($increment, $part_id) = @_; + my ($increment, $part_response) = @_; if (!defined($increment) || $increment le 0) { $increment = 1; } $Apache::lonxml::counter += $increment; - # If the caller supplied the part_id parameter, + # If the caller supplied the response_id parameter, # Maintain its counter.. creating if necessary. - if(defined($part_id)) { - if (!defined($Apache::lonxml::counters_per_part{$part_id})) { - $Apache::lonxml::counters_per_part{$part_id} = 0; + if (defined($part_response)) { + if (!defined($Apache::lonxml::counters_per_part{$part_response})) { + $Apache::lonxml::counters_per_part{$part_response} = 0; } - $Apache::lonxml::counters_per_part{$part_id} += $increment; - my $new_value = $Apache::lonxml::counters_per_part{$part_id}; + $Apache::lonxml::counters_per_part{$part_response} += $increment; + my $new_value = $Apache::lonxml::counters_per_part{$part_response}; } $Apache::lonxml::counter_changed=1; @@ -1129,22 +1149,21 @@ sub store_counter { =pod -=item bubble_lines_for_part(part_id) +=item bubble_lines_for_part(part_response) Returns the number of lines required to get a response for -$part_id (this is just $Apache::lonxml::counters_per_part{$part_id} +$part_response (this is just $Apache::lonxml::counters_per_part{$part_response} =cut sub bubble_lines_for_part { - my ($part_id) = @_; + my ($part_response) = @_; - if (!defined($Apache::lonxml::counters_per_part{$part_id})) { + if (!defined($Apache::lonxml::counters_per_part{$part_response})) { return 0; } else { - return $Apache::lonxml::counters_per_part{$part_id}; + return $Apache::lonxml::counters_per_part{$part_response}; } - } =pod @@ -1163,7 +1182,7 @@ sub clear_bubble_lines_for_part { =pod -=item set_bubble_lines(part_id, value) +=item set_bubble_lines(part_response, value) If there is a problem part, that for whatever reason requires bubble lines that are not @@ -1173,9 +1192,9 @@ analysis to set its hash value explicitl =cut sub set_bubble_lines { - my ($part_id, $value) = @_; + my ($part_response, $value) = @_; - $Apache::lonxml::counters_per_part{$part_id} = $value; + $Apache::lonxml::counters_per_part{$part_response} = $value; } =pod @@ -1457,7 +1476,7 @@ SIMPLECONTENT sub inserteditinfo { - my ($filecontents,$filetype)=@_; + my ($filecontents, $filetype, $filename)=@_; $filecontents = &HTML::Entities::encode($filecontents,'<>&"'); # my $editheader='Edit below
'; my $xml_help = ''; @@ -1495,7 +1514,6 @@ FULLPAGE } else { $initialize.=(< -$addbuttons function initDocument() { resize_textarea('$textarea_id','LC_aftertextarea'); } @@ -1510,38 +1528,41 @@ FULLPAGE $xml_help=&Apache::loncommon::helpLatexCheatsheet(); } - my $cleanbut = ''; - my $titledisplay=&display_title(); my %lt=&Apache::lonlocal::texthash('st' => 'Save and Edit', 'vi' => 'Save and View', 'dv' => 'Discard Edits and View', 'un' => 'undo', 'ed' => 'Edit'); - my $buttons=(< -
- - -BUTTONS - $buttons.=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); + my $spelllink .=&Apache::lonhtmlcommon::spelllink('xmledit','filecont'); my $textarea_events = &Apache::edit::element_change_detection(); my $form_events = &Apache::edit::form_change_detection(); my $editfooter=(<
-$xml_help - -$buttons
- -
-
$buttons -
-$titledisplay -
+
+ +
+ $filename + + $xml_help +
+
+ + + $spelllink +
+
+ + +
+
+ +
+
+ $titledisplay +
ENDFOOTER @@ -1671,11 +1692,12 @@ ENDNOTFOUND unless ($env{'request.state'} eq 'published') { if ($env{'form.editmode'} && (!($env{'form.viewmode'})) && (!($env{'form.discardview'}))) { - my ($edit_info, $add_to_onload, $add_to_onresize)= - &inserteditinfo($filecontents,$filetype); - my $displayfile=$request->uri; $displayfile=~s/^\/[^\/]*//; + + my ($edit_info, $add_to_onload, $add_to_onresize)= + &inserteditinfo($filecontents,$filetype,$displayfile); + my %options = ('add_entries' => {'onresize' => $add_to_onresize, @@ -1691,9 +1713,7 @@ ENDNOTFOUND my $start_page = &Apache::loncommon::start_page(undef,$js, \%options); $result=$start_page. - &Apache::lonxml::message_location().'

'. - $displayfile. - '

'. + &Apache::lonxml::message_location(). $edit_info. &Apache::loncommon::end_page(); }