--- loncom/homework/chemresponse.pm 2004/10/21 06:37:36 1.42 +++ loncom/homework/chemresponse.pm 2005/02/17 21:42:37 1.46 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # chemical equation style response # -# $Id: chemresponse.pm,v 1.42 2004/10/21 06:37:36 albertel Exp $ +# $Id: chemresponse.pm,v 1.46 2005/02/17 21:42:37 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,7 +32,7 @@ use Apache::lonxml; use Apache::lonnet; BEGIN { - &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse')); + &Apache::lonxml::register('Apache::chemresponse',('organicresponse','organicstructure','reactionresponse','chem')); } sub chem_standard_order { @@ -136,17 +136,34 @@ sub start_organicresponse { if ($target eq 'meta') { $result=&Apache::response::meta_package_write('organicresponse'); } elsif ($target eq 'web') { - my $molecule; - if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) { - $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"}; + if ( &Apache::response::show_answer() ) { + my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, + $safeeval); + my $options=&Apache::lonxml::get_param('options',$parstack, + $safeeval); + my $width=&Apache::lonxml::get_param('width',$parstack, + $safeeval); + my $id=&Apache::loncommon::get_cgi_id(); + $result=" + &Apache::lonnet::escape($jmeanswer), + 'cgi.'.$id.'.PNG' => 1, + 'cgi.'.$id.'.WIDTH' => $width); } else { - $molecule=&Apache::lonxml::get_param('molecule',$parstack, - $safeeval); + my $molecule; + if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) { + $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"}; + } else { + $molecule=&Apache::lonxml::get_param('molecule',$parstack, + $safeeval); + } + my $options=&Apache::lonxml::get_param('options',$parstack, + $safeeval); + $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options); + $result.= ''; } - my $options=&Apache::lonxml::get_param('options',$parstack, - $safeeval); - $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule,$options); - $result.= ''; } elsif ($target eq 'edit') { $result .=&Apache::edit::tag_start($target,$token); my $options=&Apache::lonxml::get_param('options',$parstack, @@ -178,12 +195,14 @@ sub start_organicresponse { ['reaction','Is a reaction'], ['number','Able to number atoms'] ], ,$token); + $result .=&Apache::edit::text_arg('Width of correct answer image:', + 'width',$token,10); $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, $safeeval,'molecule', 'answer','jmeanswer', - 'options'); + 'options','width'); if ($constructtag) { $result = &Apache::edit::rebuild_tag($token); } } return $result; @@ -192,7 +211,7 @@ sub start_organicresponse { sub end_organicresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; - if ($target eq 'grade' && defined($ENV{'form.submitted'})) { + if ($target eq 'grade' && &Apache::response::submitted()) { &Apache::response::setup_params($$tagstack[-1],$safeeval); my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { @@ -355,7 +374,7 @@ sub start_reactionresponse { $result .=&edit_reaction_button($id,&Apache::edit::html_element_name('answer'),$answer).''; my $initial=&Apache::lonxml::get_param('initial',$parstack,$safeeval); $result.=''. - &Apache::edit::text_arg('Initial Reation:','initial',$token,40); + &Apache::edit::text_arg('Initial Reaction:','initial',$token,40); $result .=&edit_reaction_button($id,&Apache::edit::html_element_name('initial'),$initial).''; $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); @@ -371,7 +390,7 @@ sub start_reactionresponse { sub end_reactionresponse { my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_; my $result; - if ($target eq 'grade' && defined($ENV{'form.submitted'})) { + if ($target eq 'grade' && &Apache::response::submitted()) { &Apache::response::setup_params($$tagstack[-1],$safeeval); my $response = &Apache::response::getresponse(); if ( $response =~ /[^\s]/) { @@ -412,5 +431,28 @@ sub end_reactionresponse { return $result; } +sub start_chem { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; + my $result = ''; + if ($target eq 'tex' || $target eq 'web') { + &Apache::lonxml::startredirection(); + } + return $result; +} + +sub end_chem { + my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style) = @_; + my $result = ''; + if ($target eq 'tex' || $target eq 'web') { + @Apache::scripttag::parser_env = @_; + if (!$Apache::lonxml::default_homework_loaded) { + &Apache::lonxml::default_homework_load($safeeval); + } + my $innards=&Apache::lonxml::endredirection(); + $result=&Apache::run::run("return &chemparse(q\0$innards\0);",$safeeval); + } + return $result; +} + 1; __END__