]> git.mjollnir.org Git - moodle.git/commitdiff
Merging from stable
authorjulmis <julmis>
Sun, 30 Jul 2006 23:24:43 +0000 (23:24 +0000)
committerjulmis <julmis>
Sun, 30 Jul 2006 23:24:43 +0000 (23:24 +0000)
lib/editor/htmlarea/htmlarea.php

index 9ea3292811da2f80ed539d880ead193a8f38cf60..722eae5a7e565262c2b2ad5b7619697bb7a53e14 100644 (file)
@@ -1470,26 +1470,21 @@ HTMLArea.prototype._createLink = function(link) {
         }
         var a = link;
         if (!a) {
-            editor._doc.execCommand("createlink", false, param.f_href);
-            a = editor.getParentElement();
+            // Since startContainer check does not work
+            // very well in Moz use just insertHTML.
             var sel = editor._getSelection();
             var range = editor._createRange(sel);
-            /// Removed by PJ and Martin, Moodle bug #1455
-            /// Removed uncommenting since it prevents this function
-            /// to read given attributes for <a> tag such as target, title etc...
-            if (!HTMLArea.is_ie) {
-                try {
-                    a = range.startContainer;
-                    if (!/^a$/i.test(a.tagName)) {
-                        a = a.nextSibling;
-                        if ( a == null ) {
-                            a = range.startContainer.parentNode;
-                        }
-                    }
-                } catch (e) {
-                        alert("Send this message to bug tracker: " + e);
-                }
+            var strLink  = '<a href="'+ param.f_href.trim() +'"';
+            if ( param.f_title != "" ) {
+                strLink += ' title="'+ param.f_title.trim() +'"';
             }
+            if ( param.f_target != "" ) {
+                strLink += ' target="'+ param.f_target.trim() +'"';
+            }
+            strLink += '>';
+            strLink += (!HTMLArea.is_ie) ? sel : range.text;
+            strLink += '</a>';
+            editor.insertHTML(strLink);
         } else {
             var href = param.f_href.trim();
             editor.selectNodeContents(a);
@@ -2358,8 +2353,6 @@ HTMLArea.getHTML = function(root, outputRoot, editor) {
         break;      // skip comments, for now.
     }
 
-    // Still not workin' correctly...
-    //return HTMLArea.formathtml(html);
     return html;
 };
 
@@ -2484,54 +2477,3 @@ HTMLArea.getElementById = function(tag, id) {
             return el;
     return null;
 };
-
-HTMLArea.formathtml = function (html) {
-    // Original idea from FCKeditor
-    // http://www.fckeditor.net/
-    // by Frederico Caldeira Knabben
-
-    var indentchar = '    ';
-    var format     = new Object();
-    format.regex   = new Object();
-
-    format.regex.tagopen  = /<[^\/](P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^>]*>/gi ;
-    format.regex.tagclose = /<\/{1}(P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|TITLE|META|LINK|BASE|SCRIPT|LINK|TD|AREA|OPTION)[^>]*>/gi ;
-    format.regex.newlines = /<(BR|HR)[^>]>/gi ;
-    format.regex.tagsmain = /<\/?(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR)[^>]*>/gi ;
-    format.regex.splitter = /\s*\n+\s*/g ;
-    format.regex.notouchy = /<\/?(span|font)[^>]*>/gi;
-
-    format.regex.indent = /^<(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ \/>]/i ;
-    format.regex.unindent = /^<\/(HTML|HEAD|BODY|FORM|TABLE|TBODY|THEAD|TR|UL|OL)[ >]/i ;
-    format.regex.inremove = new RegExp( indentchar );
-
-    //var formatted  = html.replace( format.regex.tagopen, '\n$&' );
-    //formatted      = formatted.replace( format.regex.tagclose, '$&\n' );
-    //formatted      = formatted.replace( format.regex.taglines, '$&\n' );
-    //formatted      = formatted.replace( format.regex.tagsmain, '\n$&\n' );
-
-    var indentation = '';
-    var tolines = html.split(format.regex.splitter);
-    var formatted = '';
-
-    for (var i = 0; i < tolines.length; i++) {
-        var line = tolines[i];
-        if (line.length < 1) {
-            continue;
-        }
-        if (format.regex.unindent.test(line) && !format.regex.notouchy.test(line)) {
-            indentation = indentation.replace(format.regex.inremove, '') ;
-        }
-
-        line = !format.regex.notouchy.test(line) ? line.replace(format.regex.tagopen, '\n$&') : line;
-        line = !format.regex.notouchy.test(line) ? line.replace(format.regex.tagclose, '$&\n'): line;
-        line = !format.regex.notouchy.test(line) ? line.replace(format.regex.tagsmain, '$&\n'): line;
-
-        formatted += indentation + line;
-
-        if (format.regex.indent.test(line)) {
-            indentation += indentchar;
-        }
-    }
-    return formatted;
-}