fckadobeair.js
176 lines
| 4.9 KiB
| application/javascript
|
JavascriptLexer
|
r0 | /* | ||
* FCKeditor - The text editor for Internet - http://www.fckeditor.net | ||||
* Copyright (C) 2003-2008 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 == | ||||
* | ||||
* Compatibility code for Adobe AIR. | ||||
*/ | ||||
if ( FCKBrowserInfo.IsAIR ) | ||||
{ | ||||
var FCKAdobeAIR = (function() | ||||
{ | ||||
/* | ||||
* ### Private functions. | ||||
*/ | ||||
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 ; | ||||
} ; | ||||
/* | ||||
* ### Public interface. | ||||
*/ | ||||
return { | ||||
FCKeditorAPI_Evaluate : function( parentWindow, script ) | ||||
{ | ||||
// TODO : This one doesn't work always. The parent window will | ||||
// point to an anonymous function in this window. If this | ||||
// window is destroyied the parent window will be pointing to | ||||
// an invalid reference. | ||||
// Evaluate the script in this window. | ||||
eval( script ) ; | ||||
// Point the FCKeditorAPI property of the parent window to the | ||||
// local reference. | ||||
parentWindow.FCKeditorAPI = window.FCKeditorAPI ; | ||||
}, | ||||
EditingArea_Start : function( doc, html ) | ||||
{ | ||||
// Get the HTML for the <head>. | ||||
var headInnerHtml = html.match( /<head>([\s\S]*)<\/head>/i )[1] ; | ||||
if ( headInnerHtml && headInnerHtml.length > 0 ) | ||||
{ | ||||
// 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 = doc.createElement( 'div' ) ; | ||||
div.innerHTML = headInnerHtml ; | ||||
// Move the <div> nodes to <head>. | ||||
FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ; | ||||
} | ||||
doc.body.innerHTML = html.match( /<body>([\s\S]*)<\/body>/i )[1] ; | ||||
//prevent clicking on hyperlinks and navigating away | ||||
doc.addEventListener('click', function( ev ) | ||||
{ | ||||
ev.preventDefault() ; | ||||
ev.stopPropagation() ; | ||||
}, true ) ; | ||||
}, | ||||
Panel_Contructor : function( doc, baseLocation ) | ||||
{ | ||||
var head = getDocumentHead( doc ) ; | ||||
// Set the <base> href. | ||||
head.appendChild( doc.createElement('base') ).href = baseLocation ; | ||||
doc.body.style.margin = '0px' ; | ||||
doc.body.style.padding = '0px' ; | ||||
}, | ||||
ToolbarSet_GetOutElement : function( win, outMatch ) | ||||
{ | ||||
var toolbarTarget = win.parent ; | ||||
var targetWindowParts = outMatch[1].split( '.' ) ; | ||||
while ( targetWindowParts.length > 0 ) | ||||
{ | ||||
var part = targetWindowParts.shift() ; | ||||
if ( part.length > 0 ) | ||||
toolbarTarget = toolbarTarget[ part ] ; | ||||
} | ||||
toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ; | ||||
}, | ||||
ToolbarSet_InitOutFrame : function( doc ) | ||||
{ | ||||
var head = getDocumentHead( doc ) ; | ||||
head.appendChild( doc.createElement('base') ).href = window.document.location ; | ||||
var targetWindow = doc.defaultView; | ||||
targetWindow.adjust = function() | ||||
{ | ||||
targetWindow.frameElement.height = doc.body.scrollHeight; | ||||
} ; | ||||
targetWindow.onresize = targetWindow.adjust ; | ||||
targetWindow.setTimeout( targetWindow.adjust, 0 ) ; | ||||
doc.body.style.overflow = 'hidden'; | ||||
doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ; | ||||
} | ||||
} ; | ||||
})(); | ||||
/* | ||||
* ### Overrides | ||||
*/ | ||||
( function() | ||||
{ | ||||
// Save references for override reuse. | ||||
var _Original_FCKPanel_Window_OnFocus = FCKPanel_Window_OnFocus ; | ||||
var _Original_FCKPanel_Window_OnBlur = FCKPanel_Window_OnBlur ; | ||||
var _Original_FCK_StartEditor = FCK.StartEditor ; | ||||
FCKPanel_Window_OnFocus = function( e, panel ) | ||||
{ | ||||
// Call the original implementation. | ||||
_Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ; | ||||
if ( panel._focusTimer ) | ||||
clearTimeout( panel._focusTimer ) ; | ||||
} | ||||
FCKPanel_Window_OnBlur = function( e, panel ) | ||||
{ | ||||
// Delay the execution of the original function. | ||||
panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ; | ||||
} | ||||
FCK.StartEditor = function() | ||||
{ | ||||
// Force pointing to the CSS files instead of using the inline CSS cached styles. | ||||
window.FCK_InternalCSS = FCKConfig.BasePath + 'css/fck_internal.css' ; | ||||
window.FCK_ShowTableBordersCSS = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ; | ||||
_Original_FCK_StartEditor.apply( this, arguments ) ; | ||||
} | ||||
})(); | ||||
} | ||||