source: branches/rsr.v5.1.1/web/app/plugins/tinymce/jscripts/tiny_mce/tiny_mce_popup.js

Last change on this file was 1, checked in by dj3c1t, 13 years ago

import initial

File size: 5.7 KB
Line 
1// Some global instances
2var tinymce = null, tinyMCEPopup, tinyMCE;
3
4tinyMCEPopup = {
5        init : function() {
6                var t = this, w = t.getWin(), ti;
7
8                // Find API
9                tinymce = w.tinymce;
10                tinyMCE = w.tinyMCE;
11                t.editor = tinymce.EditorManager.activeEditor;
12                t.params = t.editor.windowManager.params;
13
14                // Setup local DOM
15                t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
16                t.dom.loadCSS(t.editor.settings.popup_css);
17
18                // Setup on init listeners
19                t.listeners = [];
20                t.onInit = {
21                        add : function(f, s) {
22                                t.listeners.push({func : f, scope : s});
23                        }
24                };
25
26                t.isWindow = !t.getWindowArg('mce_inline');
27                t.id = t.getWindowArg('mce_window_id');
28                t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
29        },
30
31        getWin : function() {
32                return window.dialogArguments || opener || parent || top;
33        },
34
35        getWindowArg : function(n, dv) {
36                var v = this.params[n];
37
38                return tinymce.is(v) ? v : dv;
39        },
40
41        getParam : function(n, dv) {
42                return this.editor.getParam(n, dv);
43        },
44
45        getLang : function(n, dv) {
46                return this.editor.getLang(n, dv);
47        },
48
49        execCommand : function(cmd, ui, val, a) {
50                this.restoreSelection();
51                return this.editor.execCommand(cmd, ui, val, a || {skip_focus : 1});
52        },
53
54        resizeToInnerSize : function() {
55                var t = this, n, b = document.body, vp = t.dom.getViewPort(window), dw, dh;
56
57                dw = t.getWindowArg('mce_width') - vp.w;
58                dh = t.getWindowArg('mce_height') - vp.h;
59
60                if (t.isWindow)
61                        window.resizeBy(dw, dh);
62                else
63                        t.editor.windowManager.resizeBy(dw, dh, t.id);
64        },
65
66        executeOnLoad : function(s) {
67                this.onInit.add(function() {
68                        eval(s);
69                });
70        },
71
72        storeSelection : function() {
73                this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark('simple');
74        },
75
76        restoreSelection : function() {
77                var t = tinyMCEPopup;
78
79                if (!t.isWindow && tinymce.isIE)
80                        t.editor.selection.moveToBookmark(t.editor.windowManager.bookmark);
81        },
82
83        requireLangPack : function() {
84                var u = this.getWindowArg('plugin_url') || this.getWindowArg('theme_url');
85
86                if (u)
87                        document.write('<script type="text/javascript" src="' + u + '/langs/' + this.editor.settings.language + '_dlg.js' + '"></script>');
88        },
89
90        pickColor : function(e, element_id) {
91                this.execCommand('mceColorPicker', true, {
92                        color : document.getElementById(element_id).value,
93                        func : function(c) {
94                                document.getElementById(element_id).value = c;
95
96                                try {
97                                        document.getElementById(element_id).onchange();
98                                } catch (ex) {
99                                        // Try fire event, ignore errors
100                                }
101                        }
102                });
103        },
104
105        openBrowser : function(element_id, type, option) {
106                tinyMCEPopup.restoreSelection();
107                this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
108        },
109
110        close : function() {
111                var t = this;
112
113                t.dom = t.dom.doc = null; // Cleanup
114                t.editor.windowManager.close(window, t.id);
115        },
116
117        // Internal functions   
118
119        _restoreSelection : function() {
120                var e = window.event.srcElement;
121
122                if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button'))
123                        tinyMCEPopup.restoreSelection();
124        },
125
126/*      _restoreSelection : function() {
127                var e = window.event.srcElement;
128
129                // If user focus a non text input or textarea
130                if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
131                        tinyMCEPopup.restoreSelection();
132        },*/
133
134        _onDOMLoaded : function() {
135                var t = this, ti = document.title, bm, h;
136
137                // Translate page
138                h = document.body.innerHTML;
139
140                // Replace a=x with a="x" in IE
141                if (tinymce.isIE)
142                        h = h.replace(/ (value|title|alt)=([^\s>]+)/gi, ' $1="$2"');
143
144                document.body.innerHTML = t.editor.translate(h);
145                document.title = ti = t.editor.translate(ti);
146                document.body.style.display = '';
147
148                // Restore selection in IE when focus is placed on a non textarea or input element of the type text
149                if (tinymce.isIE)
150                        document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
151
152                t.restoreSelection();
153
154                // Call onInit
155                tinymce.each(t.listeners, function(o) {
156                        o.func.call(o.scope, t.editor);
157                });
158
159                t.resizeToInnerSize();
160
161                if (t.isWindow)
162                        window.focus();
163                else
164                        t.editor.windowManager.setTitle(ti, t.id);
165
166                if (!tinymce.isIE && !t.isWindow) {
167                        tinymce.dom.Event._add(document, 'focus', function() {
168                                t.editor.windowManager.focus(t.id)
169                        });
170                }
171
172                // Patch for accessibility
173                tinymce.each(t.dom.select('select'), function(e) {
174                        e.onkeydown = tinyMCEPopup._accessHandler;
175                });
176
177                // Move focus to window
178                window.focus();
179        },
180
181        _accessHandler : function(e) {
182                var e = e || window.event;
183
184                if (e.keyCode == 13 || e.keyCode == 32) {
185                        e = e.target || e.srcElement;
186
187                        if (e.onchange)
188                                e.onchange();
189
190                        return tinymce.dom.Event.cancel(e);
191                }
192        },
193
194        _wait : function() {
195                var t = this, ti;
196
197                if (tinymce.isIE && document.location.protocol != 'https:') {
198                        // Fake DOMContentLoaded on IE
199                        document.write('<script id=__ie_onload defer src=\'javascript:""\';><\/script>');
200                        document.getElementById("__ie_onload").onreadystatechange = function() {
201                                if (this.readyState == "complete") {
202                                        t._onDOMLoaded();
203                                        document.getElementById("__ie_onload").onreadystatechange = null; // Prevent leak
204                                }
205                        };
206                } else {
207                        if (tinymce.isIE || tinymce.isWebKit) {
208                                ti = setInterval(function() {
209                                        if (/loaded|complete/.test(document.readyState)) {
210                                                clearInterval(ti);
211                                                t._onDOMLoaded();
212                                        }
213                                }, 10);
214                        } else {
215                                window.addEventListener('DOMContentLoaded', function() {
216                                        t._onDOMLoaded();
217                                }, false);
218                        }
219                }
220        }
221};
222
223tinyMCEPopup.init();
224tinyMCEPopup._wait(); // Wait for DOM Content Loaded
Note: See TracBrowser for help on using the repository browser.