~ubuntu-branches/ubuntu/natty/moin/natty-updates

« back to all changes in this revision

Viewing changes to MoinMoin/web/static/htdocs/applets/FCKeditor/editor/js/fckadobeair.js

  • Committer: Bazaar Package Importer
  • Author(s): Jonas Smedegaard
  • Date: 2008-06-22 21:17:13 UTC
  • mto: This revision was merged to the branch mainline in revision 18.
  • Revision ID: james.westby@ubuntu.com-20080622211713-inlv5k4eifxckelr
Import upstream version 1.7.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
3
 
 * Copyright (C) 2003-2010 Frederico Caldeira Knabben
4
 
 *
5
 
 * == BEGIN LICENSE ==
6
 
 *
7
 
 * Licensed under the terms of any of the following licenses at your
8
 
 * choice:
9
 
 *
10
 
 *  - GNU General Public License Version 2 or later (the "GPL")
11
 
 *    http://www.gnu.org/licenses/gpl.html
12
 
 *
13
 
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
14
 
 *    http://www.gnu.org/licenses/lgpl.html
15
 
 *
16
 
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
17
 
 *    http://www.mozilla.org/MPL/MPL-1.1.html
18
 
 *
19
 
 * == END LICENSE ==
20
 
 *
21
 
 * Compatibility code for Adobe AIR.
22
 
 */
23
 
 
24
 
if ( FCKBrowserInfo.IsAIR )
25
 
