Update codemirror to recent version 0.9.4
authorsteffenk <steffenk@709f56b5-9817-0410-a4d7-c38de5d9e867>
Wed, 23 Feb 2011 13:55:05 +0000 (13:55 +0000)
committersteffenk <steffenk@709f56b5-9817-0410-a4d7-c38de5d9e867>
Wed, 23 Feb 2011 13:55:05 +0000 (13:55 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10600 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/contrib/codemirror/js/codemirror.js
typo3/contrib/codemirror/js/editor.js
typo3/contrib/codemirror/js/select.js

index 1f1e57c..cb60264 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,7 @@
 
 2011-02-23  Steffen Kamper  <steffen@typo3.org>
 
+       * Update codemirror to recent version 0.9.4
        * Merge of extension manager for 4.5.0 - see ChangeLog in em for details
        * Fixed bug #17520: Pagetree - Locked records are not indicated anymore (Thanks to Stefan Galinski)
        * Fixed bug #17702: Directly open "inline edit" of page title after creating a new page with drag and drop in the pagetree (Thanks to Stefan Galinski)
index 63751ae..1e5dceb 100644 (file)
@@ -99,7 +99,8 @@ var CodeMirror = (function(){
     if (typeof options.stylesheet == "string")
       options.stylesheet = [options.stylesheet];
 
-    var html = ["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head>"];
+    var sp = " spellcheck=\"" + (options.disableSpellcheck ? "false" : "true") + "\"";
+    var html = ["<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html" + sp + "><head>"];
     // Hack to work around a bunch of IE8-specific problems.
     html.push("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\"/>");
     var queryStr = options.noScriptCaching ? "?nocache=" + new Date().getTime().toString(16) : "";
@@ -110,8 +111,7 @@ var CodeMirror = (function(){
       if (!/^https?:/.test(file)) file = options.path + file;
       html.push("<script type=\"text/javascript\" src=\"" + file + queryStr + "\"><" + "/script>");
     });
-    html.push("</head><body style=\"border-width: 0;\" class=\"editbox\" spellcheck=\"" +
-              (options.disableSpellcheck ? "false" : "true") + "\"></body></html>");
+    html.push("</head><body style=\"border-width: 0;\" class=\"editbox\"" + sp + "></body></html>");
     return html.join("");
   }
 
@@ -532,7 +532,7 @@ var CodeMirror = (function(){
         area.form.submit();
         area.form.submit = wrapSubmit;
       }
-      area.form.submit = wrapSubmit;
+      try {area.form.submit = wrapSubmit;} catch(e){}
     }
 
     function insert(frame) {
@@ -550,7 +550,7 @@ var CodeMirror = (function(){
       area.parentNode.removeChild(mirror.wrapping);
       area.style.display = "";
       if (area.form) {
-        area.form.submit = realSubmit;
+        try {area.form.submit = realSubmit;} catch(e) {}
         if (typeof area.form.removeEventListener == "function")
           area.form.removeEventListener("submit", updateField, false);
         else
index fddd093..f5092ce 100644 (file)
@@ -800,7 +800,7 @@ var Editor = (function(){
         var start = select.selectionTopNode(this.container, true),
             end = select.selectionTopNode(this.container, false);
         if (start === false || end === false) return;
-        this.indentRegion(start, end, direction);
+        this.indentRegion(start, end, direction, true);
       }
     },
 
@@ -1022,7 +1022,7 @@ var Editor = (function(){
 
         // Ask the lexical context for the correct indentation, and
         // compute how much this differs from the current indentation.
-        if (direction != null && this.options.tabMode == "shift")
+        if (direction != null && this.options.tabMode != "indent")
           newIndent = direction ? curIndent + indentUnit : Math.max(0, curIndent - indentUnit)
         else if (start)
           newIndent = start.indentation(nextChars, curIndent, direction, firstText);
@@ -1087,7 +1087,7 @@ var Editor = (function(){
     // re-indented, when nothing is selected, the line with the cursor
     // is re-indented.
     handleTab: function(direction) {
-      if (this.options.tabMode == "spaces")
+      if (this.options.tabMode == "spaces" && !select.somethingSelected())
         select.insertTabAtCursor();
       else
         this.reindentSelection(direction);
@@ -1284,7 +1284,7 @@ var Editor = (function(){
 
     // Indent all lines whose start falls inside of the current
     // selection.
-    indentRegion: function(start, end, direction) {
+    indentRegion: function(start, end, direction, selectAfter) {
       var current = (start = startOfLine(start)), before = start && startOfLine(start.previousSibling);
       if (!isBR(end)) end = endOfLine(end, this.container);
       this.addDirtyNode(start);
@@ -1296,7 +1296,8 @@ var Editor = (function(){
         before = current;
         current = next;
       } while (current != end);
-      select.setCursorPos(this.container, {node: start, offset: 0}, {node: end, offset: 0});
+      if (selectAfter)
+        select.setCursorPos(this.container, {node: start, offset: 0}, {node: end, offset: 0});
     },
 
     // Find the node that the cursor is in, mark it as dirty, and make
index 64261fa..79c3d54 100644 (file)
@@ -164,7 +164,9 @@ var select = {};
   if (select.ie_selection) {
     function selRange() {
       var sel = document.selection;
-      return sel && (sel.createRange || sel.createTextRange)();
+      if (!sel) return null;
+      if (sel.createRange) return sel.createRange();
+      else return sel.createTextRange();
     }
 
     function selectionNode(start) {