[LON-CAPA-cvs] cvs: loncom /homework inputtags.pm response.pm /homework/caparesponse caparesponse.pm
raeburn
raeburn at source.lon-capa.org
Thu Oct 29 23:49:55 EDT 2015
raeburn Fri Oct 30 03:49:55 2015 EDT
Modified files:
/loncom/homework inputtags.pm response.pm
/loncom/homework/caparesponse caparesponse.pm
Log:
- Bug 6802: support Math Previewer for all textboxes in formularesponse
with multiple answers.
- Move &edit_mathresponse_button() from response.pm to inputtags.pm
- Use HWVAL_$input_id instead of HWVAL_$partid_$responseid as unique
id attribute for each <input> tag created by a LON-CAPA <textline />.
-------------- next part --------------
Index: loncom/homework/inputtags.pm
diff -u loncom/homework/inputtags.pm:1.337 loncom/homework/inputtags.pm:1.338
--- loncom/homework/inputtags.pm:1.337 Mon Oct 5 02:35:40 2015
+++ loncom/homework/inputtags.pm Fri Oct 30 03:49:47 2015
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# input definitons
#
-# $Id: inputtags.pm,v 1.337 2015/10/05 02:35:40 raeburn Exp $
+# $Id: inputtags.pm,v 1.338 2015/10/30 03:49:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -460,17 +460,23 @@
}
my $name = 'HWVAL_'.$id;
my $itemid = 'HWVAL_'.$partid.'_'.$id;
+ my $input_tag_id = 'HWVAL_'.$input_id;
if ($Apache::inputtags::status[-1] eq 'CANNOT_ANSWER') {
$name = "none";
}
$result.= '<input onkeydown="javascript:setSubmittedPart(\''.$partid.'\');"'
- . ' onfocus="javascript:disableAutoComplete(\''.$itemid.'\');"'
+ . ' onfocus="javascript:disableAutoComplete(\''.$input_tag_id.'\');"'
. ' type="text" '.$readonly.' name="'. $name . '"'
- . ' id="' . $itemid . '"'
+ . ' id="' . $input_tag_id . '"'
. ' value="'. $oldresponse.'"'
. ' class="LC_textline spellchecked" size="'.$size.'"'.$maxlength.' />';
$result .= &spellcheck_onblur($itemid, $spellcheck);
+ if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER') &&
+ (($tagstack->[-2] eq 'formularesponse') || ($tagstack->[-2] eq 'mathresponse')) &&
+ (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {
+ $result.=&edit_mathresponse_button($input_tag_id);
+ }
}
if ($Apache::lonhomework::type eq 'exam'
&& &needs_exam_box($tagstack)) {
@@ -1914,6 +1920,118 @@
return \@spelllangs;
}
+sub edit_mathresponse_button {
+ my ($field) = @_;
+ my $eqneditor = 'lcmath';
+ if ($env{'browser.type'} eq 'safari') {
+ if ($env{'browser.os'} eq 'mac') {
+ my ($prefix,$version) = ($env{'browser.version'} =~ /^(\d*)(\d{3})\./);
+ if ($env{'browser.mobile'}) {
+ if (($version < 531) || (($prefix eq '') && ($version < 533))) {
+ $eqneditor = '';
+ }
+ } elsif ($version < 533) {
+ $eqneditor = 'dragmath';
+ }
+ } elsif ($env{'browser.os'} eq 'win') {
+ if ($env{'browser.version'} < 533) {
+ $eqneditor = 'dragmath';
+ }
+ }
+ } elsif ($env{'browser.type'} eq 'explorer') {
+ if ($env{'browser.version'} < 9) {
+ $eqneditor = 'dragmath';
+ }
+ } elsif ($env{'browser.type'} eq 'mozilla') {
+ if ($env{'browser.version'} < 5) {
+ $eqneditor = 'dragmath';
+ } else {
+ if ($env{'browser.info'} =~ /^firefox\-([\d\.]+)/) {
+ my $firefox = $1;
+ if ($firefox < 4) {
+ $eqneditor = 'dragmath';
+ }
+ }
+ }
+ } elsif ($env{'browser.type'} eq 'chrome') {
+ if ($env{'browser.version'} < 5) {
+ $eqneditor = 'dragmath';
+ }
+ } elsif ($env{'browser.type'} eq 'opera') {
+ if ($env{'browser.version'} < 12) {
+ $eqneditor = 'dragmath';
+ }
+ }
+ if ($eqneditor eq 'lcmath') {
+ if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {
+ if (exists($env{'course.'.$env{'request.course.id'}.'.uselcmath'})) {
+ if ($env{'course.'.$env{'request.course.id'}.'.uselcmath'} eq '0') {
+ $eqneditor = 'dragmath';
+ }
+ } else {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
+ if ($domdefs{'uselcmath'} eq '0') {
+ $eqneditor = 'dragmath';
+ }
+ }
+ } else {
+ my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
+ if ($domdefs{'uselcmath'} eq '0') {
+ $eqneditor = 'dragmath';
+ }
+ }
+ }
+ if ($eqneditor eq 'dragmath') {
+ # DragMath applet
+ my $button=&mt('Edit Answer');
+# my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');
+ my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
+ return(<<ENDFORMULABUTTON);
+<script type="text/javascript" language="JavaScript">
+function LC_mathedit_${field} (LCtextline) {
+ thenumber = LCtextline;
+ var thedata = '';
+ if (document.getElementById(LCtextline)) {
+ thedata = document.getElementById(LCtextline).value;
+ }
+ newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");
+}
+</script>
+<a href="javascript:LC_mathedit_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>
+ENDFORMULABUTTON
+ } elsif ($eqneditor eq 'lcmath') {
+ # LON-CAPA math equation editor
+ my $mathjaxjs;
+ unless (lc(&Apache::lontexconvert::tex_engine()) eq 'mathjax') {
+ $mathjaxjs = <<"MATHJAX_SCRIPT";
+var mathjaxscript = document.createElement("script");
+ mathjaxscript.type = "text/javascript";
+ mathjaxscript.src = "/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
+ document.body.appendChild(mathjaxscript);
+MATHJAX_SCRIPT
+ }
+ return(<<EQ_EDITOR_SCRIPT);
+<script type="text/javascript">
+ var LCmathField = document.getElementById('${field}');
+ LCmathField.className += ' math'; // note the space
+ LCmathField.setAttribute('data-implicit_operators', 'true');
+ var LCMATH_started;
+ if (typeof LCMATH_started === 'undefined') {
+ $mathjaxjs
+ LCMATH_started = true;
+ var script = document.createElement("script");
+ script.type = "text/javascript";
+ script.src = "/adm/LC_math_editor/LC_math_editor.min.js";
+ document.body.appendChild(script);
+ window.addEventListener('load', function(e) {
+ LCMATH.initEditors();
+ }, false);
+ }
+</script>
+EQ_EDITOR_SCRIPT
+ }
+}
+
1;
__END__
Index: loncom/homework/response.pm
diff -u loncom/homework/response.pm:1.243 loncom/homework/response.pm:1.244
--- loncom/homework/response.pm:1.243 Mon Mar 9 16:19:54 2015
+++ loncom/homework/response.pm Fri Oct 30 03:49:47 2015
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# various response type definitons response definition
#
-# $Id: response.pm,v 1.243 2015/03/09 16:19:54 raeburn Exp $
+# $Id: response.pm,v 1.244 2015/10/30 03:49:47 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -513,6 +513,9 @@
&Apache::lonhomework::set_bubble_lines();
}
}
+ if ($target eq 'web') {
+ &setup_prior_tries_hash(\&format_prior_response_math);
+ }
pop(@Apache::lonxml::namespace);
pop(@Apache::response::custom_answer);
pop(@Apache::response::custom_answer_type);
@@ -575,119 +578,6 @@
return $result;
}
-sub edit_mathresponse_button {
- my ($partid,$id)=@_;
- my $field = 'HWVAL_'.$partid.'_'.$id;
- my $eqneditor = 'lcmath';
- if ($env{'browser.type'} eq 'safari') {
- if ($env{'browser.os'} eq 'mac') {
- my ($prefix,$version) = ($env{'browser.version'} =~ /^(\d*)(\d{3})\./);
- if ($env{'browser.mobile'}) {
- if (($version < 531) || (($prefix eq '') && ($version < 533))) {
- $eqneditor = '';
- }
- } elsif ($version < 533) {
- $eqneditor = 'dragmath';
- }
- } elsif ($env{'browser.os'} eq 'win') {
- if ($env{'browser.version'} < 533) {
- $eqneditor = 'dragmath';
- }
- }
- } elsif ($env{'browser.type'} eq 'explorer') {
- if ($env{'browser.version'} < 9) {
- $eqneditor = 'dragmath';
- }
- } elsif ($env{'browser.type'} eq 'mozilla') {
- if ($env{'browser.version'} < 5) {
- $eqneditor = 'dragmath';
- } else {
- if ($env{'browser.info'} =~ /^firefox\-([\d\.]+)/) {
- my $firefox = $1;
- if ($firefox < 4) {
- $eqneditor = 'dragmath';
- }
- }
- }
- } elsif ($env{'browser.type'} eq 'chrome') {
- if ($env{'browser.version'} < 5) {
- $eqneditor = 'dragmath';
- }
- } elsif ($env{'browser.type'} eq 'opera') {
- if ($env{'browser.version'} < 12) {
- $eqneditor = 'dragmath';
- }
- }
- if ($eqneditor eq 'lcmath') {
- if (($env{'request.course.id'}) && ($env{'request.state'} ne 'construct')) {
- if (exists($env{'course.'.$env{'request.course.id'}.'.uselcmath'})) {
- if ($env{'course.'.$env{'request.course.id'}.'.uselcmath'} eq '0') {
- $eqneditor = 'dragmath';
- }
- } else {
- my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
- if ($domdefs{'uselcmath'} eq '0') {
- $eqneditor = 'dragmath';
- }
- }
- } else {
- my %domdefs = &Apache::lonnet::get_domain_defaults($env{'course.'.$env{'request.course.id'}.'.domain'});
- if ($domdefs{'uselcmath'} eq '0') {
- $eqneditor = 'dragmath';
- }
- }
- }
- if ($eqneditor eq 'dragmath') {
- # DragMath applet
- my $button=&mt('Edit Answer');
-# my $helplink=&Apache::loncommon::help_open_topic('Formula_Editor');
- my $iconpath=$Apache::lonnet::perlvar{'lonIconsURL'};
- return(<<ENDFORMULABUTTON);
-<script type="text/javascript" language="JavaScript">
-function LC_mathedit_${field} (LCtextline) {
- thenumber = LCtextline;
- var thedata = '';
- if (document.getElementById(LCtextline)) {
- thedata = document.getElementById(LCtextline).value;
- }
- newwin = window.open("/adm/dragmath/MaximaPopup.html","","width=565,height=400,resizable");
-}
-</script>
-<a href="javascript:LC_mathedit_${field}('${field}');void(0);"><img class="stift" src="$iconpath/stift.gif" alt="$button" title="$button" /></a>
-ENDFORMULABUTTON
- } elsif ($eqneditor eq 'lcmath') {
- # LON-CAPA math equation editor
- my $mathjaxjs;
- unless (lc(&Apache::lontexconvert::tex_engine()) eq 'mathjax') {
- $mathjaxjs = <<"MATHJAX_SCRIPT";
-var mathjaxscript = document.createElement("script");
- mathjaxscript.type = "text/javascript";
- mathjaxscript.src = "/adm/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
- document.body.appendChild(mathjaxscript);
-MATHJAX_SCRIPT
- }
- return(<<EQ_EDITOR_SCRIPT);
-<script type="text/javascript">
- var LCmathField = document.getElementById('${field}');
- LCmathField.className += ' math'; // note the space
- LCmathField.setAttribute('data-implicit_operators', 'true');
- var LCMATH_started;
- if (typeof LCMATH_started === 'undefined') {
- $mathjaxjs
- LCMATH_started = true;
- var script = document.createElement("script");
- script.type = "text/javascript";
- script.src = "/adm/LC_math_editor/LC_math_editor.min.js";
- document.body.appendChild(script);
- window.addEventListener('load', function(e) {
- LCMATH.initEditors();
- }, false);
- }
-</script>
-EQ_EDITOR_SCRIPT
- }
-}
-
sub end_mathresponse {
my ($target,$token,$tagstack,$parstack,$parser,$safeeval)=@_;
my $result;
@@ -742,15 +632,6 @@
}
}
}
- if ($target eq 'web') {
- &setup_prior_tries_hash(\&format_prior_response_math);
- my $partid = $Apache::inputtags::part;
- my $id = $Apache::inputtags::response[-1];
- if (($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')
- && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {
- $result.=&edit_mathresponse_button($partid,$id);
- }
- }
pop(@Apache::lonxml::namespace);
pop(@Apache::response::custom_answer);
Index: loncom/homework/caparesponse/caparesponse.pm
diff -u loncom/homework/caparesponse/caparesponse.pm:1.255 loncom/homework/caparesponse/caparesponse.pm:1.256
--- loncom/homework/caparesponse/caparesponse.pm:1.255 Tue Dec 30 20:03:15 2014
+++ loncom/homework/caparesponse/caparesponse.pm Fri Oct 30 03:49:55 2015
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# caparesponse definition
#
-# $Id: caparesponse.pm,v 1.255 2014/12/30 20:03:15 raeburn Exp $
+# $Id: caparesponse.pm,v 1.256 2015/10/30 03:49:55 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -642,12 +642,7 @@
}
}
}
- if (($target eq 'web') && ($tag eq 'formularesponse')
- && ($Apache::lonhomework::type ne 'exam') && ($Apache::inputtags::status['-1'] eq 'CAN_ANSWER')
- && (&Apache::lonnet::EXT('resource.'.$partid.'_'.$id.'.turnoffeditor') ne 'yes')) {
- $result.=&Apache::response::edit_mathresponse_button($partid,$id);
- }
-
+
&Apache::response::setup_prior_tries_hash(\&format_prior_response_numerical);
} elsif ($target eq 'edit') {
$result.='</td></tr>'.&Apache::edit::end_table;
More information about the LON-CAPA-cvs
mailing list