{
26
 
        var FCKAdobeAIR = (function()
27
 
        {
28
 
                /*
29
 
                 * ### Private functions.
30
 
                 */
31
 
 
32
 
                var getDocumentHead = function( doc )
33
 
                {
34
 
                        var head ;
35
 
                        var heads = doc.getElementsByTagName( 'head' ) ;
36
 
 
37
 
                        if( heads && heads[0] )
38
 
                                head = heads[0] ;
39
 
                        else
40
 
                        {
41
 
                                head = doc.createElement( 'head' ) ;
42
 
                                doc.documentElement.insertBefore( head, doc.documentElement.firstChild ) ;
43
 
                        }
44
 
 
45
 
                        return head ;
46
 
                } ;
47
 
 
48
 
                /*
49
 
                 * ### Public interface.
50
 
                 */
51
 
                return {
52
 
                        FCKeditorAPI_Evaluate : function( parentWindow, script )
53
 
                        {
54
 
                                // TODO : This one doesn't work always. The parent window will
55
 
                                // point to an anonymous function in this window. If this
56
 
                                // window is destroyied the parent window will be pointing to
57
 
                                // an invalid reference.
58
 
 
59
 
                                // Evaluate the script in this window.
60
 
                                eval( script ) ;
61
 
 
62
 
                                // Point the FCKeditorAPI property of the parent window to the
63
 
                                // local reference.
64
 
                                parentWindow.FCKeditorAPI = window.FCKeditorAPI ;
65
 
                        },
66
 
 
67
 
                        EditingArea_Start : function( doc, html )
68
 
                        {
69
 
                                // Get the HTML for the <head>.
70
 
                                var headInnerHtml = html.match( /<head>([\s\S]*)<\/head>/i )[1] ;
71
 
 
72
 
                                if ( headInnerHtml && headInnerHtml.length > 0 )
73
 
                                {
74
 
                                        // Inject the <head> HTML inside a <div>.
75
 
                                        // Do that before getDocumentHead because WebKit moves
76
 
                                        // <link css> elements to the <head> at this point.
77
 
                                        var div = doc.createElement( 'div' ) ;
78
 
                                        div.innerHTML = headInnerHtml ;
79
 
 
80
 
                                        // Move the <div> nodes to <head>.
81
 
                                        FCKDomTools.MoveChildren( div, getDocumentHead( doc ) ) ;
82
 
                                }
83
 
 
84
 
                                doc.body.innerHTML = html.match( /<body>([\s\S]*)<\/body>/i )[1] ;
85
 
 
86
 
                                //prevent clicking on hyperlinks and navigating away
87
 
                                doc.addEventListener('click', function( ev )
88
 
                                        {
89
 
                                                ev.preventDefault() ;
90
 
                                                ev.stopPropagation() ;
91
 
                                        }, true ) ;
92
 
                        },
93
 
 
94
 
                        Panel_Contructor : function( doc, baseLocation )
95
 
                        {
96
 
                                var head = getDocumentHead( doc ) ;
97
 
 
98
 
                                // Set the <base> href.
99
 
                                head.appendChild( doc.createElement('base') ).href = baseLocation ;
100
 
 
101
 
                                doc.body.style.margin   = '0px' ;
102
 
                                doc.body.style.padding  = '0px' ;
103
 
                        },
104
 
 
105
 
                        ToolbarSet_GetOutElement : function( win, outMatch )
106
 
                        {
107
 
                                var toolbarTarget = win.parent ;
108
 
 
109
 
                                var targetWindowParts = outMatch[1].split( '.' ) ;
110
 
                                while ( targetWindowParts.length > 0 )
111
 
                                {
112
 
                                        var part = targetWindowParts.shift() ;
113
 
                                        if ( part.length > 0 )
114
 
                                                toolbarTarget = toolbarTarget[ part ] ;
115
 
                                }
116
 
 
117
 
                                toolbarTarget = toolbarTarget.document.getElementById( outMatch[2] ) ;
118
 
                        },
119
 
 
120
 
                        ToolbarSet_InitOutFrame : function( doc )
121
 
                        {
122
 
                                var head = getDocumentHead( doc ) ;
123
 
 
124
 
                                head.appendChild( doc.createElement('base') ).href = window.document.location ;
125
 
 
126
 
                                var targetWindow = doc.defaultView;
127
 
 
128
 
                                targetWindow.adjust = function()
129
 
                                {
130
 
                                        targetWindow.frameElement.height = doc.body.scrollHeight;
131
 
                                } ;
132
 
 
133
 
                                targetWindow.onresize = targetWindow.adjust ;
134
 
                                targetWindow.setTimeout( targetWindow.adjust, 0 ) ;
135
 
 
136
 
                                doc.body.style.overflow = 'hidden';
137
 
                                doc.body.innerHTML = document.getElementById( 'xToolbarSpace' ).innerHTML ;
138
 
                        }
139
 
                } ;
140
 
        })();
141
 
 
142
 
        /*
143
 
         * ### Overrides
144
 
         */
145
 
        ( function()
146
 
        {
147
 
                // Save references for override reuse.
148
 
                var _Original_FCKPanel_Window_OnFocus   = FCKPanel_Window_OnFocus ;
149
 
                var _Original_FCKPanel_Window_OnBlur    = FCKPanel_Window_OnBlur ;
150
 
                var _Original_FCK_StartEditor                   = FCK.StartEditor ;
151
 
 
152
 
                FCKPanel_Window_OnFocus = function( e, panel )
153
 
                {
154
 
                        // Call the original implementation.
155
 
                        _Original_FCKPanel_Window_OnFocus.call( this, e, panel ) ;
156
 
 
157
 
                        if ( panel._focusTimer )
158
 
                                clearTimeout( panel._focusTimer ) ;
159
 
                }
160
 
 
161
 
                FCKPanel_Window_OnBlur = function( e, panel )
162
 
                {
163
 
                        // Delay the execution of the original function.
164
 
                        panel._focusTimer = FCKTools.SetTimeout( _Original_FCKPanel_Window_OnBlur, 100, this, [ e, panel ] ) ;
165
 
                }
166
 
 
167
 
                FCK.StartEditor = function()
168
 
                {
169
 
                        // Force pointing to the CSS files instead of using the inline CSS cached styles.
170
 
                        window.FCK_InternalCSS                  = FCKConfig.BasePath + 'css/fck_internal.css' ;
171
 
                        window.FCK_ShowTableBordersCSS  = FCKConfig.BasePath + 'css/fck_showtableborders_gecko.css' ;
172
 
 
173
 
                        _Original_FCK_StartEditor.apply( this, arguments ) ;
174
 
                }
175
 
        })();
176
 
}