Merging from stable

This commit is contained in:
julmis
2006-07-30 23:24:43 +00:00
parent 3d05094553
commit bb9cd4503a
+12 -70
View 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;
}