--- loncom/homework/chemresponse.pm 2021/04/07 22:16:03 1.100 +++ loncom/homework/chemresponse.pm 2021/12/24 11:07:42 1.101 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # chemical equation style response # -# $Id: chemresponse.pm,v 1.100 2021/04/07 22:16:03 raeburn Exp $ +# $Id: chemresponse.pm,v 1.101 2021/12/24 11:07:42 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -630,6 +630,40 @@ sub end_organicstructure { return $result; } +sub edit_reaction_button { + my ($id,$field,$reaction)=@_; + my $id_es=&escape($id); + my $field_es=&escape($field); + my $reaction_es=&escape($reaction); + my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); + my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'}; + my $display=&mt('Edit Answer'); + my $start_page = + &Apache::loncommon::start_page('LON-CAPA Reaction Editor',undef, + {'frameset' => 1, + 'js_ready' => 1, + 'add_entries' => { + 'rows' => "30%,*", + 'border' => "0",}},); + my $end_page = + &Apache::loncommon::end_page({'frameset' => 1, + 'js_ready' => 1}); + my $result=< +// + +$display +EDITREACTION + return $result; +} + sub reaction_preview { my ($field, $reaction) = @_; @@ -682,11 +716,20 @@ sub start_reactionresponse { $safeeval); $result .=''. &Apache::edit::text_arg('Answer:','answer',$token,40); - $result .= &reaction_preview(&Apache::edit::html_element_name('answer'), $answer).''; + my $inline_chem = &use_inline_chem(); + if ($inline_chem) { + $result .= &reaction_preview(&Apache::edit::html_element_name('answer'), $answer).''; + } else { + $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 Reaction:','initial',$token,40); - $result .= &reaction_preview(&Apache::edit::html_element_name('initial'), $initial).''; + if ($inline_chem) { + $result .= &reaction_preview(&Apache::edit::html_element_name('initial'), $initial).''; + } else { + $result .=&edit_reaction_button($id,&Apache::edit::html_element_name('initial'),$initial).''; + } $result .=&Apache::edit::end_row().&Apache::edit::start_spanning_row(); } elsif ($target eq 'modified') { my $constructtag=&Apache::edit::get_new_args($token,$parstack, @@ -774,12 +817,38 @@ sub end_reactionresponse { if (($target eq 'web') && ($Apache::lonhomework::type ne 'exam') && ($status eq 'CAN_ANSWER')) { my $reaction=$Apache::lonhomework::history{"resource.$partid.$id.submission"}; if ($reaction eq '') { $reaction=&Apache::lonxml::get_param('initial',$parstack,$safeeval); } - $result .= &reaction_preview("HWVAL_$id", $reaction); + if (&use_inline_chem()) { + $result .= &reaction_preview("HWVAL_$id", $reaction); + } else { + $result.=&edit_reaction_button($id,"HWVAL_$id",$reaction); + } } &Apache::response::end_response(); return $result; } +sub use_inline_chem { + my $inline_chem = 1; + if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) { + if (exists($env{'course.'.$env{'request.course.id'}.'.inline_chem'})) { + if ($env{'course.'.$env{'request.course.id'}.'.inline_chem'} eq '0') { + $inline_chem = 0; + } + } else { + my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'}); + if ($domdefs{'inline_chem'} eq '0') { + $inline_chem = 0; + } + } + } else { + my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'}); + if ($domdefs{'inline_chem'} eq '0') { + $inline_chem = 0; + } + } + return $inline_chem; +} + sub format_prior_response_reaction { my ($mode,$answer) =@_; return ''.