[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /homework inputtags.pm

raeburn raeburn at source.lon-capa.org
Fri Oct 30 07:33:07 EDT 2015


raeburn		Fri Oct 30 11:33:07 2015 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/homework	inputtags.pm 
  Log:
  - For 2.11
    - Backport 1.338, 1.339
  
  
Index: loncom/homework/inputtags.pm
diff -u loncom/homework/inputtags.pm:1.333.2.2 loncom/homework/inputtags.pm:1.333.2.3
--- loncom/homework/inputtags.pm:1.333.2.2	Tue Apr 21 22:52:44 2015
+++ loncom/homework/inputtags.pm	Fri Oct 30 11:33:07 2015
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # input  definitons
 #
-# $Id: inputtags.pm,v 1.333.2.2 2015/04/21 22:52:44 raeburn Exp $
+# $Id: inputtags.pm,v 1.333.2.3 2015/10/30 11:33:07 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 = $itemid.'_'.$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)) {
@@ -1902,6 +1908,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__
 




More information about the LON-CAPA-cvs mailing list