|
@@ -151,14 +304,21 @@ $js
$java_not_enabled
$molecule
-
-JME Editor courtesy of Peter Ertl, Novartis
+
+JME Editor courtesy of Peter Ertl, Novartis
+CHEMPAGE
+ }
+ $body .= <
$insert_answer
-
+
+
CHEMPAGE
@@ -169,25 +329,28 @@ CHEMPAGE
my $display=&mt('Draw Molecule');
if (defined($shown_text)) { $display=&mt($shown_text); }
my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
- my $function =
+ my $function =
'LONCAPA_draw_molecule_'.&get_uniq_name();
my $result=<
function $function() {
editor=window.open($nothing,'jmeedit','width=500,height=500,menubar=no,scrollbars=no,resizable=yes');
- editor.$docopen;
- editor.document.write('$start_page $body $end_page');
- editor.document.close();
- editor.focus();
+ if (editor) {
+ editor.$docopen;
+ editor.document.write('$start_page $body $resizejs $end_page');
+ editor.document.close();
+ editor.focus();
+ }
}
CHEMINPUT
+ my $jscall = "javascript:$function();void(0);";
if ($shown_text eq '') {
- $result .=<
+ $result .=<
PENCIL
} else {
- $result .= '';
+ $result .= '';
}
return $result;
}
@@ -475,24 +638,24 @@ sub edit_reaction_button {
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 $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=<
//
@@ -501,6 +664,35 @@ EDITREACTION
return $result;
}
+sub reaction_preview {
+ my ($field, $reaction) = @_;
+
+ # NOTE: $reaction should be encoded if the document was sent as XHTML
+ $reaction =~ s/"//g;
+ my $result=<
+
+JS_PREVIEW
+ return $result;
+}
+
sub start_reactionresponse {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval,$style)=@_;
my $result;
@@ -524,11 +716,20 @@ sub start_reactionresponse {
$safeeval);
$result .=''.
&Apache::edit::text_arg('Answer:','answer',$token,40);
- $result .=&edit_reaction_button($id,&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 .=&edit_reaction_button($id,&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,
@@ -616,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.=&edit_reaction_button($id,"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 ''.
|