--- loncom/homework/chemresponse.pm 2008/12/22 15:05:49 1.85 +++ loncom/homework/chemresponse.pm 2013/05/03 16:29:40 1.92 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # chemical equation style response # -# $Id: chemresponse.pm,v 1.85 2008/12/22 15:05:49 raeburn Exp $ +# $Id: chemresponse.pm,v 1.92 2013/05/03 16:29:40 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -116,11 +116,11 @@ CHEMJS 'bgcolor' => '#FFFFFF',}); my $end_page = &Apache::loncommon::end_page({'js_ready' => 1,}); - + my $java_not_enabled=&Apache::lonhtmlcommon::java_not_enabled(); my $body=< -
+
@@ -143,7 +143,7 @@ $js
-You have to enable Java and JavaScript on your machine. +$java_not_enabled $molecule
@@ -165,7 +165,7 @@ CHEMPAGE if (defined($shown_text)) { $display=&mt($shown_text); } my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; my $function = - 'LONCAPA_draw_molecule_'.&Apache::lonhtmlcommon::get_uniq_name(); + 'LONCAPA_draw_molecule_'.&get_uniq_name(); my $result=< function $function() { @@ -176,8 +176,14 @@ CHEMPAGE editor.focus(); } -$display CHEMINPUT + if ($shown_text eq '') { + $result .=<$display +PENCIL + } else { + $result .= ''; + } return $result; } sub jme_img { @@ -203,30 +209,19 @@ sub start_organicresponse { } elsif ($target eq 'web') { my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, $safeeval); - if ( &Apache::response::show_answer() && $jmeanswer ne '') { - my $options=&Apache::lonxml::get_param('options',$parstack, - $safeeval); - my $width=&Apache::lonxml::get_param('width',$parstack, - $safeeval); - my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack, - $safeeval); - $result.=&jme_img($jmeanswer,$answers[0],$width,$options); - } else { - 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, + if (&Apache::response::show_answer()) { + my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, + $safeeval); + if ($jmeanswer ne '') { + my $options=&Apache::lonxml::get_param('options',$parstack, + $safeeval); + my $width=&Apache::lonxml::get_param('width',$parstack, $safeeval); - } - my $options=&Apache::lonxml::get_param('options',$parstack, - $safeeval); - my $shown_text; - if (&Apache::response::show_answer()) { - $shown_text="Show Your Last Answer"; - } - #stift $result=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule, -# $options,$shown_text); + my (@answers)=&Apache::lonxml::get_param_var('answer',$parstack, + $safeeval); + $result.=&jme_img($jmeanswer,$answers[0],$width,$options); + } + } else { $result.= ''; } } elsif ($target eq 'edit') { @@ -246,7 +241,7 @@ sub start_organicresponse { $result .=&Apache::edit::text_arg('Correct Answer:','answer', $token,40); $result .='
'; - $result .=&Apache::edit::text_arg('JME string of the answer (automatically updated when using the Draw Molecule button):', + $result .=&Apache::edit::text_arg('JME string of the answer - automatically updated by "Insert Answer" in the JME pop-up (click pencil):', 'jmeanswer',$token); my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, $safeeval); @@ -309,9 +304,17 @@ sub end_organicresponse { $ad='INCORRECT'; } } - if ($ad && $Apache::lonhomework::type eq 'survey') { - $ad='SUBMITTED'; - } + if ($ad) { + if ($Apache::lonhomework::type eq 'survey') { + $ad='SUBMITTED'; + } elsif ($Apache::lonhomework::type eq 'surveycred') { + $ad='SUBMITTED_CREDIT'; + } elsif ($Apache::lonhomework::type eq 'anonsurvey') { + $ad='ANONYMOUS'; + } elsif ($Apache::lonhomework::type eq 'anonsurveycred') { + $ad='ANONYMOUS_CREDIT'; + } + } &Apache::response::handle_previous(\%previous,$ad); $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad; $Apache::lonhomework::results{"resource.$partid.$id.molecule"}=$env{"form.MOLECULE_$id"}; @@ -334,21 +337,29 @@ sub end_organicresponse { if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - &Apache::lonxml::increment_counter(&Apache::response::repetition(), - "$partid.$id"); # part.response + my $repetition = &Apache::response::repetition(); + &Apache::lonxml::increment_counter($repetition,"$partid.$id"); # part.response if ($target eq 'analyze') { $Apache::lonhomework::analyze{"$partid.$id.type"} = 'organicresponse'; push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id"); &Apache::lonhomework::set_bubble_lines(); } } - if (($target eq 'web' ) && ($Apache::lonhomework::type ne 'exam') && ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')){ - my $options=&Apache::lonxml::get_param('options',$parstack, - $safeeval); - my $shown_text; - if (&Apache::response::show_answer()) { + if ($target eq 'web' ) { + my ($showpencil,$shown_text); + if ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') { + $showpencil = 1; + } elsif (&Apache::response::show_answer()) { + my $jmeanswer=&Apache::lonxml::get_param('jmeanswer',$parstack, $safeeval); + if ($jmeanswer eq '') { + $showpencil = 1; $shown_text="Show Your Last Answer"; } + } + if ($showpencil) { + my $options=&Apache::lonxml::get_param('options',$parstack, + $safeeval); + my $molecule; if (defined($Apache::lonhomework::history{"resource.$partid.$id.molecule"})) { $molecule=$Apache::lonhomework::history{"resource.$partid.$id.molecule"}; @@ -356,8 +367,9 @@ sub end_organicresponse { $molecule=&Apache::lonxml::get_param('molecule',$parstack, $safeeval); } - $result.=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule, - $options,$shown_text); + $result.=&separate_jme_window("HWVAL_$id","MOLECULE_$id",$molecule, + $options,$shown_text); + } } &Apache::response::end_response(); return $result; @@ -405,7 +417,8 @@ sub start_organicstructure { $id=&escape($id); &Apache::lonxml::register_ssi("/cgi-bin/convertjme.pl?$id"); if ($options =~ /border/) { $result.= '\fbox{'; } - $result .= '\graphicspath{{/home/httpd/perl/tmp/}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}'; + $result .= '\graphicspath{{'.LONCAPA::tempdir(). + '}}\includegraphics[width='.$texwidth.' mm]{'.$filename.'.eps}'; if ($options =~ /border/) { $result.= '} '; } } elsif ($target eq 'edit') { $result .=&Apache::edit::tag_start($target,$token); @@ -554,9 +567,17 @@ sub end_reactionresponse { $ad='INCORRECT'; } } - if ($ad && $Apache::lonhomework::type eq 'survey') { - $ad='SUBMITTED'; - } + if ($ad) { + if ($Apache::lonhomework::type eq 'survey') { + $ad='SUBMITTED'; + } elsif ($ad && $Apache::lonhomework::type eq 'surveycred') { + $ad='SUBMITTED_CREDIT'; + } elsif ($ad && $Apache::lonhomework::type eq 'anonsurvey') { + $ad='ANONYMOUS'; + } elsif ($ad && $Apache::lonhomework::type eq 'anonsurveycred') { + $ad='ANONYMOUS_CREDIT'; + } + } &Apache::response::handle_previous(\%previous,$ad); $Apache::lonhomework::results{"resource.$partid.$id.awarddetail"}=$ad; } @@ -578,7 +599,8 @@ sub end_reactionresponse { if ($target eq 'grade' || $target eq 'web' || $target eq 'answer' || $target eq 'tex' || $target eq 'analyze') { - &Apache::lonxml::increment_counter(&Apache::response::repetition(), "$partid.$id"); + my $repetition = &Apache::response::repetition(); + &Apache::lonxml::increment_counter($repetition,"$partid.$id"); if ($target eq 'analyze') { $Apache::lonhomework::analyze{"$partid.$id.type"} = 'reactionresponse'; push (@{ $Apache::lonhomework::analyze{"parts"} },"$partid.$id"); @@ -622,5 +644,11 @@ sub end_chem { return $result; } +my $uniq=0; +sub get_uniq_name { + $uniq++; + return 'uniquename'.$uniq; +} + 1; __END__