Author: garry.yao Date: 2009-09-28 12:33:22 +0200 (Mon, 28 Sep 2009) New Revision: 4294 Added: CKEditor/branches/features/adobeair/_samples/adobeair/ CKEditor/branches/features/adobeair/_samples/adobeair/application.xml CKEditor/branches/features/adobeair/_samples/adobeair/package.bat CKEditor/branches/features/adobeair/_samples/adobeair/run.bat CKEditor/branches/features/adobeair/_source/plugins/adobeair/ CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js Modified: CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js CKEditor/branches/features/adobeair/_source/core/config.js CKEditor/branches/features/adobeair/_source/core/dom/document.js CKEditor/branches/features/adobeair/_source/core/loader.js CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js CKEditor/branches/features/adobeair/ckeditor_basic_source.js CKEditor/branches/features/adobeair/ckeditor_source.js Log: Adding 'adobeair' plugin and necessary changes to the core codes. Added: CKEditor/branches/features/adobeair/_samples/adobeair/application.xml =================================================================== --- CKEditor/branches/features/adobeair/_samples/adobeair/application.xml (rev 0) +++ CKEditor/branches/features/adobeair/_samples/adobeair/application.xml 2009-09-28 10:33:22 UTC (rev 4294) @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8" ?> +<application xmlns="http://ns.adobe.com/air/application/1.0"> + <id>net.fckeditor.air.samples.sample01</id> + <name>CKEditor Sample Application 1.0</name> + <version>1.0</version> + <filename>CKEditor AIR Sample</filename> + <description>This is a sample AIR application of CKEditor.</description> + <copyright>Copyright (C) 2003-2009 Frederico Caldeira Knabben</copyright> + <initialWindow> + <content>_samples/replacebyclass.html</content> + <title>Replace Textareas by Class Name - CKEditor Sample</title> + <systemChrome>standard</systemChrome> + <transparent>false</transparent> + <visible>true</visible> + <minimizable>true</minimizable> + <maximizable>true</maximizable> + <resizable>true</resizable> + <x>100</x> + <y>80</y> + <width>820</width> + <height>600</height> + <minSize>600 400</minSize> + </initialWindow> + <installFolder>CKEditor/AIR Samples/ReplaceByClassName</installFolder> + <programMenuFolder>CKEditor/AIR Samples</programMenuFolder> + <icon> + <image16x16>_samples/adobeair/icons/16.png</image16x16> + <image32x32>_samples/adobeair/icons/32.png</image32x32> + <image48x48>_samples/adobeair/icons/48.png</image48x48> + <image128x128>_samples/adobeair/icons/128.png</image128x128> + </icon> + <customUpdateUI>false</customUpdateUI> + <allowBrowserInvocation>false</allowBrowserInvocation> +</application> Added: CKEditor/branches/features/adobeair/_samples/adobeair/package.bat =================================================================== --- CKEditor/branches/features/adobeair/_samples/adobeair/package.bat (rev 0) +++ CKEditor/branches/features/adobeair/_samples/adobeair/package.bat 2009-09-28 10:33:22 UTC (rev 4294) @@ -0,0 +1,26 @@ +@ECHO OFF + +:: +:: FCKeditor - The text editor for Internet - http://www.fckeditor.net +:: Copyright (C) 2003-2009 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 == +:: + +:: adt -package SIGNING_OPTIONS air_file app_xml [file_or_dir | -C dir file_or_dir | -e file dir ...] ... + +adt -package -storetype pkcs12 -keystore sample01_cert.pfx -storepass 123abc FCKeditor.air application.xml -C ../../ . Added: CKEditor/branches/features/adobeair/_samples/adobeair/run.bat =================================================================== --- CKEditor/branches/features/adobeair/_samples/adobeair/run.bat (rev 0) +++ CKEditor/branches/features/adobeair/_samples/adobeair/run.bat 2009-09-28 10:33:22 UTC (rev 4294) @@ -0,0 +1,26 @@ +@ECHO OFF + +:: +:: FCKeditor - The text editor for Internet - http://www.fckeditor.net +:: Copyright (C) 2003-2009 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 == +:: + +:: adl [-runtime runtime-directory] [-pubId publisher-id] [-nodebug] application.xml [rootdirectory] [-- arguments] + +adl application.xml ../../ Modified: CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js =================================================================== --- CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/core/ckeditor_base.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -12,7 +12,7 @@ // Must be updated on changes in the script, as well as updated in the // ckeditor_source.js and ckeditor_basic_source.js files. -// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',rev:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); +// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',rev:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); // #### Raw code // ATTENTION: read the above "Compressed Code" notes when changing this code. @@ -126,7 +126,7 @@ // In IE (only) the script.src string is the raw valued entered in the // HTML. Other browsers return the full resolved URL instead. - if ( path.indexOf('://') == -1 ) + if ( path.indexOf(':/') == -1 ) { // Absolute path. if ( path.indexOf( '/' ) === 0 ) @@ -162,7 +162,7 @@ getUrl : function( resource ) { // If this is not a full or absolute path. - if ( resource.indexOf('://') == -1 && resource.indexOf( '/' ) !== 0 ) + if ( resource.indexOf(':/') == -1 && resource.indexOf( '/' ) !== 0 ) resource = this.basePath + resource; // Add the timestamp, except for directories. Modified: CKEditor/branches/features/adobeair/_source/core/config.js =================================================================== --- CKEditor/branches/features/adobeair/_source/core/config.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/core/config.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -196,7 +196,7 @@ * @type String * @example */ - plugins : 'about,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc', + plugins : 'about,adobeair,basicstyles,blockquote,button,clipboard,colorbutton,colordialog,contextmenu,elementspath,enterkey,entities,filebrowser,find,flash,font,format,forms,horizontalrule,htmldataprocessor,image,indent,justify,keystrokes,link,list,maximize,newpage,pagebreak,pastefromword,pastetext,popup,preview,print,removeformat,resize,save,scayt,smiley,showblocks,sourcearea,stylescombo,table,tabletools,specialchar,tab,templates,toolbar,undo,wysiwygarea,wsc', /** * List of additional plugins to be loaded. This is a tool setting which Modified: CKEditor/branches/features/adobeair/_source/core/dom/document.js =================================================================== --- CKEditor/branches/features/adobeair/_source/core/dom/document.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/core/dom/document.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -1,4 +1,4 @@ -/* +/* Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ @@ -206,5 +206,62 @@ { return win; })(); + }, + + write : function( html ) + { + if( !CKEDITOR.env.air ) + { + this.$.open(); + this.$.write( html ); + this.$.close(); + } + else + { + var doc = this; + // Grab all the <link> and <style> tags. + var stylesHtml = ''; + html.replace( /<style[^>]*>[\s\S]*<\/style>|<link[^>]*?>/gi, function( match ) + { + stylesHtml += match; + } ); + + if ( stylesHtml ) + { + // Inject the <head> HTML inside a <div>. + // Do that before getDocumentHead because WebKit moves + // <link css> elements to the <head> at this point. + var div = new CKEDITOR.dom.element( 'div', doc ); + div.setHtml( stylesHtml ); + var getDocumentHead = function( doc ) + { + var head ; + var heads = doc.getElementsByTagName( 'head' ) ; + + if( heads && heads[0] ) + head = heads[0] ; + else + { + head = doc.createElement( 'head' ) ; + doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ; + } + + return head ; + } ; + + // Move the <div> nodes to <head>. + div.moveChildren( new CKEDITOR.dom.element( getDocumentHead( doc.$ ) ) ) ; + } + + var bodyMatch = html.match( /<body[^>]*>([\s\S]*)<\/body>/i ), + bodyContent = bodyMatch && bodyMatch[ 1 ], + body = bodyMatch && CKEDITOR.htmlParser.fragment.fromHtml( bodyMatch[ 0 ] ).children[ 0 ], + bodyAttrs = body.attributes, + docBody = doc.getBody(); + + docBody.setHtml( bodyContent ); + if( bodyAttrs ) + docBody.setAttributes( bodyAttrs ); + } } }); Modified: CKEditor/branches/features/adobeair/_source/core/loader.js =================================================================== --- CKEditor/branches/features/adobeair/_source/core/loader.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/core/loader.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -93,7 +93,7 @@ // In IE (only) the script.src string is the raw valued entered in the // HTML. Other browsers return the full resolved URL instead. - if ( path.indexOf('://') == -1 ) + if ( path.indexOf(':/') == -1 ) { // Absolute path. if ( path.indexOf( '/' ) === 0 ) Added: CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js =================================================================== --- CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js (rev 0) +++ CKEditor/branches/features/adobeair/_source/plugins/adobeair/plugin.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -0,0 +1,76 @@ +/* +Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +CKEDITOR.plugins.add( 'adobeair', +{ + init : function( editor ) + { + if( CKEDITOR.env.air ) + editor.on( 'uiReady', function() + { + ( function ( container, eventNameList ) + { + for ( var i = 0; i < eventNameList.length; i++ ) + { + ( function( eventName ){ + + var targetList = + container.eachChildWithAttribute( 'on'+ eventName, function( item ) + { + item.on( eventName, function( evt ) + { + var inlineEventHandler = item.getAttribute( 'on' + eventName ), + callFunc = /callFunction\(([^)]+)\)/.exec( inlineEventHandler ), + callFuncArgs = callFunc && callFunc[ 1 ].split( ',' ), + preventDefault = /return false;/.test( inlineEventHandler ); + + if ( callFuncArgs ) + { + var nums = callFuncArgs.length, + argName; + for ( var i = 0; i < nums; i++ ) + { + switch( argName = CKEDITOR.tools.trim( callFuncArgs[ i ] ) ) + { + case 'this' : + callFuncArgs[ i ] = item.$; + break; + case 'event' : + callFuncArgs[ i ] = evt.data.$; + break; + case 'null' : + callFuncArgs [ i ] = null; + break; + } + } + + CKEDITOR.tools.callFunction.apply( window, callFuncArgs ); + } + + if( preventDefault ) + evt.data.preventDefault(); + + } ); + } ); + + } )( eventNameList[ i ] ); + } + } )( editor.container, [ 'click', 'keydown', 'mousedown', 'keypress' ] ); + } ); + } +}); + +CKEDITOR.dom.element.prototype.eachChildWithAttribute = function( name, processor ) +{ + var children = this.getElementsByTag( '*' ), + count = children.count(), + child; + for ( var i = 0; i < count; i++ ) + { + child = children.getItem( i ); + if( child.hasAttribute( name ) ) + processor( child ); + } +}; Modified: CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js =================================================================== --- CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/plugins/panel/plugin.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -134,8 +134,6 @@ className = parentDiv.getParent().getAttribute( 'class' ), langCode = parentDiv.getParent().getAttribute( 'lang' ), doc = iframe.getFrameDocument(); - // Initialize the IFRAME document body. - doc.$.open(); // Support for custom document.domain in IE. if ( CKEDITOR.env.isCustomDomain() ) @@ -148,7 +146,7 @@ this.onLoad(); }, this ) ); - doc.$.write( + doc.write( '<!DOCTYPE html>' + '<html dir="' + dir + '" class="' + className + '_container" lang="' + langCode + '">' + '<head>' + @@ -162,7 +160,6 @@ // available. (#3031) '<link type="text/css" rel=stylesheet href="' + this.css.join( '"><link type="text/css" rel="stylesheet" href="' ) + '">' + '<\/html>' ); - doc.$.close(); var win = doc.getWindow(); @@ -186,6 +183,9 @@ this ); holder = doc.getBody(); + + if( CKEDITOR.env.air ) + CKEDITOR.tools.callFunction( onLoad ); } else holder = this.document.getById( 'cke_' + this.id ); Modified: CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js =================================================================== --- CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/_source/plugins/wysiwygarea/plugin.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -273,7 +273,7 @@ if ( CKEDITOR.env.gecko ) { - // Double checking the iframe will be loaded properly(#4058). + // Double checking the iframe will be loaded properly(#4058). iframe.on( 'load', function( ev ) { ev.removeListener(); @@ -344,7 +344,8 @@ // Remove this script from the DOM. var script = domDocument.getElementById( "cke_actscrpt" ); - script.parentNode.removeChild( script ); + if( script ) + script.parentNode.removeChild( script ); delete CKEDITOR._[ 'contentDomReady' + editor.name ]; @@ -425,6 +426,15 @@ } ); } + if( CKEDITOR.env.air ) + { + //prevent clicking on hyperlinks and navigating away + domDocument.$.addEventListener( 'click', function( ev ) + { + ev.preventDefault() ; + ev.stopPropagation() ; + }, true ) ; + } var focusTarget = ( CKEDITOR.env.ie || CKEDITOR.env.webkit ) ? domWindow : domDocument; @@ -533,20 +543,21 @@ data + '</body>' + '</html>' + - activationScript; + ( !CKEDITOR.env.air ? activationScript : '' ); window[ '_cke_htmlToLoad_' + editor.name ] = data; CKEDITOR._[ 'contentDomReady' + editor.name ] = contentDomReady; createIFrame(); // Opera must use the old method for loading contents. - if ( CKEDITOR.env.opera ) + if ( CKEDITOR.env.opera || CKEDITOR.env.air ) { - var doc = iframe.$.contentWindow.document; - doc.open(); + var doc = new CKEDITOR.dom.document( iframe.$.contentWindow.document ); doc.write( data ); - doc.close(); } + + if( CKEDITOR.env.air ) + contentDomReady( iframe.$.contentWindow ); }, getData : function() Modified: CKEditor/branches/features/adobeair/ckeditor_basic_source.js =================================================================== --- CKEditor/branches/features/adobeair/ckeditor_basic_source.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/ckeditor_basic_source.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -5,7 +5,7 @@ // Compressed version of core/ckeditor_base.js. See original for instructions. /*jsl:ignore*/ -if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); +if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); /*jsl:end*/ // Uncomment the following line to have a new timestamp generated for each Modified: CKEditor/branches/features/adobeair/ckeditor_source.js =================================================================== --- CKEditor/branches/features/adobeair/ckeditor_source.js 2009-09-28 09:09:14 UTC (rev 4293) +++ CKEditor/branches/features/adobeair/ckeditor_source.js 2009-09-28 10:33:22 UTC (rev 4294) @@ -5,7 +5,7 @@ // Compressed version of core/ckeditor_base.js. See original for instructions. /*jsl:ignore*/ -if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf('://')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf('://')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); +if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'%VERSION%',revision:'%REV%',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f<e.length;f++){var g=e[f].src.match(/(^|.*[\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\?.*)?$/i);if(g){d=g[1];break;}}}if(d.indexOf(':/')==-1)if(d.indexOf('/')===0)d=location.href.match(/^.*?:\/\/[^\/]*/)[0]+d;else d=location.href.match(/^[^\?]*\/(?:)/)[0]+d;return d;})(),getUrl:function(d){if(d.indexOf(':/')==-1&&d.indexOf('/')!==0)d=this.basePath+d;if(this.timestamp&&d.charAt(d.length-1)!='/')d+=(d.indexOf('?')>=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); /*jsl:end*/ // Uncomment the following line to have a new timestamp generated for each |