ke-' + self.type + '-item'; center.className = 'ke-' + self.type + '-center'; }; cDiv.onclick = event; cDiv.appendChild(left); cDiv.appendChild(center); cDiv.appendChild(right); if (checked) { KE.util.innerHtml(left, ''); } else { if (iconHtml) KE.util.innerHtml(left, iconHtml); } KE.util.innerHtml(right, html); this.append(cDiv); }; this.addSeparator = function() { var div = KE.$$('div'); div.className = 'ke-' + this.type + '-separator'; this.append(div); }; this.append = function(el) { this.div.appendChild(el); }; this.insert = function(html) { KE.util.innerHtml(this.div, html); }; this.hide = function() { KE.hideMenu(arg.id); }; this.show = function() { this.hide(); var id = arg.id; KE.g[id].hideDiv.style.display = ''; KE.g[id].hideDiv.appendChild(this.div); var pos = getPos.call(this, this.div.clientWidth, this.div.clientHeight); this.div.style.top = pos.y + 'px'; this.div.style.left = pos.x + 'px'; }; this.picker = function(color) { var colorTable = KE.g[arg.id].colorTable; var picker = new KE.colorpicker({ colors : colorTable, onclick : function(color) { KE.plugin[arg.cmd].exec(arg.id, color); }, selectedColor : color }); this.append(picker.getElement()); this.show(); }; }; KE.button = function(arg) { arg = arg || {}; doc = arg.doc || document; var span = KE.$$('span', doc); span.className = 'ke-button-common ke-button-outer ' + (arg.className || ''); span.title = arg.text; btn = KE.$$('input', doc); btn.className = 'ke-button-common ke-button'; btn.type = 'button'; btn.value = arg.text || ''; if (arg.clickFn) { btn.onclick = arg.clickFn; } span.appendChild(btn); return {span : span, btn : btn}; } KE.dialog = function(arg){ var self = this; this.widthMargin = 30; this.heightMargin = 100; this.zIndex = 19811214; this.width = arg.width; this.height = arg.height; var minTop, minLeft; function setLimitNumber() { var docEl = KE.util.getDocumentElement(); var pos = KE.util.getScrollPos(); minTop = pos.y; minLeft = pos.x; } function init() { this.beforeHide = arg.beforeHide; this.afterHide = arg.afterHide; this.beforeShow = arg.beforeShow; this.afterShow = arg.afterShow; this.ondrag = arg.ondrag; } init.call(this); function getPos() { var width = this.width + this.widthMargin; var height = this.height + this.heightMargin; var id = arg.id; var g = KE.g[id]; var x = 0, y = 0; if (g.dialogAlignType == 'page') { var el = KE.util.getDocumentElement(); var scrollPos = KE.util.getScrollPos(); x = Math.round(scrollPos.x + (el.clientWidth - width) / 2); y = Math.round(scrollPos.y + (el.clientHeight - height) / 2); } else { var pos = KE.util.getElementPos(KE.g[id].container); var el = g.container; var xDiff = Math.round(el.clientWidth / 2) - Math.round(width / 2); var yDiff = Math.round(el.clientHeight / 2) - Math.round(height / 2); x = xDiff < 0 ? pos.x : pos.x + xDiff; y = yDiff < 0 ? pos.y : pos.y + yDiff; } x = x < 0 ? 0 : x; y = y < 0 ? 0 : y; return {x : x, y : y}; }; this.resize = function(width, height) { if (width) this.width = width; if (height) this.height = height; this.hide(); this.show(); }; this.hide = function() { if (this.beforeHide) this.beforeHide(id); var id = arg.id; var stack = KE.g[id].dialogStack; if (stack[stack.length - 1] != this) return; var dialog = stack.pop(); var iframe = dialog.iframe; iframe.src = 'javascript:false'; iframe.parentNode.removeChild(iframe); document.body.removeChild(this.div); if (stack.length < 1) { KE.g[id].maskDiv.style.display = 'none'; } KE.event.remove(window, 'resize', setLimitNumber); KE.event.remove(window, 'scroll', setLimitNumber); if (this.afterHide) this.afterHide(id); KE.util.focus(id); }; this.show = function() { if (this.beforeShow) this.beforeShow(id); var self = this; var id = arg.id; var div = KE.$$('div'); div.className = 'ke-dialog'; KE.event.bind(div, 'click', function(e){}, id); var stack = KE.g[id].dialogStack; if (stack.length > 0) { this.zIndex = stack[stack.length - 1].zIndex + 1; } div.style.zIndex = this.zIndex; var pos = getPos.call(this); div.style.top = pos.y + 'px'; div.style.left = pos.x + 'px'; if (KE.g[id].shadowMode) { KE.addClass(div, 'ke-dialog-shadow'); } else { KE.addClass(div, 'ke-dialog-no-shadow'); } var titleDiv = KE.$$('div'); titleDiv.className = 'ke-dialog-title'; titleDiv.innerHTML = arg.title; var span = KE.$$('span'); span.className = 'ke-dialog-close'; span.alt = KE.lang['close']; span.title = KE.lang['close']; span.onclick = function () { self.hide(); KE.util.select(id); }; titleDiv.appendChild(span); setLimitNumber(); KE.event.add(window, 'resize', setLimitNumber); KE.event.add(window, 'scroll', setLimitNumber); KE.util.drag(id, titleDiv, div, function(objTop, objLeft, objWidth, objHeight, top, left) { if (self.ondrag) self.ondrag(id); setLimitNumber(); top = objTop + top; left = objLeft + left; if (top < minTop) top = minTop; if (left < minLeft) left = minLeft; div.style.top = top + 'px'; div.style.left = left + 'px'; }); div.appendChild(titleDiv); var bodyDiv = KE.$$('div'); bodyDiv.className = 'ke-dialog-body'; var loadingTable = KE.util.createTable(); loadingTable.table.className = 'ke-loading-table'; loadingTable.table.style.width = this.width + 'px'; loadingTable.table.style.height = this.height + 'px'; var loadingImg = KE.$$('span'); loadingImg.className = 'ke-loading-img'; loadingTable.cell.appendChild(loadingImg); var iframe = (KE.g[id].dialogStack.length == 0 && KE.g[id].dialog) ? KE.g[id].dialog : KE.$$('iframe'); if (arg.useFrameCSS) { iframe.className = 'ke-dialog-iframe ke-dialog-iframe-border'; } else { iframe.className = 'ke-dialog-iframe'; } iframe.setAttribute("frameBorder", "0"); iframe.style.width = this.width + 'px'; iframe.style.height = this.height + 'px'; iframe.style.display = 'none'; bodyDiv.appendChild(iframe); bodyDiv.appendChild(loadingTable.table); div.appendChild(bodyDiv); var bottomDiv = KE.$$('div'); bottomDiv.className = 'ke-dialog-bottom'; var noButton = null; var yesButton = null; var previewButton = null; if (arg.previewButton) { var btn = KE.button({ className : 'ke-dialog-preview', text : arg.previewButton, clickFn : function() { var stack = KE.g[id].dialogStack; if (stack[stack.length - 1] == self) { if (arg.previewClickFn) { arg.previewClickFn(id); } else { KE.plugin[arg.cmd].preview(id); } } } }); previewButton = btn.btn; bottomDiv.appendChild(btn.span); } if (arg.yesButton) { var btn = KE.button({ className : 'ke-dialog-yes', text : arg.yesButton, clickFn : function() { var stack = KE.g[id].dialogStack; if (stack[stack.length - 1] == self) { if (arg.yesClickFn) { arg.yesClickFn(id); } else { KE.plugin[arg.cmd].exec(id); } } } }); yesButton = btn.btn; bottomDiv.appendChild(btn.span); } if (arg.noButton) { var btn = KE.button({ className : 'ke-dialog-no', text : arg.noButton, clickFn : function() { self.hide(); KE.util.select(id); } }); noButton = btn.btn; bottomDiv.appendChild(btn.span); } if (arg.yesButton || arg.noButton || arg.previewButton) { div.appendChild(bottomDiv); } document.body.appendChild(div); KE.event.bind(div, 'mousedown', function(e){}, id); window.focus(); if (arg.html !== undefined) { var dialogDoc = KE.util.getIframeDoc(iframe); var html = KE.util.getFullHtml(id); dialogDoc.open(); dialogDoc.write(html); dialogDoc.close(); KE.util.innerHtml(dialogDoc.body, arg.html); } else if (arg.url !== undefined) { iframe.src = arg.url; } else { var param = 'id=' + escape(id) + '&ver=' + escape(KE.version); if (arg.file === undefined) { iframe.src = KE.g[id].pluginsPath + arg.cmd + '.html?' + param; } else { param = (/\?/.test(arg.file) ? '&' : '?') + param; iframe.src = KE.g[id].pluginsPath + arg.file + param; } } KE.g[id].maskDiv.style.width = KE.util.getDocumentWidth() + 'px'; KE.g[id].maskDiv.style.height = KE.util.getDocumentHeight() + 'px'; KE.g[id].maskDiv.style.display = 'block'; this.iframe = iframe; this.loading = loadingTable.table; this.noButton = noButton; this.yesButton = yesButton; this.previewButton = previewButton; this.div = div; KE.g[id].dialogStack.push(this); KE.g[id].dialog = iframe; KE.g[id].yesButton = yesButton; KE.g[id].noButton = noButton; KE.g[id].previewButton = previewButton; if (!arg.loadingMode) KE.util.hideLoadingPage(id); if (this.afterShow) this.afterShow(id); if (KE.g[id].afterDialogCreate) KE.g[id].afterDialogCreate(id); }; }; KE.toolbar = { updateState : function(id) { var cmdList = [ 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript','superscript', 'bold', 'italic', 'underline', 'strikethrough' ]; for (var i = 0; i < cmdList.length; i++) { var cmd = cmdList[i]; var state = false; try { state = KE.g[id].iframeDoc.queryCommandState(cmd); } catch(e) {} if (state) { KE.toolbar.select(id, cmd); } else { KE.toolbar.unselect(id, cmd); } } }, isSelected : function(id, cmd) { if (KE.plugin[cmd] && KE.plugin[cmd].isSelected) return true; else return false; }, select : function(id, cmd) { if (KE.g[id].toolbarIcon[cmd]) { var a = KE.g[id].toolbarIcon[cmd][0]; a.className = 'ke-icon ke-icon-selected'; a.onmouseover = null; a.onmouseout = null; } }, unselect : function(id, cmd) { if (KE.g[id].toolbarIcon[cmd]) { var a = KE.g[id].toolbarIcon[cmd][0]; a.className = 'ke-icon'; a.onmouseover = function(){ this.className = 'ke-icon ke-icon-on'; }; a.onmouseout = function(){ this.className = 'ke-icon'; }; } }, _setAttr : function(id, a, cmd) { a.className = 'ke-icon'; a.href = 'javascript:;'; a.onclick = function(e) { e = e || window.event; var div = KE.g[id].hideDiv.firstChild; if (div && div.getAttribute('name') == cmd) { KE.hideMenu(id); } else { KE.util.click(id, cmd); } if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); if (e.cancelBubble !== undefined) e.cancelBubble = true; return false; }; a.onmouseover = function(){ this.className = 'ke-icon ke-icon-on'; }; a.onmouseout = function(){ this.className = 'ke-icon'; }; a.hidefocus = true; a.title = KE.lang[cmd]; }, able : function(id, arr) { var self = this; KE.each(KE.g[id].toolbarIcon, function(cmd, obj) { if (!KE.util.inArray(cmd, arr)) { var a = obj[0]; var span = obj[1]; self._setAttr(id, a, cmd); KE.util.setOpacity(span, 100); } }); }, disable : function(id, arr) { KE.each(KE.g[id].toolbarIcon, function(cmd, obj) { if (!KE.util.inArray(cmd, arr)) { var a = obj[0]; var span = obj[1]; a.className = 'ke-icon ke-icon-disabled'; KE.util.setOpacity(span, 50); a.onclick = null; a.onmouseover = null; a.onmouseout = null; } }); }, create : function(id) { var self = this; var defaultItemHash = KE.util.arrayToHash(KE.setting.items); KE.g[id].toolbarIcon = []; var tableObj = KE.util.createTable(); var toolbar = tableObj.table; toolbar.className = 'ke-toolbar'; toolbar.oncontextmenu = function() { return false; }; toolbar.onmousedown = function() { return false; }; toolbar.onmousemove = function() { return false; }; var toolbarCell = tableObj.cell; var length = KE.g[id].items.length; var cellNum = 0; var row; KE.g[id].toolbarHeight = KE.g[id].toolbarLineHeight; for (var i = 0; i < length; i++) { var cmd = KE.g[id].items[i]; if (i == 0 || cmd == '-') { var table = KE.$$('table'); table.cellPadding = 0; table.cellSpacing = 0; table.border = 0; table.className = 'ke-toolbar-table'; row = table.insertRow(0); cellNum = 0; toolbarCell.appendChild(table); if (cmd == '-') { KE.g[id].toolbarHeight += KE.g[id].toolbarLineHeight; continue; } } var cell = row.insertCell(cellNum); cell.hideforcus = true; cellNum++; if (cmd == '|') { var div = KE.$$('div'); div.className = 'ke-toolbar-separator'; cell.appendChild(div); continue; } var a = KE.$$('a'); a.tabIndex = -1; self._setAttr(id, a, cmd); var span = KE.$$('span'); if (typeof defaultItemHash[cmd] == 'undefined') { span.className = 'ke-common-icon ke-icon-' + cmd; } else { span.className = 'ke-common-icon ke-common-icon-url ke-icon-' + cmd; } a.appendChild(span); cell.appendChild(a); KE.g[id].toolbarIcon[cmd] = [a, span]; if (KE.toolbar.isSelected(id, cmd)) KE.toolbar.select(id, cmd); } return toolbar; } }; KE.history = { addStackData : function(stack, data) { var prev = ''; if (stack.length > 0) { prev = stack[stack.length - 1]; } if (stack.length == 0 || data !== prev) stack.push(data); }, add : function(id, minChangeSize) { var g = KE.g[id]; var html = KE.util.getSrcData(id); if (g.undoStack.length > 0) { var prevHtml = g.undoStack[g.undoStack.length - 1]; if (Math.abs(html.length - prevHtml.length) < minChangeSize) return; } this.addStackData(g.undoStack, html); }, undo : function(id) { var g = KE.g[id]; if (g.undoStack.length == 0) return; var html = KE.util.getSrcData(id); this.addStackData(g.redoStack, html); var prevHtml = g.undoStack.pop(); if (html === prevHtml && g.undoStack.length > 0) { prevHtml = g.undoStack.pop(); } prevHtml = KE.util.toData(id, prevHtml); if (g.wyswygMode) { KE.util.innerHtml(g.iframeDoc.body, KE.util.execSetHtmlHooks(id, prevHtml)); } else { g.newTextarea.value = prevHtml; } }, redo : function(id) { var g = KE.g[id]; if (g.redoStack.length == 0) return; var html = KE.util.getSrcData(id); this.addStackData(g.undoStack, html); var nextHtml = g.redoStack.pop(); nextHtml = KE.util.toData(id, nextHtml); if (g.wyswygMode) { KE.util.innerHtml(g.iframeDoc.body, KE.util.execSetHtmlHooks(id, nextHtml)); } else { g.newTextarea.value = nextHtml; } } }; KE.readonly = function(id, isReadonly) { isReadonly = isReadonly == undefined ? true : isReadonly; var g = KE.g[id]; if (KE.browser.IE) g.iframeDoc.body.contentEditable = isReadonly ? 'false' : 'true'; else g.iframeDoc.designMode = isReadonly ? 'off' : 'on'; }; KE.focus = function(id, position) { position = (position || '').toLowerCase(); if (!KE.g[id].container) return; KE.util.focus(id); if (position === 'end') { KE.util.setSelection(id); if (!KE.g[id].sel) return; //issue #120: Sometimes Firefox does not get selection var sel = KE.g[id].keSel, range = KE.g[id].keRange, doc = KE.g[id].iframeDoc; range.selectTextNode(doc.body); range.collapse(false); sel.addRange(range); } }; KE.blur = function(id) { var g = KE.g[id]; if (!g.container) return; if (KE.browser.IE) { var input = KE.$$('input'); input.type = 'text'; g.container.appendChild(input); input.focus(); g.container.removeChild(input); } else { g.wyswygMode ? g.iframeWin.blur() : g.newTextarea.blur(); } }; KE.html = function(id, val) { if (val === undefined) { return KE.util.getData(id); } else { if (!KE.g[id].container) return; KE.util.setFullHtml(id, val); KE.focus(id); } }; KE.text = function(id, val) { if (val === undefined) { val = KE.html(id); val = val.replace(/<.*?>/ig, ''); val = val.replace(/ /ig, ' '); val = KE.util.trim(val); return val; } else { KE.html(id, KE.util.escape(val)); } }; KE.insertHtml = function(id, val) { if (!KE.g[id].container) return; var range = KE.g[id].range; if (!range) { KE.appendHtml(id, val); } else { KE.focus(id); KE.util.selection(id); KE.util.insertHtml(id, val); } }; KE.appendHtml = function(id, val) { KE.html(id, KE.html(id) + val); }; KE.isEmpty = function(id) { return KE.util.isEmpty(id); }; KE.selectedHtml = function(id) { var range = KE.g[id].range; if (!range) return ''; var html = ''; if (KE.browser.IE) { if (range.item) { html = range.item(0).outerHTML; } else { html = range.htmlText; } } else { var temp = KE.$$('div', KE.g[id].iframeDoc); temp.appendChild(range.cloneContents()); html = temp.innerHTML; } return KE.util.toData(id, html); }; KE.count = function(id, mode) { mode = (mode || 'html').toLowerCase(); if (mode === 'html') { return KE.html(id).length; } else if (mode === 'text') { var data = KE.util.getPureData(id); data = data.replace(/<(?:img|embed).*?>/ig, 'K'); data = data.replace(/\r\n|\n|\r/g, ''); data = KE.util.trim(data); return data.length; } return 0; }; KE.sync = function(id) { return KE.util.setData(id); }; KE.remove = function(id, mode) { var g = KE.g[id]; if (!g.container) return false; mode = (typeof mode == "undefined") ? 0 : mode; KE.util.setData(id); var container = g.container; var eventStack = g.eventStack; for (var i = 0, len = eventStack.length; i < len; i++) { var item = eventStack[i]; if (item) KE.event.remove(item.el, item.type, item.fn, id); } g.iframeDoc.src = 'javascript:false'; g.iframe.parentNode.removeChild(g.iframe); if (mode == 1) { document.body.removeChild(container); } else { var srcTextarea = g.srcTextarea; srcTextarea.parentNode.removeChild(container); if (mode == 0) srcTextarea.style.display = ''; } document.body.removeChild(g.hideDiv); document.body.removeChild(g.maskDiv); g.container = null; g.dialogStack = []; g.contextmenuItems = []; g.getHtmlHooks = []; g.setHtmlHooks = []; g.onchangeHandlerStack = []; g.eventStack = []; }; KE.create = function(id, mode) { if (KE.g[id].beforeCreate) KE.g[id].beforeCreate(id); if (KE.browser.IE && KE.browser.VERSION < 7) try { document.execCommand('BackgroundImageCache', false, true); }catch(e){} var srcTextarea = KE.$(id) || document.getElementsByName(id)[0]; mode = (typeof mode == "undefined") ? 0 : mode; if (mode == 0 && KE.g[id].container) return; var width = KE.g[id].width || srcTextarea.style.width || srcTextarea.offsetWidth + 'px'; var height = KE.g[id].height || srcTextarea.style.height || srcTextarea.offsetHeight + 'px'; var tableObj = KE.util.createTable(); var container = tableObj.table; container.className = 'ke-container'; container.style.width = width; container.style.height = height; var toolbarOuter = tableObj.cell; toolbarOuter.className = 'ke-toolbar-outer'; var textareaOuter = container.insertRow(1).insertCell(0); textareaOuter.className = 'ke-textarea-outer'; tableObj = KE.util.createTable(); var textareaTable = tableObj.table; textareaTable.className = 'ke-textarea-table'; var textareaCell = tableObj.cell; textareaOuter.appendChild(textareaTable); var bottomOuter = container.insertRow(2).insertCell(0); bottomOuter.className = 'ke-bottom-outer'; srcTextarea.style.display = 'none'; if (mode == 1) document.body.appendChild(container); else srcTextarea.parentNode.insertBefore(container, srcTextarea); var toolbarTable = KE.toolbar.create(id); toolbarTable.style.height = KE.g[id].toolbarHeight + 'px'; toolbarOuter.appendChild(toolbarTable); var iframe = KE.g[id].iframe || KE.$$('iframe'); iframe.tabIndex = KE.g[id].tabIndex || srcTextarea.tabIndex; iframe.className = 'ke-iframe'; iframe.setAttribute("frameBorder", "0"); var newTextarea = KE.$$('textarea'); newT Output for Flash — CKEditor Sample

CKEditor Samples » Producing Flash Compliant HTML Output

This sample shows how to configure CKEditor to output HTML code that can be used with Adobe Flash. The code will contain a subset of standard HTML elements like <b>, <i>, and <p> as well as HTML attributes.

To add a CKEditor instance outputting Flash compliant HTML code, load the editor using a standard JavaScript call, and define CKEditor features to use HTML elements and attributes.

For details on how to create this setup check the source code of this sample page.

To see how it works, create some content in the editing area of CKEditor on the left and send it to the Flash object on the right side of the page by using the Send to Flash button.

essMessage <> "" Then ' Message in Session, display If Not hidden Then sSuccessMessage = "" & sSuccessMessage html = html & "
" & sSuccessMessage & "
" Session(EW_SESSION_SUCCESS_MESSAGE) = "" ' Clear message in Session End If ' Failure message Dim sErrorMessage sErrorMessage = FailureMessage Call Message_Showing(sErrorMessage, "failure") If sErrorMessage <> "" Then ' Message in Session, display If Not hidden Then sErrorMessage = "" & sErrorMessage html = html & "
" & sErrorMessage & "
" Session(EW_SESSION_FAILURE_MESSAGE) = "" ' Clear message in Session End If Response.Write "
" & html & "
" End Sub Dim PageHeader Dim PageFooter ' Show Page Header Public Sub ShowPageHeader() Dim sHeader sHeader = PageHeader Call Page_DataRendering(sHeader) If sHeader <> "" Then ' Header exists, display Response.Write "

" & sHeader & "

" End If End Sub ' Show Page Footer Public Sub ShowPageFooter() Dim sFooter sFooter = PageFooter Call Page_DataRendered(sFooter) If sFooter <> "" Then ' Footer exists, display Response.Write "

" & sFooter & "

" End If End Sub ' ----------------------- ' Validate Page request ' Public Function IsPageRequest() If UserLevelPermissions.UseTokenInUrl Then IsPageRequest = False If Not (ObjForm Is Nothing) Then IsPageRequest = (UserLevelPermissions.TableVar = ObjForm.GetValue("t")) End If If Request.QueryString("t").Count > 0 Then IsPageRequest = (UserLevelPermissions.TableVar = Request.QueryString("t")) End If Else IsPageRequest = True End If Using Magicline plugin — CKEditor Sample

CKEditor Samples » Using Magicline plugin

This sample shows the advantages of Magicline plugin which is to enhance the editing process. Thanks to this plugin, a number of difficult focus spaces which are inaccessible due to browser issues can now be focused.

Magicline plugin shows a red line with a handler which, when clicked, inserts a paragraph and allows typing. To see this, focus an editor and move your mouse above the focus space you want to access. The plugin is enabled by default so no additional configuration is necessary.

This editor uses a default Magicline setup.