~ubuntu-it-wiki/wiki-ubuntu-it/wiki-repo

« back to all changes in this revision

Viewing changes to applets/FCKeditor/editor/_source/fckeditorapi.js

  • Committer: Leo Iannacone
  • Date: 2011-06-02 15:05:37 UTC
  • Revision ID: l3on@ubuntu.com-20110602150537-ycrnf58qf67uf593
Added applets for gui editor

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
 * Create the FCKeditorAPI object that is available as a global object in
 
22
 * the page where the editor is placed in.
 
23
 */
 
24
 
 
25
var FCKeditorAPI ;
 
26
 
 
27
function InitializeAPI()
 
28
{
 
29
        var oParentWindow = window.parent ;
 
30
 
 
31
        if ( !( FCKeditorAPI = oParentWindow.FCKeditorAPI ) )
 
32
        {
 
33
                // Make the FCKeditorAPI object available in the parent window. Use
 
34
                // eval so this core runs in the parent's scope and so it will still be
 
35
                // available if the editor instance is removed ("Can't execute code
 
36
                // from a freed script" error).
 
37
 
 
38
                // Note: we check the existence of oEditor.GetParentForm because some external
 
39
                // code (like JSON) can extend the Object prototype and we get then extra oEditor
 
40
                // objects that aren't really FCKeditor instances.
 
41
                var sScript =
 
42
                        'window.FCKeditorAPI = {' +
 
43
                                'Version : "2.6.6",' +
 
44
                                'VersionBuild : "25427",' +
 
45
                                'Instances : window.FCKeditorAPI && window.FCKeditorAPI.Instances || {},' +
 
46
 
 
47
                                'GetInstance : function( name )' +
 
48
                                '{' +
 
49
                                        'return this.Instances[ name ];' +
 
50
                                '},' +
 
51
 
 
52
                                '_FormSubmit : function()' +
 
53
                                '{' +
 
54
                                        'for ( var name in FCKeditorAPI.Instances )' +
 
55
                                        '{' +
 
56
                                                'var oEditor = FCKeditorAPI.Instances[ name ] ;' +
 
57
                                                'if ( oEditor.GetParentForm && oEditor.GetParentForm() == this )' +
 
58
                                                        'oEditor.UpdateLinkedField() ;' +
 
59
                                        '}' +
 
60
                                        'this._FCKOriginalSubmit() ;' +
 
61
                                '},' +
 
62
 
 
63
                                '_FunctionQueue : window.FCKeditorAPI && window.FCKeditorAPI._FunctionQueue || {' +
 
64
                                        'Functions : new Array(),' +
 
65
                                        'IsRunning : false,' +
 
66
 
 
67
                                        'Add : function( f )' +
 
68
                                        '{' +
 
69
                                                'this.Functions.push( f );' +
 
70
                                                'if ( !this.IsRunning )' +
 
71
                                                        'this.StartNext();' +
 
72
                                        '},' +
 
73
 
 
74
                                        'StartNext : function()' +
 
75
                                        '{' +
 
76
                                                'var aQueue = this.Functions ;' +
 
77
                                                'if ( aQueue.length > 0 )' +
 
78
                                                '{' +
 
79
                                                        'this.IsRunning = true;' +
 
80
                                                        'aQueue[0].call();' +
 
81
                                                '}' +
 
82
                                                'else ' +
 
83
                                                        'this.IsRunning = false;' +
 
84
                                        '},' +
 
85
 
 
86
                                        'Remove : function( f )' +
 
87
                                        '{' +
 
88
                                                'var aQueue = this.Functions;' +
 
89
                                                'var i = 0, fFunc;' +
 
90
                                                'while( (fFunc = aQueue[ i ]) )' +
 
91
                                                '{' +
 
92
                                                        'if ( fFunc == f )' +
 
93
                                                                'aQueue.splice( i,1 );' +
 
94
                                                        'i++ ;' +
 
95
                                                '}' +
 
96
                                                'this.StartNext();' +
 
97
                                        '}' +
 
98
                                '}' +
 
99
                        '}' ;
 
100
 
 
101
                // In IE, the "eval" function is not always available (it works with
 
102
                // the JavaScript samples, but not with the ASP ones, for example).
 
103
                // So, let's use the execScript instead.
 
104
                if ( oParentWindow.execScript )
 
105
                        oParentWindow.execScript( sScript, 'JavaScript' ) ;
 
106
                else
 
107
                {
 
108
                        if ( FCKBrowserInfo.IsGecko10 )
 
109
                        {
 
110
                                // FF 1.0.4 gives an error with the request bellow. The
 
111
                                // following seams to work well.
 
112
                                eval.call( oParentWindow, sScript ) ;
 
113
                        }
 
114
                        else if( FCKBrowserInfo.IsAIR )
 
115
                        {
 
116
                                FCKAdobeAIR.FCKeditorAPI_Evaluate( oParentWindow, sScript ) ;
 
117
                        }
 
118
                        else if ( FCKBrowserInfo.IsSafari )
 
119
                        {
 
120
                                // oParentWindow.eval in Safari executes in the calling window
 
121
                                // environment, instead of the parent one. The following should
 
122
                                // make it work.
 
123
                                var oParentDocument = oParentWindow.document ;
 
124
                                var eScript = oParentDocument.createElement('script') ;
 
125
                                eScript.appendChild( oParentDocument.createTextNode( sScript ) ) ;
 
126
                                oParentDocument.documentElement.appendChild( eScript ) ;
 
127
                        }
 
128
                        else
 
129
                                oParentWindow.eval( sScript ) ;
 
130
                }
 
131
 
 
132
                FCKeditorAPI = oParentWindow.FCKeditorAPI ;
 
133
 
 
134
                // The __Instances properly has been changed to the public Instances,
 
135
                // but we should still have the "deprecated" version of it.
 
136
                FCKeditorAPI.__Instances = FCKeditorAPI.Instances ;
 
137
        }
 
138
 
 
139
        // Add the current instance to the FCKeditorAPI's instances collection.
 
140
        FCKeditorAPI.Instances[ FCK.Name ] = FCK ;
 
141
}
 
