Tests with problems (' + this.problemsListField.length + ' total) - JsUnit<\/p>'); + resDoc.write('
Running on ' + navigator.userAgent + '
'); + for (var i = 0; i < this.problemsListField.length; i++) + { + resDoc.write(''); + resDoc.write('' + (i + 1) + '. '); + resDoc.write(this.problemsListField[i].text); + resDoc.write('<\/b><\/p>
'); + resDoc.write(this._makeHTMLSafe(this.problemsListField[i].value)); + resDoc.write('<\/pre><\/p>'); + } + + resDoc.write('<\/body><\/html>'); + resDoc.close(); +} + +jsUnitTestManager.prototype._makeHTMLSafe = function (string) { + string = string.replace(/&/g, '&'); + string = string.replace(//g, '>'); + return string; +} + +jsUnitTestManager.prototype._clearProblemsList = function () { + var listField = this.problemsListField; + var initialLength = listField.options.length; + + for (var i = 0; i < initialLength; i++) + listField.remove(0); +} + +jsUnitTestManager.prototype.initialize = function () { + this.setStatus('Initializing...'); + this._setRunButtonEnabled(false); + this._clearProblemsList(); + this.updateProgressIndicators(); + this.setStatus('Done initializing'); +} + +jsUnitTestManager.prototype.finalize = function () { + this._setRunButtonEnabled(true); +} + +jsUnitTestManager.prototype._setRunButtonEnabled = function (b) { + this.runButton.disabled = !b; +} + +jsUnitTestManager.prototype.getTestFileName = function () { + var rawEnteredFileName = this.testFileName.value; + var result = rawEnteredFileName; + + while (result.indexOf('\\') != -1) + result = result.replace('\\', '/'); + + return result; +} + +jsUnitTestManager.prototype.getTestFunctionName = function () { + return this._testFunctionName; +} + +jsUnitTestManager.prototype.resolveUserEnteredTestFileName = function (rawText) { + var userEnteredTestFileName = top.testManager.getTestFileName(); + + // only test for file:// since Opera uses a different format + if (userEnteredTestFileName.indexOf('http://') == 0 || userEnteredTestFileName.indexOf('https://') == 0 || userEnteredTestFileName.indexOf('file://') == 0) + return userEnteredTestFileName; + + return getTestFileProtocol() + this.getTestFileName(); +} + +jsUnitTestManager.prototype.storeRestoredHTML = function () { + if (document.getElementById && top.testContainer.testFrame.document.getElementById(jsUnitTestManager.RESTORED_HTML_DIV_ID)) + this._restoredHTML = top.testContainer.testFrame.document.getElementById(jsUnitTestManager.RESTORED_HTML_DIV_ID).innerHTML; +} + +jsUnitTestManager.prototype.fatalError = function(aMessage) { + if (top.shouldSubmitResults()) + this.setStatus(aMessage); + else + alert(aMessage); +} + +jsUnitTestManager.prototype.userConfirm = function(aMessage) { + if (top.shouldSubmitResults()) + return false; + else + return confirm(aMessage); +} + +function getTestFileProtocol() { + return getDocumentProtocol(); +} + +function getDocumentProtocol() { + var protocol = top.document.location.protocol; + + if (protocol == "file:") + return "file:///"; + + if (protocol == "http:") + return "http://"; + + if (protocol == 'https:') + return 'https://'; + + if (protocol == "chrome:") + return "chrome://"; + + return null; +} + +function browserSupportsReadingFullPathFromFileField() { + return !isOpera() && !isIE7(); +} + +function isOpera() { + return navigator.userAgent.toLowerCase().indexOf("opera") != -1; +} + +function isIE7() { + return navigator.userAgent.toLowerCase().indexOf("msie 7") != -1; +} + +function isBeingRunOverHTTP() { + return getDocumentProtocol() == "http://"; +} + +function getWebserver() { + if (isBeingRunOverHTTP()) { + var myUrl = location.href; + var myUrlWithProtocolStripped = myUrl.substring(myUrl.indexOf("/") + 2); + return myUrlWithProtocolStripped.substring(0, myUrlWithProtocolStripped.indexOf("/")); + } + return null; +} + +// the functions push(anArray, anObject) and pop(anArray) +// exist because the JavaScript Array.push(anObject) and Array.pop() +// functions are not available in IE 5.0 + +function push(anArray, anObject) { + anArray[anArray.length] = anObject; +} + +function pop(anArray) { + if (anArray.length >= 1) { + delete anArray[anArray.length - 1]; + anArray.length--; + } +} + +if (xbDEBUG.on) { + xbDebugTraceObject('window', 'jsUnitTestManager'); + xbDebugTraceFunction('window', 'getTestFileProtocol'); + xbDebugTraceFunction('window', 'getDocumentProtocol'); +} Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTestSuite.js =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTestSuite.js (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTestSuite.js (revision 240) @@ -0,0 +1,44 @@ +function jsUnitTestSuite() { + this.isjsUnitTestSuite = true; + this.testPages = Array(); + this.pageIndex = 0; +} + +jsUnitTestSuite.prototype.addTestPage = function (pageName) +{ + this.testPages[this.testPages.length] = pageName; +} + +jsUnitTestSuite.prototype.addTestSuite = function (suite) +{ + for (var i = 0; i < suite.testPages.length; i++) + this.addTestPage(suite.testPages[i]); +} + +jsUnitTestSuite.prototype.containsTestPages = function () +{ + return this.testPages.length > 0; +} + +jsUnitTestSuite.prototype.nextPage = function () +{ + return this.testPages[this.pageIndex++]; +} + +jsUnitTestSuite.prototype.hasMorePages = function () +{ + return this.pageIndex < this.testPages.length; +} + +jsUnitTestSuite.prototype.clone = function () +{ + var clone = new jsUnitTestSuite(); + clone.testPages = this.testPages; + return clone; +} + +if (xbDEBUG.on) +{ + xbDebugTraceObject('window', 'jsUnitTestSuite'); +} + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTracer.js =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTracer.js (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitTracer.js (revision 240) @@ -0,0 +1,102 @@ +var TRACE_LEVEL_NONE = new JsUnitTraceLevel(0, null); +var TRACE_LEVEL_WARNING = new JsUnitTraceLevel(1, "#FF0000"); +var TRACE_LEVEL_INFO = new JsUnitTraceLevel(2, "#009966"); +var TRACE_LEVEL_DEBUG = new JsUnitTraceLevel(3, "#0000FF"); + +function JsUnitTracer(testManager) { + this._testManager = testManager; + this._traceWindow = null; + this.popupWindowsBlocked = false; +} + +JsUnitTracer.prototype.initialize = function() { + if (this._traceWindow != null && top.testManager.closeTraceWindowOnNewRun.checked) + this._traceWindow.close(); + this._traceWindow = null; +} + +JsUnitTracer.prototype.finalize = function() { + if (this._traceWindow != null) { + this._traceWindow.document.write('<\/body>\n<\/html>'); + this._traceWindow.document.close(); + } +} + +JsUnitTracer.prototype.warn = function() { + this._trace(arguments[0], arguments[1], TRACE_LEVEL_WARNING); +} + +JsUnitTracer.prototype.inform = function() { + this._trace(arguments[0], arguments[1], TRACE_LEVEL_INFO); +} + +JsUnitTracer.prototype.debug = function() { + this._trace(arguments[0], arguments[1], TRACE_LEVEL_DEBUG); +} + +JsUnitTracer.prototype._trace = function(message, value, traceLevel) { + if (!top.shouldSubmitResults() && this._getChosenTraceLevel().matches(traceLevel)) { + var traceString = message; + if (value) + traceString += ': ' + value; + var prefix = this._testManager.getTestFileName() + ":" + + this._testManager.getTestFunctionName() + " - "; + this._writeToTraceWindow(prefix, traceString, traceLevel); + } +} + +JsUnitTracer.prototype._getChosenTraceLevel = function() { + var levelNumber = eval(top.testManager.traceLevel.value); + return traceLevelByLevelNumber(levelNumber); +} + +JsUnitTracer.prototype._writeToTraceWindow = function(prefix, traceString, traceLevel) { + var htmlToAppend = '' + prefix + '' + traceString + '<\/p>\n'; + this._getTraceWindow().document.write(htmlToAppend); +} + +JsUnitTracer.prototype._getTraceWindow = function() { + if (this._traceWindow == null && !top.shouldSubmitResults() && !this.popupWindowsBlocked) { + this._traceWindow = window.open('', '', 'width=600, height=350,status=no,resizable=yes,scrollbars=yes'); + if (!this._traceWindow) + this.popupWindowsBlocked = true; + else { + var resDoc = this._traceWindow.document; + resDoc.write('\n
\n\nTracing - JsUnit<\/title>\n\n '); + resDoc.write('Tracing - JsUnit<\/h2>\n'); + resDoc.write('
(Traces are color coded: '); + resDoc.write('Warning - '); + resDoc.write('Information - '); + resDoc.write('Debug'); + resDoc.write(')
'); + } + } + return this._traceWindow; +} + +if (xbDEBUG.on) { + xbDebugTraceObject('window', 'JsUnitTracer'); +} + +function JsUnitTraceLevel(levelNumber, color) { + this._levelNumber = levelNumber; + this._color = color; +} + +JsUnitTraceLevel.prototype.matches = function(anotherTraceLevel) { + return this._levelNumber >= anotherTraceLevel._levelNumber; +} + +JsUnitTraceLevel.prototype.getColor = function() { + return this._color; +} + +function traceLevelByLevelNumber(levelNumber) { + switch (levelNumber) { + case 0: return TRACE_LEVEL_NONE; + case 1: return TRACE_LEVEL_WARNING; + case 2: return TRACE_LEVEL_INFO; + case 3: return TRACE_LEVEL_DEBUG; + } + return null; +} Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitVersionCheck.js =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitVersionCheck.js (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/jsUnitVersionCheck.js (revision 240) @@ -0,0 +1,59 @@ +var versionRequest; + +function isOutOfDate(newVersionNumber) { + return JSUNIT_VERSION < newVersionNumber; +} + +function sendRequestForLatestVersion(url) { + versionRequest = createXmlHttpRequest(); + if (versionRequest) { + versionRequest.onreadystatechange = requestStateChanged; + versionRequest.open("GET", url, true); + versionRequest.send(null); + } +} + +function createXmlHttpRequest() { + if (window.XMLHttpRequest) + return new XMLHttpRequest(); + else if (window.ActiveXObject) + return new ActiveXObject("Microsoft.XMLHTTP"); +} + +function requestStateChanged() { + if (versionRequest && versionRequest.readyState == 4) { + if (versionRequest.status == 200) { + var latestVersion = versionRequest.responseText; + if (isOutOfDate(latestVersion)) + versionNotLatest(latestVersion); + else + versionLatest(); + } else + versionCheckError(); + } +} + +function checkForLatestVersion(url) { + setLatestVersionDivHTML("Checking for newer version..."); + try { + sendRequestForLatestVersion(url); + } catch (e) { + setLatestVersionDivHTML("An error occurred while checking for a newer version: " + e.message); + } +} + +function versionNotLatest(latestVersion) { + setLatestVersionDivHTML('A newer version of JsUnit, version ' + latestVersion + ', is available.'); +} + +function versionLatest() { + setLatestVersionDivHTML("You are running the latest version of JsUnit."); +} + +function setLatestVersionDivHTML(string) { + document.getElementById("versionCheckDiv").innerHTML = string; +} + +function versionCheckError() { + setLatestVersionDivHTML("An error occurred while checking for a newer version."); +} Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-errors.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-errors.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-errors.html (revision 240) @@ -0,0 +1,12 @@ + + + + ++ + + + + Errors: 0+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-failures.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-failures.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-failures.html (revision 240) @@ -0,0 +1,13 @@ + + + + ++ + + + + Failures: 0+ + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-runs.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-runs.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts-runs.html (revision 240) @@ -0,0 +1,13 @@ + + + + ++ + + + + Runs: 0+ + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-counts.html (revision 240) @@ -0,0 +1,21 @@ + + + + ++ + + + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-data.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-data.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-data.html (revision 240) @@ -0,0 +1,178 @@ + + + + + JsUnit main-data.html + + + + + + + +
+ | + |
+ JsUnit TestRunner+ Running on + + |
+
+
+
+ www.jsunit.net + + + + + |
+
---|
+ + + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-frame.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-frame.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/app/main-frame.html (revision 240) @@ -0,0 +1,19 @@ + + + +
Progress: | + +
+
|
+
Javascript Debug Window
'); + this.debugwindow.focus(); +} + +xbDebug.prototype.close = function () +{ + if (!this.debugwindow) + return; + + if (!this.debugwindow.closed) + this.debugwindow.close(); + + // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null; +} + +xbDebug.prototype.dump = function (msg) +{ + if (!this.on) + return; + + if (!this.debugwindow || this.debugwindow.closed) + this.open(); + + this.debugwindow.document.write(msg + ''); + + return; +} + +var xbDEBUG = new xbDebug(); + +window.onunload = function () { + xbDEBUG.close(); +} + +function xbDebugGetFunctionName(funcref) +{ + + if (!funcref) + { + return ''; + } + + if (funcref.name) + return funcref.name; + + var name = funcref + ''; + name = name.substring(name.indexOf(' ') + 1, name.indexOf('(')); + funcref.name = name; + + if (!name) alert('name not defined'); + return name; +} + +// emulate functionref.apply for IE mac and IE win < 5.5 +function xbDebugApplyFunction(funcname, funcref, thisref, argumentsref) +{ + var rv; + + if (!funcref) + { + alert('xbDebugApplyFunction: funcref is null'); + } + + if (typeof(funcref.apply) != 'undefined') + return funcref.apply(thisref, argumentsref); + + var applyexpr = 'thisref.xbDebug_orig_' + funcname + '('; + var i; + + for (i = 0; i < argumentsref.length; i++) + { + applyexpr += 'argumentsref[' + i + '],'; + } + + if (argumentsref.length > 0) + { + applyexpr = applyexpr.substring(0, applyexpr.length - 1); + } + + applyexpr += ')'; + + return eval(applyexpr); +} + +function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall) +{ + var wrappedfunc; + var scopeobject = eval(scopename); + var funcref = scopeobject[funcname]; + + scopeobject['xbDebug_orig_' + funcname] = funcref; + + wrappedfunc = function () + { + var rv; + + precall(scopename, funcname, arguments); + rv = xbDebugApplyFunction(funcname, funcref, scopeobject, arguments); + postcall(scopename, funcname, arguments, rv); + return rv; + }; + + if (typeof(funcref.constructor) != 'undefined') + wrappedfunc.constructor = funcref.constuctor; + + if (typeof(funcref.prototype) != 'undefined') + wrappedfunc.prototype = funcref.prototype; + + scopeobject[funcname] = wrappedfunc; +} + +function xbDebugCreateMethodWrapper(contextname, classname, methodname, precall, postcall) +{ + var context = eval(contextname); + var methodref = context[classname].prototype[methodname]; + + context[classname].prototype['xbDebug_orig_' + methodname] = methodref; + + var wrappedmethod = function () + { + var rv; + // eval 'this' at method run time to pick up reference to the object's instance + var thisref = eval('this'); + // eval 'arguments' at method run time to pick up method's arguments + var argsref = arguments; + + precall(contextname + '.' + classname, methodname, argsref); + rv = xbDebugApplyFunction(methodname, methodref, thisref, argsref); + postcall(contextname + '.' + classname, methodname, argsref, rv); + return rv; + }; + + return wrappedmethod; +} + +function xbDebugPersistToString(obj) +{ + var s = ''; + var p; + + if (obj == null) + return 'null'; + + switch (typeof(obj)) + { + case 'number': + return obj; + case 'string': + return '"' + obj + '"'; + case 'undefined': + return 'undefined'; + case 'boolean': + return obj + ''; + } + + if (obj.constructor) + return '[' + xbDebugGetFunctionName(obj.constructor) + ']'; + + return null; +} + +function xbDebugTraceBefore(scopename, funcname, funcarguments) +{ + var i; + var s = ''; + var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; + if (!execprofile) + execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 }; + + for (i = 0; i < funcarguments.length; i++) + { + s += xbDebugPersistToString(funcarguments[i]); + if (i < funcarguments.length - 1) + s += ', '; + } + + xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')'); + execprofile.started = (new Date()).getTime(); +} + +function xbDebugTraceAfter(scopename, funcname, funcarguments, rv) +{ + var i; + var s = ''; + var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; + if (!execprofile) + xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname); + else if (execprofile.started == 0) + xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname); + else + { + execprofile.time += (new Date()).getTime() - execprofile.started; + execprofile.count++; + execprofile.started = 0; + } + + for (i = 0; i < funcarguments.length; i++) + { + s += xbDebugPersistToString(funcarguments[i]); + if (i < funcarguments.length - 1) + s += ', '; + } + + xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv)); +} + +function xbDebugTraceFunction(scopename, funcname) +{ + xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter); +} + +function xbDebugTraceObject(contextname, classname) +{ + var classref = eval(contextname + '.' + classname); + var p; + var sp; + + if (!classref || !classref.prototype) + return; + + for (p in classref.prototype) + { + sp = p + ''; + if (typeof(classref.prototype[sp]) == 'function' && (sp).indexOf('xbDebug_orig') == -1) + { + classref.prototype[sp] = xbDebugCreateMethodWrapper(contextname, classname, sp, xbDebugTraceBefore, xbDebugTraceAfter); + } + } +} + +function xbDebugDumpProfile() +{ + var p; + var execprofile; + var avg; + + for (p in xbDEBUG.execprofile) + { + execprofile = xbDEBUG.execprofile[p]; + avg = Math.round(100 * execprofile.time / execprofile.count) / 100; + xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.'); + } +} Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/readme.txt =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/readme.txt (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/readme.txt (revision 240) @@ -0,0 +1,3 @@ +This directory contains shell scripts (*.sh) and AppleScripts (*.scpt) to start and stop browsers. + +The shell scripts invoke the AppleScripts, so use the shell scripts. Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-firefox.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-firefox.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-firefox.sh (revision 240) @@ -0,0 +1,7 @@ +#!/bin/sh + +# Starts Firefox. Use this instead of calling the AppleScripts directly. + +osascript bin/mac/stop-firefox.scpt +osascript bin/mac/start-firefox.scpt $1 + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-safari.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-safari.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/start-safari.sh (revision 240) @@ -0,0 +1,7 @@ +#!/bin/sh + +# Starts Safari. Use this instead of calling the AppleScripts directly. + +osascript bin/mac/stop-safari.scpt +osascript bin/mac/start-safari.scpt $1 + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-firefox.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-firefox.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-firefox.sh (revision 240) @@ -0,0 +1,6 @@ +#!/bin/sh + +# Stops Firefox. Use this instead of calling the AppleScripts directly. + +osascript bin/mac/stop-firefox.scpt + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-safari.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-safari.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/mac/stop-safari.sh (revision 240) @@ -0,0 +1,6 @@ +#!/bin/sh + +# Stops Safari. Use this instead of calling the AppleScripts directly. + +osascript bin/mac/stop-safari.scpt + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/start-firefox.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/start-firefox.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/start-firefox.sh (revision 240) @@ -0,0 +1,3 @@ +#!/bin/sh +killall -9 -w firefox-bin +firefox $1 & Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/stop-firefox.sh =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/stop-firefox.sh (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/bin/unix/stop-firefox.sh (revision 240) @@ -0,0 +1,2 @@ +#!/bin/sh +killall -9 -w firefox-bin Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/build.xml =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/build.xml (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/build.xml (revision 240) @@ -0,0 +1,271 @@ + + +
+ + | ++ |
+ JsUnit <%=SystemUtility.jsUnitVersion()%><%if (server.isFarmServer()) {%> Farm<%}%> Server+ Running on <%=SystemUtility.displayString()%> + since <%=new SimpleDateFormat().format(server.getStartDate())%> + <%if (!server.isFarmServer()) {%> ++ <%=server.getTestRunCount()%> test run(s) completed + + <%}%> + |
+
+
+ www.jsunit.net + + + + + + + |
+
+
---|
+ Server configuration +
+Server type: | ++ | <%=server.serverType().getDisplayName()%> | +
---|---|---|
<%=property.getDisplayName()%>: | ++ |
+ <%
+ for (String valueString : property.getValueStrings(configuration)) {
+ %> <%
+ if (valueString != null) {
+ if (property.isURL()) {
+ %><%=valueString%><%
+ } else {
+ %><%=valueString%><%
+ }
+ }
+ %> <%
+ }
+ %>
+ |
+
+ Available services +
+ ++ | + runner + | ++ <%if (!server.isFarmServer()) {%> + | + displayer + | ++ <%}%> + | + testRunner.html + | ++ | + config + | ++ |
+
+
+
+<%if (!server.isFarmServer()) {%>
+
++ + + +
+
+<%}%>
+
+
+
+
++ + + +
+
++ You can see the configuration of this server as XML by going to config. + The config service is usually only used programmatically. + + |
+
+ + The intent of this document is to state the conditions under which the + Jetty Package may be copied, such that the Copyright Holder maintains some + semblance of control over the development of the package, while giving the + users of the package the right to use, distribute and make reasonable + modifications to the Package in accordance with the goals and ideals of + the Open Source concept as described at + http://www.opensource.org. + +
+ It is the intent of this license to allow commercial usage of the Jetty + package, so long as the source code is distributed or suitable visible + credit given or other arrangements made with the copyright holders. + +
Definitions: + +
+ +
-
+
- "Jetty" refers to the collection of Java classes that are
+ distributed as a HTTP server with servlet capabilities and
+ associated utilities.
+
+
+ +
- "Package" refers to the collection of files distributed by the
+ Copyright Holder, and derivatives of that collection of files
+ created through textual modification.
+
+
+ +
- "Standard Version" refers to such a Package if it has not been
+ modified, or has been modified in accordance with the wishes
+ of the Copyright Holder.
+
+
+ +
- "Copyright Holder" is whoever is named in the copyright or
+ copyrights for the package.
+ Mort Bay Consulting Pty. Ltd. (Australia) is the "Copyright + Holder" for the Jetty package. + ++ +
- "You" is you, if you're thinking about copying or distributing
+ this Package.
+
+
+ +
- "Reasonable copying fee" is whatever you can justify on the
+ basis of media cost, duplication charges, time of people involved,
+ and so on. (You will not be required to justify it to the
+ Copyright Holder, but only to the computing community at large
+ as a market that must bear the fee.)
+
+
+ +
- "Freely Available" means that no fee is charged for the item
+ itself, though there may be fees involved in handling the item.
+ It also means that recipients of the item may redistribute it
+ under the same conditions they received it.
+
+
+
+ + 1. The Standard Version of the Jetty package is + available from http://jetty.mortbay.org. + +
+ + 2. You may make and distribute verbatim copies of the source form + of the Standard Version of this Package without restriction, provided that + you include this license and all of the original copyright notices + and associated disclaimers. + +
+ + 3. You may make and distribute verbatim copies of the compiled form of the + Standard Version of this Package without restriction, provided that you + include this license. + +
+ + 4. You may apply bug fixes, portability fixes and other modifications + derived from the Public Domain or from the Copyright Holder. A Package + modified in such a way shall still be considered the Standard Version. + +
+ + 5. You may otherwise modify your copy of this Package in any way, provided + that you insert a prominent notice in each changed file stating how and + when you changed that file, and provided that you do at least ONE of the + following: + +
+ +
+ a) Place your modifications in the Public Domain or otherwise make them + Freely Available, such as by posting said modifications to Usenet or + an equivalent medium, or placing the modifications on a major archive + site such as ftp.uu.net, or by allowing the Copyright Holder to include + your modifications in the Standard Version of the Package.+ +6. You may distribute modifications or subsets of this Package in source +code or compiled form, provided that you do at least ONE of the following:+ + b) Use the modified Package only within your corporation or organization. + +
+ + c) Rename any non-standard classes so the names do not conflict + with standard classes, which must also be provided, and provide + a separate manual page for each non-standard class that clearly + documents how it differs from the Standard Version. + +
+ + d) Make other arrangements with the Copyright Holder. + +
+
+ +
+ a) Distribute this license and all original copyright messages, together + with instructions (in the about dialog, manual page or equivalent) on where + to get the complete Standard Version.+ +7. You may charge a reasonable copying fee for any distribution of this +Package. You may charge any fee you choose for support of this Package. +You may not charge a fee for this Package itself. However, +you may distribute this Package in aggregate with other (possibly +commercial) programs as part of a larger (possibly commercial) software +distribution provided that you meet the other distribution requirements +of this license.+ + b) Accompany the distribution with the machine-readable source of + the Package with your modifications. The modified package must include + this license and all of the original copyright notices and associated + disclaimers, together with instructions on where to get the complete + Standard Version. + +
+ + c) Make other arrangements with the Copyright Holder. + +
+
+ + 8. Input to or the output produced from the programs of this Package + do not automatically fall under the copyright of this Package, but + belong to whomever generated them, and may be sold commercially, and + may be aggregated with this Package. + +
+ + 9. Any program subroutines supplied by you and linked into this Package + shall not be considered part of this Package. + +
+ + 10. The name of the Copyright Holder may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +
+ + 11. This license may change with each release of a Standard Version of + the Package. You may choose to use the license associated with version + you are using or the license of the latest Standard Version. + +
+ + 12. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +
+ + 13. If any superior law implies a warranty, the sole remedy under such shall + be , at the Copyright Holders option either a) return of any price paid or + b) use or reasonable endeavours to repair or replace the software. + +
+ + 14. This license shall be read under the laws of Australia. + +
+ +
JsUnit Licenses |
+
+
+ JsUnit Home + edward@jsunit.net + |
---|
Third-party licenses:
+-
+
- JDOM: Portions of this software are copyright Copyright (C) 2000-2003 Jason Hunter & Brett McLaughlin. All + rights reserved. See JDOM_license.txt. +
- Jetty: Portions of this software are copyright � Mort Bay Consulting Pty. Ltd. (Australia) and others. All + Rights Reserved. See Jetty_license.html. +
- Individual files in this package may contain additional copyright notices. The javax.servlet packages are + copyright Sun Microsystems Inc. All Rights Reserved. +
JsUnit licenses:
+ JsUnit is licensed under 3 different licenses giving you the freedom + to use, modify and distribute JsUnit in a variety of fashions. + + +-
+
-
+
+
+
See mozilla.org + for more details.
+
+
+ -
+
+
+
See www.gnu.org + for more details.
+
+
+ -
+
+
+
See www.gnu.org + for more details.
+
+
+ Every Java and JavaScript source file in this distribution should be considered to be under the following licensing + terms. +
+ ***** BEGIN LICENSE BLOCK ***** + - Version: MPL 1.1/GPL 2.0/LGPL 2.1 + - + - The contents of this file are subject to the Mozilla Public License Version + - 1.1 (the "License"); you may not use this file except in compliance with + - the License. You may obtain a copy of the License at + - http://www.mozilla.org/MPL/ + - + - Software distributed under the License is distributed on an "AS IS" basis, + - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + - for the specific language governing rights and limitations under the + - License. + - + - The Original Code is Edward Hieatt code. + - + - The Initial Developer of the Original Code is + - Edward Hieatt, edward@jsunit.net. + - Portions created by the Initial Developer are Copyright (C) 2003 + - the Initial Developer. All Rights Reserved. + - + - Author Edward Hieatt, edward@jsunit.net + - + - Alternatively, the contents of this file may be used under the terms of + - either the GNU General Public License Version 2 or later (the "GPL"), or + - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + - in which case the provisions of the GPL or the LGPL are applicable instead + - of those above. If you wish to allow use of your version of this file only + - under the terms of either the GPL or the LGPL, and not to allow others to + - use your version of this file under the terms of the MPL, indicate your + - decision by deleting the provisions above and replace them with the notice + - and other provisions required by the LGPL or the GPL. If you do not delete + - the provisions above, a recipient may use your version of this file under + - the terms of any one of the MPL, the GPL or the LGPL. + - + - ***** END LICENSE BLOCK ***** ++ + + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/licenses/lgpl-2.1.txt =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/licenses/lgpl-2.1.txt (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/licenses/lgpl-2.1.txt (revision 240) @@ -0,0 +1,513 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + +
foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ +foo
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.css =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.css (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.css (revision 240) @@ -0,0 +1,30 @@ +staff { + display: table; + color: black; + background-color: white; + border: solid 1px black; +} + +employee { + display: table-row; + border: solid 1px black; + padding: 1px; +} + +employeeId, name, position, salary, gender, address { + display: table-cell; + border: solid 1px black; + padding: 1px; +} + +address[domestic="Yes"] { + background-color: silver; +} + +address[street="Yes"] { + color: green; +} + +address[street="No"] { + color: red; +} Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.dtd =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.dtd (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.dtd (revision 240) @@ -0,0 +1,17 @@ + + + + + + + + + + + + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.xml =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.xml (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/data/staff.xml (revision 240) @@ -0,0 +1,58 @@ + + + + + Element data"> + + + + + ]> + +JsUnit Assertion Tests
+ +This page contains tests for the JsUnit Assertion + functions. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitFrameworkUtilityTests.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitFrameworkUtilityTests.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitFrameworkUtilityTests.html (revision 240) @@ -0,0 +1,99 @@ + + + + + +JsUnit Utility Tests
+ +This page contains tests for the JsUnit framework uses. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitMockTimeoutTest.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitMockTimeoutTest.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitMockTimeoutTest.html (revision 240) @@ -0,0 +1,180 @@ + + +JsUnit OnLoad Tests
+ +This page contains tests for the JsUnit Framework. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitRestoredHTMLDivTests.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitRestoredHTMLDivTests.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitRestoredHTMLDivTests.html (revision 240) @@ -0,0 +1,42 @@ + + + + + +JsUnit Framework tests
+ +This page contains tests for the JsUnit setUp and tearDown framework. To see them, take a look at the source.
+ +JsUnit Framework tests
+ +This page contains tests for the JsUnit setUp and tearDown framework. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadData.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadData.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadData.html (revision 240) @@ -0,0 +1,39 @@ + + + + +JsUnit Asynchronous Load Tests
+ +This page tests loading data documents asynchronously. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadStaff.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadStaff.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestLoadStaff.html (revision 240) @@ -0,0 +1,56 @@ + + + + + +JsUnit Load XML
+ +This page tests loading XML. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPages.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPages.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPages.html (revision 240) @@ -0,0 +1,37 @@ + + + + + +JsUnit Asynchronous setUpPages
+ +This page tests asynchronoush pre tests. To see them, take a look at the source.
+ + + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPagesSuite.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPagesSuite.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSetUpPagesSuite.html (revision 240) @@ -0,0 +1,30 @@ + + + + + +JsUnit Test Suite
+ +This page contains a suite of tests for testing JsUnit's setUpPages functionality.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSuite.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSuite.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitTestSuite.html (revision 240) @@ -0,0 +1,43 @@ + + + + + +JsUnit Test Suite
+ +This page contains a suite of tests for testing JsUnit.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitUtilityTests.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitUtilityTests.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitUtilityTests.html (revision 240) @@ -0,0 +1,100 @@ + + + + + +JsUnit Utility Tests
+ +This page contains tests for the utility functions + that JsUnit uses. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitVersionCheckTests.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitVersionCheckTests.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/_jsunit/tests/jsUnitVersionCheckTests.html (revision 240) @@ -0,0 +1,131 @@ + + + + + +JsUnit Version Check Tests
+ +This page contains tests for the version checking code in JsUnit that looks to see whether a newer version of JsUnit + is available. To see them, take a look at the source.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/default.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/default.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/default.html (revision 240) @@ -0,0 +1,34 @@ + + + ++ Test page for FCKeditor +
+
+ This document contains various markup features commonly used by content editors
+ or "rédacteurs de contenu" as they are
+ called in
+ France.
+ It is important that a WYSIWYG
+ tool has features that are easily available for the editor. If not, there is a risk
+ that content won't receive proper markup. Examples
+ of commonly found content are:
+ +
++
+-
+
- Headings +
- Links (with optional title) +
- Lists (like this one)
+
-
+
- including nested lists +
+ - Tables
+
-
+
- caption +
- headers +
- summary +
+ - Language information +
- Acronyms and abbreviations +
- Emphasis and strong emphasis +
- Quotes, inline and block +
- Images +
+
+ Test procedure +
+ This text has no block tag. It should be corrected when working with the enter key + set to "p" or "div" tags. The "br" configuration should not make changes instead. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import + statistics from 1998. +
++ This paragraph has and image at the very end of its contents. +
+ This text has no block tag. It should be corrected when working with the enter key + set to "p" or "div" tags. The "br" configuration + should not make changes instead. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import statistics + from 1998. +
++ Country | ++ Millions of US dollars per million people | +
---|---|
+ Sweden | ++ 17.12 | +
+ United Kingdom | ++ 8.88 | +
+ Germany | ++ 8.36 | +
+ Italy | ++ 5.96 | +
+ United States | ++ 4.78 | +
+ For block quotes we will have a look at what Joe + Clark says about redheads:
++++ "Since boyhood I’ve always believed, at the deepest level, that redheads are + standard-bearers of the grandest and most wondrous human beauty."
+
+
++ The above is the FCKeditor logo loaded from the FCKeditor.net web site.
+ + Index: /FCKeditor/tags/2.4.2/_test/automated/tests/fcktools.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/tests/fcktools.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/tests/fcktools.html (revision 240) @@ -0,0 +1,116 @@ + + + + +FCKW3CRange Test
This is some text.
Another paragraph.
+ Index: /FCKeditor/tags/2.4.2/_test/automated/tests/suite.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/automated/tests/suite.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/automated/tests/suite.html (revision 240) @@ -0,0 +1,46 @@ + + + + +Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
Cell 1 | Cell 2 | Cell 3 |
Cell 4 | Cell 5 | Cell 6 |
+ FCKBrowserInfo Test
+
+
+
+
+ +
|
+
+
+
+
+ This is a link.
+
+ |
+ + + | ++ + | +
+ FCKDomRange
++ + + + + + + + +
++ + Auto select + + + + + + + + + +
++ StartBlockLimit: | ++ | ++ | ++ StartBlock: | ++ | ++ | ++ StartContainer: | ++ | +
+ EndBlockLimit: | ++ | ++ | ++ EndBlock: | ++ | ++ | ++ EndContainer: | ++ | +
+ Test page for FCKeditor +
+
+ This document contains various markup features commonly used by content editors
+ or "rédacteurs de contenu" as they are called in
+ France.
+ It is important that a WYSIWYG
+ tool has features that are easily available for the editor. If not, there is a risk
+ that content won't receive proper markup. Examples of commonly
+ found content are:
-
+
- Headings +
- Links (with optional title) +
- Lists (like this one)
+
-
+
- including nested lists +
+ - Tables
+
-
+
- caption +
- headers +
- summary +
+ - Language information +
- Acronyms and abbreviations +
- Emphasis and strong emphasis +
- Quotes, inline and block +
- Images +
+
+ Test procedure +
+ This text has no block tag. It should be corrected when working with the enter key + set to "p" or "div" tags. The "br" configuration should not make changes instead. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import statistics + from 1998. +
++ This paragraph has and image at the very end of its contents. +
+ This text has no block tag. It should be corrected when working with the enter key + set to "p" or "div" tags. The "br" configuration should not make + changes instead. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import statistics + from 1998. +
++ Country | ++ Millions of US dollars per million people | +
---|---|
+ Sweden | ++ 17.12 | +
+ United Kingdom | ++ 8.88 | +
+ Germany | ++ 8.36 | +
+ Italy | ++ 5.96 | +
+ United States | ++ 4.78 | +
+ For block quotes we will have a look at what Joe + Clark says about redheads:
++++ "Since boyhood I’ve always believed, at the deepest level, that redheads are + standard-bearers of the grandest and most wondrous human beauty."
+
+
++ The above is the FCKeditor logo loaded from the FCKeditor.net web site.
+ + Index: /FCKeditor/tags/2.4.2/_test/manual/fckdomtools/insertafternode.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckdomtools/insertafternode.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckdomtools/insertafternode.html (revision 240) @@ -0,0 +1,84 @@ + + + + ++ FCKDomTools.InsertAfterNode
++ Test Result + | ++ Expected Result + | +
Element A Element B Element C |
+
+
+ Element A
+
+ Element 1
+
+ Element B
+
+ Element 2
+
+ Element C
+
+ Element 3
+ |
+
+ | +
+ + + + + + Click this text to focus + + + + |
+
+ FCKeditorAPI
++ Click the following button to create instances: +
++ + +
++
+ +
+
+ TypeOf FCKeditorAPI: (must be "object")
+
+ Number of Instances:
+
+ Instances:
+
+ + + Index: /FCKeditor/tags/2.4.2/_test/manual/fckeditorapi/test1_inner.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckeditorapi/test1_inner.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckeditorapi/test1_inner.html (revision 240) @@ -0,0 +1,56 @@ + + + + +
+ + FCKEnterKey++ Enter: + + Shift + Enter: + + + |
+
+ + | +
+ + + |
+
+ Sample document for editor area test +
++ This document contains various markup features commonly used by content editors + or "rédacteurs de contenu" as they are called in + France. It is important that a WYSIWYG + tool has features that are easily available for the editor. If not, there is a risk + that content won't receive proper markup. Examples of commonly + found content are:
+-
+
- Headings +
- Links (with optional title) +
- Lists (like this one)
+
-
+
- including nested lists +
+ - Tables
+
-
+
- caption +
- headers
+
-
+
- Depper levels 1 +
- Depper levels 2 +
+ - summary +
+ - Language information +
- Acronyms and abbreviations +
- Emphasis and strong emphasis +
- Quotes, inline and block +
- Images +
+FCKTools.GetParentWindow = function( document ) +{ + return document.contentWindow ? document.contentWindow : document.parentWindow ; +} ++
+
+ Test procedure +
+ This text has no block tag. It goes directly in the body. In the test we will try + to recreate this document using the editor tools. To make sure tables can be inserted + properly we re-visit banana import statistics from 1998. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import statistics + from 1998. +
+ Another piece of text without block tag. It goes directly in the body. In the test + we will try to recreate this document using the editor tools. To make sure tables + can be inserted properly we re-visit banana import statistics from 1998. ++ In the test we will try to recreate this document using the editor tools. To make + sure tables can be inserted properly we re-visit banana import statistics + from 1998. +
++ Country | ++ Millions of US dollars per million people | +
---|---|
+ Sweden | ++ 17.12 | +
+ United Kingdom | ++ 8.88 | +
+ Germany | ++ 8.36 | +
+ Italy | ++ 5.96 | +
+ United States | ++ 4.78 | +
+ For block quotes we will have a look at what Joe + Clark says about redheads:
++++ "Since boyhood I’ve always believed, at the deepest level, that redheads are + standard-bearers of the grandest and most wondrous human beauty."
+
+
++ The above is the FCKeditor logo loaded from the FCKeditor.net web site.
+ + Index: /FCKeditor/tags/2.4.2/_test/manual/fckimagepreloader/test1.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckimagepreloader/test1.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckimagepreloader/test1.html (revision 240) @@ -0,0 +1,81 @@ + + + + ++ FCKImagePreloader +
++ Cleanup your browser cache. Load this page and watch the communications using Fiddler. + You must have just one HTTP 200 response for "strip.gif", "check.gif", "smiley.gif" + and "arrowdown.gif". All other responses for those files must be HTTP 304 (browser + cache), if any. +
++ This is a IE only issue. Other browser will perform well whithout FCKScriptLoader. +
+ + Index: /FCKeditor/tags/2.4.2/_test/manual/fckkeystrokehandler/test1.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckkeystrokehandler/test1.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckkeystrokehandler/test1.html (revision 240) @@ -0,0 +1,142 @@ + + + + ++ FCKKeystrokeHandler Test
+
+ +[ 13 /*ENTER*/, 'Enter' ] +[ SHIFT + 13 /*ENTER*/, 'Shift + Enter' ] +[ 8 /*ENTER*/, 'Backspace' ] +[ 46 /*ENTER*/, 'Delete' ] + +[ CTRL + 67 /*C*/, 'Copy' ] +// [ CTRL + 86 /*V*/, 'Paste' ] +[ SHIFT + 45 /*INS*/, 'Paste' ] +[ CTRL + 88 /*X*/, 'Cut' ] +[ SHIFT + 46 /*DEL*/, 'Cut' ] +[ CTRL + 90 /*Z*/, 'Undo' ] +[ CTRL + 89 /*Y*/, 'Redo' ] +[ CTRL + SHIFT + 90 /*Z*/, 'Redo' ] +[ CTRL + 65 /*A*/, 'SelectAll' ] +[ CTRL + 70 /*F*/, 'Find' ] +[ CTRL + 72 /*H*/, 'Replace' ] +[ CTRL + 76 /*L*/, 'Link' ] +[ CTRL + 66 /*B*/, 'Bold' ] +[ CTRL + 73 /*I*/, 'Italic' ] +[ CTRL + 85 /*U*/, 'Underline' ] +[ ALT + 13 /*ENTER*/, 'FitWindow' ] +[ 121 /*F10*/, 'FitWindow' ] +[ CTRL + 9 /*TAB*/, 'Source' ] ++ + CTRL + V is not defined in the list, but must be cancelled, as it is a combination + with CTRL. + + |
+ + + + | +
+ FCKListHandler
++ Select a List Item: + + +
+
+
|
+
+ + + |
+
+
|
+
+ This is an IFRAME + + Index: /FCKeditor/tags/2.4.2/_test/manual/fckpanel/test1/test.css =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckpanel/test1/test.css (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckpanel/test1/test.css (revision 240) @@ -0,0 +1,8 @@ +body +{ + border: darkgray 1px solid; + padding: 20px; + font-weight: bold; + font-family: Arial; + background-color: #f5f5f5; +} Index: /FCKeditor/tags/2.4.2/_test/manual/fckspecialcombo/test1.html =================================================================== --- /FCKeditor/tags/2.4.2/_test/manual/fckspecialcombo/test1.html (revision 240) +++ /FCKeditor/tags/2.4.2/_test/manual/fckspecialcombo/test1.html (revision 240) @@ -0,0 +1,126 @@ + + + + +
+
|
+
+ | +
+ | +
+ | +
+ + + | +|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+
+ + + +
|
+
+
|
+
+
|
+
FCKTools.AddEventListenerEx
++ Click the following buttons. A green box must appear at their right side. +
++ | ++ | +
+ | ++ | +
+ FCKTools.CreateEventListener
++ Click the following buttons. A green box must appear at their right side. +
++ | ++ | +
+ | ++ | +
+ | ++ | +
+ | ++ | +
+ FCKTools.RunFunction
++ A green box must appear for each line in this list: +
+Main Window | |
Main Window + Params | |
Custom Object | |
Custom Object + Params | |
Element | |
Element + Params |
+ FCKXHtml Test Page
++ XHTM 1.0 The Extensible HyperText Markup Language (Second Edition): +
+ +
+ Click the following button to generate the XHTML for the above page:
+
+ Formatted
+
+
+
+
XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition)
+ +A Reformulation of HTML 4 in XML 1.0
+ +W3C Recommendation 26 January 2000, revised 1 August 2002
+ +-
+
- This version: + +
- http://www.w3.org/TR/2002/REC-xhtml1-20020801 + +
- Latest version: + +
- http://www.w3.org/TR/xhtml1 + +
- Previous version: + +
- http://www.w3.org/TR/2000/REC-xhtml1-20000126 + +
- Diff-marked version: + +
- http://www.w3.org/TR/2002/REC-xhtml1-20020801/xhtml1-diff.html + +
- Authors: + +
- See acknowledgments. +
Please refer to the errata for this document, which may include some normative corrections. See also translations.
+ +This document is also available in these non-normative formats: Multi-part XHTML file, PostScript version, PDF version, ZIP archive, and Gzip'd TAR archive.
+ +Copyright ©2002 +W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply.
+ ++
Abstract
+ +This specification defines the Second Edition of XHTML 1.0, a reformulation of HTML 4 as an +XML 1.0 application, and three DTDs +corresponding to the ones defined by HTML 4. The semantics of the +elements and their attributes are +defined in the W3C Recommendation for HTML 4. These semantics +provide the foundation for future extensibility of XHTML. Compatibility +with existing HTML user agents is possible by following a +small set of guidelines.
+ +Status of this document
+ +This section describes the status of this document at the time +of its publication. Other documents may supersede this document. The +latest status of this document series is maintained at the +W3C.
+ +This document is the second edition of the XHTML 1.0 specification +incorporating the errata changes as of 1 August 2002. Changes between +this version and the previous Recommendation are +illustrated in a diff-marked version.
+ +This second edition is not a new version of XHTML 1.0 +(first published 26 January 2000). The changes in this document reflect +corrections applied as a result of comments submitted by the +community and as a result of ongoing work within the HTML Working +Group. There are no substantive changes in this document - only the +integration of various errata.
+ +The list of known errors in this specification is available at http://www.w3.org/2002/08/REC-xhtml1-20020801-errata.
+ +Please report errors in this document to www-html-editor@w3.org (archive). Public +discussion on HTML features takes place on the mailing list www-html@w3.org (archive).
+ +This document has been produced as part of the W3C HTML Activity. The goals of the HTML Working Group +(members only) are discussed in the HTML Working Group charter.
+ +At the time of publication, the working group believed there were +zero patent disclosures relevant to this specification. A current list +of patent disclosures relevant to this specification may be +found on the Working Group's patent disclosure page.
+ +A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.
+ +Quick Table of Contents
+ +-
+
- 1. What is XHTML? + +
- 2. Definitions + +
- 3. Normative Definition of XHTML 1.0 + +
- 4. Differences with HTML 4 + +
- 5. Compatibility Issues + +
- A. DTDs + +
- B. Element Prohibitions + +
- C. HTML Compatibility Guidelines + +
- D. Acknowledgements + +
- E. References +
Full Table of Contents
+ +-
+
- 1. What is XHTML?
+
+
-
+
- 1.1. What is HTML 4? + +
- 1.2. What is XML? + +
- 1.3. Why the need for XHTML? +
+
+ - 2. Definitions
+
+
-
+
- 2.1. Terminology + +
- 2.2. General Terms +
+
+ - 3. Normative Definition of XHTML 1.0
+
+
-
+
- 3.1. Document Conformance
+
+
-
+
- 3.1.1. Strictly Conforming Documents + +
- 3.1.2. Using XHTML with other namespaces +
+
+ - 3.2. User Agent Conformance +
+
+ - 3.1. Document Conformance
+
+
- 4. Differences with HTML 4
+
+
-
+
- 4.1. Documents must be well-formed + +
- 4.2. Element and attribute names must be in lower case + +
- 4.3. For non-empty elements, end tags are required + +
- 4.4. Attribute values must always be quoted + +
- 4.5. Attribute Minimization + +
- 4.6. Empty Elements + +
- 4.7. White Space handling in attribute values + +
- 4.8. Script and Style elements + +
- 4.9. SGML exclusions + +
- 4.10. The elements with 'id' and 'name' attributes + +
- 4.11. Attributes with pre-defined value sets + +
- 4.12. Entity references as hex values +
+
+ - 5. Compatibility Issues
+
+
-
+
- 5.1. Internet Media Type +
+
+ - A. DTDs
+
+
-
+
- A.1. Document Type Definitions
+
+
-
+
- A.1.1. XHTML-1.0-Strict + +
- A.1.2. XHTML-1.0-Transitional + +
- A.1.3. XHTML-1.0-Frameset +
+
+ - A.2. Entity Sets
+
+
-
+
- A.2.1. Latin-1 characters + +
- A.2.2. Special characters + +
- A.2.3. Symbols +
+
+
+ - A.1. Document Type Definitions
+
+
- B. Element Prohibitions + +
- C. HTML Compatibility Guidelines
+
+
-
+
- C.1. Processing Instructions and the XML Declaration + +
- C.2. Empty Elements + +
- C.3. Element Minimization and Empty Element Content + +
- C.4. Embedded Style Sheets and Scripts + +
- C.5. Line Breaks within Attribute Values + +
- C.6. Isindex + +
- C.7. The
lang
andxml:lang
Attributes
+
+ - C.8. Fragment Identifiers + +
- C.9. Character Encoding + +
- C.10. Boolean Attributes + +
- C.11. Document Object Model and XHTML + +
- C.12. Using Ampersands in Attribute Values (and Elsewhere) + +
- C.13. Cascading Style Sheets (CSS) and XHTML + +
- C.14. Referencing Style Elements when serving as XML + +
- C.15. White Space Characters in HTML vs. XML + +
- C.16. The Named Character Reference ' +
+
+ - D. Acknowledgements + +
- E. References +
1. What is XHTML?
+ +This section is informative.
+ +XHTML is a family of current and future document types and modules that reproduce, subset, and extend HTML 4 [HTML4]. XHTML family +document types are XML based, and ultimately are designed to work in conjunction with XML-based user agents. The details of this family and its +evolution are discussed in more detail in [XHTMLMOD].
+ +XHTML 1.0 (this specification) is the first document type in the +XHTML family. It is a reformulation of the three HTML 4 document +types as applications of XML 1.0 [XML]. It is intended to be used as a language for content that is both XML-conforming and, if some simple guidelines +are +followed, operates in HTML 4 conforming user agents. Developers +who migrate their content to XHTML 1.0 will realize the following +benefits:
+ +-
+
- XHTML documents are XML conforming. As such, they are readily viewed, edited, and validated with standard XML tools. + +
- XHTML documents can be written to operate as well or better than +they did before in existing HTML 4-conforming user agents as well +as in new, XHTML 1.0 conforming user agents. + +
- XHTML documents can utilize applications (e.g. scripts and applets) +that rely upon either the HTML Document Object Model or the XML +Document Object Model [DOM]. + +
- As the XHTML family evolves, documents conforming to XHTML 1.0 will +be more likely to interoperate within and among various XHTML +environments. +
The XHTML family is the next step in the evolution of the Internet. +By migrating to XHTML today, content developers can enter the XML world +with all of its attendant benefits, while still +remaining confident in their content's backward and future +compatibility.
+ +1.1. What is HTML 4?
+ +HTML 4 [HTML4] is an SGML (Standard Generalized Markup Language) application +conforming to International Standard ISO 8879, and is widely regarded as the standard publishing language of the World Wide +Web.
+ +SGML is a language for describing markup languages, particularly +those used in electronic document exchange, document management, and +document publishing. HTML is an example of a language defined +in SGML.
+ +SGML has been around since the middle 1980's and has remained quite +stable. Much of this stability stems from the fact that the language is +both feature-rich and flexible. This flexibility, +however, comes at a price, and that price is a level of complexity that +has inhibited its adoption in a diversity of environments, including +the World Wide Web.
+ +HTML, as originally conceived, was to be a language for the exchange +of scientific and other technical documents, suitable for use by +non-document specialists. HTML addressed the problem of SGML +complexity by specifying a small set of structural and semantic tags +suitable for authoring relatively simple documents. In addition to +simplifying the document structure, HTML added support for +hypertext. Multimedia capabilities were added later.
+ +In a remarkably short space of time, HTML became wildly popular and +rapidly outgrew its original purpose. Since HTML's inception, there has +been rapid invention of new elements for use within HTML +(as a standard) and for adapting HTML to vertical, highly specialized, +markets. This plethora of new elements has led to interoperability +problems for documents across different platforms.
+ +1.2. What is XML?
+ +XML™ is the shorthand name for Extensible Markup Language [XML].
+ +XML was conceived as a means of regaining the power and flexibility +of SGML without most of its complexity. Although a restricted form of +SGML, XML nonetheless preserves most of SGML's power and +richness, and yet still retains all of SGML's commonly used features.
+ +While retaining these beneficial features, XML removes many of the +more complex features of SGML that make the authoring and design of +suitable software both difficult and costly.
+ +1.3. Why the need for XHTML?
+ +The benefits of migrating to XHTML 1.0 are described above. Some of the benefits of migrating to XHTML in general are:
+ +-
+
- Document developers and user agent designers are constantly +discovering new ways to express their ideas through new markup. In XML, +it is relatively easy to introduce new elements or additional +element attributes. The XHTML family is designed to accommodate these +extensions through XHTML modules and techniques for developing new +XHTML-conforming modules (described in the XHTML +Modularization specification). These modules will permit the +combination of existing and new feature sets when developing content +and when designing new user agents. + +
- Alternate ways of accessing the Internet are constantly being +introduced. The XHTML family is designed with general user agent +interoperability in mind. Through a new user agent and document +profiling mechanism, servers, proxies, and user agents will be able to +perform best effort content transformation. Ultimately, it will be +possible to develop XHTML-conforming content that is usable +by any XHTML-conforming user agent. +
2. Definitions
+ +This section is normative.
+ +2.1. Terminology
+ +The following terms are used in this specification. These terms extend the definitions in [RFC2119] in ways based upon similar definitions in +ISO/IEC 9945-1:1990 [POSIX.1]:
+ +-
+
- May + +
- With respect to implementations, the word "may" is to be +interpreted as an optional feature that is not required in this +specification but can be provided. With respect to Document Conformance, the word "may" means that the optional feature must not be used. The term "optional" has the same definition as "may". + +
- Must + +
- In this specification, the word "must" is to be interpreted as a +mandatory requirement on the implementation or on Strictly Conforming +XHTML Documents, depending upon the context. The term +"shall" has the same definition as "must". + +
- Optional + +
- See "May". + +
- Reserved + +
- A value or behavior is unspecified, but it is not allowed to be +used by Conforming Documents nor to be supported by Conforming User +Agents. + +
- Shall + +
- See "Must". + +
- Should + +
- With respect to implementations, the word "should" is to be +interpreted as an implementation recommendation, but not a requirement. +With respect to documents, the word "should" is to be +interpreted as recommended programming practice for documents and a +requirement for Strictly Conforming XHTML Documents. + +
- Supported + +
- Certain facilities in this specification are optional. If a +facility is supported, it behaves as specified by this specification. + +
- Unspecified + +
- When a value or behavior is unspecified, the specification defines +no portability requirements for a facility on an implementation even +when faced with a document that uses the facility. A +document that requires specific behavior in such an instance, rather +than tolerating any behavior when using that facility, is not a +Strictly Conforming XHTML Document. +
2.2. General Terms
+ +-
+
- Attribute + +
- An attribute is a parameter to an element declared in the DTD. An +attribute's type and value range, including a possible default value, +are defined in the DTD. + +
- DTD + +
- A DTD, or document type definition, is a collection of XML markup +declarations that, as a collection, defines the legal structure, elements, and +attributes that are available for use in a document that complies to the DTD. + +
- Document + +
- A document is a stream of data that, after being combined with any +other streams it references, is structured such that it holds +information contained within elements +that are organized as defined in the associated DTD. See Document Conformance for more information. + +
- Element + +
- An element is a document structuring unit declared in the DTD. The element's content model is defined in the DTD, and additional semantics may +be defined in the prose description of the element. + +
- Facilities + +
- Facilities are elements, attributes, and the semantics associated with those elements and +attributes. + +
- Implementation + +
- See User Agent. + +
- Parsing + +
- Parsing is the act whereby a document is scanned, and the information contained within the document is filtered into the context of the elements in which the information is structured. + +
- Rendering + +
- Rendering is the act whereby the information in a document is presented. This presentation is done in the form most appropriate to the environment (e.g. aurally, +visually, in print). + +
- User Agent + +
- A user agent is a system that processes XHTML documents in accordance with this specification. See User Agent Conformance for more information. + +
- Validation + +
- Validation is a process whereby documents are verified against the associated DTD, ensuring that the structure, use of +elements, and use of attributes are consistent with the definitions in the DTD. + +
- Well-formed + +
- A document is well-formed when it is structured according to the rules defined in Section 2.1 of the XML 1.0 +Recommendation [XML]. +
3. Normative Definition of XHTML 1.0
+ +This section is normative.
+ +3.1. Document Conformance
+ +This version of XHTML provides a definition of strictly conforming +XHTML 1.0 documents, which are restricted to elements and attributes +from the XML and XHTML 1.0 namespaces. See Section 3.1.2 for information on using XHTML with other namespaces, for instance, to include metadata expressed in RDF within XHTML +documents.
+ +3.1.1. Strictly Conforming Documents
+ +A Strictly Conforming XHTML Document is an XML document that +requires only the facilities described as mandatory in this +specification. Such a document must meet all of the following criteria:
+ +-
+
-
+
It must conform to the constraints expressed in one of the three DTDs found in DTDs and in Appendix B.
+
+
+ -
+
The root element of the document must be
+html
.
+
+ -
+
The root element of the document must contain an
+ +xmlns
declaration for the XHTML namespace [XMLNS]. The namespace for XHTML is +defined to behttp://www.w3.org/1999/xhtml
. An example root element might look like:++<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +
+
+
+ -
+
There must be a DOCTYPE declaration in the document prior to the +root element. The public identifier included in the DOCTYPE declaration +must reference one of the three DTDs found in DTDs using the respective Formal Public Identifier. The system identifier may be changed to reflect local system conventions.
+ +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> +
+
+
+ -
+
The DTD subset must not be used to override any parameter entities in the DTD.
+
+
An XML declaration is not required in all XML documents; however +XHTML document authors are strongly encouraged to use XML declarations +in all their documents. Such a declaration is required when +the character encoding of the document is other than the default UTF-8 +or UTF-16 and no encoding was determined by a higher-level protocol. +Here is an example of an XHTML document. In this example, +the XML declaration is included.
+ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <title>Virtual Library</title> + </head> + <body> + <p>Moved to <a href="http://example.org/">example.org</a>.</p> + </body> +</html> ++
3.1.2. Using XHTML with other namespaces
+ +The XHTML namespace may be used with other XML namespaces as per [XMLNS], +although such documents are not strictly conforming XHTML 1.0 +documents as defined above. Work by W3C is addressing ways to specify +conformance for documents involving multiple namespaces. For an +example, see [XHTML+MathML].
+ +The following example shows the way in which XHTML 1.0 could be used in conjunction with the MathML Recommendation:
+ +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <title>A Math Example</title> + </head> + <body> + <p>The following is MathML markup:</p> + <math xmlns="http://www.w3.org/1998/Math/MathML"> + <apply> <log/> + <logbase> + <cn> 3 </cn> + </logbase> + <ci> x </ci> + </apply> + </math> + </body> +</html> ++
The following example shows the way in which XHTML 1.0 markup could be incorporated into another XML namespace:
+ +<?xml version="1.0" encoding="UTF-8"?> +<!-- initially, the default namespace is "books" --> +<book xmlns='urn:loc.gov:books' + xmlns:isbn='urn:ISBN:0-395-36341-6' xml:lang="en" lang="en"> + <title>Cheaper by the Dozen</title> + <isbn:number>1568491379</isbn:number> + <notes> + <!-- make HTML the default namespace for a hypertext commentary --> + <p xmlns='http://www.w3.org/1999/xhtml'> + This is also available <a href="http://www.w3.org/">online</a>. + </p> + </notes> +</book> ++
3.2. User Agent Conformance
+ +A conforming user agent must meet all of the following criteria:
+ +-
+
- In order to be consistent with the XML 1.0 Recommendation [XML], +the user agent must parse and evaluate an XHTML document for +well-formedness. +If the user agent claims to be a validating user agent, it must also +validate documents against their referenced DTDs according to [XML]. + +
- When the user agent claims to support facilities defined within this specification or required by this specification through normative reference, it must +do so in ways consistent with the facilities' definition. + +
- When a user agent processes an XHTML document as generic XML, it shall only recognize attributes of type
ID
(i.e. theid
attribute on most XHTML elements) as fragment +identifiers.
+
+ - If a user agent encounters an element it does not recognize, it must process the element's content. + +
- If a user agent encounters an attribute it does not recognize, it +must ignore the entire attribute specification (i.e., the attribute and +its value). + +
- If a user agent encounters an attribute value it does not recognize, it must use the default attribute value. + +
- If it encounters an entity reference (other than one of the +entities defined in this recommendation or in the XML recommendation) +for which the user agent has processed no declaration (which +could happen if the declaration is in the external subset which the +user agent hasn't read), the entity reference should be processed as +the characters (starting with the ampersand and ending with +the semi-colon) that make up the entity reference. + +
- When processing content, user agents that encounter characters or +character entity references that are recognized but not renderable may +substitute another rendering that gives the same meaning, +or must display the document in such a way that it is obvious to the +user that normal rendering has not taken place. + +
-
+
White space is handled according to the following rules. The following characters are defined in [XML] white space characters:
+ +-
+
- SPACE ( ) + +
- HORIZONTAL TABULATION (	) + +
- CARRIAGE RETURN (
) + +
- LINE FEED (
) +
The XML processor normalizes different systems' line end codes into +one single LINE FEED character, that is passed up to the application.
+ +The user agent must use the definition from CSS for processing whitespace characters [CSS2]. Note +that the CSS2 recommendation does not +explicitly address the issue of whitespace handling in non-Latin +character sets. This will be addressed in a future version of CSS, at +which time this reference will be updated.
+
+
Note that in order to produce a Canonical XHTML document, the rules above must be applied and the rules in [XMLC14N] must also be applied to +the document.
+ + +4. Differences with HTML 4
+ +This section is informative.
+ +Due to the fact that XHTML is an XML application, certain practices that were perfectly legal in SGML-based HTML 4 [HTML4] must be +changed.
+ +4.1. Documents must be well-formed
+ +Well-formedness is a new concept introduced by [XML]. Essentially this means that all elements must +either have closing tags or be written in a special form (as described below), and that all the elements must nest properly.
+ +Although overlapping is illegal in SGML, it is widely tolerated in existing browsers.
+ +CORRECT: nested elements.
+ +<p>here is an emphasized <em>paragraph</em>.</p>
+INCORRECT: overlapping elements
+ +<p>here is an emphasized <em>paragraph.</p></em>
+4.2. Element and attribute names must be in lower case
+ +XHTML documents must use lower case for all HTML element and +attribute names. This difference is necessary because XML is +case-sensitive e.g. <li> and <LI> are different tags.
+ +4.3. For non-empty elements, end tags are required
+ +In SGML-based HTML 4 certain elements were permitted to omit the end
+tag; with the elements that followed implying closure. XML does not
+allow end tags to be omitted. All elements other than those
+declared in the DTD as EMPTY
must have an end tag. Elements that are declared in the DTD as EMPTY
can have an end tag or can use empty element shorthand (see Empty Elements).
CORRECT: terminated elements
+ +<p>here is a paragraph.</p><p>here is another paragraph.</p>
+INCORRECT: unterminated elements
+ +<p>here is a paragraph.<p>here is another paragraph.
+4.4. Attribute values must always be quoted
+ +All attribute values must be quoted, even those which appear to be numeric.
+ +CORRECT: quoted attribute values
+ +<td rowspan="3">
+INCORRECT: unquoted attribute values
+ +<td rowspan=3>
+4.5. Attribute Minimization
+ +XML does not support attribute minimization. Attribute-value pairs must be written in full. Attribute names such as compact
and checked
cannot occur in elements without
+their value being specified.
CORRECT: unminimized attributes
+ +<dl compact="compact">
+INCORRECT: minimized attributes
+ +<dl compact>
+4.6. Empty Elements
+ +Empty elements must either have an end tag or the start tag must end with />
. For instance, <br/>
or <hr></hr>
. See HTML Compatibility Guidelines for information on ways to ensure this is backward compatible with HTML 4 user agents.
CORRECT: terminated empty elements
+ +<br/><hr/>
+INCORRECT: unterminated empty elements
+ +<br><hr>
+4.7. White Space handling in attribute values
+ +When user agents process attributes, they do so according to Section 3.3.3 of [XML]:
+ +-
+
- Strip leading and trailing white space. + +
- Map sequences of one or more white space characters (including line breaks) to a single inter-word space. +
4.8. Script and Style elements
+ +In XHTML, the script and style elements are declared as having #PCDATA
content. As a result, <
and &
will be treated as the start of markup, and
+entities such as <
and &
will be recognized as entity references by the XML processor to <
and &
respectively. Wrapping the
+content of the script or style element within a CDATA
marked section avoids the expansion of these entities.
<script type="text/javascript"> +<![CDATA[ +... unescaped script content ... +]]> +</script> ++
CDATA
sections are recognized by the XML processor and appear as nodes in the Document Object Model, see Section 1.3 of the DOM Level 1 Recommendation [DOM].
An alternative is to use external script and style documents.
+ +4.9. SGML exclusions
+ +SGML gives the writer of a DTD the ability to exclude specific +elements from being contained within an element. Such prohibitions +(called "exclusions") are not possible in XML.
+ +For example, the HTML 4 Strict DTD forbids the nesting of an 'a
' element within another 'a
'
+element to any descendant depth. It is not possible to spell out such
+prohibitions in XML. Even though these prohibitions cannot be defined
+in the DTD, certain elements should not be nested. A summary of such
+elements and the elements that should not be nested in them
+is found in the normative Element Prohibitions.
4.10. The elements with 'id' and 'name' attributes
+ +HTML 4 defined the name
attribute for the elements a
, applet
, form
, frame
, iframe
, img
, and
+map
. HTML 4 also introduced the id
attribute. Both of these attributes are designed to be used as fragment identifiers.
In XML, fragment identifiers are of type ID
, and there can only be a single attribute of type ID
per element. Therefore, in XHTML 1.0 the id
attribute is
+defined to be of type ID
. In order to ensure that XHTML 1.0 documents are well-structured XML documents, XHTML 1.0 documents MUST use the id
attribute when defining fragment
+identifiers on the elements listed above. See the HTML Compatibility Guidelines for information on ensuring such anchors are backward compatible when serving
+XHTML documents as media type text/html
.
Note that in XHTML 1.0, the name
attribute of these elements is formally deprecated, and will be removed in a subsequent version of XHTML.
4.11. Attributes with pre-defined value sets
+ +HTML 4 and XHTML both have some attributes that have pre-defined and limited sets of values (e.g. the type
attribute of the input
element). In SGML and XML, these are
+called enumerated attributes. Under HTML 4, the interpretation of these values was case-insensitive, so a value of TEXT
was equivalent to a value of text
.
+Under XML, the interpretation of these values is case-sensitive, and in XHTML 1 all of these values are defined in lower-case.
4.12. Entity references as hex values
+ +SGML and XML both permit references to characters by using +hexadecimal values. In SGML these references could be made using either +&#Xnn; or &#xnn;. In XML documents, you must use the +lower-case version (i.e. &#xnn;)
+ + +5. Compatibility Issues
+ +This section is normative.
+ +Although there is no requirement for XHTML 1.0 documents to be +compatible with existing user agents, in practice this is easy to +accomplish. Guidelines for creating compatible documents can be +found in Appendix C.
+ +5.1. Internet Media Type
+ +XHTML Documents which follow the guidelines set forth in Appendix C, "HTML Compatibility Guidelines" may be labeled with the Internet Media Type +"text/html" [RFC2854], as they are compatible with most HTML browsers. Those documents, and any other document conforming to this specification, +may also be labeled with the Internet Media Type "application/xhtml+xml" as defined in [RFC3236]. For further information on using media types +with XHTML, see the informative note [XHTMLMIME].
+ + +A. DTDs
+ +This appendix is normative.
+ +These DTDs and entity sets form a normative part of this +specification. The complete set of DTD files together with an XML +declaration and SGML Open Catalog is included in the zip file and the gzip'd tar file for this specification. Users looking for local copies of the DTDs to work with should download and use those archives +rather than using the specific DTDs referenced below.
+ +A.1. Document Type Definitions
+ +These DTDs approximate the HTML 4 DTDs. The W3C recommends that you +use the authoritative versions of these DTDs at their defined SYSTEM +identifiers when validating content. If you need to use +these DTDs locally you should download one of the archives of this version. For completeness, the normative versions of the DTDs are included here:
+ +A.1.1. XHTML-1.0-Strict
+ +The file DTD/xhtml1-strict.dtd is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ +A.1.2. XHTML-1.0-Transitional
+ +The file DTD/xhtml1-transitional.dtd is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ +A.1.3. XHTML-1.0-Frameset
+ +The file DTD/xhtml1-frameset.dtd is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ +A.2. Entity Sets
+ +The XHTML entity sets are the same as for HTML 4, but have been
+modified to be valid XML 1.0 entity declarations. Note the entity for
+the Euro currency sign (€
or
+€
or €
) is defined as part of the special characters.
A.2.1. Latin-1 characters
+ +The file DTD/xhtml-lat1.ent is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ +A.2.2. Special characters
+ +The file DTD/xhtml-special.ent is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ +A.2.3. Symbols
+ +The file DTD/xhtml-symbol.ent is a normative part of this specification. The annotated contents of this file are available in this separate section for completeness.
+ + +B. Element Prohibitions
+ +This appendix is normative.
+ +The following elements have prohibitions on which elements they can contain (see SGML Exclusions). This prohibition applies to all depths of nesting, i.e. it +contains all the descendant elements.
+ +-
+
a
+
+- must not contain other
a
elements.
+
+ pre
+
+- must not contain the
img
,object
,big
,small
,sub
, orsup
elements.
+
+ button
+
+- must not contain the
input
,select
,textarea
,label
,button
,form
,fieldset
,iframe
or +isindex
elements.
+
+ label
+
+- must not contain other
label
elements.
+
+ form
+
+- must not contain other
form
elements.
+
C. HTML Compatibility Guidelines
+ +This appendix is informative.
+ +This appendix summarizes design guidelines for authors who wish their XHTML documents to render on existing HTML user agents. Note that this recommendation does not define how HTML conforming
+user agents should process HTML documents. Nor does it define the meaning of the Internet Media Type text/html
. For these definitions, see [HTML4] and [RFC2854] respectively.
C.1. Processing Instructions and the XML Declaration
+ +Be aware that processing instructions are rendered on some user +agents. Also, some user agents interpret the XML declaration to mean +that the document is unrecognized XML rather than HTML, and +therefore may not render the document as expected. For compatibility +with these types of legacy browsers, you may want to avoid using +processing instructions and XML declarations. Remember, however, +that when the XML declaration is not included in a document, the +document can only use the default character encodings UTF-8 or UTF-16.
+ +C.2. Empty Elements
+ +Include a space before the trailing /
and >
of empty elements, e.g. <br />
, <hr />
+and <img src="karen.jpg" alt="Karen" />
. Also, use the minimized tag syntax for empty elements, e.g. <br />
, as the
+alternative syntax <br></br>
allowed by XML gives uncertain results in many existing user agents.
C.3. Element Minimization and Empty Element Content
+ +Given an empty instance of an element whose content model is not EMPTY
(for example, an empty title or paragraph) do not use the minimized form (e.g. use
+<p> </p>
and not <p />
).
C.4. Embedded Style Sheets and Scripts
+ +Use external style sheets if your style sheet uses <
or &
or ]]>
or --
. Use external scripts if your script uses <
or
+&
or ]]>
or --
. Note that
+XML parsers are permitted to silently remove the contents of comments.
+Therefore, the historical practice of "hiding" scripts
+and style sheets within "comments" to make the documents backward
+compatible is likely to not work as expected in XML-based user agents.
C.5. Line Breaks within Attribute Values
+ +Avoid line breaks and multiple white space characters within attribute values. These are handled inconsistently by user agents.
+ +C.6. Isindex
+ +Don't include more than one isindex
element in the document head
. The isindex
element is deprecated in favor of the input
element.
C.7. The lang
and xml:lang
Attributes
+
+Use both the lang
and xml:lang
attributes when specifying the language of an element. The value of the xml:lang
attribute takes precedence.
C.8. Fragment Identifiers
+ +In XML, URI-references [RFC2396] that end with fragment identifiers of the form
+"#foo"
do not refer to elements with an attribute name="foo"
; rather, they refer to elements with an attribute defined to be of type ID
, e.g., the id
+attribute in HTML 4. Many existing HTML clients don't support the use of ID
-type attributes in this way, so identical values may be supplied for both of these attributes to ensure
+maximum forward and backward compatibility (e.g., <a id="foo" name="foo">...</a>
).
Further, since the set of legal values for attributes of type ID
is much smaller than for those of type CDATA
, the type of the name
attribute has been
+changed to NMTOKEN
. This attribute is constrained such that it can only have the same values as type ID
, or as the Name
+production in XML 1.0 Section 2.3,
+production 5. Unfortunately, this constraint cannot be expressed in the
+XHTML 1.0 DTDs. Because of this change, care must be taken when
+converting existing HTML documents. The values of these
+attributes must be unique within the document, valid, and any
+references to these fragment identifiers (both internal and external)
+must be updated should the values be changed during conversion.
Note that the collection of legal values in XML 1.0 Section 2.3,
+production 5 is much larger than that permitted to be used in the ID
and NAME
types defined in HTML 4.
+When defining fragment identifiers to be backward-compatible, only strings matching the pattern [A-Za-z][A-Za-z0-9:_.-]*
should be used. See Section 6.2 of [HTML4] for more information.
Finally, note that XHTML 1.0 has deprecated the name
attribute of the a
, applet
, form
, frame
, iframe
,
+img
, and map
elements, and it will be removed from XHTML in subsequent versions.
C.9. Character Encoding
+ +Historically, the character encoding of an HTML document is either
+specified by a web server via the charset parameter of the HTTP
+Content-Type header, or via a meta
element in the
+document itself. In an XML document, the character encoding of the document is specified on the XML declaration (e.g., <?xml version="1.0" encoding="EUC-JP"?>
).
+In order to portably present documents with specific character
+encodings, the best approach is to ensure that the web server provides
+the correct headers. If this is not possible, a document that
+wants to set its character encoding explicitly must include both the
+XML declaration an encoding declaration and a meta
http-equiv statement (e.g., <meta
+http-equiv="Content-type" content="text/html; charset=EUC-JP" />
). In XHTML-conforming user agents, the value of the encoding declaration of the XML declaration takes precedence.
Note: be aware that if a document must include the character +encoding declaration in a meta http-equiv statement, that document may +always be interpreted by HTTP servers and/or user agents as +being of the internet media type defined in that statement. If a +document is to be served as multiple media types, the HTTP server must +be used to set the encoding of the document.
+ +C.10. Boolean Attributes
+ +Some HTML user agents are unable to interpret boolean attributes
+when these appear in their full (non-minimized) form, as required by
+XML 1.0. Note this problem doesn't affect user agents
+compliant with HTML 4. The following attributes are involved: compact
, nowrap
, ismap
, declare
, noshade
, checked
,
+disabled
, readonly
, multiple
, selected
, noresize
, defer
.
C.11. Document Object Model and XHTML
+ +The Document Object Model level 1 Recommendation [DOM] +defines document object model interfaces for XML and HTML 4. The HTML 4 +document object +model specifies that HTML element and attribute names are returned in +upper-case. The XML document object model specifies that element and +attribute names are returned in the case they are specified. +In XHTML 1.0, elements and attributes are specified in lower-case. This +apparent difference can be addressed in two ways:
+ +-
+
- User agents that access XHTML documents served as Internet media type
text/html
via the DOM can use the HTML DOM, and can rely upon element +and attribute names being returned in upper-case from those interfaces.
+
+ - User agents that access XHTML documents served as Internet media types
text/xml
,application/xml
, orapplication/xhtml+xml
+can also use the XML DOM. +Elements and attributes will be returned in lower-case. Also, some +XHTML elements may or may not appear in the object tree because they +are optional in the content model (e.g. thetbody
+element withintable
). +This occurs because in HTML 4 some elements were permitted to be +minimized such that their start and end tags are both omitted (an SGML +feature). This is not +possible in XML. Rather than require document authors to insert +extraneous elements, XHTML has made the elements optional. User agents +need to adapt to this accordingly. For further information on +this topic, see [DOM2]
+
C.12. Using Ampersands in Attribute Values (and Elsewhere)
+ +In both SGML and XML, the ampersand character ("&") declares the
+beginning of an entity reference (e.g., ® for the registered
+trademark symbol "®"). Unfortunately, many HTML user
+agents have silently ignored incorrect usage of the ampersand character
+in HTML documents - treating ampersands that do not look like entity
+references as literal ampersands. XML-based user agents
+will not tolerate this incorrect usage, and any document that uses an
+ampersand incorrectly will not be "valid", and consequently will not
+conform to this specification. In order to ensure that
+documents are compatible with historical HTML user agents and XML-based
+user agents, ampersands used in a document that are to be treated as
+literal characters must be expressed themselves as an
+entity reference (e.g. "&
"). For example, when the href
attribute of the a
element refers to a CGI script that takes parameters, it must be expressed as
+http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
rather than as http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user
.
C.13. Cascading Style Sheets (CSS) and XHTML
+ +The Cascading Style Sheets level 2 Recommendation [CSS2] +defines style properties which are applied to the parse tree of the +HTML or XML +documents. Differences in parsing will produce different visual or +aural results, depending on the selectors used. The following hints +will reduce this effect for documents which are served without +modification as both media types:
+ +-
+
- CSS style sheets for XHTML should use lower case element and attribute names. + +
- In tables, the tbody element will be inferred by the parser of an +HTML user agent, but not by the parser of an XML user agent. Therefore +you should always explicitly add a tbody element if it is +referred to in a CSS selector. + +
- Within the XHTML namespace, user agents are expected to recognize +the "id" attribute as an attribute of type ID. Therefore, style sheets +should be able to continue using the shorthand "#" +selector syntax even if the user agent does not read the DTD. + +
- Within the XHTML namespace, user agents are expected to recognize +the "class" attribute. Therefore, style sheets should be able to +continue using the shorthand "." selector syntax. + +
- CSS defines different conformance rules for HTML and XML documents; +be aware that the HTML rules apply to XHTML documents delivered as HTML +and the XML rules apply to XHTML documents delivered as +XML. +
C.14. Referencing Style Elements when serving as XML
+ +In HTML 4 and XHTML, the style
element can be used to
+define document-internal style rules. In XML, an XML stylesheet
+declaration is used to define style rules. In order to be
+compatible with this convention, style
elements should have their fragment identifier set using the id
attribute, and an XML stylesheet declaration should reference this
+fragment. For example:
<?xml-stylesheet href="http://www.w3.org/StyleSheets/TR/W3C-REC.css" type="text/css"?> +<?xml-stylesheet href="#internalStyle" type="text/css"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<title>An internal stylesheet example</title> +<style type="text/css" id="internalStyle"> + code { + color: green; + font-family: monospace; + font-weight: bold; + } +</style> +</head> +<body> +<p> + This is text that uses our + <code>internal stylesheet</code>. +</p> +</body> +</html> ++
C.15. White Space Characters in HTML vs. XML
+ +Some characters that are legal in HTML documents, are illegal in XML +document. For example, in HTML, the Formfeed character (U+000C) is +treated as white space, in XHTML, due to XML's definition of +characters, it is illegal.
+ +C.16. The Named Character Reference '
+ +The named character reference '
(the apostrophe, U+0027) was introduced in XML 1.0 but does not appear in HTML. Authors should therefore use '
instead of
+'
to work as expected in HTML 4 user agents.
D. Acknowledgements
+ +This appendix is informative.
+ +This specification was written with the participation of the members of the W3C HTML Working Group.
+ +At publication of the second edition, the membership was:
+ +-
+
- Steven Pemberton, CWI/W3C (HTML Working Group Chair)
+Daniel Austin, Grainger
+Jonny Axelsson, Opera Software
+Tantek Çelik, Microsoft
+Doug Dominiak, Openwave Systems
+Herman Elenbaas, Philips Electronics
+Beth Epperson, Netscape/AOL
+Masayasu Ishikawa, W3C (HTML Activity Lead)
+Shin'ichi Matsui, Panasonic
+Shane McCarron, Applied Testing and Technology
+Ann Navarro, WebGeek, Inc.
+Subramanian Peruvemba, Oracle
+Rob Relyea, Microsoft
+Sebastian Schnitzenbaumer, SAP
+Peter Stark, Sony Ericsson
+
+
At publication of the first edition, the membership was:
+ +-
+
- Steven Pemberton, CWI (HTML Working Group Chair)
+Murray Altheim, Sun Microsystems
+Daniel Austin, AskJeeves (CNET: The Computer Network through July 1999)
+Frank Boumphrey, HTML Writers Guild
+John Burger, Mitre
+Andrew W. Donoho, IBM
+Sam Dooley, IBM
+Klaus Hofrichter, GMD
+Philipp Hoschka, W3C
+Masayasu Ishikawa, W3C
+Warner ten Kate, Philips Electronics
+Peter King, Phone.com
+Paula Klante, JetForm
+Shin'ichi Matsui, Panasonic (W3C visiting engineer through September 1999)
+Shane McCarron, Applied Testing and Technology (The Open Group through August 1999)
+Ann Navarro, HTML Writers Guild
+Zach Nies, Quark
+Dave Raggett, W3C/HP (HTML Activity Lead)
+Patrick Schmitz, Microsoft
+Sebastian Schnitzenbaumer, Stack Overflow
+Peter Stark, Phone.com
+Chris Wilson, Microsoft
+Ted Wugofski, Gateway 2000
+Dan Zigmond, WebTV Networks
+
E. References
+ +This appendix is informative.
+ +-
+
- [CSS2] + +
- "Cascading Style Sheets, level 2 (CSS2) Specification", B. Bos, H. W. Lie, C. Lilley, I. Jacobs, 12 May 1998.
+Latest version available at: http://www.w3.org/TR/REC-CSS2
+
+ - [DOM] + +
- "Document Object Model (DOM) Level 1 Specification", Lauren Wood et al., 1 October
+1998.
+Latest version available at: http://www.w3.org/TR/REC-DOM-Level-1
+
+ - [DOM2] + +
- "Document Object Model (DOM) Level 2 Core Specification", A. Le Hors, et
+al., 13 November 2000.
+Latest version available at: http://www.w3.org/TR/DOM-Level-2-Core
+
+ - [HTML] + +
- "HTML 4.01 Specification", D. Raggett, A. Le Hors, I. Jacobs, 24 December 1999.
+Latest version available at: http://www.w3.org/TR/html401
+
+ - [POSIX.1] + +
- "ISO/IEC 9945-1:1990 Information Technology - Portable +Operating System Interface (POSIX) - Part 1: System Application Program +Interface (API) [C Language]", Institute of Electrical +and Electronics Engineers, Inc, 1990. + +
- [RFC2045] + +
- "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed and N. Borenstein, November +1996. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590. + +
- [RFC2046] + +
- "RFC2046: Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", N. Freed and N. Borenstein, November 1996.
+Available at http://www.ietf.org/rfc/rfc2046.txt. Note that this RFC obsoletes RFC1521, RFC1522, and RFC1590.
+
+ - [RFC2119] + +
- "RFC2119: Key words for use in RFCs to Indicate Requirement Levels", S. Bradner, March 1997.
+Available at: http://www.ietf.org/rfc/rfc2119.txt
+
+ - [RFC2376] + +
- "RFC2376: XML Media Types", E. Whitehead, M. Murata, July 1998.
+This document is obsoleted by [RFC3023].
+Available at: http://www.ietf.org/rfc/rfc2376.txt
+
+ - [RFC2396] + +
- "RFC2396: Uniform Resource Identifiers (URI): Generic Syntax", T. Berners-Lee, R. Fielding, L. Masinter, August 1998.
+This document updates RFC1738 and RFC1808.
+Available at: http://www.ietf.org/rfc/rfc2396.txt
+
+ - [RFC2854] + +
- "RFC2854: The text/html Media Type", D. Conolly, L. Masinter, June 2000.
+Available at: http://www.ietf.org/rfc/rfc2854.txt
+
+ - [RFC3023] + +
- "RFC3023: XML Media Types", M. Murata, S. St.Laurent, D. Kohn, January 2001.
+This document obsoletes [RFC2376].
+Available at: http://www.ietf.org/rfc/rfc3023.txt
+
+ - [RFC3066] + +
- "Tags for the Identification of Languages", H. Alvestrand, January 2001.
+Available at: http://www.ietf.org/rfc/rfc3066.txt
+
+ - [RFC3236] + +
- "The 'application/xhtml+xml' Media Type", M. Baker, P. Stark, January 2002.
+Available at: http://www.ietf.org/rfc/rfc3236.txt
+
+ - [XHTML+MathML] + +
- "XHTML plus Math 1.1 DTD", "A.2 MathML as a DTD Module", Mathematical +Markup Language (MathML) Version 2.0. Available at: http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd + +
- [XHTMLMIME] + +
- "XHTML Media Types", Masayasu Ishikawa, 1 August 2002.
+Latest version available at: http://www.w3.org/TR/xhtml-media-types
+
+ - [XHTMLMOD] + +
- "Modularization of XHTML", M. Altheim et al., 10 April 2001.
+Latest version available at: http://www.w3.org/TR/xhtml-modularization
+
+ - [XML] + +
- "Extensible Markup Language (XML) 1.0 Specification (Second Edition)", T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, 6 October
+2000.
+Latest version available at: http://www.w3.org/TR/REC-xml
+
+ - [XMLNS] + +
- "Namespaces in XML", T. Bray, D. Hollander, A. Layman, 14 January 1999.
+XML namespaces provide a simple method for qualifying names used in XML +documents by associating them with namespaces identified by URI.
+Latest version available at: http://www.w3.org/TR/REC-xml-names
+
+ - [XMLC14N] + +
- "Canonical XML Version 1.0", J. Boyer, 15 March 2001.
+This document describes a method for generating a physical representation, the canonical form, of an XML document.
+Latest version available at: http://www.w3.org/TR/xml-c14n
+
+ FCKeditor - Test 001
+
+ Expected results: The editor content must be loaded and the submit
+ button must post the editors html.
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- Wait the editor to load. +
- Hit the "submit" button and check the posted data. +
- Hit the "submit by code" button and check the posted data. +
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/002.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/002.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/002.html (revision 240) @@ -0,0 +1,74 @@ + + + + +
FCKeditor - Test 002
+Expected results: The editor must work correctly when not value
+ has been set
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- + Wait the editor to load. +
- + Type some text and format it (use the "Bold" and "Style" commands). +
- + Check the toolbar buttons context sensitiveness. +
- + Switch to Source mode. +
- + Repeat steps 2, 3 and 4. +
- + Hit submit button and check the submitted data. + +
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/003.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/003.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/003.html (revision 240) @@ -0,0 +1,76 @@ + + + + +
FCKeditor - Test 003
+Expected results: The user must be able to edit the complete
+ page html.
+ Configurations: FullPage = true ;
+ Steps to Reproduce:
+
-
+
- + Wait the editor to load. +
- + Type some text. +
- + Switch to Source mode. +
- + Switch back to WYSIWYG mode. +
- + Repeat steps 2, 3 and 4. +
- + Hit submit button and check the submitted data. + +
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/004.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/004.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/004.html (revision 240) @@ -0,0 +1,109 @@ + + + + +
FCKeditor - Test 004
+
+ Expected results : The editor must still work when hidding it
+ programmatically (through javascript).
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- + Wait the page to load. +
- + Hit the "Show Editor" button. +
- + Insert some text and format it. +
- + Hit the "Hide Editor" button. +
- + Hit the "Submit" and check the posted HTML. +
- + Close the "Submit" window. +
- + Hit the "Show Editor" button. +
- + Repeat steps 2 and 4.
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/005.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/005.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/005.html (revision 240) @@ -0,0 +1,72 @@ + + + + +
FCKeditor - Test 005
+
+ Expected results: The editor content must be loaded and the
+ submit button must post the editors html. No javascript errors should be thrown
+ (security errors).
+ Configurations: BaseHref = http://www.fckeditor.net
+
+ Steps to Reproduce:
+
-
+
- + Wait the editor to load. +
- + Create a table with border = + 0 and an anchor. +
- Create an image and points it to /images/logotop.gif +
- Hit submit button and check the posted data.
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/006.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/006.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/006.html (revision 240) @@ -0,0 +1,79 @@ + + + + +
FCKeditor - Test 006
+
+ Expected results: The editor content must be loaded and the
+ submit button must post the editors html. No javascript errors should be thorwn
+ (security errors).
+ Configurations: BaseHref = http://www.fckeditor.net / FullPage
+ = true
+
+ Steps to Reproduce:
+
-
+
- + Wait the editor to load. +
- + Create a table with border = 0 and an anchor. +
- + Create an image and points it to /images/logotop.gif +
- + Paste the following CSS tag in the source: <link href="/css/main.css" type="text/css" rel="stylesheet" /> +
- + Check the WYSIWYG mode. +
- + Hit submit button and check the posted data.
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/007.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/007.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/007.html (revision 240) @@ -0,0 +1,68 @@ + + + + +
FCKeditor - Test 007
+
+ Expected results: The editor content must be loaded and the
+ submit button must post the editor's html.
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- + Wait the editor to load. +
- + Enter some text. +
- + Hit submit button and check the posted data.
+
+ + + + Index: /FCKeditor/tags/2.4.2/_testcases/008.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/008.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/008.html (revision 240) @@ -0,0 +1,87 @@ + + + + +
+ FCKeditor - Test 008
+
+ Expected results: The editor content must be loaded and the submit
+ button must post the editors html.
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- Wait the editor to load. +
- Select all the content with the mouse and delete it. +
- Hit the "Save" button - an alert should popup. +
- Insert some text. +
- Hit the "Save" button and check the posted data. +
- Close the data window. +
- Press the "New Page" button. +
- Hit the "Save" button - an alert should popup. +
+
+
+
+ + + Index: /FCKeditor/tags/2.4.2/_testcases/009.html =================================================================== --- /FCKeditor/tags/2.4.2/_testcases/009.html (revision 240) +++ /FCKeditor/tags/2.4.2/_testcases/009.html (revision 240) @@ -0,0 +1,108 @@ + + + + ++ FCKeditor - Test 009
+
+ Expected results: The user should be able to background color of
+ the editor by code.
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- Wait the editor to load. +
- Type some text. +
- Change the background color using the combo. +
- Type more text. +
- Switch to source view. +
- Switch back to WYSIWYG. The background color must be the same. +
- Repeate steps 3 to 6. +
- Submit the form.
+
+ Select a color for the background:
+
+
+ FCKeditor - Test 010
+
+ Expected results: The editor content must be loaded and the the
+ user must be able to change the toolbar dinamically (without reloading the page).
+ Configurations: Default
+ Steps to Reproduce:
+
-
+
- Wait the editor to load. +
- Select some text and format it. +
- Select the "Basic" toolbar. +
- Format more text. +
- Select the "Default" toolbar. +
- Go to "Source" view. +
- Select the "Basic" toolbar. +
- Select the "Default" toolbar. +
- Go to "WYSIWYG" view. +
- Hit submit button and check the posted data.
+
+ Select the toolbar you want to load:
+
+
+ FCKeditor - Samples - Posted Data
++
+ Field Name | ++ Value | +
+ + <%=sForm%> + + | +
+ <%=ModifyForOutput( Request.Form(sForm) )%>+ |
+
+ FCKeditor Upgrade
++ Please check the following URL for notes regarding upgrade: + http://wiki.fckeditor.net/Developer%27s_Guide/Upgrade
+ + Index: /FCKeditor/tags/2.4.2/_whatsnew.html =================================================================== --- /FCKeditor/tags/2.4.2/_whatsnew.html (revision 240) +++ /FCKeditor/tags/2.4.2/_whatsnew.html (revision 240) @@ -0,0 +1,2675 @@ + + + + ++ Version 2.4.2
++ Fixed Bugs:
+-
+
- [#279] The UTF-8 + BOM was being included in the wrong files, affecting mainly PHP installations. +
+ Version 2.4.1
++ New Features and Improvements:
+-
+
- [#118] The SelectAll + command now is available in Source Mode. +
- The new open source FCKpackager sub-project is now available. It replaces the FCKeditor.Packager + software to compact the editor source. +
- With Firefox, if a paste execution is blocked by the browser security settings, + the new "Paste" popup is shown to the user to complete the pasting operation. +
+ Fixed Bugs:
+-
+
- Various fixes to the ColdFusion File Browser connector. +
- We are now pointing the download of ieSpell to their pages, instead to a direct + file download from one of their mirrors. This disables the ability of "click and + go" (which can still be achieved by pointing the download to a file in your server), + but removes any troubles with mirrors link changes (and they change it frequently). +
- The Word cleanup has been changed to remove "display:none" tags that may come from + Word. +
- [SF + BUG-1659613] The 2.4 version introduced a bug in the flash handling code that + generated out of memory errors in IE7. +
- [SF + BUG-1660456] The icons in context menus were draggable. +
- [SF + BUG-1653009] If the server is configured to process html files as asp then it + generated ASP error 0138. +
- [SF + BUG-1288609] The content of iframes is now preserved. +
- [SF + BUG-1245504] [SF + BUG-1652240] Flash files without the .swf extension weren't recognized upon + reload. +
- [SF + PATCH-1649753] Node selection for text didn't work in IE. Thanks to yurik dot + m. +
- [SF + BUG-1573191] The Html code inserted with FCK.InsertHtml didn't have the same + protection for special tags. +
- [#110] The OK + button in dialogs had its width set as an inline style. +
- [#113] [#94] [SF + BUG-1659270] ForcePasteAsPlainText didn't work in Firefox. +
- [#114] The correct + entity is now used to fill empty blocks when ProcessHTMLEntities is disabled. +
- [#90] The editor + was wrongly removing some <br> tags from the code. +
- [#139] The CTRL+F + and CTRL+S keystroke default behaviors are now preserved. +
- [#138] We are + not providing a CTRL + ALT combination in the default configuration file because + it may be incompatible with some keyboard layouts. So, the CTRL + ALT + S combination + has been changed to CTRL + SHIFT + S. +
- [#129] In IE, + it was not possible to paste if "Allow paste operation via script" was disabled + in the browser security settings. +
- [#112] The enter + key now behaves correctly on lists with Firefox, when the EnterMode is set to 'br'. +
- [#152] Invalid + self-closing tags are now being fixed before loading. +
- A few tags were being ignored to the check for required contents (not getting stripped + out, as expected). Fixed. +
- [#202] The HR + tag will not anymore break the contents loaded in the editor. +
- [#211] Some invalid + inputs, like "<p>" where making the caret disappear in Firefox. +
- [#99] The <div> + element is now considered a block container if EnterMode=p|br. It acts like a simple + block only if EnterMode=div. +
- Hidden fields will now show up as an icon in IE, instead of a normal text field. + They are also selectable and draggable, in all browsers. +
- [#213] Styles + are now preserved when hitting enter at the end of a paragraph. +
- [#77] If ShiftEnterMode + is set to a block tag (p or div), the desired block creation in now enforced, instead + of copying the current block (which is still the behavior of the simple enter). +
- [#209] Links and + images URLs will now be correctly preserved with Netscape 7.1. +
- [#165] The enter + key now honors the EnterMode settings when outdenting a list item. +
- [#190] Toolbars + may be wrongly positioned. Fixed. +
- [#254] The IgnoreEmptyParagraphValue + setting is now correctly handled in Firefox. +
- [#248] The behavior + of the backspace key has been fixed on some very specific cases. +
+ Version 2.4
++ New Features and Improvements:
+-
+
- [SF + Feature-1329273] [SF + Feature-1456005] [SF + BUG-1315002] [SF + BUG-1350180] [SF + BUG-1450689] [SF + BUG-1461033] [SF + BUG-1510111] [SF + BUG-1203560] [SF + BUG-1564838] The advance Enter Key Handler + is now being introduced. It gives you complete freedom to configure the editor to + generate <p>, <div> or <br> when the user uses + both the [Enter] and [Shift]+[Enter] keys. The new "EnterMode" and "ShiftEnterMode" + settings can be use to control its behavior. It also guarantees that all browsers + will generate the same output. +
- The new and powerful Keyboard Accelerator System is being introduced.
+ You can now precisely control the commands to execute when some key combinations
+ are activated by the user. It guarantees that all browsers will have the same behavior
+ regarding the shortcuts.
+ It also makes it possible to remove buttons from the toolbar and still invoke their + features by using the keyboard instead. +
+ It also blocks all default "CTRL based shortcuts" imposed by the browsers, so if + you don't want users to underline text, just remove the CTRL+U combination from + the keystrokes table. Take a look at the FCKConfig.Keystrokes setting in the fckconfig.js + file.
+ - The new "ProtectedTags" configuration option is being introduced. + It will accept a list of tags (separated by a pipe "|"), which will have no effect + during editing, but will still be part of the document DOM. This can be used mainly + for non HTML standard, custom tags. +
- Dialog box commands can now open resizable dialogs (by setting oCommand.Resizable + = true). +
- Updated support for AFP. Thanks to Soenke Freitag. +
- New language file:
-
+
- Afrikaans (by Willem Petrus Botha). +
+ - [SF + Patch-1456343] New sample file showing how to dynamically exchange a textarea + and an instance of FCKeditor. Thanks to Finn Hakansson +
- [SF + Patch-1496115] [SF + BUG-1588578] [SF + BUG-1376534] [SF + BUG-1343506] [SF + Feature-1211065] [SF + Feature-949144] The content of anchors are shown and preserved + on creation. * +
- [SF + Feature-1587175] Local links to an anchor are readjusted if the anchor changes. +
- [SF + Patch-1500040] New configuration values to specify the Id and Class for the + body element. +
- [SF + Patch-1577202] The links created with the popup option now are accessible even + if the user has JavaScript disabled. +
- [SF + Patch-1443472] [SF + BUG-1576488] [SF + BUG-1334305] [SF + BUG-1578312] The Paste from Word clean up function can be configured + with FCKConfig.CleanWordKeepsStructure to preserve the markup as much as possible. + Thanks Jean-Charles ROGEZ. +
- [SF + Patch-1472654] The server side script location for SpellerPages can now be set + in the configuration file, by using the SpellerPagesServerScript setting. +
- Attention: All connectors are now pointing by + default to the "/userfiles/" folder instead of "/UserFiles/" (case change). Also, + the inner folders for each type (file, image, flash and media) are all lower-cased + too. +
- Attention: The UseBROnCarriageReturn configuration + is not anymore valid. The EnterMode setting can now be used to precisely set the + enter key behavior. +
+ Fixed Bugs:
+-
+
- [SF + BUG-1444937] [SF + BUG-1274364] Shortcut keys are now undoable correctly. +
- [SF + BUG-1015230] Toolbar buttons now update their state on shortcut keys activation. +
- [SF + BUG-1485621] It is now possible to precisely control which shortcut keys can + be used. +
- [SF + BUG-1573714] [SF + BUG-1593323] Paste was not working in IE if both AutoDetectPasteFromWord + and ForcePasteAsPlainText settings were set to "false". +
- [SF + BUG-1578306] The context menu was wrongly positioned if the editing document + was set to render in strict mode. Thanks to Alfonso Martinez. +
- [SF + BUG-1567060] [SF + BUG-1565902] [SF + BUG-1440631] IE was getting locked on some specific cases. Fixed. +
- [SF + BUG-1582859] [SF + Patch-1579507] Firefox' spellchecker is now disabled during editing mode. + Thanks to Alfonso Martinez. +
- Fixed Safari and Opera detection system (for development purposes only). +
- Paste from Notepad was including font information in IE. Fixed. +
- [SF + BUG-1584092] When replacing text area, names with spaces are now accepted. +
- Depending on the implementation of toolbar combos (mainly for custom plugins) the + editor area was loosing the focus when clicking in the combo label. Fixed. +
- [SF + BUG-1596937] InsertHtml() was inserting the HTML outside the editor area on + some very specific cases. +
- [SF + BUG-1585548] On very specific, rare and strange cases, the XHTML processor was + not working properly in IE. Fixed. +
- [SF + BUG-1584951] [SF + BUG-1380598] [SF + BUG-1198139] [SF + BUG-1437318] In Firefox, the style selector will not anymore delete + the contents when removing styles on specific cases. +
- [SF + BUG-1515441] [SF + BUG-1451071] The "Insert/Edit Link" and "Select All" buttons are now working + properly when the editor is running on a IE Modal dialog. +
- On some very rare cases, IE was throwing a memory error when hiding the context + menus. Fixed. +
- [SF + BUG-1526154] [SF + BUG-1509208] With Firefox, <style> tags defined in the source are + now preserved. +
- [SF + BUG-1535946] The IE dialog system has been changed to better work with custom + dialogs. +
- [SF + BUG-1599520] The table dialog was producing empty tags when leaving some of + its fields empty. +
- [SF + BUG-1599545] HTML entities are now processed on attribute values too. +
- [SF + BUG-1598517] Meta tags are now protected from execution during editing (avoiding + the "redirect" meta to be activated). +
- [SF + BUG-1415601] Firefox internals: styleWithCSS is used instead of the deprecated + useCSS whenever possible. +
- All JavaScript Core extension function have been renamed to "PascalCase" (some were + in "camelCase"). This may have impact on plugins that use any of those functions. +
- [SF + BUG-1592311] Operations in the caption of tables are now working correctly in + both browsers. +
- Small interface fixes to the about box. +
- [SF + PATCH-1604576] [SF + BUG-1604301] Link creation failed in Firefox 3 alpha. Thanks to Arpad Borsos +
- [SF + BUG-1577247] Unneeded call to captureEvents and releaseEvents. +
- [SF + BUG-1610790] On some specific situations, the call to form.submit(), in form + were FCKeditor has been unloaded by code, was throwing the "Can't execute code from + a freed script" error. +
- [SF + BUG-1613167] If the configuration was missing the FCKConfig.AdditionalNumericEntities + entry an error appeared. +
- [SF + BUG-1590848] [SF + BUG-1626360] Cleaning of JavaScript strict warnings in the source code. +
- [SF + BUG-1559466] The ol/ul list property window always searched first for a UL element. +
- [SF + BUG-1516008] Class attribute in IE wasn't loaded in the image dialog. +
- The "OnAfterSetHTML" event is now fired when being/switching to Source View. +
- [SF + BUG-1631807] Elements' style properties are now forced to lowercase in IE. +
- The extensions "html", "htm" and "asis" have been added to the list of denied extensions + on upload. +
- Empty inline elements (like span and strong) will not be generated any more. +
- Some elements attributes (like hspace) where not being retrieved when set to "0". +
- [SF + BUG-1508341] Fix for the ColdFusion script file of SpellerPages. +
+ * This version has been partially sponsored by Medical + Media Lab.
++ Version 2.3.3
++ New Features and Improvements:
+-
+
- The project has been relicensed under the terms of the + GPL / LGPL / MPL licenses. This change will remove many licensing compatibility + issues with other open source licenses, making the editor even more "open" than + before. +
- Attention: The default directory in the distribution + package is now named "fckeditor" (in lowercase) instead of "FCKeditor". This + change may impact installations on case sensitive OSs, like Linux. +
- Attention: The "Universal Keyboard" has been removed + from the package. The license of those files was unclear so they can't be included + alongside the rest of FCKeditor. +
+ Version 2.3.2
++ New Features and Improvements:
+-
+
- Users can now decide if the template dialog will replace the entire contents of + the editor or simply place the template in the cursor position. This feature can + be controlled by the "TemplateReplaceAll" and "TemplateReplaceCheckbox" configuration + options. +
- [SF + Patch-1237693] A new configuration option (ProcessNumericEntities) + is now available to tell the editor to convert non ASCII chars to their relative + numeric entity references. It is disabled by default. +
- The new "AdditionalNumericEntities" setting makes it possible to + define a set of characters to be transformed to their relative numeric entities. + This is useful when you don't want the code to have simple quotes ('), for example. +
- The Norwegian language file (no.js) has been duplicated to include the Norwegian + Bokmal (nb.js) in the supported interface languages. Thanks to Martin Kronstad. + +
- Two new patterns have been added to the Universal Keyboard:
+
-
+
- Persian. Thanks to Pooyan Mahdavi +
- Portuguese. Thanks to Bo Brandt. +
+ - [SF + Patch-1517322] It is now possible to define the start number on numbered lists. + Thanks to Marcel Bennett. +
- The Font Format combo will now reflect the EditorAreaCSS styles. +
- [SF + Patch-1461539] The File Browser connector can now optionally return a "url" + attribute for the files. Thanks to Pent. +
- [SF + BUG-1090851] The new "ToolbarComboPreviewCSS" configuration option has been + created, so it is possible to point the Style and Format toolbar combos to a different + CSS, avoiding conflicts with the editor area CSS. +
- [SF + Feature-1421309] [SF + BUG-1489402] It is now possible to configure the Quick Uploder target path + to consider the file type (ex: Image or File) in the target path for uploads. +
- The JavaScript integration file has two new things:
+
-
+
- The "CreateHtml()" function in the FCKeditor object, used to retrieve the HTML of + an editor instance, instead of writing it directly to the page (as done by "Create()"). +
- The global "FCKeditor_IsCompatibleBrowser()" function, which tells if the executing + browser is compatible with FCKeditor. This makes it possible to do any necessary + processing depending on the compatibility, without having to create and editor instance. +
+
+ Fixed Bugs:
+-
+
- [SF + BUG-1525242] [SF + BUG-1500050] All event attributes (like onclick or onmouseover) are now + being protected before loading the editor. In this way, we avoid firing those events + during editing (IE issue) and they don't interfere in other specific processors + in the editor. +
- Small security fixes to the File Browser connectors. +
- [SF + BUG-1546226] Small fix to the ColdFusion CFC integration file. +
- [SF + Patch-1407500] The Word Cleanup function was breaking the HTML on pasting, on + very specific cases. Fixed, thanks to Frode E. Moe. +
- [SF + Patch-1551979] [SF + BUG-1418066] [SF + BUG-1439621] [SF + BUG-1501698] Make FCKeditor work with application/xhtml+xml. Thanks + to Arpad Borsos. +
- [SF + Patch-1547738] [SF + BUG-1550595] [SF + BUG-1540807] [SF + BUG-1510685] Fixed problem with panels wrongly positioned when the + editor is placed on absolute or relative positioned elements. Thanks to Filipe Martins. +
- [SF + Patch-1511294] Small fix for the File Browser compatibility with IE 5.5. +
- [SF + Patch-1503178] Small improvement to stop IE from loading smiley images when + one smiley is quickly selected from a huge list of smileys. Thanks to stuckhere. +
- [SF + BUG-1549112] The Replace dialog window now escapes regular expression specific + characters in the find and replace fields. +
- [SF + BUG-1548788] Updated the ieSpell download URL. +
- In FF, the editor was throwing an error when closing the window. Fixed. +
- [SF + BUG-1538509] The "type" attribute for text fields will always be set now. +
- [SF + BUG-1551734] The SetHTML function will now update the editing area height no + matter which editing mode is active. +
- [SF + BUG-1554141] [SF + BUG-1565562] [SF + BUG-1451056] [SF + BUG-1478408] [SF + BUG-1489322] [SF + BUG-1513667] [SF + BUG-1562134] The protection of URLs has been enhanced + and now it will not break URLs on very specific cases. +
- [SF + BUG-1545732] [SF + BUG-1490919] No security errors will be thrown when loading FCKeditor in + page inside a FRAME defined in a different domain. +
- [SF + BUG-1512817] [SF + BUG-1571345] Fixed the "undefined" addition to the content when ShowBorders + = false and FullPage = true in Firefox. Thanks to Brett. +
- [SF + BUG-1512798] BaseHref will now work well on FullPage, even if no <head> + is available. +
- [SF + BUG-1509923] The DocumentProcessor is now called when using InserHtml(). +
- [SF + BUG-1505964] The DOCTYPE declaration is now preserved when working in FullPage. +
- [SF + BUG-1553727] The editor was throwing an error when inserting complex templates. + Fixed. +
- [SF + Patch-1564930] [SF + BUG-1562828] In IE, anchors where incorrectly copied when using the Paste + from Word button. Fixed, thanks to geirhelge. +
- [SF + BUG-1557709] [SF + BUG-1421810] The link dialog now validates Popup Window names. +
- [SF + BUG-1556878] Firefox was creating empty tags when deleting the selection in + some special cases. +
- The context menu for links is now correctly shown when right-clicking on floating + divs. +
- [SF + BUG-1084404] The XHTML processor now ignores empty span tags. +
- [SF + BUG-1221728] [SF + BUG-1174503] The <abbr> tag is not anymore getting broken by IE. +
- [SF + BUG-1182906] IE is not anymore messing up mailto links. +
- [SF + BUG-1386094] Fixed an issue when setting configuration options to empty ('') + by code. +
- [SF + BUG-1389435] Fixed an issue in some dialog boxes when handling numeric inputs. +
- [SF + BUG-1398829] Some links may got broken on very specific cases. Fixed. +
- [SF + BUG-1409969] <noscript> tags now remain untouched by the editor. +
- [SF + BUG-1433457] [SF + BUG-1513631] Empty "href" attributes in <a> or empty "src" in <img> + will now be correctly preserved. +
- [SF + BUG-1435195] Scrollbars are now visible in the File Browser (for custom implementations). +
- [SF + BUG-1438296] The "ForceSimpleAmpersand" setting is now being honored in all + tags. +
- If a popup blocker blocks context menu operations, the correct alert message is + displayed now, instead of a ugly JavaScript error. +
- [SF + BUG-1454116] The GetXHTML() function will not change the IsDirty() value of + the editor. +
- The spell check may not work correctly when using SpellerPages with ColdFusion. + Fixed. +
- [SF + BUG-1481861] HTML comments are now removed by the Word Cleanup System. +
- [SF + BUG-1489390] A few missing hard coded combo options used in some dialogs are + now localizable. +
- [SF + BUG-1505448] The Form dialog now retrieves the value of the "action" attribute + exactly as defined in the source. +
- [SF + Patch-1517322] Solved an issue when the toolbar has buttons with simple icons + (usually used by plugins) mixed with icons coming from a strip (the default toolbar + buttons). +
- [SF + Patch-1575261] Some fields in the Table and Cell Properties dialogs were being + cut. Fixed. +
- Fixed a startup compatibility issue with Firefox 1.0.4. +
+ Version 2.3.1
++ Fixed Bugs:
+-
+
- [SF + BUG-1506126] Fixed the Catalan language file, which had been published with + problems in accented letters. +
- More performance improvements in the default File Browser. +
- [SF + BUG-1506701] Fixed compatibility issues with IE 5.5. +
- [SF + BUG-1509073] Fixed the "Image Properties" dialog window, which was making invalid + calls to the "editor/dialog/" directory, generating error 400 entries in the web + server log. +
- [SF + BUG-1507294] [SF + BUG-1507953] The editing area was getting a fixed size when using the "SetHTML" + API command or even when switching back from the source view. Fixed. +
- [SF + BUG-1507755] Fixed a conflict between the "DisableObjectResizing" and "ShowBorders" + configuration options over IE. +
- Opera 9 tries to "mimic" Gecko in the browser detection system of FCKeditor. As + this browser is not "yet" supported, the editor was broken on it. It has been fixed, + and now a textarea is displayed, as in any other unsupported browser. Support for + Opera is still experimental and can be activated by setting the property "EnableOpera" + to true when creating an instance of the editor with the JavaScript integration + files. +
- With Opera 9, the toolbar was jumping on buttons rollover. +
- [SF + BUG-1509479] The iframes used in Firefox for all editor panels (dropdown combos, + context menu, etc...) are now being placed right before the main iframe that holds + the editor. In this way, if the editor container element is removed from the DOM + (by DHTML) they are removed together with it. +
- [SF + BUG-1271070] [SF + BUG-1411430] The editor API now works well on DHTML pages that create and + remove instances of FCKeditor dynamically. +
- A second call to a page with the editor was not working correctly with Firefox 1.0.x. + Fixed. +
- [SF + BUG-1511460] Small correction to the <script> protected source regex. + Thanks to Randall Severy. +
- [SF + BUG-1521754] Small fix to the paths of the internal CSS files used by FCKeditor. + Thanks to johnw_ceb. +
- [SF + BUG-1511442] The <base> tag is now correctly handled in IE, no matter + its position in the source code. +
- [SF + BUG-1507773] The "Lock" and "Reset" buttons in the Image Properties dialog window + are not anymore jumping with Firefox 1.5. +
+ Version 2.3
++ New Features and Improvements:
+-
+
- The Toolbar Sharing system has been completed. See sample10.html + and sample11.html.* +
- [SF + Patch-1407500] Small enhancement to the Find and Replace dialog windows. +
+ Fixed Bugs:
+-
+
- Small security fixes. +
- The context menu system has been optimized. Nested menus now open "onmouseover". + +
- An error in the image preloader system was making the toolbar strip being downloaded + once for each button on slow connections. Some enhancements have also been made + so now the smaple05.html is loading fast for all skins. +
- Fixed many memory leak issues with IE. +
- [SF + BUG-1489768] The panels (context menus, toolbar combos and color selectors), + where being displayed in the wrong position if the contents of the editor, or its + containing window were scrolled down. +
- [SF + BUG-1493176] Using ASP, the connector was not working on servers with buffer + disable by default. +
- [SF + BUG-1491784] Language files have been updated to not include html entities. +
- [SF + BUG-1490259] No more security warning on IE over HTTPS. +
- [SF + BUG-1493173] [SF + BUG-1499708] We now assume that, if a user is in source editing, he/she + wants to control the HTML, so the editor doesn't make changes to it when posting + the form being in source view or when calling the GetXHTML function in the API. + +
- [SF + BUG-1490610] The FitWindow is now working on elements set with relative position. +
- [SF + BUG-1493438] The "Word Wrap" combo in the cell properties dialog now accepts + only Yes/No (no more <Not Set> value). +
- The context menu is now being hidden when a nested menu option is selected. +
- Table cell context menu operations are now working correctly. +
- [SF + BUG-1494549] The code formatter was having problems with dollar signs inside + <pre> tags. +
- [SF + Patch-1459740] The "src" element of images can now be set by styles definitions. + Thanks to joelwreed. +
- [SF + Patch-1437052] [SF + Patch-1436166] [SF + Patch-1352385] Small fix to the FCK.InsertHtml, FCKTools.AppendStyleSheet + and FCKSelection.SelectNode functions over IE. Thanks to Alfonso Martinez. +
- [SF + Patch-1349765] Small fix to the FCKSelection.GetType over Firefox. Thanks to + Alfonso Martinez. +
- [SF + Patch-1495422] The editor now creates link based on the URL when no selection + is available. Thanks to Dominik Pesch. +
- [SF + Patch-1478859] On some circumstances, the Yahoo popup blocker was blocking the + File Browser window, giving no feedback to the user. Now an alert message is displayed. +
- When using the editor in a RTL localized interface, like Arabic, the toolbar combos + were not showing completely in the first click. Fixed. +
- [SF + BUG-1500212] All "_samples/html" samples are now working when loading directly + from the Windows Explorer. Thanks to Alfonso Martinez. +
- The "FitWindow" feature was breaking the editor under Firefox 1.0.x. +
- [SF + Patch-1500032] In Firefox, the caret position now follows the user clicks when + clicking in the white area bellow the editor contents. Thanks to Alfonso Martinez. +
- [SF + BUG-1499522] In Firefox, the link dialog window was loosing the focus (and quickly + reacquiring it) when opening. This behavior was blocking the dialog in some Linux + installations. +
- Drastically improved the loading performance of the file list in the default File + Browser. +
- [SF + BUG-1503059] The default "BasePath" for FCKeditor in all integration files has + been now unified to "/fckeditor/" (lower-case). This is the usual casing system + in case sensitive OSs like Linux. +
- The "DisableFFTableHandles" setting is now honored when switching the full screen + mode with FitWindow. +
- Some fixes has been applied to the cell merging in Firefox. +
+ * This version has been partially sponsored by Footsteps + and Kentico.
++ Version 2.3 Beta
++ New Features and Improvements:
+-
+
- Extremely Fast Loading! The editor now loads more than 3 + times faster than before, with no impact on its advanced features. +
- New toolbar system:
+
-
+
- [SF + Feature-1454850] The toolbar will now load much faster. All + images have being merged in a single image file using a unique system available + only with FCKeditor. +
- The "Text Color" and "Background Color" commands buttons have + enhancements on the interface. +
- Attention: As a completely + new system has being developed. Skins created for versions prior this one will not + work. Skin styles definitions have being merged, added and removed. All skins have + been a little bit reviewed. +
- It is possible to detach the toolbar from an editor instance and + share it with other instances. In this way you may have only one toolbar (in the + top of the window, for example, that can be used by many editors (see + sample10.html). This feature is still under development (issues with IE + focus still to be solved).* +
+ - New context menu system:
+
-
+
- It uses the same (fast) loading system as the toolbar. +
- Sub-Menus are now available to group features (try the context menu over a table + cell). +
- It is now possible to create your own context menu entries by creating plugins. + +
+ - New "FitWindow" toolbar button, based on the + plugin published by Paul Moers. Thanks Paul! +
- "Auto Grow" Plugin: automatically resizes the editor + until a maximum height, based on its contents size.** +
- [SF + Feature-1444943] Multiple CSS files can now be used in the + editing area. Just define FCKConfig.EditorAreaCSS as an array of strings (each one + is a path to a different css file). It works also as a simple string, as on prior + versions. +
- New language files:
-
+
- Bengali / Bangla (by Richard Walledge). +
- English (Canadian) (by Kevin Bennett). +
- Khmer (by Sengtha Chay). +
+ - The source view is now available in the editing area on Gecko browsers. Previously + a popup was used for it (due to a Firefox bug). +
- As some people may prefer the popup way for source editing, a new configuration + option (SourcePopup) has being introduced. +
- The IEForceVScroll configuration option has been removed. The editor now automatically + shows the vertical scrollbar when needed (for XHTML doctypes). +
- The configuration file doesn't define a default DOCTYPE to be used now. +
- It is now possible to easily change the toolbar using the JavaScript API by just + calling <EditorInstance>.ToolbarSet.Load( '<ToolbarName>' ). See _testcases/010.html + for a sample. +
- The "OnBlur" and "OnFocus" JavaScript API events are now compatible + with all supported browsers. +
- Some few updates in the Lasso connector and uploader. +
- The GeckoUseSPAN setting is now set to "false" by default. In this way, the code + produced by the bold, italic and underline commands are the same on all browsers. +
+ Fixed Bugs:
+-
+
- Important security fixes have been applied to the File Manager, Uploader + and Connectors. Upgrade is highly recommended. Thanks to Alberto Moro, + Baudouin Lamourere and James Bercegay. +
- [SF + BUG-1399966] [SF + BUG-1249853] The "BaseHref" configuration is now working with + Firefox in both normal and full page modes. +
- [SF + BUG-1405263] A typo in the configuration file was impacting the Quick Upload + feature. +
- Nested <ul> and <ol> tags are now generating valid html. +
- The "wmode" and "quality" attributes are now preserved for Flash + embed tags, in case they are entered manually in the source view. Also, empty attributes + are removed from that tag. +
- Tables where not being created correctly on Opera. +
- The XHTML processor will ignore invalid tags with names ending with ":", + like http:. +
- On Firefox, the scrollbar is not anymore displayed on toolbar dropdown commands + when not needed. +
- Some small fixes have being done to the dropdown commands rendering for FF. + +
- The table dialog window has been a little bit enlarged to avoid contents being cropped + on some languages, like Russian. +
- [SF + BUG-1465203] The ieSpell download URL has been updated. The problem is that + they don't have a fixed URL for it, so let's hope the mirror will be up for it. + +
- [SF + BUG-1456332] Small fix in the Spanish language file. +
- [SF + BUG-1457078] The File Manager was generating 404 calls in the server. +
- [SF + BUG-1459846] Fixed a problem with the config file if PHP is set to parse .js + files. +
- [SF + BUG-1432120] The "UserFilesAbsolutePath" setting is not correctly + used in the PHP uploader. +
- [SF + BUG-1408869] The collapse handler is now rendering correctly in Firefox 1.5. + +
- [SF + BUG-1410082] [SF + BUG-1424240] The "moz-bindings.xml" file is now well formed. +
- [SF + BUG-1413980] All frameborder "yes/no" values have been changes to + "1/0". +
- [SF + BUG-1414101] The fake table borders are now showing correctly when running under + the "file://" protocol. +
- [SF + BUG-1414155] Small typo in the cell properties dialog window. +
- Fixed a problem in the File Manager. It was not working well with folder or file + names with apostrophes ('). Thanks to René de Jong. +
- Small "lenght" type corrected in the select dialog window. Thanks to Bernd Nussbaumer. +
- The about box is now showing correctly in Firefox 1.5. +
- [SF + Patch-1464020] [SF + BUG-1155793] The "Unlink" command is now working correctly under Firefox + if you don't have a complete link selection. Thanks to Johnny Egeland. +
- In the File Manager, it was not possible to upload files to folders with ampersands + in the name. Thanks to Mike Pone. +
- [SF + BUG-1178359] Elements from the toolbar are not anymore draggable in the editing + area. +
- [SF + BUG-1487544] Fixed a small issue in the code formatter for <br /> and + <hr /> tags. +
- The "Background Color" command now works correctly when the GeckoUseSPAN setting + is disabled (default). +
- Links are now rendered in blue with Firefox (they were black before). Actually, + an entry for it has been added to the editing area CSS, so you can customize with + the color you prefer. +
+ * This version has been partially sponsored by Footsteps
+ and Kentico.
+
+ ** This version has been partially sponsored by Nextide.
+ Version 2.2
++ New Features and Improvements:
+-
+
- Let's welcome Wim Lemmens (didgiman). He's our new responsible for the ColdFusion
+ integration. In this version we are introducing his new files with the following
+ changes:
+
-
+
- The "Uploader", used for quick uploads, is now available + natively for ColdFusion. +
- Small bugs have been corrected in the File Browser connector. +
- The samples now work as is, even if you don't install the editor in the "/FCKeditor" + directory. +
+ - And a big welcome also to "Andrew Liu", our responsible for the + Python integration. This version is bringing native support for Python + , including the File Browser connector and Quick Upload. +
- The "IsDirty()" and "ResetIsDirty()" + functions have been added to the JavaScript API to check if the editor + content has been changed.* +
- New language files:
+
-
+
- Hindi (by Utkarshraj Atmaram) +
- Latvian (by Janis Klavinš) +
+ - For the interface, now we have complete RTL support also for + the drop-down toolbar commands, color selectors and context menu. +
- [SF + BUG-1325113] [SF + BUG-1277661] The new "Delete Table" command is available in the + Context Menu when right-clicking inside a table. +
- The "FCKConfig.DisableTableHandles" configuration option is now working + on Firefox 1.5. +
- The new "OnBlur" and "OnFocus" + events have been added to the JavaScript API (IE only). See "_samples/html/sample09.html" * + +
- Attention: The "GetHTML" + function has been deprecated. It now returns the same value as "GetXHTML". + The same is valid for the "EnableXHTML" and "EnableSourceXHTML" + that have no effects now. The editor now works with XHTML output only. +
- Attention: A new "PreserveSessionOnFileBrowser" + configuration option has been introduced. It makes it possible to set whenever is + needed to maintain the user session in the File Browser. It is disabled by default, + as it has very specific usage and may cause the File Browser to be blocked by popup + blockers. If you have custom File Browsers that depends on session information, + remember to activate it. +
- Attention: The "fun" + smileys set has been removed from the package. If you are using it, you must manually + copy it to newer installations and upgrades. +
- Attention: The "mcpuk" + file browser has been removed from the package. We have no ways to support it. There + were also some licensing issues with it. Its web site can still be found at + http://mcpuk.net/fbxp/. +
- It is now possible to set different CSS styles for the chars in the Special Chars + dialog window by adding the "SpecialCharsOut" and "SpecialCharsOver" + in the "fck_dialog.css" skin file.* +
- [SF + Patch-1268726] Added table "summary" support in the table dialog. + Thanks to Sebastien-Mahe. +
- [SF + Patch-1284380] It is now possible to define the icon of a FCKToolbarPanelButton + object without being tied to the skin path (just like FCKToolbarButton). Thanks + to Ian Sullivan. +
- [SF + Patch-1338610] [SF + Patch-1263009] New characters have been added to the "Special Characters" + dialog window. Thanks to Deian. +
- You can set the QueryString value "fckdebug=true" to activate "debug + mode" in the editor (showing the debug window), overriding the configurations. + The "AllowQueryStringDebug" configuration option is also available so + you can disable this feature. +
+ Fixed Bugs:
+-
+
- [SF + BUG-1363548] [SF + BUG-1364425] [SF + BUG-1335045] [SF + BUG-1289661] [SF + BUG-1225370] [SF + BUG-1156291] [SF + BUG-1165914] [SF + BUG-1111877] [SF + BUG-1092373] [SF + BUG-1101596] [SF + BUG-1246952] The URLs for links and + images are now correctly preserved as entered, no matter if you are using relative + or absolute paths. +
- [SF + BUG-1162809] [SF + BUG-1205638] The "Image" and "Flash" dialog windows + now loads the preview correctly if the "BaseHref" configuration option + is set. +
- [SF + BUG-1329807] The alert boxes are now showing correctly when doing cut/copy/paste + operations on Firefox installations when it is not possible to execute that operations + due to security settings. +
- A new "Panel" system (used in the drop-dowm toolbar commands, color selectors
+ and context menu) has been developed. The following bugs have been fixed with it:
+
-
+
- [SF + BUG-1186927] On IE, sometimes the context menu was being partially hidden.* + +
- On Firefox, the context menu was flashing in the wrong position before showing. + +
- On Firefox 1.5, the Color Selector was not working. +
- On Firefox 1.5, the fonts in the panels were too big. +
- [SF + BUG-1076435] [SF + BUG-1200631] On Firefox, sometimes the context menu was being shown in the + wrong position. +
+ - [SF + BUG-1364094] Font families were + not being rendered correctly on Firefox . +
- [SF + BUG-1315954] No error is thrown when pasting some case specific code from editor + to editor. +
- [SF + BUG-1341553] A small fix for a security alert in the File Browser has been + applied. +
- [SF + BUG-1370953] [SF + BUG-1339898] [SF + BUG-1323319] A message will be shown to the user (instead of a JS error) if + a "popup blocker" blocks the "Browser Server" button. Thanks + to Erwin Verdonk. +
- [SF + BUG-1370355] Anchor links that points to a single character anchor, like "#A", + are now correctly detected in the Link dialog window. Thanks to Ricky Casey. +
- [SF + BUG-1368998] Custom error processing has been added to the file upload on the + File Browser. +
- [SF + BUG-1367802] [SF + BUG-1207740] A message is shown to the user if a dialog box is blocked by + a popup blocker in Firefox. +
- [SF + BUG-1358891] [SF + BUG-1340960] The editor not works locally (without a web server) on directories + where the path contains spaces. +
- [SF + BUG-1357247] The editor now intercepts SHIFT + INS keystrokes when needed. +
- [SF + BUG-1328488] Attention: The Page + Break command now produces different tags to avoid XHTML compatibility + issues. Any Page Break previously applied to content produced with previous versions + of FCKeditor will not me rendered now, even if they will still be working correctly. + +
- It is now possible to allow cut/copy/past operations on Firefox using the user.js file. +
- [SF + BUG-1336792] A fix has been applied to the XHTML processor to allow tag names + with the "minus" char (-). +
- [SF + BUG-1339560] The editor now correctly removes the "selected" option + for checkboxes and radio buttons. +
- The Table dialog box now selects the table correctly when right-clicking on objects + (like images) placed inside the table. +
- Attention: A few changes have been + made in the skins. If you have a custom skin, it is recommended you to make a diff + of the fck_contextmenu.css file of the default skin with your implementation. +
- Mouse select (marking things in blue, like selecting text) has been disabled + on panels (drop-down menu commands, color selector and context menu) and toolbar, + for both IE and Firefox. +
- On Gecko, fake borders will not be applied to tables with the border attribute set + to more than 0, but placed inside tables with border set to 0. +
- [SF + BUG-1360717] A wrapping issue in the "Silver" skin has been corrected. + Thanks to Ricky Casey. +
- [SF + BUG-1251145] In IE, the focus is now maintained in the text when clicking in + the empty area following it. +
- [SF + BUG-1181386] [SF + BUG-1237791] The "Stylesheet Classes" field in the Link dialog + window in now applied correctly on IE. Thanks to Andrew Crowe. +
- The "Past from Word" dialog windows is now showing correctly on Firefox + on some languages. +
- [SF + BUG-1315008] [SF + BUG-1241992] IE, when selecting objects (like images) and hitting the "Backspace" + button, the browser's "back" will not get executed anymore and the object + will be correctly deleted. +
- The "AutoDetectPasteFromWord" is now working correctly in IE. Thanks to + Juan Ant. Gómez. +
- A small enhancement has been made in the Word pasting detection. Thanks to Juan + Ant. Gómez. +
- [SF + BUG-1090686] No more conflict with Firefox "Type-Ahead Find" feature. + +
- [SF + BUG-942653] [SF + BUG-1155856] The "width" and "height" of images sized + using the inline handlers are now correctly loaded in the image dialog box. +
- [SF + BUG-1209093] When "Full Page Editing" is active, in the "Document + Properties" dialog, the "Browse Server" button for the page background + is now correctly hidden if "ImageBrowser" is set to "false" + in the configurations file. Thanks to Richard. +
- [SF + BUG-1120266] [SF + BUG-1186196] The editor now retains the focus when selecting commands in + the toolbar. +
- [SF + BUG-1244480] The editor now will look first to linked fields "ids" + and second to "names". +
- [SF + BUG-1252905] The "InsertHtml" function now preserves URLs as entered. + +
- [SF + BUG-1266317] Toolbar commands are not anymore executed outside the editor. +
- [SF + BUG-1365664] The "wrap=virtual" attribute has been removed from the + integration files for validation purposes. No big impact. +
- [SF + BUG-972193] Now just one click is needed to active the cursor inside the editor. + +
- The hidden fields used by the editor are now protected from changes using the "Web + Developer Add-On > Forms > Display Forms Details" extension. Thanks to + Jean-Marie Griess. +
- On IE, the "Format" toolbar dropdown now reflects the current paragraph + type on IE. Because of a bug in the browser, it is quite dependent on the browser + language and the editor interface language (both must be the same). Also, as the + "Normal (DIV)" type is seen by IE as "Normal", to avoid confusion, + both types are ignored by this fix. +
- On some very rare cases, IE was loosing the "align" attribute for DIV + tags. Fixed. +
- [SF + BUG-1388799] The code formatter was removing spaces on the beginning of lines + inside PRE tags. Fixed. +
- [SF + BUG-1387135] No more "NaN" values in the image dialog, when changing + the sizes in some situations. +
- Corrected a small type in the table handler. +
- You can now set the "z-index" for floating panels (toolbar dropdowns, + color selectors, context menu) in Firefox, avoiding having them hidden under another + objects. By default it is set to 10,000. Use the FloatingPanelsZIndex configuration + option to change this value. +
+ Special thanks to + Alfonso Martinez, who have provided many patches and suggestions for the + following features / fixes present in this version. I encourage all you to + donate to Alfonso, as a way to say thanks for his nice open source approach. + Thanks Alfonso!. Check out his contributions:
+-
+
- [SF + BUG-1352539] [SF + BUG-1208348] With Firefox, no more "fake" selections are appearing + when inserting images, tables, special chars or when using the "insertHtml" + function. +
- [SF + Patch-1382588] The "FCKConfig.DisableImageHandles" configuration option + is not working on Firefox 1.5. +
- [SF + Patch-1368586] Some fixes have been applied to the Flash dialog box and the + Flash pre-processor. +
- [SF + Patch-1360253] [SF + BUG-1378782] [SF + BUG-1305899] [SF + BUG-1344738] [SF + BUG-1347808] On dialogs, some fields became impossible + to select or change when using Firefox. It has been fixed. +
- [SF + Patch-1357445] Add support for DIV in the Format drop-down combo for Firefox. + +
- [SF + BUG-1350465] [SF + BUG-1376175] The "Cell Properties" dialog now works correctly + when right-clicking in an object (image, for example) placed inside the cell itself. + +
- [SF + Patch-1349166] On IE, there is now support for namespaces on tags names. +
- [SF + Patch-1350552] Fix the display issue when applying styles on tables. +
- [SF + Patch-1352320 ] Fixed a wrong usage of the "parentElement" + property on Gecko. +
- [SF + Patch-1355007] The new "FCKDebug.OutputObject" function is available + to dump all object information in the debug window. +
- [SF + Patch-1329500] It is now possible to delete table columns when clicking on a + TH cell of the column. +
- [SF + Patch-1315351] It is now possible to pass the image width and height to the + "SetUrl" function of the Flash dialog box. +
- [SF + Patch-1327384] TH tags are now correctly handled by the source code formatter + and the "FillEmptyBlocks" configuration option. +
- [SF + Patch-1327406] Fake borders are now displayed for TH elements on tables with + border set to 0. Also, on Firefox, it will now work even if the border attribute + is not defined and the borders are not dotted. +
- Hidden fields now get rendered on Firefox. +
- The BasePath is now included in the debugger URL to avoid problems when calling + it from plugins. +
+ * This version has been partially sponsored by + Alkacon Software.
++ Version 2.1.1
++ New Features and Improvements:
+-
+
- The new "Insert Page Break" command (for printing) has + been introduced.* +
- The editor package now has a root directory called "FCKeditor". +
+ Fixed Bugs:
+-
+
- [SF + BUG-1326285] [SF + BUG-1316430] [SF + BUG-1323662] [SF + BUG-1326223] We are doing a little step back with this version. + The ENTER and BACKSPACE behavior changes for Firefox have been remove. It is a nice + feature, but we need much more testing on it. It introduced some bugs and so + its preferable to not have that feature, avoiding problems (even if that feature + was intended to solve some issues). +
- [SF + BUG-1275714] Comments in the beginning of the source are now preserved when + using the "undo" and "redo" commands. +
- The "undo" and "redo" commands now work for the Style command. + +
- An error in the execution of the pasting commands on Firefox has been fixed. +
- [SF + BUG-1326184] No strange (invalid) entities are created when using Firefox. Also, + the used by the FillEmptyBlocks setting is maintained even if you disable + the ProcessHTMLEntities setting. +
+ * This version has been partially sponsored by + Acctive Software S.A..
++ Version 2.1
++ New Features and Improvements:
+-
+
- [SF + BUG-1200328] The editor now offers a way to "protect" part of the + source to remain untouched while editing or changing views. Just use the "FCKConfig.ProtectedSource" + object to configure it and customize to your needs. It is based on regular expressions. + See fckconfig.js for some samples. +
- The editor now offers native support for Lasso. Thanks and welcome to + our new developer Jason Huck. +
- New language files are available:
+
-
+
- Faraose (by Símin Lassaberg and Helgi Arnthorsson) + +
- Malay (by Fairul Izham Mohd Mokhlas) +
- Mongolian (by Lkamtseren Odonbaatar) +
- Vietnamese (by Phan Binh Giang) +
+ - A new configurable ColdFusion connector is available. Thanks to Mark Woods. + Many enhancements has been introduced with it. +
- The PHP connector for the default File Browser now sorts the folders and files names. + +
- [SF + BUG-1289372] [SF + BUG-1282758] In the PHP connector it is now possible to set the absolute + (server) path to the User Files directory, avoiding problems with Virtual Directories, + Symbolic Links or Aliases. Take a look at the config.php file. +
- The ASP.Net uploader (for Quick Uploads) has been added to the package. +
- A new way to define simple "combo" toolbar items , like + Style and Font, has been introduced. Thanks to Steve Lineberry. See + sample06.html and the "simplecommands" plugin to fully understand + it. +
- A new test case has been added that shows how to set the editor background dynamically + without using a CSS. +
- [SF + BUG-1155906] [SF + BUG-1110116] [SF + BUG-1216332] The "AutoDetectPasteFromWord" configuration option + is back (IE only feature). +
- The new "OnAfterLinkedFieldUpdate" event has been introduced. If + is fired when the editor updates its hidden associated field. +
- Attention: The color of the right border of the toolbar (left on RTL interfaces) + has been moved from code to the CSS (TB_SideBorder class). Update your custom skins. + +
- A sample "htaccess.txt" file has been added to the editor's package + to show how to configure some Linux sites that could present problems on Firefox + with "Illegal characters" errors. Respectively the "" + chars. +
- With the JavaScript, ASP and PHP integration files, you can set the QueryString + value "fcksource=true" to load the editor using the source files (located + in the _source directory) instead of the compressed ones. Thanks to Kae Verens for + the suggestion. +
- [SF + Feature-1246623] The new configuration option "ForceStrongEm" has + been introduced so you can force the editor to convert all <B> and <I> + tags to <STRONG> and <EM> respectively. +
- A nice contribution has been done by Goss Interactive Ltd:
+
-
+
- [SF
+ BUG-1246949] Implemented ENTER key and BACKSPACE key handlers for Gecko so that
+ P tags (or an appropriate block element) get inserted instead of BR tags when not
+ in the UseBROnCarriageReturn config mode.
+
+ The ENTER key handling has been written to function much the same as the ENTER key + handling on IE : as soon as the ENTER key is pressed, existing content will be wrapped + with a suitable block element (P tag) as appropriate and a new block element (P + tag) will be started. +
+ The ENTER key handler also caters for pressing ENTER within empty list items - ENTER + in an empty item at the top of a list will remove that list item and start a new + P tag above the list; ENTER in an empty item at the bottom of a list will remove + that list item and start a new P tag below the list; ENTER in an empty item in the + middle of a list will remove that list item, split the list into two, and start + a new P tag between the two lists.
+ - Any tables that are found to be incorrectly nested within a block element (P tag) + will be moved out of the block element when loaded into the editor. This is required + for the new ENTER/BACKSPACE key handlers and it also avoids non-compliant HTML. + +
- The InsertOrderedList and InsertUnorderedList commands have been overridden on Gecko + to ensure that block elements (P tags) are placed around a list item's content when + it is moved out of the list due to clicking on the editor's list toolbar buttons + (when not in the UseBROnCarriageReturn config mode). +
+ - [SF
+ BUG-1246949] Implemented ENTER key and BACKSPACE key handlers for Gecko so that
+ P tags (or an appropriate block element) get inserted instead of BR tags when not
+ in the UseBROnCarriageReturn config mode.
+
+ Fixed Bugs:
+-
+
- [SF + BUG-1253255] [SF + BUG-1265520] Due to changes on version 2.0, the anchor list was not anymore + visible in the link dialog window. It has been fixed. +
- [SF + BUG-1242979] [SF + BUG-1251354] [SF + BUG-1256178] [SF + BUG-1274841] [SF + BUG-1303949] Due to a bug on Firefox, some keys stopped working + on startup over Firefox. It has been fixed. +
- [SF + BUG-1251373 ] The above fix also has corrected some strange behaviors on + Firefox. +
- [SF + BUG-1144258] [SF + BUG-1092081] The File Browsers now run on the same server session used + in the page where the editor is placed in (IE issue). Thanks to Simone Chiaretta. + +
- [SF + BUG-1305619 ] No more repeated login dialogs when running the editor with Windows + Integrated Security with IIS. +
- [SF + Patch-1245304] The Test Case 004 is now working correctly. It has been changed + to set the editor hidden at startup. +
- [SF + BUG-1290610 ] Over HTTPS, there were some warnings when loading the Images, + Flash and Link dialogs. Fixed. +
- Due to Gecko bugs, two errors were thrown when loading the editor in a hidden div. + Workarounds have been introduced. In any case, the testcase 004 hack is needed when + showing the editor (as in a tabbed interface). +
- An invalid path in the dialogs CSS file has been corrected. +
- On IE, the Undo/Redo can now be controlled using the Ctrl+Z and Ctrl+Y shortcut + keys. +
- [SF + BUG-1295538 ] A few Undo/Redo fixes for IE have been done. +
- [SF + BUG-1247070] On Gecko, it is now possible to use the shortcut keys for Bold + (CTRL+B), Italic (CTRL+I) and Underline (CTRL+U), like in IE. +
- [SF + BUG-1274303] The "Insert Column" command is now working correctly + on TH cells. It also copies any attribute applied to the source cells. +
- [SF + Patch-1287070 ] In the Universal Keyboard, the Arabic keystrokes translator + is now working with Firefox. Thanks again to Abdul-Aziz Al-Oraij. +
- The editor now handles AJAX requests with HTTP status 304. +
- [SF + BUG-1157780] [SF + BUG-1229077] Weird comments are now handled correctly (ignored on some cases). + +
- [SF + BUG-1155774] A spelling error in the Bulleted List Properties dialog has been + corrected. +
- [SF + BUG-1272018] The ampersand character can now be added from the Special Chars + dialog. +
- [SF + BUG-1263161] A small fix has been applied to the sampleposteddata.php file. + Thanks to Mike Wallace. +
- [SF + BUG-1241504] The editor now looks also for the ID of the hidden linked field. + +
- The caption property on tables is now working on Gecko. Thanks to Helen Somers (Goss + Interactive Ltd). +
- [SF + BUG-1297431] With IE, the editor now works locally when its files are placed + in a directory path that contains spaces. +
- [SF + BUG-1279551] [SF + BUG-1242105] On IE, some features are dependant of ActiveX components (secure... + distributed with IE itself). Some security setting could avoid the usage of + those components and the editor would stop working. Now a message is shown, indicating + the use the minimum necessary settings need by the editor to run. +
- [SF + BUG-1298880] Firefox can't handle the STRONG and EM tags. Those tags are now + converted to B and I so it works accordingly. +
- [SF + BUG-1271723] On IE, it is now possible to select the text and work correctly + in the contents of absolute positioned/dimensioned divs. +
- On IE, there is no need to click twice in the editor to activate the cursor + in the editing area. +
- [SF + BUG-1221621] Many "warnings" in the Firefox console are not thrown + anymore. +
- [SF + BUG-1295526] While editing on "FullPage" mode the basehref is + now active for CSS "link" tags. +
- [SF + Patch-1222584] A small fix to the PHP connector has been applied. +
- [SF + Patch-1281313] A few small changes to avoid problems with Plone. Thanks to Jean-mat. + +
- [SF + BUG-1275911] A check for double dots sequences on directory names on creation + has been introduced to the PHP and ASP connectors. +
+ Version 2.0
++ New Features and Improvements:
+-
+
- The new "Flash" command is available. Now you can + easily handle Flash content, over IE and Gecko, including server browser integration + and context menu support. Due to limitations of the browsers, it is not possible + to see the preview of the movie while editing, so a nice "placeholder" + is used instead. * +
- A "Quick Upload " option is now available in the + link, image and flash dialog windows, so the user don't need to go (or have) the + File Browser for this operations. The ASP and PHP uploader are included. Take + a look at the configuration file.*** +
- Added support for Active FoxPro Pages . Thanks to our new developer, + Sönke Freitag. +
- It is now possible to disable the size handles for images and tables + (IE only feature). Take a look at the DisableImageHandles and DisableTableHandles + configuration options. +
- The handles on form fields (small squares around them) and the inline editing + of its contents have been disabled. This makes it easier to users to use + the controls. +
- A much better support for Word pasting operations has been introduced. Now it uses + a dialog box, in this way we have better results and more control.** +
- [SF + Patch-1225372] A small change has been done to the PHP integration file. The + generic __construct constructor has been added for better PHP 5 sub-classing compatibility + (backward compatible). Thanks to Marcus Bointon. +
+ Fixed Bugs:
+-
+
- ATTENTION: Some security changes have been made to the connectors. Now you must + explicitly enable the connector you want to use. Please test your application before + deploying this update. +
- [SF + BUG-1211591] [SF + BUG-1204273] The connectors have been changed so it is not possible to use + ".." on directory names. +
- [SF + Patch-1219734] [SF + BUG-1219728] [SF + BUG-1208654] [SF + BUG-1205442] There was an error in the page unload on some cases + that has been fixed. +
- [SF + BUG-1209708] [SF + BUG-1214125] The undo on IE is now working correctly when the user starts + typing. +
- The preview now loads "Full Page" editing correctly. It also uses the + same XHTML code produced by the final output. +
- The "Templates" dialog was not working on some very specific (and strange) + occasions over IE. +
- [SF + BUG-1199631] [SF + BUG-1171944] A new option is available to avoid a bad IE behavior that shows + the horizontal scrollbar even when not needed. You can now force the vertical scrollbar + to be always visible. Just set the "IEForceVScroll" configuration option + to "true". Thanks to Grant Bartlett. +
- [SF + Patch-1212026] [SF + BUG-1228860] [SF + BUG-1211775] [SF + BUG-1199824] An error in the Packager has been corrected. +
- [SF + BUG-1163669] The XHTML processor now adds a space before the closing slash of + tags that don't have a closing tag, like <br />. +
- [SF + BUG-1213733] [SF + BUG-1216866] [SF + BUG-1209673] [SF + BUG-1155454] [SF + BUG-1187936 ] Now, on Gecko, the source is opened in a + dialog window to avoid fatal errors (Gecko bugs). +
- Some pages have been changed to avoid importing errors on Plone. Thanks to Arthur + Kalmenson. +
- [SF + BUG-1171606] There is a bug on IE that makes the editor to not work if + the instance name matches a meta tag name. Fixed. +
- On Firefox, the source code is now opened in a dialog box, to avoid error on pages + with more than one editor. +
- [SF + Patch-1225703] [SF + BUG-1214941] The "ForcePasteAsPlainText" configuration option + is now working correctly on Gecko browsers. Thanks to Manuel Polo. +
- [SF + BUG-1228836] The "Show Table Borders" feature is now working on Gecko + browsers. +
- [SF + Patch-1212529] [SF + BUG-1212517] The default File Browser now accepts connectors with querystring + parameters (with "?"). Thanks to Tomas Jucius. +
- [SF + BUG-1233318] A JavaScript error thrown when using the Print command has been + fixed. +
- [SF + BUG-1229696] A regular expression has been escaped to avoid problems when opening + the code in some editors. It has been moved to a dialog window. +
- [SF + BUG-1231978] [SF + BUG-1228939] The Preview window is now using the Content Type and Base href. + +
- [SF + BUG-1232056] The anchor icon is now working correctly on IE. +
- [SF + BUG-1202468] The anchor icon is now available on Gecko too. +
- [SF + BUG-1236279] A security warning has been corrected when using the File Browser + over HTTPS. +
- The ASP implementation now avoid errors when setting the editor value to null values. + +
- [SF + BUG-1237359] The trailing <BR> added by Gecko at the end of the source + is now removed. +
- [SF + BUG-1170828] No more is added to the source when using the "New + Page" button. +
- [SF + BUG-1165264] A new configuration option has been included to force the + editor to ignore empty paragraph values (<p> </p>), returning + empty (""). +
- No more is added when creating a table or adding columns, rows or cells. + +
- The <TD> tags are now included in the FillEmptyBlocks configuration handling. + +
- [SF + BUG-1224829] A small bug in the "Find" dialog has been fixed. +
- [SF + BUG-1221307] A small bug in the "Image" dialog has been fixed. +
- [SF + BUG-1219981] [SF + BUG-1155726] [SF + BUG-1178473] It is handling the <FORM>, <TEXTAREA> and <SELECT> + tags "name" attribute correctly. Thanks to thc33. +
- [SF + BUG-1205403] The checkbox and radio button values are now handled correctly + in their dialog windows. Thanks to thc33. +
- [SF + BUG-1236626] The toolbar now doesn't need to collapse when unloading the page + (IE only). +
- [SF + BUG-1212559] [SF + BUG-1017231] The "Save" button now calls the "onsubmit" + event before posting the form. The submit can be cancelled if the onsubmit returns + "false". +
- [SF + BUG-1215823] The editor now works correctly on Firefox if it values is set to + "<p></p>". +
- [SF + BUG-1217546] No error is thrown when "pasting as plain text" and no + text is available for pasting (as an image for example). +
- [SF + BUG-1207031] [SF + BUG-1223978] The context menu is now available in the source view. +
- [SF + BUG-1213871] Undo has been added to table creation and table operation commands. + +
- [SF + BUG-1205211] [SF + BUG-1229941] Small bug in the mcpuk file browser have been corrected. +
+ * This version has been partially sponsored by
+ Infineon Technologies AG.
+ ** This version has been partially sponsored by
+ Visualsoft Web Solutions.
+ *** This version has been partially sponsored by
+ Web Crossing, Inc.
+ Version 2.0 FC (Final Candidate)
++ New Features and Improvements:
+-
+
- A new tab called "Link" is available in the Image + Dialog window. In this way you can insert or modify the image link directly + from that dialog.* +
- The new "Templates" command is now available. Now the + user can select from a list of pre-build HTML and fill the editor with it. Take + a look at the "_docs" for more info.** +
- The mcpuk's File Browser for + PHP has been included in the package. He became the official developer of the File + Manager for FCKeditor, so we can expect good news in the future. +
- New configuration options are available to hide tabs from the + Image Dialog and Link Dialog windows: LinkDlgHideTarget, + LinkDlgHideAdvanced, ImageDlgHideLink and ImageDlgHideAdvanced. +
- [SF + BUG-1189442] [SF + BUG-1187164] [SF + BUG-1185905] It is now possible to configure the editor to not convert Greek + or special Latin letters to ther specific HTML entities. You + can also configure it to not convert any character at all. Take a look at the "ProcessHTMLEntities", + "IncludeLatinEntities" and "IncludeGreekEntities" configuration + options. +
- New language files are available:
+
-
+
- Basque (by Ibon Igartua) +
- English (Australia / United Kingdom) (by Christopher Dawes) +
- Ukrainian (by Alexander Pervak) +
+ - The version and date information have been removed from the files headers to avoid + unecessary diffs in source control systems when new versions are released (from + now on). +
- [SF + Patch-1159854] Ther HTML output rendered by the server side integration files + are now XHTML compatible. +
- [SF + BUG-1181823] It is now possible to set the desired DOCTYPE to use when edit + HTML fragments (not in Full Page mode). +
- There is now an optional way to implement different "mouse over" effects + to the buttons when they are "on" of "off". +
+ Fixed Bugs:
+-
+
- [SF + BUG-1162200] [SF + BUG-1161633] [SF + BUG-1050293] [SF + BUG-1058948] [SF + BUG-1109120] [SF + BUG-1155408] The IE memory leak bug has been solved. The + code has been completely reviewed and many memory usage improvements have been done. + +
- [SF + BUG-1179645] [SF + BUG-1183252 ] [SF + BUG-1181647] [SF + BUG-1155627] [SF + BUG-1155782] [SF + BUG-1155750] [SF + BUG-1157166] [SF + BUG-1157857] [SF + BUG-1158121] [SF + BUG-1177153] [SF + BUG-1175847] [SF + BUG-1155747] There was a loading + problem in Gecko browsers in some cases. It has been solved. +
- [SF + BUG-1161147] [SF + BUG-1157635] [SF + BUG-1149805] [SF + BUG-1124600] [SF + BUG-1117535] [SF + BUG-1118145] [SF + BUG-1098113] [SF + BUG-1092272] [SF + BUG-1086416] [SF + BUG-1027952] [SF + BUG-978441 ] A custom Undo/Redo system + has been implemented for IE. +
- The editor startup execution is now made in the right order (so configurations override + works correctly). +
- [SF + BUG-1166779] [SF + BUG-1166651] [SF + BUG-1066198] [SF + BUG-1090388 ] No more "illegible" characters in the + toolbar when "ClearType" is active. +
- It is now possible to set the "width" style of the BODY tag in the EditorAreaCSS + to limit the editing area size. +
- [SF + BUG-1113620] In IE, the editor doesn't generate new entries in the browser history + anymore. +
- The editor now uses the same method used on version RC2 to load its contents on + Gecko. It is now possible to have more than one editor in the page. This change + has a negative impact: the BaseHref property is not working. +
- Changes have been made to make the editor work with PHP versions older than 2.1.0. + +
- [SF + BUG-1190835] [SF + BUG-1196547] [SF + BUG-1156863] The "Insert Horizontal Line" command is now working + correctly. Thanks to Hector Raul Colonia Coral. +
- [SF + BUG-1101861] The editor now shows a normal textarea correctly (as expected) + on Safari browsers (and all "like Gecko" browsers). Thanks to Bob Paul. + +
- [SF + BUG-1182224] The PHP connector can now handle file extensions in upper case, like + JPG or Gif, correctly. Thanks to Georg Ivancsic. +
- The "sample06.html" is now working correctly with Gecko browsers. +
- [SF + BUG-1156660] Some fixes have been applied to the Universal Keyboard. Thanks + to Abdul-Aziz Al-Oraij. +
- [SF + BUG-1192881] [SF + BUG-1185006] [SF + BUG-1156068] The "Browse Server" button is now working correctly + for the Background Image in the "Document Properties" dialog window (full + page editing). The active "BaseHref" is also set to the preview window. + +
- [SF + BUG-1191704] Invalid HTML tags (according to the W3C naming standards for XHTML) + are ignored with no errors. +
- [SF + BUG-1185911] The Greek language file name has been corrected to "el.js". + +
- [SF + BUG-1181572] [SF + BUG-1158421] The "Print" button is now active on startup. +
- [SF + BUG-1165219] No error occours when the user defines just one color to the FontColors + on "in page" configurations. +
- [SF + BUG-1162957] The small problem with Zope (ZPT) has been solved. +
- Some small RTL / LTR corrections has been done in the interface and the Farsi language + has been added to the Universal Keyboard. Thanks to Silver Baghdasarian. +
+ * This version has been partially sponsored by the
+ Hamilton College.
+ ** This version has been partially sponsored by
+ Infineon Technologies AG.
+ Version 2.0 RC3 (Release Candidate 3)
++ New Features and Improvements:
+-
+
- The editor now offers native Perl integration! Thanks and welcome + to Takashi Yamaguchi, our official Perl developer. +
- [SF + Feature-1026584] [SF + Feature-1112692] Formatting has been introduced to the + Source View. The output HTML can also be formatted. You can choose + to use spaces or tab for indentation. See the configuration file. +
- [SF + Feature-1031492] [SF + Feature-1004293] [SF + Feature-784281] It is now possible to edit full HTML pages + with the editor. Use the "FullPage" configuration setting to activate + it. +
- The new toolbar command, "Document Properties" is + available to edit document header info, title, colors, background, etc... Full page + editing must be enabled. +
- [SF + Feature-1151448] Spell Check is now available. You can use + ieSpell or Speller Pages right from FCKeditor. + More info about configuration can be found in the _docs folder. +
- [SF + Feature-1041686] [SF + Feature-1086386] [SF + Feature-1124602] New "Insert Anchor" command + has been introduced. (The anchor icon is visible only over IE for now). +
- [SF + Feature-1123816] It is now possible to configure the editor to show "fake" + table borders when the border size is set to zero. (It is working only + on IE for now). +
- Numbered and Bulleted lists can now be + configured . Just right click on then. +
- [SF + Feature-1088608] [SF + Feature-1144047] [SF + Feature-1149808] A new configuration setting is available, "BaseHref + ", to set the URL used to resolve relative links. +
- It is now possible to set the content language direction . + See the "FCKConfig.ContentLangDirection" configurations setting. +
- All Field Commands available on version 1.6 have been upgraded + and included in this version: form, checkbox, + radio button, text field, text area, + select field, button, image button + and hidden field . +
- Context menu options (right-click) has been added for: + anchors, select field, textarea, + checkbox, radio button, text field, + hidden field, textarea, button, + image button, form, bulleted list + and numbered list . +
- The "Universal Keyboard" has been converted from version + 1.6 to this one and it's now available. +
- It is now possible to configure the items to be shown in the + context menu . Just use the FCKConfig.ContextMenu option at fckconfig.js. + +
- A new configuration (FillEmptyBlocks) is available to force the editor to + automatically insert a on empty block elements (p, div, pre, + h1, etc...) to avoid differences from the editing and the final result. (Actually, + the editor automatically "grows" empty elements to make the user able + to enter text on it). Attention: the extra will be added when switching + from WYSIWYG to Source View, so the user may see an additional space on empty blocks. + (XHTML support must be enabled). +
- It is now possible to configure the toolbar to "break + " between two toolbar strips. Just insert a "/" between then. Take + a look at fckconfig.js for a sample. +
- New Language files are available:
+
-
+
- Brazilian Portuguese (by Carlos Alberto Tomatis Loth) +
- Bulgarian (by Miroslav Ivanov) +
- Esperanto (by Tim Morley) +
- Galician (by Fernando Riveiro Lopez) +
- Japanese ( by Takashi Yamaguchi) +
- Persian (by Hamed Taj-Abadi) +
- Romanian (by Adrian Nicoara) +
- Slovak (by Gabriel Kiss) +
- Thai (by Audy Charin Arsakit) +
- Turkish (by Reha Biçer) +
- The Chinese Traditional has been set as the default (zn) instead of zn-tw. +
+ - Warning: All toolbar image images have been changed. The "button." prefix + has been removed. If you have your custom skin, please rename your files. +
- A new plugin is available in the package: "Placeholders". + In this way you can insert non editable tags in your document to be processed on + server side (very specific usage). +
- The ASPX files are no longer available in this package. They have been moved to + the FCKeditor.Net package. In this way the ASP.Net integration is much better organized. + +
- The FCKeditor.Packager program is now part of the main package. It is not anymore distributed + separately. +
- The PHP connector now sets the uploaded file permissions (chmod) to 0777. +
- [SF + Patch-1090215] It's now possible to give back more info from your custom image + browser calling the SetUrl( url [, width] [, height] [, alt] ). Thanks to Ben Noblet. + +
- The package files now maintain their original "Last Modified" date, so + incremental FTP uploads can be used to update to new versions of the editor + (from now on). +
- The "Source" view now forces its contents to be written in "Left + to Right" direction even when the editor interface language is running a RTL + language (like Arabic, Hebrew or Persian). +
+ Fixed Bugs:
+-
+
- [SF + BUG-1124220] [SF + BUG-1119894] [SF + BUG-1090986] [SF + BUG-1100408] The editor now works correctly when starting with an + empty value and switching to the Source mode. +
- [SF + BUG-1119380] [SF + BUG-1115750] [SF + BUG-1101808] The problem with the scrollbar and the toolbar combos (Style, + Font, etc...) over Mac has been fixed. +
- [SF + BUG-1098460] [SF + BUG-1076544] [SF + BUG-1077845] [SF + BUG-1092395] A new upload class has been included for the ASP File + Manager Connector. It uses the "ADODB.Stream" object. Many thanks to "NetRube". + +
- I small correction has been made to the ColdFusion integration files. Thanks to + Hendrik Kramer. +
- There was a very specific problem when the editor was running over a FRAME executed + on another domain. +
- The performance problem on Gecko while typing quickly has been solved. +
- The <br type= "_moz">is not anymore shown on XHTML source. +
- It has been introduced a mechanism to avoid automatic contents duplication on very + specific occasions (bad formatted HTML). +
- [SF + BUG-1146407] [SF + BUG-1145800] [SF + BUG-1118803 ] Other issues in the XHTML processor have been solved. + +
- [SF + BUG-1143969] The editor now accepts the "accept-charset" attribute + in the FORM tag (IE specific bug). +
- [SF + BUG-1122742] [SF + BUG-1089548 ] Now, the contents of the SCRIPT and STYLE tags remain untouched. + +
- [SF + BUG-1114748] The PHP File Manager Connector now sets the new folders permissions + (chmod) to 0777 correctly. +
- The PHP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/php/config.php) + to set some security preferences. +
- The ASP File Manager Connector now has a configuration file (editor/filemanager/browser/default/connectors/asp/config.asp) + to set some security preferences. +
- A small bug in the toolbar rendering (strips auto position) has been corrected. + +
- [SF + BUG-1093732] [SF + BUG-1091377] [SF + BUG-1083044] [SF + BUG-1096307] The configurations are now encoded so a user can use + values that has special chars (&=/). +
- [SF + BUG-1103688] [SF + BUG-1092331] [SF + BUG-1088220] PHP samples now use PHP_SELF to automatically discover + the editor's base path. +
- Some small wrapping problems with some labels in the Image and Table dialog windows + have been fixed. +
- All .js files are now encoded in UTF-8 format with the BOM (byte order mask) to + avoid some errors on specific Linux installations. +
- [SF + BUG-1114449] The editor packager program has been modified so now it is possible + to use the source files to run the editor as described in the documentation. The + new packager must be downloaded. +
- A small problem with the editor focus while in source mode has been corrected. + Thanks to Eric (ric1607). +
- [SF + BUG-1108167] [SF + BUG-1085149] [SF + BUG-1151296] [SF + BUG-1082433] No more IFRAMEs without src attribute. Now it points + to a blank page located in the editor's package. In this way we avoid security warnings + when using the editor over HTTPS. Thanks to Guillermo Bozovich. +
- [SF + BUG-1117779] The editor now works well if you have more than one element named + "submit" on its form (even if it is not correct to have this situation). + +
- The XHTML processor was duplicating the text on some specific situation. It has + been fixed. +
- [SF + Patch-1090213] [SF + Patch-1098929] With ASP, the editor now works correctly on pages using "Option + Explicit". Thanks to Ben Noblet. +
- [SF + BUG-1100759] [SF + BUG-1029125] [SF + BUG-966130] The editor was not working with old IE 5.5 browsers. There + was a problem with the XML parser. It has been fixed. +
- The localization engine is now working correctly over IE 5.5 browsers. +
- Some commands where not working well over IE 5.5 (emoticons, image,...). It has + been fixed. +
- [SF + BUG-1146441] [SF + BUG-1149777] The editor now uses the TEXTAREA id in the ReplaceTextarea + function. If the id is now found, it uses the "name". The docs have been + updated. +
- [SF + BUG-1144297] Some corrections have been made to the Dutch language file. Thanks + to Erwin Dondorp. +
- [SF + BUG-1121365] [SF + BUG-1090102] [SF + BUG-1152171] [SF + BUG-1102907] There is no problem now to start the editor with values + like "<div></div>" or "<p></p>". +
- [SF + BUG-1114059] [SF + BUG-1041861] The click on the disabled options in the Context Menu has no + effects now. +
- [SF + BUG-1152617] [SF + BUG-1102441] [SF + BUG-1095312] Some problems when setting the editor source to very specific + values has been fixed. +
- [SF + BUG-1093514] [SF + BUG-1089204] [SF + BUG-1077609] The editor now runs correctly if called directly (locally) without + a server installation (just opening the HTML sample files). +
- [SF + BUG-1088248] The editor now uses a different method to load its contents. In + this way the URLs remain untouched. +
- The PHP integration file now detects Internet Explorer 5.5 correctly. +
+ Version 2.0 RC2 (Release Candidate 2)
+-
+
- [SF + Feature-1042034] [SF + Feature-1075961] [SF + Feature-1083200] A new dialog window for the table cell properties + is now available (right-click). +
- [SF + Feature-1042034] The new "Split Cell ", to split + a table cell in two columns, has been introduced (right-click). +
- [SF + Feature-1042034] The new "Merge Cells", to merge + table cells (in the same row), has been introduced (right-click). +
- The "fake" TAB key support (available by default over + Gecko browsers is now available over IE too. You can set the number of spaces to + add setting the FCKConfig.TabSpaces configuration setting. Set it to 0 (zero) to + disable this feature (IE). +
- It now possible to tell IE to send a <BR> when the user presses + the Enter key. Take a look at the FCKConfig.UseBROnCarriageReturn + configuration setting. +
- [SF + Feature-1085422] ColdFusion: The File Manager connector + is now available! (Thanks to Hendrik Kramer). +
- The editor is now available in 29 languages! The new language files
+ available are:
+
-
+
- [SF + Feature-1067775] Chinese Simplified and Traditional (Taiwan + and Hong Kong) (by NetRube). +
- Czech (by David Horák). +
- Danish (by Jesper Michelsen). +
- Dutch (by Bram Crins). +
- German (by Maik Unruh). +
- Portuguese (Portugal) (by Francisco Pereira). +
- Russian (by Andrey Grebnev). +
- Slovenian (by Boris Volaric). +
+ - Updates to the French language files (by Hubert Garrido). +
- [SF
+ BUG-1085816] [SF
+ BUG-1083743] [SF
+ BUG-1078783] [SF
+ BUG-1077861] [SF
+ BUG-1037404] Many small bugs in the XHTML processor
+ has been corrected (workarounds to browser specific bugs). These are some things
+ to consider regarding the changes:
+
-
+
- [SF + BUG-1083744] On Gecko browsers, any element attribute that the name starts with + "_moz" will be ignored. +
- [SF + BUG-1060073] The <STYLE> and <SCRIPT> elements contents will be + handled as is, without CDATA tag surrounding. This may break XHTML validation. In + any case the use of external files for scripts and styles is recommended (W3C recommendation). +
+ - [SF + BUG-1088310] [SF + BUG-1078837] [SF + BUG-999792] URLs now remain untouched when initializing the editor or + switching from WYSYWYG to Source and vice versa. +
- [SF + BUG-1082323] The problem in the ASP and PHP connectors when handling non + "strange" chars in file names has been corrected. +
- [SF + BUG-1085034] [SF + BUG-1076796] Some bugs in the PHP connector have been corrected. +
- A problem with the "Format" command on IE browsers on languages different + of English has been solved. The negative side of this correction is that due to + a IE bad design it is not possible to update the "Format" combo while + moving throw the text (context sensitive). +
- On Gecko browsers, when selecting an image and executing the "New Page" + command, the image handles still appear, even if the image is not available anymore + (this is a Gecko bug). When clicking in a "phanton" randle, the browser + crashes. It doesn't happen (the crash) anymore. +
- [SF + BUG-1082197] On ASP, the bug in the browser detection system for Gecko browsers + has been corrected. Thanks to Alex Varga. +
- Again on ASP, the browser detection for IE had some problems on servers that use + comma for decimal separators on numbers. It has been corrected. Thanks to Agrotic. + +
- No error is thrown now when non existing language is configured in the + editor. The English language file is loaded in that case. +
- [SF + BUG-1077747] The missing images on the Office2003 and Silver skins are now included + in the package. +
- On some Gecko browsers, the dialog window was not loading correctly. I couldn't + reproduce the problem, but a fix has been applied based on users tests. +
- [SF + BUG-1004078] ColdFusion: The "config" structure/hash table with keys + and values is in ColdFusion not(!) case sensitive. All keys returned by ColdFusion + are in upper case format. Because the FCKeditor configuration keys must be case + sensitive, we had to match all structure/hash keys with a list of the correct configuration + names in mixed case. This has been added to the fckeditor.cfc and fckeditor.cfm. + +
- [SF + BUG-1075166] ColdFusion: The "fallback" variant of the texteditor + (<textarea>) has a bug in the fckeditor.cfm. This has been fixed. +
- A typo in the Polish language file has been corrected. Thanks to Pawel Tomicki. + +
- [SF + BUG-1086370] A small coding type in the Link dialog window has been corrected. + +
+ Version 2.0 RC1 (Release Candidate 1)
+-
+
- ASP support is now available (including the File Manager connector). + +
- PHP support is now available (including the File Manager connector). + +
- [SF + Feature-1063217] The new advanced Style command is available + in the toolbar: full preview, context sensitive, style definitions are loaded from + a XML file (see documentation for more instructions). +
- The Font Format, Font Name and Font Size + toolbar command now show a preview of the available options. +
- The new Find and Replace features has been introduced. + +
- A new Plug-in system has been developed. Now it is quite easy to + customize the editor to your needs. (Take a look at the html/sample06.html file). + +
- The editor now handles HTML entities in the right way (XHTML support + must be set to "true"). It handles all entities defined in the W3C XHTML + DTD file. +
- A new "_docs" folder has been introduced for the documentation. + It is not yet complete, but I hope the community will help us to fill it better. + +
- It is now possible (even if it is not recommended by the W3C) to force the use of + simple ampersands (&) on attributes (like the links href) instead of its entity + &. Just set FCKConfig.ForceSimpleAmpersand = true in the configuration + file. +
- [SF + Feature-1026866] The "EditorAreaCSS" configuration + option has been introduced. In this way you can set the CSS to use in the editor + (editable area). +
- The editing area is not anymore clipped if the toolbar is too large and exceeds + the window width. +
- [SF + BUG-1064902] [SF + BUG-1033933] The editor interface is now completely localizable. + The version ships with 19 languages including: Arabic, Bosnian, Catalan, + English, Spanish, Estonian, Finnish, French, + Greek, Hebrew, Croatian, Italian, Korean, Lithuanian, + Norwegian, Polish, Serbian (Cyrillic), + Serbian (Latin) and Swedish. +
- [SF + BUG-1027858] Firefox 1.0 PR introduced a bug that made the editor + stop working on it. A workaround has been developed to fix the problem. +
- There was a positioning problem over IE with the color panel. It has been corrected. + +
- [SF + BUG-1049842] [SF + BUG-1033832] [SF + BUG-1028623] [SF + BUG-1026610] [SF + BUG-1064498] The combo commands in the toolbar were not opening + in the right way. It has been fixed. +
- [SF + BUG-1053399] [SF + BUG-965318] [SF + BUG-1018296] The toolbar buttons icons were not showing on some IE and + Firefox/Mac installations. It has been fixed. +
- [SF + BUG-1054621] Color pickers are now working with the "office2003" and + "silver" skins. +
- [SF + BUG-1054108] IE doesn’t recognize the "'" entity for + apostrophes, so a workaround has been developed to replace it with "'" + (its numeric entity representation). +
- [SF + BUG-983434] [SF + BUG-983398] [SF + BUG-1028103] [SF + BUG-1072496] The problem with elements with name "submit" + inside the editor's form has been solved. +
- [SF + BUG-1018743] The problem with Gecko when collapsing the toolbar while in source + mode has been fixed. +
- [SF + BUG-1065268] [SF + BUG-1034354] The XHTML processor now doesn’t use the minimized tag + syntax (like <br/>) for empty elements that are not marked as EMPTY in the + W3C XHTML DTD specifications. +
- [SF + BUG-1029654] [SF + BUG-1046500] Due to a bug on Gecko there was a problem when creating links. + It has been fixed. +
- [SF + BUG-1065973] [SF + BUG-999792] The editor now handles relative URLs in IE. In effect IE transform + all relative URLs to absolute links, pointing to the site the editor is running. + So now the editor removes the protocol and host part of the link if it matches the + running server. +
- [SF + BUG-1071824] The color dialog box bug has been fixed. +
- [SF + BUG-1052856] [SF + BUG-1046493] [SF + BUG-1023530] [SF + BUG-1025978] The editor now doesn’t throw an error if no selection + was made and the create link command is used. +
- [SF + BUG-1036756] The XHTML processor has been reviewed. +
- [SF + BUG-1029101] The Paste from Word feature is working correctly. +
- [SF + BUG-1034623] There is an IE bug when setting the editor value to "<p><hr></p>". + A workaround has been developed. +
- [SF + BUG-1052695] There are some rendering differences between Netscape and Mozilla. + (Actually that is a bug on both browsers). A workaround has been developed to solve + it. +
- [SF + BUG-1073053] [SF + BUG-1050394] The editor doesn’t throw errors when hidden. +
- [SF + BUG-1066321] Scrollbars should not appear on dialog boxes (at least for the + Image and Link ones). +
- [SF + BUG-1046490] Dialogs now are forced to show on foreground over Mac. +
- [SF + BUG-1073955] A small bug in the image dialog window has been corrected. +
- [SF + BUG-1049534] The Resources Browser window is now working well over Gecko browsers. + +
- [SF + BUG-1036675] The Resources Browser window now displays the server error on bad + installations. +
+ Version 2.0 Beta 2
+-
+
- There is a new configuration - "GeckoUseSPAN" - that + can be used to tell Gecko browsers to use <SPAN style...> or <B>, <I> + and <U> for the bold, italic and underline commands. +
- [SF + Feature-1002622] New Text Color and Background Color + commands have been added to the editor. +
- On Gecko browsers, a message is shown when, because of security settings, the + user is not able to cut, copy or paste data from the clipboard using the + toolbar buttons or the context menu. +
- The new "Paste as Plain Text " command has been introduced. + +
- The new "Paste from Word " command has been introduced. + +
- A new configuration named "StartupFocus" can be used to tell the + editor to get the focus when the page is loaded. +
- All Java integration files has been moved to a new separated package. + +
- [SF + BUG-1016781] Table operations are now working when right click + inside a table. The following commands has been introduced: Insert Row, + Delete Row, Insert Column, Delete Column, + Insert Cell and Delete Cells . +
- [SF + BUG-965067] [SF + BUG-1010379] [SF + BUG-977713] XHTML support was not working with FireFox, blocking the + editor when submitting data. It has been fixed. +
- [SF + BUG-1007547 ] [SF + BUG-974595 ] The "FCKLang not defined" error when loading + has been fixed. +
- [SF + BUG-1021028] If the editor doesn't have the focus, some commands were been executed + outside the editor in the place where the focus is. It has been fixed. +
- [SF + BUG-981191] We are now using <!--- ---> for ColdFusion comments. +
+ Version 2.0 Beta 1
+
+ This is the first beta of the 2.x series. It brings a lot of new and important things.
+ Beta versions will be released until all features available on version 1.x will
+ be introduced in the 2.0.
+
+ Note: As it is a beta, it is not yet completely developed. Future
+ versions can bring new features that can break backward compatibility with this
+ version.
+
-
+
- Gecko browsers (Mozilla and Netscape) support. + +
- Quick startup response times. +
- Complete XHTML 1.0 support. +
- Advanced link dialog box:
+
-
+
- Target selection. +
- Popup configurator. +
- E-Mail link. +
- Anchor selector. +
+ - New File Manager. +
- New dialog box system, with tabbed dialogs support. +
- New context menus with icons. +
- New toolbar with "expand/collapse" feature. +
- Skins support. +
- Right to left languages support. +
+ Version 1.6.1
+-
+
- [SF + BUG-862364] [SF + BUG-812733] There was a problem when the user tried to delete the last row, + collumn or cell in a table. It has been corrected.* +
- New Estonian language file. Thanks to Kristjan Kivikangur +
- New Croatian language file. Thanks to Alex Varga. +
- Updated language file for Czech. Thanks to Plachow. +
- Updated language file for Chineze (zh-cn). Thanks to Yanglin. +
- Updated language file for Catalan. Thanks to Jordi Cerdan. +
+ * This version has been partially sponsored by Genuitec, + LLC.
++ Version 1.6
+-
+
- Context Menu support for form elements.* +
- New "Selection Field" command with advanced dialog box + for options definitions.* +
- New "Image Button" command is available.* +
- [SF + Feature-936196] Many form elements bugs has been fixed and + many improvements has been done.* +
- New Java Integration Module. There is a complete Java API and Tag + Library implementations. Take a look at the _jsp directory. Thanks to Simone Chiaretta + and Hao Jiang. +
- The Word Spell Checker can be used. To be able to run it, your + browser security configuration "Initialize and script ActiveX controls not + marked as safe" must be set to "Enable" or "Prompt". And + easier and more secure way to do that is to add your site in the list of trusted + sites. IeSpell can still be used. Take a look at the fck_config.js file for some + configuration options. Thanks to EdwardRF. +
- [SF + Feature-748807] [SF + Feature-801030] [SF + Feature-880684] New "Anchor" command, including + context menu support. Thanks to G.Meijer. +
- Special characters are replaced with their decimal HTML entities when the XHMTL + support is enabled (only over IE5.5+). +
- New Office 2003 Style toolbar icons are available. Just uncomment + the config.ToolbarImagesPath key in the fck_config.js file. Thanks to Abdul-Aziz + A. Al-Oraij. Attention: the default toolbar items have been moved + to the "images/toolbar/default" directory. +
- [SF + Patch-934566] Double click support for Images, Tables, Links, + Anchors and all Form elements. Thanks to Top Man. +
- New "New Page" command to start a typing from scratch. + Thanks to Abdul-Aziz A. Al-Oraij. +
- New "Replace" command. Thanks to Abdul-Aziz A. Al-Oraij. + +
- New "Advanced Font Style" command. Thanks to Abdul-Aziz + A. Al-Oraij. +
- [SF + Feature-738193] New "Save" command. It can be used + to simulate a save action, but in fact it just submits the form where the editor + is placed in. Thanks to Abdul-Aziz A. Al-Oraij. +
- New "Universal Keyboard" command. This 22 charsets are + available: Arabic, Belarusian, Bulgarian, Croatian, Czech, Danish, Finnish, French, + Greek, Hebrew, Hungarian, Diacritical, Macedonian, Norwegian, Polish, Russian, Serbian + (Cyrillic), Serbian (Latin), Slovak, Spanish, Ukrainian and Vietnamese. Includes + a keystroke listener to type Arabic on none Arabic OS or machine. Thanks to Abdul-Aziz + A. Al-Oraij. +
- [SF + Patch-935358] New "Preview" command. Context menu + option is included and can be deactivated throw the config.ShowPreviewContextMenu + configuration. Thanks to Ben Ramsey. +
- New "Table Auto Format" context menu command. Hack a + little the fck_config.js and the fck_editorarea.css files. Thanks to Alexandros + Lezos. +
- New "Bulleted List Properties " context menu to define + its type and class. Thanks to Alexandros Lezos. +
- The image dialog box has been a redesigned . Thanks + to Mark Fierling. +
- Images now always have the "alt" attribute set, even + when it's value is empty. Thanks to Andreas Barnet. +
- [SF + Patch-942250] You can set on fck_config.js to automatically clean Word + pasting operations without a user confirmation. +
- Forms element dialogs and other localization pending labels has been updated. +
- A new Lithuanian language file is available. Thanks to Tauras Paliulis. + +
- A new Hebrew language file is available. Thanks to Ophir Radnitz. + +
- A new Serbian language file is available. Thanks to Zoran Subic. + +
- Danish language file updates. Thanks to Flemming Jensen. +
- Catalan language file updates. Thanks to Jordi Cerdan. +
- [SF + Patch-936514] [SF + BUG-918716] [SF + BUG-931037] [SF + BUG-865864] [SF + BUG-915410] [SF + BUG-918716] Some languages files were not + saved on UTF-8 format causing some javascript errors on loading + the editor or making "undefined" to show on editor labels. This problem + was solved. +
- Updates on the testsubmit.php file. Thanks to Geat and Gabriel Schillaci +
- [SF + BUG-924620] There was a problem when setting a name to an editor instance when + the name is used by another tag. For example when using "description" + as the name in a page with the <META name="description"> tag. +
- [SF + BUG-935018] The "buletted" typo has been corrected. +
- [SF + BUG-902122] Wrong css and js file references have been corrected. +
- [SF + BUG-918942] All dialog boxes now accept Enter and Escape keys as Ok and Cancel + buttons. +
+ * This version has been partially sponsored by Genuitec, + LLC.
++ Version 1.5
+-
+
- [SF + Feature-913777] New Form Commands are now available! Special + thanks to G.Meijer. +
- [SF + Feature-861149] Print Command is now available! +
- [SF + BUG-743546] The XHTML content duplication problem has been + solved . Thanks to Paul Hutchison. +
- [SF + BUG-875853] The image dialog box now gives precedence for width + and height values set as styles. In this way a user can change the size of the image + directly inside the editor and the changes will be reflected in the dialog box. + +
- [SF + Feature-788368] The sample file upload manager for ASPX now + uses guids for the file name generation. In this way a support + XML file is not needed anymore. +
- It's possible now to programmatically change the Base Path of the
+ editor if it's installed in a directory different of "/FCKeditor/". Something
+ like this:
+ oFCKeditor.BasePath = '/FCKeditor/' ;
+ Take a look at the _test directory for samples.
+ - There was a little bug in the TAB feature that moved the insertion point if there + were any object (images, tables) in the content. It has been fixed. +
- The problem with accented and international characters on the PHP + test page was solved. +
- A new Chinese (Taiwan) language file is available. Thanks to Nil. + +
- A new Slovenian language file is available. Thanks to Pavel Rotar. + +
- A new Catalan language file is available. Thanks to Jordi Cerdan. + +
- A new Arabic language file is available. Thanks to Abdul-Aziz A. + Al-Oraij. +
- Small corrections on the Norwegian language file. +
- A Java version for the test results (testsubmit.jsp) is now available. Thanks to + Pritpal Dhaliwal. +
- When using JavaScript to create a editor instance it's possible now to easily get + the editor's value calling oFCKeditor.GetValue() (eg.). Better JavaScript API interfaces + will be available on version 2.0. +
- If XHTML is enabled the editor cleans the HTML before showing it + on the Source View, so the exact result can be viewed by the user. This option can + be activated setting config.EnableSourceXHTML = true in the fck_config.js file. + +
- The JS integration object now escapes all configuration settings,
+ in this way a user can use reserved chars on it. For example:
+
+ oFCKeditor.Config["ImageBrowserURL"] = '/imgs/browse.asp?filter=abc*.jpg&userid=1'; +
+ - A minimal browse server sample is now available in ASP. Thanks to Andreas Barnet. + +
+ Version 1.4
+-
+
- ATTENTION: For PHP users: The editor was changed and now uses + htmlspecialchars instead of htmlentities when handling + the initial value. It should works well, but please make some tests before upgrading + definitively. If there is any problem just uncomment the line in the fckeditor.php + file (and send me a message!). +
- The editor is now integrated with ieSpell (http://www.iespell.com) + for Spell Checking. You can configure the download URL in then + fck_config.js file. Thanks to Sanjay Sharma. (ieSpell is free for personal use but + must be paid for commercial use) +
- Table and table cell dialogs has been changed. + Now you can select the class you want to be applied. Thanks to + Alexander Lezos. +
- [SF + Feature-865378]A new upload support is available for ASP. It + uses the /UserImages/ folder in the root of the web site as the files container + and a counter controlled by the upload.cnt file. Both must have write permissions + set to the IUSR_xxx user. Thanks to Trax and Juanjo. +
- [SF + Patch-798128] The user (programmer) can now define a custom separator + for the list items of a combo in the toolbar. Thanks to Wulff D. Heiss. +
- [SF + Feature-741963][SF + Feature-878941][SF + Patch-869389] A minimal support for a “fake” TAB is now available, + even if HTML has no support for TAB. Now when the user presses the TAB key a configurable + number of spaces ( ) is added. Take a look at config.TabSpaces on the fck_config.js + file. No action is performed if it is set to zero. The default value is 4. Thanks + to Phil Hassey. +
- [SF + BUG-782779][SF + BUG-790939] The problem with big images has been corrected. Thanks to Raver. + +
- [SF + BUG-862975] Now the editor does nothing if no image is selected in the image + dialog box and the OK button is hit. +
- [SF + BUG-851609] The problem with ASP and null values has been solved. +
- Norwegean language pack. Thanks to Martin Kronstad. +
- Hungarian language pack. Thanks to Balázs Szabó. + +
- Bosnian language pack. Thanks to Trax. +
- Japanese language pack. Thanks to Kato Yuichiro. +
- Updates on the Polish language pack. Thanks to Norbert Neubauer. + +
- The Chinese (Taiwan) (zh-tw) has been removed from the package + because it's corrupt. I'm sorry. I hope someone could send me a good version soon. + +
+ Version 1.3.1
+-
+
- It's now possible to configure the editor the insert a <BR> tag instead + of <P> when the user presses the <Enter> key. + Take a look at the fck_config.js configuration file for the "UseBROnCarriageReturn" + key. This option is disabled by default. +
- Icelandic language pack. Thanks to Andri Óskarsson. +
- [SF + BUG-853374] On IE 5.0 there was a little error introduced with version 1.3 on + initialization. It was corrected. +
- [SF + BUG-853372] On IE 5.0 there was a little error introduced with version 1.3 when + setting the focus in the editor. It was corrected. +
- Minor errors on the language file for english has been corrected. + Thanks to Anders Madsen. +
- Minor errors on the language file for danish has been corrected. + Thanks to Martin Johansen. +
+ Version 1.3
+-
+
- Language support for Danish, Polish, Simple Chinese, Slovak, Swedish and + Turkish. +
- Language updates for Romanian. +
- It's now possible to override any of the editor's configurations + (for now it's implemented just for JavaScript, ASPX and HTC modules). See _test/test.html + for a sample. I'm now waiting for the Community for the ASP, CFM and PHP versions. + +
- A new method is available for PHP users. It's called ReturnFCKeditor. + It works exactly like CreateFCKeditor, but it returns a string with the HTML + for the editor instead of output it (echo). This feature is useful for people who + are working with Smarty Templates or something like that. Thanks to Timothy J. Finucane. + +
- Many people have had problems with international characters over
+ PHP. I had also the same problem. PHP have strange problems with
+ character encoding. The code hasn't been changed but just saved again with Western
+ European encoding. Now it works well in my system.
+ Take a look also at the "default_charset" configuration option at the + php.ini file. It doesn't seem to be an editor's problem but a PHP issue.
+ - The "testsubmit.php" file now strips the "Magic + Quotes " that are automatically added by PHP on form posts. +
- A new language integration module is available for ASP/Jscript. + Thanks to Dimiter Naydenov. +
- New configuration options are available to customize the + Target combo box in the Insert/Modify Link dialog box. + Now you can hide it, or set which options are available in the combo box. Take a + look at the fck_config.js file. +
- The Text as Plain Text toolbar icon has been changed + to avoid confusion with the Normal Paste or. Thanks to Kaupo Kalda. + +
- The file dhtmled.cab has been removed from the package. It's not + needed to the editor to work and caused some confusion for a few users. +
- The editor's content now doesn't loose the focus + when the user clicks with the mouse in a toolbar button. +
- On drag-and-drop operations the data to be inserted in the editor + is now converted to plain text when the "ForcePasteAsPlainText" + configuration is set to true. +
- The image browser sample in PHP now sorts the files + by name. Thanks to Sergey Lupashko. +
- Two new configuration options are available to turn on/off + by default the "Show Borders" and "Show + Details" commands. +
- Some characters have been removed from the "Insert + Special Chars" dialog box because they were causing encoding problems + in some languages. Thanks to Abomb Hua. +
- JSP versions of the image and file upload and browsing + features. Thanks to Simone Chiaretta. +
+ Version 1.2.4
+-
+
- Language support for Spanish, Finnish, Romanian and Korean. +
- Language updates for German. +
- New Zoom toolbar option. (Thanks + to "mtn_roadie") +
+ Version 1.2.2
+-
+
- Language support for French. +
- [SF + BUG-782779] Version 1.2 introduced a bug on the image dialog window: when changing + the image, no update was done. This bug is now fixed. +
+ Version 1.2
+-
+
- Enhancements to the Word cleaning feature (Thanks to Karl von Randow). + +
- The Table dialog box now handles the Style width and height set + in the table (Thanks to Roberto Arruda). There where many problems on prior version + when people changed manually the table's size, dragging the size handles, and then + it was not possible to set a new size using the table dialog box. +
- For the Image dialog box:
+
-
+
- No image is shown in the preview pane if no image has been set. +
- If no HSpace is set in the image a "-1" value was shown in the dialog + box. Now, nothing is shown if the value is negative. +
+ - [SF + BUG-739630] Image with link lost the link when changing its properties. The + problem is solved. +
- Due to some problems in the XHTML cleaning (content duplication when the source + HTML is dirty and malformed), the XHTML support is turned off by default + from this version. You can still change this behavior and turn it on in the configuration + file. +
- Some little updates on the English language file. +
- A few addition of missing entries on all languages files (translations for these + changes are pending). +
- Language files has been added for the following languages:
+
-
+
- Brazilian Portuguese (pt-br) +
- Czech (cz) +
- Dutch (nl) +
- Russian (ru) +
- Chinese (Taiwan) (zh-tw) +
- Greek (gr) +
- German (de) +
+
+ Version 1.1
+-
+
- The "Multi Language" system is now available. This version + ships with English and Italian versions completed. Other languages will be available + soon. The editor automatically detects the client language and sets all labels, + tooltips and dialog boxes to it, if available. The auto detection and the default + language can be set in the fck_config.file. +
- Two files can now be created to isolate customizations code from the original source + code of the editor: fckeditor.config.js and fckeditor.custom.js. + Create these files in the root folder of your web site, if needed. The first one + can be used to add or override configurations set on fck_config.js. The second one + is used for custom actions and behaviors. +
- A problem with relative links and images like "/test/test.doc" has been + solved. In prior versions, only with XHTML support enabled, the URL was changed + to something like "http://www.mysite.xxx/test/test.doc" (The domain was + automatically added). Now the XHTML cleaning procedure gets the URLs exactly how + they are defined in the editor’s HTML. +
- [SF + BUG-742168] Mouse drag and drop from toolbar buttons has been disabled. +
- [SF + BUG-768210] HTML entities, like <, were not load correctly. + The problem is solved. +
- [SF + BUG-748812] The link dialog window doesn't open when the link button is grayed. + +
+ Version 1.0
+-
+
- Three new options are available in the configuration file to set what file types + are allowed / denied to be uploaded from the "Insert Link" and "Insert + Image" dialog boxes. +
- Upload options, for links and images, are automatically hidden on IE 5.0 browsers + (it's not compatible). +
- [SF BUG-734894] Fixed a problem on XHTML cleaning: the value on INPUT fields were + lost. +
- [SF BUG-713797] Fixed some image dialog errors when trying to set image properties + when no image is available. +
- [SF BUG-736414] Developed a workaround for a DHTML control bug when loading in the + editor some HTML started with <p><hr></p>. +
- [SF BUG-737143] Paste from Word cleaning changed to solve some IE 5.0 errors. This + feature is still not available over IE 5.0. +
- [SF BUG-737233] CSS mappings are now OK on the PHP image browser module. +
- [SF BUG-737495] The image preview in the image dialog box is now working correctly. + +
- [SF BUG-737532] The editor automatically switches to WYSIWYG mode when the form + is posted. +
- [SF BUG-739571] The editor is now working well over Opera (as for Netscape, a TEXTAREA + is shown). +
+ Version 1.0 Final Candidate
+-
+
- A new dialog box for the "Link" command is available. Now you can upload + and browse the server exactly like the image dialog box. It's also possible to define + the link title and target window (_blank, _self, _parent and _top). As with the + image dialog box, a sample (and simple) file server browser is available. +
- A new configuration option is available to force every paste action to be handled + as plain text. See "config.ForcePasteAsPlainText" in fck_config.js. +
- A new Toolbar button is available: "Paste from Word". It automatically + cleans the clipboard content before pasting (removesWord styles, classes, xml stuff, + etc...). This command is available for IE 5.5 and more. For IE 5.0 users, a message + is displayed advising that the text will not be cleaned before pasting. +
- The editor automatically detects Word clipboard data on pasting operations and asks + the user to clean it before pasting. This option is turned on by default but it + can be configured. See "config.AutoDetectPasteFromWord" in fck_config.js. + +
- Table properties are now available in cells' right click context menu. +
- It's now possible to edit cells advanced properties from it's right click context + menu. +
+ Version 1.0 Release Candidate 1 (RC1)
+-
+
- Some performance improvements. +
- The file dhtmled.cab has been added to the package for clients ho needs to install + the Microsoft DHTML Editor component. +
- [SF BUG-713952] The format command options are localized, so it depends on the IE + language to work. Until version 0.9.5 it was working only over English IE browsers. + Now the options are load dynamically on the client using the client's language. + +
- [SF BUG-712103] The style command is localized, so it depends on the IE language + to work. Until version 0.9.5 it was working only over English IE browsers. Now it + configures itself using the client's language. +
- [SF BUG-726137] On version 0.9.5, some commands (special chars, image, emoticons, + ...) remove the next available character before inserting the required content even + if no selection was made in the editor. Now the editor replaces only the selected + content (if available). +
+ Version 0.9.5 beta
+-
+
- XHTML support is now available! It can be enabled/disabled in the fck_config.js + file. +
- "Show Table Borders" option: show borders for tables with borders size + set to zero. +
- "Show Details" option: show hidden elements (comments, scripts, paragraphs, + line breaks) +
- IE behavior integration module. Thanks to Daniel Shryock. +
- "Find" option: to find text in the document. +
- More performance enhancements. +
- New testsubmit.php file. Thansk to Jim Michaels. +
- Two initial PHP upload manager implementations (not working yet). Thanks to Frederic + Tyndiuk and Christian Liljedahl. +
- Initial PHP image browser implementation (not working yet). Thanks to Frederic Tyndiuk. + +
- Initial CFM upload manager implementation. Thanks to John Watson. +
+ Version 0.9.4 beta
+-
+
- ColdFusion module integration is now available! Thanks to John Watson. +
- "Insert Smiley" toolbar option! Thanks to Fredox. Take a look at fck_config.js + for configuration options. +
- "Paste as plain text" toolbar option! +
- Right click support for links (edit / remove). +
- Buttons now are shown in gray when disabled. +
- Buttons are shown just when the image is downloaded (no more "red x" while + waiting for it). +
- The toolbar background color can be set with a CSS style (see fck_editor.css). +
- Toolbar images have been reviewed:
+
-
+
- Now they are transparent. +
- No more over...gif for every button (so the editor loads quicker). +
- Buttons states are controlled with CSS styles. (see fck_editor.css). +
+ - Internet Explorer 5.0 compatibility, except for the image uploading popup. +
- Optimizations when loading the editor. +
- [SF BUG-709544] - Toolbar buttons wait for the images to be downloaded to start + watching and responding the user actions (turn buttons on/off when the user changes + position inside the editor). +
- JavaScript integration is now Object Oriented. CreateFCKeditor function is not available + anymore. Take a look in test.html. +
- Two new configuration options, ImageBrowser and ImageUpload, are available to turn + on and off the image upload and image browsing options in the Image dialog box. + This options can be hidden for a specific editor instance throw specific URL parameter + in the editor’s IFRAME (upload=true/false&browse=true/false). All specific + language integration modules handle this option. For sample see the _test directory. + +
Text
", the start editing point + // is "^ Text
" (inside ). + MoveToElementEditStart : function( targetElement ) + { + var child ; + + while ( ( child = targetElement.firstChild ) && child.nodeType == 1 && FCKListsLib.EmptyElements[ child.nodeName.toLowerCase() ] == null ) + targetElement = child ; + + this.MoveToElementStart( targetElement ) ; + }, + + InsertNode : function( node ) + { + if ( this._Range ) + this._Range.insertNode( node ) ; + }, + + CheckIsEmpty : function( ignoreEndBRs ) + { + if ( this.CheckIsCollapsed() ) + return true ; + + // Inserts the contents of the range in a div tag. + var eToolDiv = this.Window.document.createElement( 'div' ) ; + this._Range.cloneContents().AppendTo( eToolDiv ) ; + + FCKDomTools.TrimNode( eToolDiv, ignoreEndBRs ) ; + + return ( eToolDiv.innerHTML.length == 0 ) ; + }, + + CheckStartOfBlock : function() + { + // Create a clone of the current range. + var oTestRange = this.Clone() ; + + // Collapse it to its start point. + oTestRange.Collapse( true ) ; + + // Move the start boundary to the start of the block. + oTestRange.SetStart( oTestRange.StartBlock || oTestRange.StartBlockLimit, 1 ) ; + + var bIsStartOfBlock = oTestRange.CheckIsEmpty() ; + + oTestRange.Release() ; + + return bIsStartOfBlock ; + }, + + CheckEndOfBlock : function( refreshSelection ) + { + // Create a clone of the current range. + var oTestRange = this.Clone() ; + + // Collapse it to its end point. + oTestRange.Collapse( false ) ; + + // Move the end boundary to the end of the block. + oTestRange.SetEnd( oTestRange.EndBlock || oTestRange.EndBlockLimit, 2 ) ; + + var bIsEndOfBlock = oTestRange.CheckIsCollapsed() ; + + if ( !bIsEndOfBlock ) + { + // Inserts the contents of the range in a div tag. + var eToolDiv = this.Window.document.createElement( 'div' ) ; + oTestRange._Range.cloneContents().AppendTo( eToolDiv ) ; + FCKDomTools.TrimNode( eToolDiv, true ) ; + + // Find out if we are in an empty tree of inline elements, like + bIsEndOfBlock = true ; + var eLastChild = eToolDiv ; + while ( ( eLastChild = eLastChild.lastChild ) ) + { + // Check the following: + // 1. Is there more than one node in the parents children? + // 2. Is the node not an element node? + // 3. Is it not a inline element. + if ( eLastChild.previousSibling || eLastChild.nodeType != 1 || FCKListsLib.InlineChildReqElements[ eLastChild.nodeName.toLowerCase() ] == null ) + { + // So we are not in the end of the range. + bIsEndOfBlock = false ; + break ; + } + } + } + + oTestRange.Release() ; + + if ( refreshSelection ) + this.Select() ; + + return bIsEndOfBlock ; + }, + + CreateBookmark : function() + { + // Create the bookmark info (random IDs). + var oBookmark = + { + StartId : 'fck_dom_range_start_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000), + EndId : 'fck_dom_range_end_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) + } ; + + var oDoc = this.Window.document ; + var eSpan ; + var oClone ; + + // For collapsed ranges, add just the start marker. + if ( !this.CheckIsCollapsed() ) + { + eSpan = oDoc.createElement( 'span' ) ; + eSpan.id = oBookmark.EndId ; + eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations. + + oClone = this.Clone() ; + oClone.Collapse( false ) ; + oClone.InsertNode( eSpan ) ; + } + + eSpan = oDoc.createElement( 'span' ) ; + eSpan.id = oBookmark.StartId ; + eSpan.innerHTML = ' ' ; // For IE, it must have something inside, otherwise it may be removed during operations. + + oClone = this.Clone() ; + oClone.Collapse( true ) ; + oClone.InsertNode( eSpan ) ; + + return oBookmark ; + }, + + MoveToBookmark : function( bookmark, preserveBookmark ) + { + var oDoc = this.Window.document ; + + var eStartSpan = oDoc.getElementById( bookmark.StartId ) ; + var eEndSpan = oDoc.getElementById( bookmark.EndId ) ; + + this.SetStart( eStartSpan, 3 ) ; + + if ( !preserveBookmark ) + FCKDomTools.RemoveNode( eStartSpan ) ; + + // If collapsed, the start span will not be available. + if ( eEndSpan ) + { + this.SetEnd( eEndSpan, 3 ) ; + + if ( !preserveBookmark ) + FCKDomTools.RemoveNode( eEndSpan ) ; + } + else + this.Collapse( true ) ; + }, + + /* + * Moves the position of the start boundary of the range to a specific position + * relatively to a element. + * @position: + * 1 = After Start. + this._AppendBogusBr( eStartBlock ) ; + this._AppendBogusBr( eNewBlock ) ; + } + } + + if ( eNewBlock ) + { + FCKDomTools.InsertAfterNode( eStartBlock, eNewBlock ) ; + + // Move the selection to the new block. + oRange.MoveToElementEditStart( eNewBlock ) ; + + if ( FCKBrowserInfo.IsGecko ) + eNewBlock.scrollIntoView( false ) ; + } + } + } + else + { + // Move the selection to the end block. + oRange.MoveToElementEditStart( eEndBlock ) ; + } + + oRange.Select() ; + } + + // Release the resources used by the range. + oRange.Release() ; + + return true ; +} + +FCKEnterKey.prototype._ExecuteEnterBr = function( blockTag ) +{ + // Get the current selection. + var oRange = new FCKDomRange( this.Window ) ; + oRange.MoveToSelection() ; + + // The selection boundaries must be in the same "block limit" element. + if ( oRange.StartBlockLimit == oRange.EndBlockLimit ) + { + oRange.DeleteContents() ; + + // Get the new selection (it is collapsed at this point). + oRange.MoveToSelection() ; + + var bIsStartOfBlock = oRange.CheckStartOfBlock() ; + var bIsEndOfBlock = oRange.CheckEndOfBlock() ; + + var sStartBlockTag = oRange.StartBlock ? oRange.StartBlock.tagName.toUpperCase() : '' ; + + var bHasShift = this._HasShift ; + + if ( !bHasShift && sStartBlockTag == 'LI' ) + return this._ExecuteEnterBlock( null, oRange ) ; + + // If we are at the end of a header block. + if ( !bHasShift && bIsEndOfBlock && (/^H[1-6]$/).test( sStartBlockTag ) ) + { + FCKDebug.Output( 'BR - Header' ) ; + + // Insert a BR after the current paragraph. + FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createElement( 'br' ) ) ; + + // The space is required by Gecko only to make the cursor blink. + if ( FCKBrowserInfo.IsGecko ) + FCKDomTools.InsertAfterNode( oRange.StartBlock, this.Window.document.createTextNode( '' ) ) ; + + // IE and Gecko have different behaviors regarding the position. + oRange.SetStart( oRange.StartBlock.nextSibling, FCKBrowserInfo.IsIE ? 3 : 1 ) ; + } + else + { + FCKDebug.Output( 'BR - No Header' ) ; + + var eBr = this.Window.document.createElement( 'br' ) ; + + oRange.InsertNode( eBr ) ; + + // The space is required by Gecko only to make the cursor blink. + if ( FCKBrowserInfo.IsGecko ) + FCKDomTools.InsertAfterNode( eBr, this.Window.document.createTextNode( '' ) ) ; + + // If we are at the end of a block, we must be sure the bogus node is available in that block. + if ( bIsEndOfBlock && FCKBrowserInfo.IsGecko ) + this._AppendBogusBr( eBr.parentNode ) ; + + if ( FCKBrowserInfo.IsIE ) + oRange.SetStart( eBr, 4 ) ; + else + oRange.SetStart( eBr.nextSibling, 1 ) ; + + } + + // This collapse guarantees the cursor will be blinking. + oRange.Collapse( true ) ; + + oRange.Select() ; + } + + // Release the resources used by the range. + oRange.Release() ; + + return true ; +} + +// Transform a block without a block tag in a valid block (orphan text in the body or td, usually). +FCKEnterKey.prototype._FixBlock = function( range, isStart, blockTag ) +{ + // Bookmark the range so we can restore it later. + var oBookmark = range.CreateBookmark() ; + + // Collapse the range to the requested ending boundary. + range.Collapse( isStart ) ; + + // Expands it to the block contents. + range.Expand( 'block_contents' ) ; + + // Create the fixed block. + var oFixedBlock = this.Window.document.createElement( blockTag ) ; + + // Move the contents of the temporary range to the fixed block. + range.ExtractContents().AppendTo( oFixedBlock ) ; + FCKDomTools.TrimNode( oFixedBlock ) ; + + // Insert the fixed block into the DOM. + range.InsertNode( oFixedBlock ) ; + + // Move the range back to the bookmarked place. + range.MoveToBookmark( oBookmark ) ; +} + +// Appends a bogus
at the end of the element, if not yet available. +FCKEnterKey.prototype._AppendBogusBr = function( element ) +{ + var eLastChild = element.getElementsByTagName('br') ; + + if ( eLastChild ) + eLastChild = eLastChild[ eLastChild.legth - 1 ] ; + + if ( !eLastChild || eLastChild.getAttribute( 'type', 2 ) != '_moz' ) + element.appendChild( FCKTools.CreateBogusBR( this.Window.document ) ) ; +} + +// Recreate the elements tree at the end of the source block, at the beginning +// of the target block. Eg.: +// If source =
Some sample text
then target =+// If source =
Some sample text
then target = +FCKEnterKey.prototype._RecreateEndingTree = function( source, target ) +{ + while ( ( source = source.lastChild ) && source.nodeType == 1 && FCKListsLib.InlineChildReqElements[ source.nodeName.toLowerCase() ] != null ) + target = target.insertBefore( source.cloneNode( false ), target.firstChild ) ; +} + +// Outdents a LI, maintaining the seletion defined on a range. +FCKEnterKey.prototype._OutdentWithSelection = function( li, range ) +{ + var oBookmark = range.CreateBookmark() ; + + FCKListHandler.OutdentListItem( li ) ; + + range.MoveToBookmark( oBookmark ) ; + range.Select() ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/classes/fckevents.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/classes/fckevents.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/classes/fckevents.js (revision 240) @@ -0,0 +1,53 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKEvents Class: used to handle events is a advanced way. + */ + +var FCKEvents = function( eventsOwner ) +{ + this.Owner = eventsOwner ; + this._RegisteredEvents = new Object() ; +} + +FCKEvents.prototype.AttachEvent = function( eventName, functionPointer ) +{ + var aTargets ; + + if ( !( aTargets = this._RegisteredEvents[ eventName ] ) ) + this._RegisteredEvents[ eventName ] = [ functionPointer ] ; + else + aTargets.push( functionPointer ) ; +} + +FCKEvents.prototype.FireEvent = function( eventName, params ) +{ + var bReturnValue = true ; + + var oCalls = this._RegisteredEvents[ eventName ] ; + + if ( oCalls ) + { + for ( var i = 0 ; i < oCalls.length ; i++ ) + bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ; + } + + return bReturnValue ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/classes/fckicon.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/classes/fckicon.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/classes/fckicon.js (revision 240) @@ -0,0 +1,98 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKIcon Class: renders an icon from a single image, a strip or even a + * spacer. + */ + +var FCKIcon = function( iconPathOrStripInfoArray ) +{ + var sTypeOf = iconPathOrStripInfoArray ? typeof( iconPathOrStripInfoArray ) : 'undefined' ; + switch ( sTypeOf ) + { + case 'number' : + this.Path = FCKConfig.SkinPath + 'fck_strip.gif' ; + this.Size = 16 ; + this.Position = iconPathOrStripInfoArray ; + break ; + + case 'undefined' : + this.Path = FCK_SPACER_PATH ; + break ; + + case 'string' : + this.Path = iconPathOrStripInfoArray ; + break ; + + default : + // It is an array in the format [ StripFilePath, IconSize, IconPosition ] + this.Path = iconPathOrStripInfoArray[0] ; + this.Size = iconPathOrStripInfoArray[1] ; + this.Position = iconPathOrStripInfoArray[2] ; + } +} + +FCKIcon.prototype.CreateIconElement = function( document ) +{ + var eIcon, eIconImage ; + + if ( this.Position ) // It is using an icons strip image. + { + var sPos = '-' + ( ( this.Position - 1 ) * this.Size ) + 'px' ; + + if ( FCKBrowserInfo.IsIE ) + { + // + + eIcon = document.createElement( 'DIV' ) ; + + eIconImage = eIcon.appendChild( document.createElement( 'IMG' ) ) ; + eIconImage.src = this.Path ; + eIconImage.style.top = sPos ; + } + else + { + // + + eIcon = document.createElement( 'IMG' ) ; + eIcon.src = FCK_SPACER_PATH ; + eIcon.style.backgroundPosition = '0px ' + sPos ; + eIcon.style.backgroundImage = 'url(' + this.Path + ')' ; + } + } + else // It is using a single icon image. + { + // This is not working well with IE. See notes bellow. + // +// eIcon = document.createElement( 'IMG' ) ; +// eIcon.src = this.Path ? this.Path : FCK_SPACER_PATH ; + + // IE makes the button 1px higher if using the directly, so we + // are changing to the' + + ' | ' + + ' | ' + this.Caption + ' | ' + + '' + + ' | ' + + ' | ' + + ' |
+ | + |
{Image} | Toolbar Button |
Toolbar Button |
{Image} | Toolbar Button |
Toolbar Button |
' ) ; + else if ( formatName == 'div' && FCKBrowserInfo.IsGecko ) + FCK.ExecuteNamedCommand( 'FormatBlock', 'div' ) ; + else + FCK.ExecuteNamedCommand( 'FormatBlock', '<' + formatName + '>' ) ; +} + +FCKFormatBlockCommand.prototype.GetState = function() +{ + return FCK.GetNamedCommandValue( 'FormatBlock' ) ; +} + +// ### Preview +var FCKPreviewCommand = function() +{ + this.Name = 'Preview' ; +} + +FCKPreviewCommand.prototype.Execute = function() +{ + FCK.Preview() ; +} + +FCKPreviewCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} + +// ### Save +var FCKSaveCommand = function() +{ + this.Name = 'Save' ; +} + +FCKSaveCommand.prototype.Execute = function() +{ + // Get the linked field form. + var oForm = FCK.GetParentForm() ; + + if ( typeof( oForm.onsubmit ) == 'function' ) + { + var bRet = oForm.onsubmit() ; + if ( bRet != null && bRet === false ) + return ; + } + + // Submit the form. + oForm.submit() ; +} + +FCKSaveCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} + +// ### NewPage +var FCKNewPageCommand = function() +{ + this.Name = 'NewPage' ; +} + +FCKNewPageCommand.prototype.Execute = function() +{ + FCKUndo.SaveUndoStep() ; + FCK.SetHTML( '' ) ; + FCKUndo.Typing = true ; +} + +FCKNewPageCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} + +// ### Source button +var FCKSourceCommand = function() +{ + this.Name = 'Source' ; +} + +FCKSourceCommand.prototype.Execute = function() +{ + if ( FCKConfig.SourcePopup ) // Until v2.2, it was mandatory for FCKBrowserInfo.IsGecko. + { + var iWidth = FCKConfig.ScreenWidth * 0.65 ; + var iHeight = FCKConfig.ScreenHeight * 0.65 ; + FCKDialog.OpenDialog( 'FCKDialog_Source', FCKLang.Source, 'dialog/fck_source.html', iWidth, iHeight, null, null, true ) ; + } + else + FCK.SwitchEditMode() ; +} + +FCKSourceCommand.prototype.GetState = function() +{ + return ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ? FCK_TRISTATE_OFF : FCK_TRISTATE_ON ) ; +} + +// ### Undo +var FCKUndoCommand = function() +{ + this.Name = 'Undo' ; +} + +FCKUndoCommand.prototype.Execute = function() +{ + if ( FCKBrowserInfo.IsIE ) + FCKUndo.Undo() ; + else + FCK.ExecuteNamedCommand( 'Undo' ) ; +} + +FCKUndoCommand.prototype.GetState = function() +{ + if ( FCKBrowserInfo.IsIE ) + return ( FCKUndo.CheckUndoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ; + else + return FCK.GetNamedCommandState( 'Undo' ) ; +} + +// ### Redo +var FCKRedoCommand = function() +{ + this.Name = 'Redo' ; +} + +FCKRedoCommand.prototype.Execute = function() +{ + if ( FCKBrowserInfo.IsIE ) + FCKUndo.Redo() ; + else + FCK.ExecuteNamedCommand( 'Redo' ) ; +} + +FCKRedoCommand.prototype.GetState = function() +{ + if ( FCKBrowserInfo.IsIE ) + return ( FCKUndo.CheckRedoState() ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ) ; + else + return FCK.GetNamedCommandState( 'Redo' ) ; +} + +// ### Page Break +var FCKPageBreakCommand = function() +{ + this.Name = 'PageBreak' ; +} + +FCKPageBreakCommand.prototype.Execute = function() +{ +// var e = FCK.EditorDocument.createElement( 'CENTER' ) ; +// e.style.pageBreakAfter = 'always' ; + + // Tidy was removing the empty CENTER tags, so the following solution has + // been found. It also validates correctly as XHTML 1.0 Strict. + var e = FCK.EditorDocument.createElement( 'DIV' ) ; + e.style.pageBreakAfter = 'always' ; + e.innerHTML = ' ' ; + + var oFakeImage = FCKDocumentProcessor_CreateFakeImage( 'FCK__PageBreak', e ) ; + oFakeImage = FCK.InsertElement( oFakeImage ) ; +} + +FCKPageBreakCommand.prototype.GetState = function() +{ + return 0 ; // FCK_TRISTATE_OFF +} + +// FCKUnlinkCommand - by Johnny Egeland (johnny@coretrek.com) +var FCKUnlinkCommand = function() +{ + this.Name = 'Unlink' ; +} + +FCKUnlinkCommand.prototype.Execute = function() +{ + if ( FCKBrowserInfo.IsGecko ) + { + var oLink = FCK.Selection.MoveToAncestorNode( 'A' ) ; + if ( oLink ) + FCK.Selection.SelectNode( oLink ) ; + } + + FCK.ExecuteNamedCommand( this.Name ) ; + + if ( FCKBrowserInfo.IsGecko ) + FCK.Selection.Collapse( true ) ; +} + +FCKUnlinkCommand.prototype.GetState = function() +{ + var state = FCK.GetNamedCommandState( this.Name ) ; + + // Check that it isn't an anchor + if ( state == FCK_TRISTATE_OFF && FCK.EditMode == FCK_EDITMODE_WYSIWYG ) + { + var oLink = FCKSelection.MoveToAncestorNode( 'A' ) ; + var bIsAnchor = ( oLink && oLink.name.length > 0 && oLink.href.length == 0 ) ; + if ( bIsAnchor ) + state = FCK_TRISTATE_DISABLED ; + } + + return state ; +} + +// FCKSelectAllCommand +var FCKSelectAllCommand = function() +{ + this.Name = 'SelectAll' ; +} + +FCKSelectAllCommand.prototype.Execute = function() +{ + if ( FCK.EditMode == FCK_EDITMODE_WYSIWYG ) + { + FCK.ExecuteNamedCommand( 'SelectAll' ) ; + } + else + { + // Select the contents of the textarea + var textarea = FCK.EditingArea.Textarea ; + if ( FCKBrowserInfo.IsIE ) + { + textarea.createTextRange().execCommand( 'SelectAll' ) ; + } + else + { + textarea.selectionStart = 0; + textarea.selectionEnd = textarea.value.length ; + } + textarea.focus() ; + } +} + +FCKSelectAllCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} + +// FCKPasteCommand +var FCKPasteCommand = function() +{ + this.Name = 'Paste' ; +} + +FCKPasteCommand.prototype = +{ + Execute : function() + { + if ( FCKBrowserInfo.IsIE ) + FCK.Paste() ; + else + FCK.ExecuteNamedCommand( 'Paste' ) ; + }, + + GetState : function() + { + return FCK.GetNamedCommandState( 'Paste' ) ; + } +} ; Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckfitwindow.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckfitwindow.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckfitwindow.js (revision 240) @@ -0,0 +1,169 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Stretch the editor to full window size and back. + */ + +var FCKFitWindow = function() +{ + this.Name = 'FitWindow' ; +} + +FCKFitWindow.prototype.Execute = function() +{ + var eEditorFrame = window.frameElement ; + var eEditorFrameStyle = eEditorFrame.style ; + + var eMainWindow = parent ; + var eDocEl = eMainWindow.document.documentElement ; + var eBody = eMainWindow.document.body ; + var eBodyStyle = eBody.style ; + var eParent ; + + // No original style properties known? Go fullscreen. + if ( !this.IsMaximized ) + { + // Registering an event handler when the window gets resized. + if( FCKBrowserInfo.IsIE ) + eMainWindow.attachEvent( 'onresize', FCKFitWindow_Resize ) ; + else + eMainWindow.addEventListener( 'resize', FCKFitWindow_Resize, true ) ; + + // Save the scrollbars position. + this._ScrollPos = FCKTools.GetScrollPosition( eMainWindow ) ; + + // Save and reset the styles for the entire node tree. They could interfere in the result. + eParent = eEditorFrame ; + // The extra () is to avoid a warning with strict error checking. This is ok. + while( (eParent = eParent.parentNode) ) + { + if ( eParent.nodeType == 1 ) + eParent._fckSavedStyles = FCKTools.SaveStyles( eParent ) ; + } + + // Hide IE scrollbars (in strict mode). + if ( FCKBrowserInfo.IsIE ) + { + this.documentElementOverflow = eDocEl.style.overflow ; + eDocEl.style.overflow = 'hidden' ; + eBodyStyle.overflow = 'hidden' ; + } + else + { + // Hide the scroolbars in Firefox. + eBodyStyle.overflow = 'hidden' ; + eBodyStyle.width = '0px' ; + eBodyStyle.height = '0px' ; + } + + // Save the IFRAME styles. + this._EditorFrameStyles = FCKTools.SaveStyles( eEditorFrame ) ; + + // Resize. + var oViewPaneSize = FCKTools.GetViewPaneSize( eMainWindow ) ; + + eEditorFrameStyle.position = "absolute"; + eEditorFrameStyle.zIndex = FCKConfig.FloatingPanelsZIndex - 1; + eEditorFrameStyle.left = "0px"; + eEditorFrameStyle.top = "0px"; + eEditorFrameStyle.width = oViewPaneSize.Width + "px"; + eEditorFrameStyle.height = oViewPaneSize.Height + "px"; + + // Giving the frame some (huge) borders on his right and bottom + // side to hide the background that would otherwise show when the + // editor is in fullsize mode and the window is increased in size + // not for IE, because IE immediately adapts the editor on resize, + // without showing any of the background oddly in firefox, the + // editor seems not to fill the whole frame, so just setting the + // background of it to white to cover the page laying behind it anyway. + if ( !FCKBrowserInfo.IsIE ) + { + eEditorFrameStyle.borderRight = eEditorFrameStyle.borderBottom = "9999px solid white" ; + eEditorFrameStyle.backgroundColor = "white"; + } + + // Scroll to top left. + eMainWindow.scrollTo(0, 0); + + this.IsMaximized = true ; + } + else // Resize to original size. + { + // Remove the event handler of window resizing. + if( FCKBrowserInfo.IsIE ) + eMainWindow.detachEvent( "onresize", FCKFitWindow_Resize ) ; + else + eMainWindow.removeEventListener( "resize", FCKFitWindow_Resize, true ) ; + + // Restore the CSS position for the entire node tree. + eParent = eEditorFrame ; + // The extra () is to avoid a warning with strict error checking. This is ok. + while( (eParent = eParent.parentNode) ) + { + if ( eParent._fckSavedStyles ) + { + FCKTools.RestoreStyles( eParent, eParent._fckSavedStyles ) ; + eParent._fckSavedStyles = null ; + } + } + + // Restore IE scrollbars + if ( FCKBrowserInfo.IsIE ) + eDocEl.style.overflow = this.documentElementOverflow ; + + // Restore original size + FCKTools.RestoreStyles( eEditorFrame, this._EditorFrameStyles ) ; + + // Restore the window scroll position. + eMainWindow.scrollTo( this._ScrollPos.X, this._ScrollPos.Y ) ; + + this.IsMaximized = false ; + } + + FCKToolbarItems.GetItem('FitWindow').RefreshState() ; + + // It seams that Firefox restarts the editing area when making this changes. + // On FF 1.0.x, the area is not anymore editable. On FF 1.5+, the special + //configuration, like DisableFFTableHandles and DisableObjectResizing get + //lost, so we must reset it. Also, the cursor position and selection are + //also lost, even if you comment the following line (MakeEditable). + // if ( FCKBrowserInfo.IsGecko10 ) // Initially I thought it was a FF 1.0 only problem. + FCK.EditingArea.MakeEditable() ; + + FCK.Focus() ; +} + +FCKFitWindow.prototype.GetState = function() +{ + if ( FCKConfig.ToolbarLocation != 'In' ) + return FCK_TRISTATE_DISABLED ; + else + return ( this.IsMaximized ? FCK_TRISTATE_ON : FCK_TRISTATE_OFF ); +} + +function FCKFitWindow_Resize() +{ + var oViewPaneSize = FCKTools.GetViewPaneSize( parent ) ; + + var eEditorFrameStyle = window.frameElement.style ; + + eEditorFrameStyle.width = oViewPaneSize.Width + 'px' ; + eEditorFrameStyle.height = oViewPaneSize.Height + 'px' ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcknamedcommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcknamedcommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcknamedcommand.js (revision 240) @@ -0,0 +1,37 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKNamedCommand Class: represents an internal browser command. + */ + +var FCKNamedCommand = function( commandName ) +{ + this.Name = commandName ; +} + +FCKNamedCommand.prototype.Execute = function() +{ + FCK.ExecuteNamedCommand( this.Name ) ; +} + +FCKNamedCommand.prototype.GetState = function() +{ + return FCK.GetNamedCommandState( this.Name ) ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpasteplaintextcommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpasteplaintextcommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpasteplaintextcommand.js (revision 240) @@ -0,0 +1,38 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKPastePlainTextCommand Class: represents the + * "Paste as Plain Text" command. + */ + +var FCKPastePlainTextCommand = function() +{ + this.Name = 'PasteText' ; +} + +FCKPastePlainTextCommand.prototype.Execute = function() +{ + FCK.PasteAsPlainText() ; +} + +FCKPastePlainTextCommand.prototype.GetState = function() +{ + return FCK.GetNamedCommandState( 'Paste' ) ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpastewordcommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpastewordcommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckpastewordcommand.js (revision 240) @@ -0,0 +1,40 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKPasteWordCommand Class: represents the "Paste from Word" command. + */ + +var FCKPasteWordCommand = function() +{ + this.Name = 'PasteWord' ; +} + +FCKPasteWordCommand.prototype.Execute = function() +{ + FCK.PasteFromWord() ; +} + +FCKPasteWordCommand.prototype.GetState = function() +{ + if ( FCKConfig.ForcePasteAsPlainText ) + return FCK_TRISTATE_DISABLED ; + else + return FCK.GetNamedCommandState( 'Paste' ) ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_gecko.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_gecko.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_gecko.js (revision 240) @@ -0,0 +1,39 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKStyleCommand Class: represents the "Spell Check" command. + * (Gecko specific implementation) + */ + +var FCKSpellCheckCommand = function() +{ + this.Name = 'SpellCheck' ; + this.IsEnabled = ( FCKConfig.SpellChecker == 'SpellerPages' ) ; +} + +FCKSpellCheckCommand.prototype.Execute = function() +{ + FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ; +} + +FCKSpellCheckCommand.prototype.GetState = function() +{ + return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_ie.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_ie.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckspellcheckcommand_ie.js (revision 240) @@ -0,0 +1,67 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKStyleCommand Class: represents the "Spell Check" command. + * (IE specific implementation) + */ + +var FCKSpellCheckCommand = function() +{ + this.Name = 'SpellCheck' ; + this.IsEnabled = ( FCKConfig.SpellChecker == 'ieSpell' || FCKConfig.SpellChecker == 'SpellerPages' ) ; +} + +FCKSpellCheckCommand.prototype.Execute = function() +{ + switch ( FCKConfig.SpellChecker ) + { + case 'ieSpell' : + this._RunIeSpell() ; + break ; + + case 'SpellerPages' : + FCKDialog.OpenDialog( 'FCKDialog_SpellCheck', 'Spell Check', 'dialog/fck_spellerpages.html', 440, 480 ) ; + break ; + } +} + +FCKSpellCheckCommand.prototype._RunIeSpell = function() +{ + try + { + var oIeSpell = new ActiveXObject( "ieSpell.ieSpellExtension" ) ; + oIeSpell.CheckAllLinkedDocuments( FCK.EditorDocument ) ; + } + catch( e ) + { + if( e.number == -2146827859 ) + { + if ( confirm( FCKLang.IeSpellDownload ) ) + window.open( FCKConfig.IeSpellDownloadUrl , 'IeSpellDownload' ) ; + } + else + alert( 'Error Loading ieSpell: ' + e.message + ' (' + e.number + ')' ) ; + } +} + +FCKSpellCheckCommand.prototype.GetState = function() +{ + return this.IsEnabled ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckstylecommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckstylecommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fckstylecommand.js (revision 240) @@ -0,0 +1,99 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKStyleCommand Class: represents the "Style" command. + */ + +var FCKStyleCommand = function() +{ + this.Name = 'Style' ; + + // Load the Styles defined in the XML file. + this.StylesLoader = new FCKStylesLoader() ; + this.StylesLoader.Load( FCKConfig.StylesXmlPath ) ; + this.Styles = this.StylesLoader.Styles ; +} + +FCKStyleCommand.prototype.Execute = function( styleName, styleComboItem ) +{ + FCKUndo.SaveUndoStep() ; + + if ( styleComboItem.Selected ) + styleComboItem.Style.RemoveFromSelection() ; + else + styleComboItem.Style.ApplyToSelection() ; + + FCKUndo.SaveUndoStep() ; + + FCK.Focus() ; + + FCK.Events.FireEvent( "OnSelectionChange" ) ; +} + +FCKStyleCommand.prototype.GetState = function() +{ + if ( !FCK.EditorDocument ) + return FCK_TRISTATE_DISABLED ; + + var oSelection = FCK.EditorDocument.selection ; + + if ( FCKSelection.GetType() == 'Control' ) + { + var e = FCKSelection.GetSelectedElement() ; + if ( e ) + return this.StylesLoader.StyleGroups[ e.tagName ] ? FCK_TRISTATE_OFF : FCK_TRISTATE_DISABLED ; + } + + return FCK_TRISTATE_OFF ; +} + +FCKStyleCommand.prototype.GetActiveStyles = function() +{ + var aActiveStyles = new Array() ; + + if ( FCKSelection.GetType() == 'Control' ) + this._CheckStyle( FCKSelection.GetSelectedElement(), aActiveStyles, false ) ; + else + this._CheckStyle( FCKSelection.GetParentElement(), aActiveStyles, true ) ; + + return aActiveStyles ; +} + +FCKStyleCommand.prototype._CheckStyle = function( element, targetArray, checkParent ) +{ + if ( ! element ) + return ; + + if ( element.nodeType == 1 ) + { + var aStyleGroup = this.StylesLoader.StyleGroups[ element.tagName ] ; + if ( aStyleGroup ) + { + for ( var i = 0 ; i < aStyleGroup.length ; i++ ) + { + if ( aStyleGroup[i].IsEqual( element ) ) + targetArray[ targetArray.length ] = aStyleGroup[i] ; + } + } + } + + if ( checkParent ) + this._CheckStyle( element.parentNode, targetArray, checkParent ) ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktablecommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktablecommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktablecommand.js (revision 240) @@ -0,0 +1,71 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKPastePlainTextCommand Class: represents the + * "Paste as Plain Text" command. + */ + +var FCKTableCommand = function( command ) +{ + this.Name = command ; +} + +FCKTableCommand.prototype.Execute = function() +{ + FCKUndo.SaveUndoStep() ; + + switch ( this.Name ) + { + case 'TableInsertRow' : + FCKTableHandler.InsertRow() ; + break ; + case 'TableDeleteRows' : + FCKTableHandler.DeleteRows() ; + break ; + case 'TableInsertColumn' : + FCKTableHandler.InsertColumn() ; + break ; + case 'TableDeleteColumns' : + FCKTableHandler.DeleteColumns() ; + break ; + case 'TableInsertCell' : + FCKTableHandler.InsertCell() ; + break ; + case 'TableDeleteCells' : + FCKTableHandler.DeleteCells() ; + break ; + case 'TableMergeCells' : + FCKTableHandler.MergeCells() ; + break ; + case 'TableSplitCell' : + FCKTableHandler.SplitCell() ; + break ; + case 'TableDelete' : + FCKTableHandler.DeleteTable() ; + break ; + default : + alert( FCKLang.UnknownCommand.replace( /%1/g, this.Name ) ) ; + } +} + +FCKTableCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktextcolorcommand.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktextcolorcommand.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/commandclasses/fcktextcolorcommand.js (revision 240) @@ -0,0 +1,175 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * FCKTextColorCommand Class: represents the text color comand. It shows the + * color selection panel. + */ + +// FCKTextColorCommand Contructor +// type: can be 'ForeColor' or 'BackColor'. +var FCKTextColorCommand = function( type ) +{ + this.Name = type == 'ForeColor' ? 'TextColor' : 'BGColor' ; + this.Type = type ; + + var oWindow ; + + if ( FCKBrowserInfo.IsIE ) + oWindow = window ; + else if ( FCK.ToolbarSet._IFrame ) + oWindow = FCKTools.GetElementWindow( FCK.ToolbarSet._IFrame ) ; + else + oWindow = window.parent ; + + this._Panel = new FCKPanel( oWindow, true ) ; + this._Panel.AppendStyleSheet( FCKConfig.SkinPath + 'fck_editor.css' ) ; + this._Panel.MainNode.className = 'FCK_Panel' ; + this._CreatePanelBody( this._Panel.Document, this._Panel.MainNode ) ; + + FCKTools.DisableSelection( this._Panel.Document.body ) ; +} + +FCKTextColorCommand.prototype.Execute = function( panelX, panelY, relElement ) +{ + // We must "cache" the actual panel type to be used in the SetColor method. + FCK._ActiveColorPanelType = this.Type ; + + // Show the Color Panel at the desired position. + this._Panel.Show( panelX, panelY, relElement ) ; +} + +FCKTextColorCommand.prototype.SetColor = function( color ) +{ + if ( FCK._ActiveColorPanelType == 'ForeColor' ) + FCK.ExecuteNamedCommand( 'ForeColor', color ) ; + else if ( FCKBrowserInfo.IsGeckoLike ) + { + if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN ) + FCK.EditorDocument.execCommand( 'useCSS', false, false ) ; + + FCK.ExecuteNamedCommand( 'hilitecolor', color ) ; + + if ( FCKBrowserInfo.IsGecko && !FCKConfig.GeckoUseSPAN ) + FCK.EditorDocument.execCommand( 'useCSS', false, true ) ; + } + else + FCK.ExecuteNamedCommand( 'BackColor', color ) ; + + // Delete the "cached" active panel type. + delete FCK._ActiveColorPanelType ; +} + +FCKTextColorCommand.prototype.GetState = function() +{ + return FCK_TRISTATE_OFF ; +} + +function FCKTextColorCommand_OnMouseOver() { this.className='ColorSelected' ; } + +function FCKTextColorCommand_OnMouseOut() { this.className='ColorDeselected' ; } + +function FCKTextColorCommand_OnClick() +{ + this.className = 'ColorDeselected' ; + this.Command.SetColor( '#' + this.Color ) ; + this.Command._Panel.Hide() ; +} + +function FCKTextColorCommand_AutoOnClick() +{ + this.className = 'ColorDeselected' ; + this.Command.SetColor( '' ) ; + this.Command._Panel.Hide() ; +} + +function FCKTextColorCommand_MoreOnClick() +{ + this.className = 'ColorDeselected' ; + this.Command._Panel.Hide() ; + FCKDialog.OpenDialog( 'FCKDialog_Color', FCKLang.DlgColorTitle, 'dialog/fck_colorselector.html', 400, 330, this.Command.SetColor ) ; +} + +FCKTextColorCommand.prototype._CreatePanelBody = function( targetDocument, targetDiv ) +{ + function CreateSelectionDiv() + { + var oDiv = targetDocument.createElement( "DIV" ) ; + oDiv.className = 'ColorDeselected' ; + oDiv.onmouseover = FCKTextColorCommand_OnMouseOver ; + oDiv.onmouseout = FCKTextColorCommand_OnMouseOut ; + + return oDiv ; + } + + // Create the Table that will hold all colors. + var oTable = targetDiv.appendChild( targetDocument.createElement( "TABLE" ) ) ; + oTable.className = 'ForceBaseFont' ; // Firefox 1.5 Bug. + oTable.style.tableLayout = 'fixed' ; + oTable.cellPadding = 0 ; + oTable.cellSpacing = 0 ; + oTable.border = 0 ; + oTable.width = 150 ; + + var oCell = oTable.insertRow(-1).insertCell(-1) ; + oCell.colSpan = 8 ; + + // Create the Button for the "Automatic" color selection. + var oDiv = oCell.appendChild( CreateSelectionDiv() ) ; + oDiv.innerHTML = + '
' + FCKLang.ColorAutomatic + ' | \ +
' + FCKLang.ColorMoreColors + ' |
' ; +var GECKO_BOGUS = '
' ; + +var FCKTools = new Object() ; + +FCKTools.CreateBogusBR = function( targetDocument ) +{ + var eBR = targetDocument.createElement( 'br' ) ; +// eBR.setAttribute( '_moz_editor_bogus_node', 'TRUE' ) ; + eBR.setAttribute( 'type', '_moz' ) ; + return eBR ; +} + +// Returns a reference to the appended style sheet or an array with all the appended references +FCKTools.AppendStyleSheet = function( documentElement, cssFileUrlOrArray ) +{ + if ( typeof( cssFileUrlOrArray ) == 'string' ) + return this._AppendStyleSheet( documentElement, cssFileUrlOrArray ) ; + else + { + var aStyleSheeArray = new Array() ; + + for ( var i = 0 ; i < cssFileUrlOrArray.length ; i++ ) + aStyleSheeArray.push(this._AppendStyleSheet( documentElement, cssFileUrlOrArray[i] ) ) ; + + return aStyleSheeArray ; + } +} + +FCKTools.GetElementDocument = function ( element ) +{ + return element.ownerDocument || element.document ; +} + +// Get the window object where the element is placed in. +FCKTools.GetElementWindow = function( element ) +{ + return this.GetDocumentWindow( this.GetElementDocument( element ) ) ; +} + +FCKTools.GetDocumentWindow = function( document ) +{ + // With Safari, there is not way to retrieve the window from the document, so we must fix it. + if ( FCKBrowserInfo.IsSafari && !document.parentWindow ) + this.FixDocumentParentWindow( window.top ) ; + + return document.parentWindow || document.defaultView ; +} + +/* + This is a Safari specific function that fix the reference to the parent + window from the document object. +*/ +FCKTools.FixDocumentParentWindow = function( targetWindow ) +{ + targetWindow.document.parentWindow = targetWindow ; + + for ( var i = 0 ; i < targetWindow.frames.length ; i++ ) + FCKTools.FixDocumentParentWindow( targetWindow.frames[i] ) ; +} + +FCKTools.HTMLEncode = function( text ) +{ + if ( !text ) + return '' ; + + text = text.replace( /&/g, '&' ) ; + text = text.replace( //g, '>' ) ; + + return text ; +} + +FCKTools.HTMLDecode = function( text ) +{ + if ( !text ) + return '' ; + + text = text.replace( />/g, '>' ) ; + text = text.replace( /</g, '<' ) ; + text = text.replace( /&/g, '&' ) ; + + return text ; +} + +/** + * Adds an option to a SELECT element. + */ +FCKTools.AddSelectOption = function( selectElement, optionText, optionValue ) +{ + var oOption = FCKTools.GetElementDocument( selectElement ).createElement( "OPTION" ) ; + + oOption.text = optionText ; + oOption.value = optionValue ; + + selectElement.options.add(oOption) ; + + return oOption ; +} + +FCKTools.RunFunction = function( func, thisObject, paramsArray, timerWindow ) +{ + if ( func ) + this.SetTimeout( func, 0, thisObject, paramsArray, timerWindow ) ; +} + +FCKTools.SetTimeout = function( func, milliseconds, thisObject, paramsArray, timerWindow ) +{ + return ( timerWindow || window ).setTimeout( + function() + { + if ( paramsArray ) + func.apply( thisObject, [].concat( paramsArray ) ) ; + else + func.apply( thisObject ) ; + }, + milliseconds ) ; +} + +FCKTools.SetInterval = function( func, milliseconds, thisObject, paramsArray, timerWindow ) +{ + return ( timerWindow || window ).setInterval( + function() + { + func.apply( thisObject, paramsArray || [] ) ; + }, + milliseconds ) ; +} + +FCKTools.ConvertStyleSizeToHtml = function( size ) +{ + return size.EndsWith( '%' ) ? size : parseInt( size, 10 ) ; +} + +FCKTools.ConvertHtmlSizeToStyle = function( size ) +{ + return size.EndsWith( '%' ) ? size : ( size + 'px' ) ; +} + +// START iCM MODIFICATIONS +// Amended to accept a list of one or more ascensor tag names +// Amended to check the element itself before working back up through the parent hierarchy +FCKTools.GetElementAscensor = function( element, ascensorTagNames ) +{ +// var e = element.parentNode ; + var e = element ; + var lstTags = "," + ascensorTagNames.toUpperCase() + "," ; + + while ( e ) + { + if ( lstTags.indexOf( "," + e.nodeName.toUpperCase() + "," ) != -1 ) + return e ; + + e = e.parentNode ; + } + return null ; +} +// END iCM MODIFICATIONS + +FCKTools.CreateEventListener = function( func, params ) +{ + var f = function() + { + var aAllParams = [] ; + + for ( var i = 0 ; i < arguments.length ; i++ ) + aAllParams.push( arguments[i] ) ; + + func.apply( this, aAllParams.concat( params ) ) ; + } + + return f ; +} + +FCKTools.IsStrictMode = function( document ) +{ + // There is no compatMode in Safari, but it seams that it always behave as + // CSS1Compat, so let's assume it as the default. + return ( 'CSS1Compat' == ( document.compatMode || 'CSS1Compat' ) ) ; +} + +// Transforms a "arguments" object to an array. +FCKTools.ArgumentsToArray = function( args, startIndex, maxLength ) +{ + startIndex = startIndex || 0 ; + maxLength = maxLength || args.length ; + + var argsArray = new Array() ; + + for ( var i = startIndex ; i < startIndex + maxLength && i < args.length ; i++ ) + argsArray.push( args[i] ) ; + + return argsArray ; +} + +FCKTools.CloneObject = function( sourceObject ) +{ + var fCloneCreator = function() {} ; + fCloneCreator.prototype = sourceObject ; + return new fCloneCreator ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_gecko.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_gecko.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_gecko.js (revision 240) @@ -0,0 +1,235 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Utility functions. (Gecko version). + */ + +FCKTools.CancelEvent = function( e ) +{ + if ( e ) + e.preventDefault() ; +} + +FCKTools.DisableSelection = function( element ) +{ + if ( FCKBrowserInfo.IsGecko ) + element.style.MozUserSelect = 'none' ; // Gecko only. + else + element.style.userSelect = 'none' ; // CSS3 (not supported yet). +} + +// Appends a CSS file to a document. +FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl ) +{ + var e = documentElement.createElement( 'LINK' ) ; + e.rel = 'stylesheet' ; + e.type = 'text/css' ; + e.href = cssFileUrl ; + documentElement.getElementsByTagName("HEAD")[0].appendChild( e ) ; + return e ; +} + +// Removes all attributes and values from the element. +FCKTools.ClearElementAttributes = function( element ) +{ + // Loop throw all attributes in the element + for ( var i = 0 ; i < element.attributes.length ; i++ ) + { + // Remove the element by name. + element.removeAttribute( element.attributes[i].name, 0 ) ; // 0 : Case Insensitive + } +} + +// Returns an Array of strings with all defined in the elements inside another element. +FCKTools.GetAllChildrenIds = function( parentElement ) +{ + // Create the array that will hold all Ids. + var aIds = new Array() ; + + // Define a recursive function that search for the Ids. + var fGetIds = function( parent ) + { + for ( var i = 0 ; i < parent.childNodes.length ; i++ ) + { + var sId = parent.childNodes[i].id ; + + // Check if the Id is defined for the element. + if ( sId && sId.length > 0 ) aIds[ aIds.length ] = sId ; + + // Recursive call. + fGetIds( parent.childNodes[i] ) ; + } + } + + // Start the recursive calls. + fGetIds( parentElement ) ; + + return aIds ; +} + +// Replaces a tag with its contents. For example "My tag" +// will be replaced with "My tag". +FCKTools.RemoveOuterTags = function( e ) +{ + var oFragment = e.ownerDocument.createDocumentFragment() ; + + for ( var i = 0 ; i < e.childNodes.length ; i++ ) + oFragment.appendChild( e.childNodes[i].cloneNode(true) ) ; + + e.parentNode.replaceChild( oFragment, e ) ; +} + +FCKTools.CreateXmlObject = function( object ) +{ + switch ( object ) + { + case 'XmlHttp' : + return new XMLHttpRequest() ; + case 'DOMDocument' : + return document.implementation.createDocument( '', '', null ) ; + } + return null ; +} + +FCKTools.GetScrollPosition = function( relativeWindow ) +{ + return { X : relativeWindow.pageXOffset, Y : relativeWindow.pageYOffset } ; +} + +FCKTools.AddEventListener = function( sourceObject, eventName, listener ) +{ + sourceObject.addEventListener( eventName, listener, false ) ; +} + +FCKTools.RemoveEventListener = function( sourceObject, eventName, listener ) +{ + sourceObject.removeEventListener( eventName, listener, false ) ; +} + +// Listeners attached with this function cannot be detached. +FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray ) +{ + sourceObject.addEventListener( + eventName, + function( e ) + { + listener.apply( sourceObject, [ e ].concat( paramsArray || [] ) ) ; + }, + false + ) ; +} + +// Returns and object with the "Width" and "Height" properties. +FCKTools.GetViewPaneSize = function( win ) +{ + return { Width : win.innerWidth, Height : win.innerHeight } ; +} + +FCKTools.SaveStyles = function( element ) +{ + var oSavedStyles = new Object() ; + + if ( element.className.length > 0 ) + { + oSavedStyles.Class = element.className ; + element.className = '' ; + } + + var sInlineStyle = element.getAttribute( 'style' ) ; + + if ( sInlineStyle && sInlineStyle.length > 0 ) + { + oSavedStyles.Inline = sInlineStyle ; + element.setAttribute( 'style', '', 0 ) ; // 0 : Case Insensitive + } + + return oSavedStyles ; +} + +FCKTools.RestoreStyles = function( element, savedStyles ) +{ + element.className = savedStyles.Class || '' ; + + if ( savedStyles.Inline ) + element.setAttribute( 'style', savedStyles.Inline, 0 ) ; // 0 : Case Insensitive + else + element.removeAttribute( 'style', 0 ) ; +} + +FCKTools.RegisterDollarFunction = function( targetWindow ) +{ + targetWindow.$ = function( id ) + { + return this.document.getElementById( id ) ; + } ; +} + +FCKTools.AppendElement = function( target, elementName ) +{ + return target.appendChild( target.ownerDocument.createElement( elementName ) ) ; +} + +// Get the coordinates of an element. +// @el : The element to get the position. +// @relativeWindow: The window to which we want the coordinates relative to. +FCKTools.GetElementPosition = function( el, relativeWindow ) +{ + // Initializes the Coordinates object that will be returned by the function. + var c = { X:0, Y:0 } ; + + var oWindow = relativeWindow || window ; + + var oOwnerWindow = FCKTools.GetElementWindow( el ) ; + + // Loop throw the offset chain. + while ( el ) + { + var sPosition = oOwnerWindow.getComputedStyle(el, '').position ; + + // Check for non "static" elements. + // 'FCKConfig.FloatingPanelsZIndex' -- Submenus are under a positioned IFRAME. + if ( sPosition && sPosition != 'static' && el.style.zIndex != FCKConfig.FloatingPanelsZIndex ) + break ; + + c.X += el.offsetLeft - el.scrollLeft ; + c.Y += el.offsetTop - el.scrollTop ; + + if ( el.offsetParent ) + el = el.offsetParent ; + else + { + if ( oOwnerWindow != oWindow ) + { + el = oOwnerWindow.frameElement ; + if ( el ) + oOwnerWindow = FCKTools.GetElementWindow( el ) ; + } + else + { + c.X += el.scrollLeft ; + c.Y += el.scrollTop ; + break ; + } + } + } + + // Return the Coordinates object + return c ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_ie.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_ie.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fcktools_ie.js (revision 240) @@ -0,0 +1,216 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Utility functions. (IE version). + */ + +FCKTools.CancelEvent = function( e ) +{ + return false ; +} + +// Appends one or more CSS files to a document. +FCKTools._AppendStyleSheet = function( documentElement, cssFileUrl ) +{ + return documentElement.createStyleSheet( cssFileUrl ).owningElement ; +} + +// Removes all attributes and values from the element. +FCKTools.ClearElementAttributes = function( element ) +{ + element.clearAttributes() ; +} + +FCKTools.GetAllChildrenIds = function( parentElement ) +{ + var aIds = new Array() ; + for ( var i = 0 ; i < parentElement.all.length ; i++ ) + { + var sId = parentElement.all[i].id ; + if ( sId && sId.length > 0 ) + aIds[ aIds.length ] = sId ; + } + return aIds ; +} + +FCKTools.RemoveOuterTags = function( e ) +{ + e.insertAdjacentHTML( 'beforeBegin', e.innerHTML ) ; + e.parentNode.removeChild( e ) ; +} + +FCKTools.CreateXmlObject = function( object ) +{ + var aObjs ; + + switch ( object ) + { + case 'XmlHttp' : + aObjs = [ 'MSXML2.XmlHttp', 'Microsoft.XmlHttp' ] ; + break ; + + case 'DOMDocument' : + aObjs = [ 'MSXML2.DOMDocument', 'Microsoft.XmlDom' ] ; + break ; + } + + for ( var i = 0 ; i < 2 ; i++ ) + { + try { return new ActiveXObject( aObjs[i] ) ; } + catch (e) + {} + } + + if ( FCKLang.NoActiveX ) + { + alert( FCKLang.NoActiveX ) ; + FCKLang.NoActiveX = null ; + } + return null ; +} + +FCKTools.DisableSelection = function( element ) +{ + element.unselectable = 'on' ; + + var e, i = 0 ; + // The extra () is to avoid a warning with strict error checking. This is ok. + while ( (e = element.all[ i++ ]) ) + { + switch ( e.tagName ) + { + case 'IFRAME' : + case 'TEXTAREA' : + case 'INPUT' : + case 'SELECT' : + /* Ignore the above tags */ + break ; + default : + e.unselectable = 'on' ; + } + } +} + +FCKTools.GetScrollPosition = function( relativeWindow ) +{ + var oDoc = relativeWindow.document ; + + // Try with the doc element. + var oPos = { X : oDoc.documentElement.scrollLeft, Y : oDoc.documentElement.scrollTop } ; + + if ( oPos.X > 0 || oPos.Y > 0 ) + return oPos ; + + // If no scroll, try with the body. + return { X : oDoc.body.scrollLeft, Y : oDoc.body.scrollTop } ; +} + +FCKTools.AddEventListener = function( sourceObject, eventName, listener ) +{ + sourceObject.attachEvent( 'on' + eventName, listener ) ; +} + +FCKTools.RemoveEventListener = function( sourceObject, eventName, listener ) +{ + sourceObject.detachEvent( 'on' + eventName, listener ) ; +} + +// Listeners attached with this function cannot be detached. +FCKTools.AddEventListenerEx = function( sourceObject, eventName, listener, paramsArray ) +{ + // Ok... this is a closures party, but is the only way to make it clean of memory leaks. + var o = new Object() ; + o.Source = sourceObject ; + o.Params = paramsArray || [] ; // Memory leak if we have DOM objects here. + o.Listener = function( ev ) + { + if ( !ev ) // Assertion // @Packager.RemoveLine + throw( 'ev is undefined' ) ; // Assertion // @Packager.RemoveLine + return listener.apply( o.Source, [ ev ].concat( o.Params ) ) ; + } + + if ( FCK.IECleanup ) + FCK.IECleanup.AddItem( null, function() { o.Source = null ; o.Params = null ; } ) ; + + sourceObject.attachEvent( 'on' + eventName, o.Listener ) ; + + sourceObject = null ; // Memory leak cleaner (because of the above closure). + paramsArray = null ; // Memory leak cleaner (because of the above closure). +} + +// Returns and object with the "Width" and "Height" properties. +FCKTools.GetViewPaneSize = function( win ) +{ + var oSizeSource ; + + var oDoc = win.document.documentElement ; + if ( oDoc && oDoc.clientWidth ) // IE6 Strict Mode + oSizeSource = oDoc ; + else + oSizeSource = top.document.body ; // Other IEs + + if ( oSizeSource ) + return { Width : oSizeSource.clientWidth, Height : oSizeSource.clientHeight } ; + else + return { Width : 0, Height : 0 } ; +} + +FCKTools.SaveStyles = function( element ) +{ + var oSavedStyles = new Object() ; + + if ( element.className.length > 0 ) + { + oSavedStyles.Class = element.className ; + element.className = '' ; + } + + var sInlineStyle = element.style.cssText ; + + if ( sInlineStyle.length > 0 ) + { + oSavedStyles.Inline = sInlineStyle ; + element.style.cssText = '' ; + } + + return oSavedStyles ; +} + +FCKTools.RestoreStyles = function( element, savedStyles ) +{ + element.className = savedStyles.Class || '' ; + element.style.cssText = savedStyles.Inline || '' ; +} + +FCKTools.RegisterDollarFunction = function( targetWindow ) +{ + targetWindow.$ = targetWindow.document.getElementById ; +} + +FCKTools.AppendElement = function( target, elementName ) +{ + return target.appendChild( this.GetElementDocument( target ).createElement( elementName ) ) ; +} + +// This function may be used by Regex replacements. +FCKTools.ToLowerCase = function( strValue ) +{ + return strValue.toLowerCase() ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_gecko.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_gecko.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_gecko.js (revision 240) @@ -0,0 +1,27 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Fake implementation to ignore calls on Gecko. + */ + +var FCKUndo = new Object() ; + +FCKUndo.SaveUndoStep = function() +{} Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_ie.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_ie.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckundo_ie.js (revision 240) @@ -0,0 +1,123 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * IE specific implementation for the Undo/Redo system. + */ + +var FCKUndo = new Object() ; + +FCKUndo.SavedData = new Array() ; +FCKUndo.CurrentIndex = -1 ; +FCKUndo.TypesCount = FCKUndo.MaxTypes = 25 ; +FCKUndo.Typing = false ; + +FCKUndo.SaveUndoStep = function() +{ + if ( FCK.EditMode != FCK_EDITMODE_WYSIWYG ) + return ; + + // Shrink the array to the current level. + FCKUndo.SavedData = FCKUndo.SavedData.slice( 0, FCKUndo.CurrentIndex + 1 ) ; + + // Get the Actual HTML. + var sHtml = FCK.EditorDocument.body.innerHTML ; + + // Cancel operation if the new step is identical to the previous one. + if ( FCKUndo.CurrentIndex >= 0 && sHtml == FCKUndo.SavedData[ FCKUndo.CurrentIndex ][0] ) + return ; + + // If we reach the Maximun number of undo levels, we must remove the first + // entry of the list shifting all elements. + if ( FCKUndo.CurrentIndex + 1 >= FCKConfig.MaxUndoLevels ) + FCKUndo.SavedData.shift() ; + else + FCKUndo.CurrentIndex++ ; + + // Get the actual selection. + var sBookmark ; + if ( FCK.EditorDocument.selection.type == 'Text' ) + sBookmark = FCK.EditorDocument.selection.createRange().getBookmark() ; + + // Save the new level in front of the actual position. + FCKUndo.SavedData[ FCKUndo.CurrentIndex ] = [ sHtml, sBookmark ] ; + + FCK.Events.FireEvent( "OnSelectionChange" ) ; +} + +FCKUndo.CheckUndoState = function() +{ + return ( FCKUndo.Typing || FCKUndo.CurrentIndex > 0 ) ; +} + +FCKUndo.CheckRedoState = function() +{ + return ( !FCKUndo.Typing && FCKUndo.CurrentIndex < ( FCKUndo.SavedData.length - 1 ) ) ; +} + +FCKUndo.Undo = function() +{ + if ( FCKUndo.CheckUndoState() ) + { + // If it is the first step. + if ( FCKUndo.CurrentIndex == ( FCKUndo.SavedData.length - 1 ) ) + { + // Save the actual state for a possible "Redo" call. + FCKUndo.SaveUndoStep() ; + } + + // Go a step back. + FCKUndo._ApplyUndoLevel( --FCKUndo.CurrentIndex ) ; + + FCK.Events.FireEvent( "OnSelectionChange" ) ; + } +} + +FCKUndo.Redo = function() +{ + if ( FCKUndo.CheckRedoState() ) + { + // Go a step forward. + FCKUndo._ApplyUndoLevel( ++FCKUndo.CurrentIndex ) ; + + FCK.Events.FireEvent( "OnSelectionChange" ) ; + } +} + +FCKUndo._ApplyUndoLevel = function(level) +{ + var oData = FCKUndo.SavedData[ level ] ; + + if ( !oData ) + return ; + + // Update the editor contents with that step data. + FCK.SetInnerHtml( oData[0] ) ; +// FCK.EditorDocument.body.innerHTML = oData[0] ; + + if ( oData[1] ) + { + var oRange = FCK.EditorDocument.selection.createRange() ; + oRange.moveToBookmark( oData[1] ) ; + oRange.select() ; + } + + FCKUndo.TypesCount = 0 ; + FCKUndo.Typing = false ; +} Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckurlparams.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fckurlparams.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckurlparams.js (revision 240) @@ -0,0 +1,39 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Defines the FCKURLParams object that is used to get all parameters + * passed by the URL QueryString (after the "?"). + */ + +// #### URLParams: holds all URL passed parameters (like ?Param1=Value1&Param2=Value2) +var FCKURLParams = new Object() ; + +(function() +{ + var aParams = document.location.search.substr(1).split('&') ; + for ( var i = 0 ; i < aParams.length ; i++ ) + { + var aParam = aParams[i].split('=') ; + var sParamName = decodeURIComponent( aParam[0] ) ; + var sParamValue = decodeURIComponent( aParam[1] ) ; + + FCKURLParams[ sParamName ] = sParamValue ; + } +})(); Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml.js =================================================================== --- /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml.js (revision 240) +++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml.js (revision 240) @@ -0,0 +1,466 @@ +/* + * FCKeditor - The text editor for Internet - http://www.fckeditor.net + * Copyright (C) 2003-2007 Frederico Caldeira Knabben + * + * == BEGIN LICENSE == + * + * Licensed under the terms of any of the following licenses at your + * choice: + * + * - GNU General Public License Version 2 or later (the "GPL") + * http://www.gnu.org/licenses/gpl.html + * + * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") + * http://www.gnu.org/licenses/lgpl.html + * + * - Mozilla Public License Version 1.1 or later (the "MPL") + * http://www.mozilla.org/MPL/MPL-1.1.html + * + * == END LICENSE == + * + * Defines the FCKXHtml object, responsible for the XHTML operations. + */ + +var FCKXHtml = new Object() ; + +FCKXHtml.CurrentJobNum = 0 ; + +FCKXHtml.GetXHTML = function( node, includeNode, format ) +{ + FCKXHtmlEntities.Initialize() ; + + // Set the correct entity to use for empty blocks. + this._NbspEntity = ( FCKConfig.ProcessHTMLEntities? 'nbsp' : '#160' ) ; + + // Save the current IsDirty state. The XHTML processor may change the + // original HTML, dirtying it. + var bIsDirty = FCK.IsDirty() ; + + this._CreateNode = FCKConfig.ForceStrongEm ? FCKXHtml_CreateNode_StrongEm : FCKXHtml_CreateNode_Normal ; + + // Special blocks are blocks of content that remain untouched during the + // process. It is used for SCRIPTs and STYLEs. + FCKXHtml.SpecialBlocks = new Array() ; + + // Create the XML DOMDocument object. + this.XML = FCKTools.CreateXmlObject( 'DOMDocument' ) ; + + // Add a root element that holds all child nodes. + this.MainNode = this.XML.appendChild( this.XML.createElement( 'xhtml' ) ) ; + + FCKXHtml.CurrentJobNum++ ; + + if ( includeNode ) + this._AppendNode( this.MainNode, node ) ; + else + this._AppendChildNodes( this.MainNode, node, false ) ; + + // Get the resulting XHTML as a string. + var sXHTML = this._GetMainXmlString() ; + + this.XML = null ; + + // Strip the "XHTML" root node. + sXHTML = sXHTML.substr( 7, sXHTML.length - 15 ).Trim() ; + + // Remove the trailing
added by Gecko. + // REMOVE: Maybe the following is not anymore necessary because a similar + // check is made on _AppendNode + if ( FCKBrowserInfo.IsGecko ) + sXHTML = sXHTML.replace( /
$/, '' ) ; + + // Add a space in the tags with no closing tags, like
->
+ sXHTML = sXHTML.replace( FCKRegexLib.SpaceNoClose, ' />'); + + if ( FCKConfig.ForceSimpleAmpersand ) + sXHTML = sXHTML.replace( FCKRegexLib.ForceSimpleAmpersand, '&' ) ; + + if ( format ) + sXHTML = FCKCodeFormatter.Format( sXHTML ) ; + + // Now we put back the SpecialBlocks contents. + for ( var i = 0 ; i < FCKXHtml.SpecialBlocks.length ; i++ ) + { + var oRegex = new RegExp( '___FCKsi___' + i ) ; + sXHTML = sXHTML.replace( oRegex, FCKXHtml.SpecialBlocks[i] ) ; + } + + // Replace entities marker with the ampersand. + sXHTML = sXHTML.replace( FCKRegexLib.GeckoEntitiesMarker, '&' ) ; + + // Restore the IsDirty state if it was not dirty. + if ( !bIsDirty ) + FCK.ResetIsDirty() ; + + return sXHTML ; +} + +FCKXHtml._AppendAttribute = function( xmlNode, attributeName, attributeValue ) +{ + try + { + if ( attributeValue == undefined || attributeValue == null ) + attributeValue = '' ; + else if ( attributeValue.replace ) + { + if ( FCKConfig.ForceSimpleAmpersand ) + attributeValue = attributeValue.replace( /&/g, '___FCKAmp___' ) ; + + // Entities must be replaced in the attribute values. + attributeValue = attributeValue.replace( FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity ) ; + } + + // Create the attribute. + var oXmlAtt = this.XML.createAttribute( attributeName ) ; + oXmlAtt.value = attributeValue ; + + // Set the attribute in the node. + xmlNode.attributes.setNamedItem( oXmlAtt ) ; + } + catch (e) + {} +} + +FCKXHtml._AppendChildNodes = function( xmlNode, htmlNode, isBlockElement ) +{ + // Trim block elements. This is also needed to avoid Firefox leaving extra + // BRs at the end of them. + if ( isBlockElement ) + FCKDomTools.TrimNode( htmlNode, true ) ; + + var iCount = 0 ; + + var oNode = htmlNode.firstChild ; + + while ( oNode ) + { + if ( this._AppendNode( xmlNode, oNode ) ) + iCount++ ; + + oNode = oNode.nextSibling ; + } + + if ( iCount == 0 ) + { + if ( isBlockElement && FCKConfig.FillEmptyBlocks ) + { + this._AppendEntity( xmlNode, this._NbspEntity ) ; + return xmlNode ; + } + + var sNodeName = xmlNode.nodeName ; + + // Some inline elements are required to have something inside (span, strong, etc...). + if ( FCKListsLib.InlineChildReqElements[ sNodeName ] ) + return null ; + + // We can't use short representation of empty elements that are not marked + // as empty in th XHTML DTD. + if ( !FCKListsLib.EmptyElements[ sNodeName ] ) + xmlNode.appendChild( this.XML.createTextNode('') ) ; + } + + return xmlNode ; +} + +FCKXHtml._AppendNode = function( xmlNode, htmlNode ) +{ + if ( !htmlNode ) + return false ; + + switch ( htmlNode.nodeType ) + { + // Element Node. + case 1 : + + // Here we found an element that is not the real element, but a + // fake one (like the Flash placeholder image), so we must get the real one. + if ( htmlNode.getAttribute('_fckfakelement') ) + return FCKXHtml._AppendNode( xmlNode, FCK.GetRealElement( htmlNode ) ) ; + + // Mozilla insert custom nodes in the DOM. + if ( FCKBrowserInfo.IsGecko && htmlNode.hasAttribute('_moz_editor_bogus_node') ) + return false ; + + // This is for elements that are instrumental to FCKeditor and + // must be removed from the final HTML. + if ( htmlNode.getAttribute('_fcktemp') ) + return false ; + + // Get the element name. + var sNodeName = htmlNode.tagName.toLowerCase() ; + + if ( FCKBrowserInfo.IsIE ) + { + // IE doens't include the scope name in the nodeName. So, add the namespace. + if ( htmlNode.scopeName && htmlNode.scopeName != 'HTML' && htmlNode.scopeName != 'FCK' ) + sNodeName = htmlNode.scopeName.toLowerCase() + ':' + sNodeName ; + } + else + { + if ( sNodeName.StartsWith( 'fck:' ) ) + sNodeName = sNodeName.Remove( 0,4 ) ; + } + + // Check if the node name is valid, otherwise ignore this tag. + // If the nodeName starts with a slash, it is a orphan closing tag. + // On some strange cases, the nodeName is empty, even if the node exists. + if ( !FCKRegexLib.ElementName.test( sNodeName ) ) + return false ; + + // Remove the
if it is a bogus node. + if ( sNodeName == 'br' && htmlNode.getAttribute( 'type', 2 ) == '_moz' ) + return false ; + + // The already processed nodes must be marked to avoid then to be duplicated (bad formatted HTML). + // So here, the "mark" is checked... if the element is Ok, then mark it. + if ( htmlNode._fckxhtmljob && htmlNode._fckxhtmljob == FCKXHtml.CurrentJobNum ) + return false ; + + var oNode = this._CreateNode( sNodeName ) ; + + // Add all attributes. + FCKXHtml._AppendAttributes( xmlNode, htmlNode, oNode, sNodeName ) ; + + htmlNode._fckxhtmljob = FCKXHtml.CurrentJobNum ; + + // Tag specific processing. + var oTagProcessor = FCKXHtml.TagProcessors[ sNodeName ] ; + + if ( oTagProcessor ) + oNode = oTagProcessor( oNode, htmlNode, xmlNode ) ; + else + oNode = this._AppendChildNodes( oNode, htmlNode, Boolean( FCKListsLib.NonEmptyBlockElements[ sNodeName ] ) ) ; + + if ( !oNode ) + return false ; + + xmlNode.appendChild( oNode ) ; + + break ; + + // Text Node. + case 3 : + return this._AppendTextNode( xmlNode, htmlNode.nodeValue.ReplaceNewLineChars(' ') ) ; + + // Comment + case 8 : + // IE catches the as a comment, but it has no + // innerHTML, so we can catch it, and ignore it. + if ( FCKBrowserInfo.IsIE && !htmlNode.innerHTML ) + break ; + + try { xmlNode.appendChild( this.XML.createComment( htmlNode.nodeValue ) ) ; } + catch (e) { /* Do nothing... probably this is a wrong format comment. */ } + break ; + + // Unknown Node type. + default : + xmlNode.appendChild( this.XML.createComment( "Element not supported - Type: " + htmlNode.nodeType + " Name: " + htmlNode.nodeName ) ) ; + break ; + } + return true ; +} + +function FCKXHtml_CreateNode_StrongEm( nodeName ) +{ + switch ( nodeName ) + { + case 'b' : + nodeName = 'strong' ; + break ; + case 'i' : + nodeName = 'em' ; + break ; + } + return this.XML.createElement( nodeName ) ; +} + +function FCKXHtml_CreateNode_Normal( nodeName ) +{ + return this.XML.createElement( nodeName ) ; +} + +// Append an item to the SpecialBlocks array and returns the tag to be used. +FCKXHtml._AppendSpecialItem = function( item ) +{ + return '___FCKsi___' + FCKXHtml.SpecialBlocks.AddItem( item ) ; +} + +FCKXHtml._AppendEntity = function( xmlNode, entity ) +{ + xmlNode.appendChild( this.XML.createTextNode( '#?-:' + entity + ';' ) ) ; +} + +FCKXHtml._AppendTextNode = function( targetNode, textValue ) +{ + var bHadText = textValue.length > 0 ; + if ( bHadText ) + targetNode.appendChild( this.XML.createTextNode( textValue.replace( FCKXHtmlEntities.EntitiesRegex, FCKXHtml_GetEntity ) ) ) ; + return bHadText ; +} + +// Retrieves a entity (internal format) for a given character. +function FCKXHtml_GetEntity( character ) +{ + // We cannot simply place the entities in the text, because the XML parser + // will translate & to &. So we use a temporary marker which is replaced + // in the end of the processing. + var sEntity = FCKXHtmlEntities.Entities[ character ] || ( '#' + character.charCodeAt(0) ) ; + return '#?-:' + sEntity + ';' ; +} + +// Remove part of an attribute from a node according to a regExp +FCKXHtml._RemoveAttribute = function( xmlNode, regX, sAttribute ) +{ + var oAtt = xmlNode.attributes.getNamedItem( sAttribute ) ; + + if ( oAtt && regX.test( oAtt.nodeValue ) ) + { + var sValue = oAtt.nodeValue.replace( regX, '' ) ; + + if ( sValue.length == 0 ) + xmlNode.attributes.removeNamedItem( sAttribute ) ; + else + oAtt.nodeValue = sValue ; + } +} + +// An object that hold tag specific operations. +FCKXHtml.TagProcessors = +{ + img : function( node, htmlNode ) + { + // The "ALT" attribute is required in XHTML. + if ( ! node.attributes.getNamedItem( 'alt' ) ) + FCKXHtml._AppendAttribute( node, 'alt', '' ) ; + + var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ; + if ( sSavedUrl != null ) + FCKXHtml._AppendAttribute( node, 'src', sSavedUrl ) ; + + return node ; + }, + + a : function( node, htmlNode ) + { + // Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1556878). + if ( htmlNode.innerHTML.Trim().length == 0 && !htmlNode.name ) + return false ; + + var sSavedUrl = htmlNode.getAttribute( '_fcksavedurl' ) ; + if ( sSavedUrl != null ) + FCKXHtml._AppendAttribute( node, 'href', sSavedUrl ) ; + + + // Anchors with content has been marked with an additional class, now we must remove it. + if ( FCKBrowserInfo.IsIE ) + { + FCKXHtml._RemoveAttribute( node, FCKRegexLib.FCK_Class, 'class' ) ; + + // Buggy IE, doesn't copy the name of changed anchors. + if ( htmlNode.name ) + FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ; + } + + node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ; + + return node ; + }, + + script : function( node, htmlNode ) + { + // The "TYPE" attribute is required in XHTML. + if ( ! node.attributes.getNamedItem( 'type' ) ) + FCKXHtml._AppendAttribute( node, 'type', 'text/javascript' ) ; + + node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( htmlNode.text ) ) ) ; + + return node ; + }, + + style : function( node, htmlNode ) + { + // The "TYPE" attribute is required in XHTML. + if ( ! node.attributes.getNamedItem( 'type' ) ) + FCKXHtml._AppendAttribute( node, 'type', 'text/css' ) ; + + node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( htmlNode.innerHTML ) ) ) ; + + return node ; + }, + + title : function( node, htmlNode ) + { + node.appendChild( FCKXHtml.XML.createTextNode( FCK.EditorDocument.title ) ) ; + + return node ; + }, + + table : function( node, htmlNode ) + { + // There is a trick to show table borders when border=0. We add to the + // table class the FCK__ShowTableBorders rule. So now we must remove it. + + if ( FCKBrowserInfo.IsIE ) + FCKXHtml._RemoveAttribute( node, FCKRegexLib.FCK_Class, 'class' ) ; + + node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ; + + return node ; + }, + + // Fix nested
- and
- .
+ ol : function( node, htmlNode, targetNode )
+ {
+ if ( htmlNode.innerHTML.Trim().length == 0 )
+ return false ;
+
+ var ePSibling = targetNode.lastChild ;
+
+ if ( ePSibling && ePSibling.nodeType == 3 )
+ ePSibling = ePSibling.previousSibling ;
+
+ if ( ePSibling && ePSibling.nodeName.toUpperCase() == 'LI' )
+ {
+ htmlNode._fckxhtmljob = null ;
+ FCKXHtml._AppendNode( ePSibling, htmlNode ) ;
+ return false ;
+ }
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+ return node ;
+ },
+
+ span : function( node, htmlNode )
+ {
+ // Firefox may create empty tags when deleting the selection in some special cases (SF-BUG 1084404).
+ if ( htmlNode.innerHTML.length == 0 )
+ return false ;
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode, false ) ;
+
+ return node ;
+ },
+
+ // IE loses contents of iframes, and Gecko does give it back HtmlEncoded
+ // Note: Opera does lose the content and doesn't provide it in the innerHTML string
+ iframe : function( node, htmlNode )
+ {
+ var sHtml = htmlNode.innerHTML ;
+
+ // Gecko does give back the encoded html
+ if ( FCKBrowserInfo.IsGecko )
+ sHtml = FCKTools.HTMLDecode( sHtml );
+
+ // Remove the saved urls here as the data won't be processed as nodes
+ sHtml = sHtml.replace( /\s_fcksavedurl="[^"]*"/g, '' ) ;
+
+ node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( sHtml ) ) ) ;
+
+ return node ;
+ }
+} ;
+
+FCKXHtml.TagProcessors.ul = FCKXHtml.TagProcessors.ol ;
Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_gecko.js
===================================================================
--- /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_gecko.js (revision 240)
+++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_gecko.js (revision 240)
@@ -0,0 +1,66 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ * - GNU General Public License Version 2 or later (the "GPL")
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ * http://www.gnu.org/licenses/lgpl.html
+ *
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
+ * http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Defines the FCKXHtml object, responsible for the XHTML operations.
+ * Gecko specific.
+ */
+
+FCKXHtml._GetMainXmlString = function()
+{
+ // Create the XMLSerializer.
+ var oSerializer = new XMLSerializer() ;
+
+ // Return the serialized XML as a string.
+ return oSerializer.serializeToString( this.MainNode ) ;
+}
+
+FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node )
+{
+ var aAttributes = htmlNode.attributes ;
+
+ for ( var n = 0 ; n < aAttributes.length ; n++ )
+ {
+ var oAttribute = aAttributes[n] ;
+
+ if ( oAttribute.specified )
+ {
+ var sAttName = oAttribute.nodeName.toLowerCase() ;
+ var sAttValue ;
+
+ // Ignore any attribute starting with "_fck".
+ if ( sAttName.StartsWith( '_fck' ) )
+ continue ;
+ // There is a bug in Mozilla that returns '_moz_xxx' attributes as specified.
+ else if ( sAttName.indexOf( '_moz' ) == 0 )
+ continue ;
+ // There are one cases (on Gecko) when the oAttribute.nodeValue must be used:
+ // - for the "class" attribute
+ else if ( sAttName == 'class' )
+ sAttValue = oAttribute.nodeValue ;
+ // XHTML doens't support attribute minimization like "CHECKED". It must be trasformed to cheched="checked".
+ else if ( oAttribute.nodeValue === true )
+ sAttValue = sAttName ;
+ else
+ sAttValue = htmlNode.getAttribute( sAttName, 2 ) ; // We must use getAttribute to get it exactly as it is defined.
+
+ this._AppendAttribute( node, sAttName, sAttValue ) ;
+ }
+ }
+}
Index: /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_ie.js
===================================================================
--- /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_ie.js (revision 240)
+++ /FCKeditor/tags/2.4.2/editor/_source/internals/fckxhtml_ie.js (revision 240)
@@ -0,0 +1,194 @@
+/*
+ * FCKeditor - The text editor for Internet - http://www.fckeditor.net
+ * Copyright (C) 2003-2007 Frederico Caldeira Knabben
+ *
+ * == BEGIN LICENSE ==
+ *
+ * Licensed under the terms of any of the following licenses at your
+ * choice:
+ *
+ * - GNU General Public License Version 2 or later (the "GPL")
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
+ * http://www.gnu.org/licenses/lgpl.html
+ *
+ * - Mozilla Public License Version 1.1 or later (the "MPL")
+ * http://www.mozilla.org/MPL/MPL-1.1.html
+ *
+ * == END LICENSE ==
+ *
+ * Defines the FCKXHtml object, responsible for the XHTML operations.
+ * IE specific.
+ */
+
+FCKXHtml._GetMainXmlString = function()
+{
+ return this.MainNode.xml ;
+}
+
+FCKXHtml._AppendAttributes = function( xmlNode, htmlNode, node, nodeName )
+{
+ var aAttributes = htmlNode.attributes ;
+
+ for ( var n = 0 ; n < aAttributes.length ; n++ )
+ {
+ var oAttribute = aAttributes[n] ;
+
+ if ( oAttribute.specified )
+ {
+ var sAttName = oAttribute.nodeName.toLowerCase() ;
+ var sAttValue ;
+
+ // Ignore any attribute starting with "_fck".
+ if ( sAttName.StartsWith( '_fck' ) )
+ continue ;
+ // The following must be done because of a bug on IE regarding the style
+ // attribute. It returns "null" for the nodeValue.
+ else if ( sAttName == 'style' )
+ sAttValue = htmlNode.style.cssText.replace( FCKRegexLib.StyleProperties, FCKTools.ToLowerCase ) ;
+ // There are two cases when the oAttribute.nodeValue must be used:
+ // - for the "class" attribute
+ // - for events attributes (on IE only).
+ else if ( sAttName == 'class' || sAttName.indexOf('on') == 0 )
+ sAttValue = oAttribute.nodeValue ;
+ else if ( nodeName == 'body' && sAttName == 'contenteditable' )
+ continue ;
+ // XHTML doens't support attribute minimization like "CHECKED". It must be trasformed to cheched="checked".
+ else if ( oAttribute.nodeValue === true )
+ sAttValue = sAttName ;
+ else
+ {
+ // We must use getAttribute to get it exactly as it is defined.
+ // There are some rare cases that IE throws an error here, so we must try/catch.
+ try
+ {
+ sAttValue = htmlNode.getAttribute( sAttName, 2 ) ;
+ }
+ catch (e) {}
+ }
+ this._AppendAttribute( node, sAttName, sAttValue || oAttribute.nodeValue ) ;
+ }
+ }
+}
+
+FCKXHtml.TagProcessors['meta'] = function( node, htmlNode )
+{
+ var oHttpEquiv = node.attributes.getNamedItem( 'http-equiv' ) ;
+
+ if ( oHttpEquiv == null || oHttpEquiv.value.length == 0 )
+ {
+ // Get the http-equiv value from the outerHTML.
+ var sHttpEquiv = htmlNode.outerHTML.match( FCKRegexLib.MetaHttpEquiv ) ;
+
+ if ( sHttpEquiv )
+ {
+ sHttpEquiv = sHttpEquiv[1] ;
+ FCKXHtml._AppendAttribute( node, 'http-equiv', sHttpEquiv ) ;
+ }
+ }
+
+ return node ;
+}
+
+// IE automaticaly changes tags to .
+FCKXHtml.TagProcessors['font'] = function( node, htmlNode )
+{
+ if ( node.attributes.length == 0 )
+ node = FCKXHtml.XML.createDocumentFragment() ;
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+ return node ;
+}
+
+// IE doens't see the value attribute as an attribute for the tag.
+FCKXHtml.TagProcessors['input'] = function( node, htmlNode )
+{
+ if ( htmlNode.name )
+ FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
+
+ if ( htmlNode.value && !node.attributes.getNamedItem( 'value' ) )
+ FCKXHtml._AppendAttribute( node, 'value', htmlNode.value ) ;
+
+ if ( !node.attributes.getNamedItem( 'type' ) )
+ FCKXHtml._AppendAttribute( node, 'type', 'text' ) ;
+
+ return node ;
+}
+
+// IE ignores the "SELECTED" attribute so we must add it manually.
+FCKXHtml.TagProcessors['option'] = function( node, htmlNode )
+{
+ if ( htmlNode.selected && !node.attributes.getNamedItem( 'selected' ) )
+ FCKXHtml._AppendAttribute( node, 'selected', 'selected' ) ;
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+ return node ;
+}
+
+// IE ignores the "COORDS" and "SHAPE" attribute so we must add it manually.
+FCKXHtml.TagProcessors['area'] = function( node, htmlNode )
+{
+ if ( ! node.attributes.getNamedItem( 'coords' ) )
+ {
+ var sCoords = htmlNode.getAttribute( 'coords', 2 ) ;
+ if ( sCoords && sCoords != '0,0,0' )
+ FCKXHtml._AppendAttribute( node, 'coords', sCoords ) ;
+ }
+
+ if ( ! node.attributes.getNamedItem( 'shape' ) )
+ {
+ var sShape = htmlNode.getAttribute( 'shape', 2 ) ;
+ if ( sShape && sShape.length > 0 )
+ FCKXHtml._AppendAttribute( node, 'shape', sShape ) ;
+ }
+
+ return node ;
+}
+
+FCKXHtml.TagProcessors['label'] = function( node, htmlNode )
+{
+ if ( htmlNode.htmlFor.length > 0 )
+ FCKXHtml._AppendAttribute( node, 'for', htmlNode.htmlFor ) ;
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+ return node ;
+}
+
+FCKXHtml.TagProcessors['form'] = function( node, htmlNode )
+{
+ if ( htmlNode.acceptCharset && htmlNode.acceptCharset.length > 0 && htmlNode.acceptCharset != 'UNKNOWN' )
+ FCKXHtml._AppendAttribute( node, 'accept-charset', htmlNode.acceptCharset ) ;
+
+ if ( htmlNode.name )
+ FCKXHtml._AppendAttribute( node, 'name', htmlNode.name ) ;
+
+ node = FCKXHtml._AppendChildNodes( node, htmlNode ) ;
+
+ return node ;
+}
+
+// IE doens't hold the name attribute as an attribute for the