142
 
 
143
// Attach to the form onsubmit event and to the form.submit().
 
144
function _AttachFormSubmitToAPI()
 
145
{
 
146
        // Get the linked field form.
 
147
        var oForm = FCK.GetParentForm() ;
 
148
 
 
149
        if ( oForm )
 
150
        {
 
151
                // Attach to the onsubmit event.
 
152
                FCKTools.AddEventListener( oForm, 'submit', FCK.UpdateLinkedField ) ;
 
153
 
 
154
                // IE sees oForm.submit function as an 'object'.
 
155
                if ( !oForm._FCKOriginalSubmit && ( typeof( oForm.submit ) == 'function' || ( !oForm.submit.tagName && !oForm.submit.length ) ) )
 
156
                {
 
157
                        // Save the original submit.
 
158
                        oForm._FCKOriginalSubmit = oForm.submit ;
 
159
 
 
160
                        // Create our replacement for the submit.
 
161
                        oForm.submit = FCKeditorAPI._FormSubmit ;
 
162
                }
 
163
        }
 
164
}
 
165
 
 
166
function FCKeditorAPI_Cleanup()
 
167
{
 
168
        if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat
 
169
                        && !window.FCKUnloadFlag )
 
170
                return ;
 
171
        delete FCKeditorAPI.Instances[ FCK.Name ] ;
 
172
}
 
173
function FCKeditorAPI_ConfirmCleanup()
 
174
{
 
175
        if ( window.FCKConfig && FCKConfig.MsWebBrowserControlCompat )
 
176
                window.FCKUnloadFlag = true ;
 
177
}
 
178
FCKTools.AddEventListener( window, 'unload', FCKeditorAPI_Cleanup ) ;
 
179
FCKTools.AddEventListener( window, 'beforeunload', FCKeditorAPI_ConfirmCleanup) ;