1 | /** |
---|
2 | * $Id: editor_plugin_src.js 520 2008-01-07 16:30:32Z spocke $ |
---|
3 | * |
---|
4 | * @author Moxiecode |
---|
5 | * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved. |
---|
6 | */ |
---|
7 | |
---|
8 | (function() { |
---|
9 | var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is; |
---|
10 | |
---|
11 | tinymce.create('tinymce.plugins.InlinePopups', { |
---|
12 | init : function(ed, url) { |
---|
13 | // Replace window manager |
---|
14 | ed.onBeforeRenderUI.add(function() { |
---|
15 | ed.windowManager = new tinymce.InlineWindowManager(ed); |
---|
16 | DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css"); |
---|
17 | }); |
---|
18 | }, |
---|
19 | |
---|
20 | getInfo : function() { |
---|
21 | return { |
---|
22 | longname : 'InlinePopups', |
---|
23 | author : 'Moxiecode Systems AB', |
---|
24 | authorurl : 'http://tinymce.moxiecode.com', |
---|
25 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups', |
---|
26 | version : tinymce.majorVersion + "." + tinymce.minorVersion |
---|
27 | }; |
---|
28 | } |
---|
29 | }); |
---|
30 | |
---|
31 | tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', { |
---|
32 | InlineWindowManager : function(ed) { |
---|
33 | var t = this; |
---|
34 | |
---|
35 | t.parent(ed); |
---|
36 | t.zIndex = 1000; |
---|
37 | }, |
---|
38 | |
---|
39 | open : function(f, p) { |
---|
40 | var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w; |
---|
41 | |
---|
42 | f = f || {}; |
---|
43 | p = p || {}; |
---|
44 | |
---|
45 | // Run native windows |
---|
46 | if (!f.inline) |
---|
47 | return t.parent(f, p); |
---|
48 | |
---|
49 | t.bookmark = ed.selection.getBookmark('simple'); |
---|
50 | id = DOM.uniqueId(); |
---|
51 | vp = DOM.getViewPort(); |
---|
52 | f.width = parseInt(f.width || 320); |
---|
53 | f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0); |
---|
54 | f.min_width = parseInt(f.min_width || 150); |
---|
55 | f.min_height = parseInt(f.min_height || 100); |
---|
56 | f.max_width = parseInt(f.max_width || 2000); |
---|
57 | f.max_height = parseInt(f.max_height || 2000); |
---|
58 | f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0))); |
---|
59 | f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0))); |
---|
60 | f.movable = f.resizable = true; |
---|
61 | p.mce_width = f.width; |
---|
62 | p.mce_height = f.height; |
---|
63 | p.mce_inline = true; |
---|
64 | p.mce_window_id = id; |
---|
65 | |
---|
66 | // Transpose |
---|
67 | // po = DOM.getPos(ed.getContainer()); |
---|
68 | // f.left -= po.x; |
---|
69 | // f.top -= po.y; |
---|
70 | |
---|
71 | t.features = f; |
---|
72 | t.params = p; |
---|
73 | t.onOpen.dispatch(t, f, p); |
---|
74 | |
---|
75 | if (f.type) { |
---|
76 | opt += ' modal ' + f.type; |
---|
77 | f.resizable = false; |
---|
78 | } |
---|
79 | |
---|
80 | if (f.statusbar) |
---|
81 | opt += ' statusbar'; |
---|
82 | |
---|
83 | if (f.resizable) |
---|
84 | opt += ' resizable'; |
---|
85 | |
---|
86 | if (f.minimizable) |
---|
87 | opt += ' minimizable'; |
---|
88 | |
---|
89 | if (f.maximizable) |
---|
90 | opt += ' maximizable'; |
---|
91 | |
---|
92 | if (f.movable) |
---|
93 | opt += ' movable'; |
---|
94 | |
---|
95 | // Create DOM objects |
---|
96 | t._addAll(document.body, |
---|
97 | ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, |
---|
98 | ['div', {id : id + '_wrapper', 'class' : 'wrapper' + opt}, |
---|
99 | ['div', {id : id + '_top', 'class' : 'top'}, |
---|
100 | ['div', {'class' : 'left'}], |
---|
101 | ['div', {'class' : 'center'}], |
---|
102 | ['div', {'class' : 'right'}], |
---|
103 | ['span', {id : id + '_title'}, f.title || ''] |
---|
104 | ], |
---|
105 | |
---|
106 | ['div', {id : id + '_middle', 'class' : 'middle'}, |
---|
107 | ['div', {id : id + '_left', 'class' : 'left'}], |
---|
108 | ['span', {id : id + '_content'}], |
---|
109 | ['div', {id : id + '_right', 'class' : 'right'}] |
---|
110 | ], |
---|
111 | |
---|
112 | ['div', {id : id + '_bottom', 'class' : 'bottom'}, |
---|
113 | ['div', {'class' : 'left'}], |
---|
114 | ['div', {'class' : 'center'}], |
---|
115 | ['div', {'class' : 'right'}], |
---|
116 | ['span', {id : id + '_status'}, 'Content'] |
---|
117 | ], |
---|
118 | |
---|
119 | ['a', {'class' : 'move', href : 'javascript:;'}], |
---|
120 | ['a', {'class' : 'min', href : 'javascript:;', onmousedown : 'return false;'}], |
---|
121 | ['a', {'class' : 'max', href : 'javascript:;', onmousedown : 'return false;'}], |
---|
122 | ['a', {'class' : 'med', href : 'javascript:;', onmousedown : 'return false;'}], |
---|
123 | ['a', {'class' : 'close', href : 'javascript:;', onmousedown : 'return false;'}], |
---|
124 | ['a', {id : id + '_resize_n', 'class' : 'resize resize-n', href : 'javascript:;'}], |
---|
125 | ['a', {id : id + '_resize_s', 'class' : 'resize resize-s', href : 'javascript:;'}], |
---|
126 | ['a', {id : id + '_resize_w', 'class' : 'resize resize-w', href : 'javascript:;'}], |
---|
127 | ['a', {id : id + '_resize_e', 'class' : 'resize resize-e', href : 'javascript:;'}], |
---|
128 | ['a', {id : id + '_resize_nw', 'class' : 'resize resize-nw', href : 'javascript:;'}], |
---|
129 | ['a', {id : id + '_resize_ne', 'class' : 'resize resize-ne', href : 'javascript:;'}], |
---|
130 | ['a', {id : id + '_resize_sw', 'class' : 'resize resize-sw', href : 'javascript:;'}], |
---|
131 | ['a', {id : id + '_resize_se', 'class' : 'resize resize-se', href : 'javascript:;'}] |
---|
132 | ] |
---|
133 | ] |
---|
134 | ); |
---|
135 | |
---|
136 | DOM.setStyles(id, {top : -10000, left : -10000}); |
---|
137 | |
---|
138 | // Fix gecko rendering bug, where the editors iframe messed with window contents |
---|
139 | if (tinymce.isGecko) |
---|
140 | DOM.setStyle(id, 'overflow', 'auto'); |
---|
141 | |
---|
142 | // Measure borders |
---|
143 | if (!f.type) { |
---|
144 | dw += DOM.get(id + '_left').clientWidth; |
---|
145 | dw += DOM.get(id + '_right').clientWidth; |
---|
146 | dh += DOM.get(id + '_top').clientHeight; |
---|
147 | dh += DOM.get(id + '_bottom').clientHeight; |
---|
148 | } |
---|
149 | |
---|
150 | // Resize window |
---|
151 | DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); |
---|
152 | |
---|
153 | if (!f.type) { |
---|
154 | DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); |
---|
155 | DOM.setStyles(id + '_ifr', {width : f.width, height : f.height}); |
---|
156 | DOM.setAttrib(id + '_ifr', 'src', f.url || f.file); |
---|
157 | } else { |
---|
158 | DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'button ok', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok'); |
---|
159 | |
---|
160 | if (f.type == 'confirm') |
---|
161 | DOM.add(id + '_wrapper', 'a', {'class' : 'button cancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel'); |
---|
162 | |
---|
163 | DOM.add(id + '_middle', 'div', {'class' : 'icon'}); |
---|
164 | DOM.setHTML(id + '_content', f.content.replace('\n', '<br />')); |
---|
165 | } |
---|
166 | |
---|
167 | // Register events |
---|
168 | mdf = Event.add(id, 'mousedown', function(e) { |
---|
169 | var n = e.target, w, vp; |
---|
170 | |
---|
171 | w = t.windows[id]; |
---|
172 | t.focus(id); |
---|
173 | |
---|
174 | if (n.nodeName == 'A' || n.nodeName == 'a') { |
---|
175 | if (n.className == 'max') { |
---|
176 | w.oldPos = w.element.getXY(); |
---|
177 | w.oldSize = w.element.getSize(); |
---|
178 | |
---|
179 | vp = DOM.getViewPort(); |
---|
180 | |
---|
181 | // Reduce viewport size to avoid scrollbars |
---|
182 | vp.w -= 2; |
---|
183 | vp.h -= 2; |
---|
184 | |
---|
185 | w.element.moveTo(vp.x, vp.y); |
---|
186 | w.element.resizeTo(vp.w, vp.h); |
---|
187 | DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); |
---|
188 | DOM.addClass(id + '_wrapper', 'maximized'); |
---|
189 | } else if (n.className == 'med') { |
---|
190 | // Reset to old size |
---|
191 | w.element.moveTo(w.oldPos.x, w.oldPos.y); |
---|
192 | w.element.resizeTo(w.oldSize.w, w.oldSize.h); |
---|
193 | w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); |
---|
194 | |
---|
195 | DOM.removeClass(id + '_wrapper', 'maximized'); |
---|
196 | } else if (n.className == 'move') |
---|
197 | return t._startDrag(id, e, n.className); |
---|
198 | else if (DOM.hasClass(n, 'resize')) |
---|
199 | return t._startDrag(id, e, n.className.substring(7)); |
---|
200 | } |
---|
201 | }); |
---|
202 | |
---|
203 | clf = Event.add(id, 'click', function(e) { |
---|
204 | var n = e.target; |
---|
205 | |
---|
206 | t.focus(id); |
---|
207 | |
---|
208 | if (n.nodeName == 'A' || n.nodeName == 'a') { |
---|
209 | switch (n.className) { |
---|
210 | case 'close': |
---|
211 | t.close(null, id); |
---|
212 | return Event.cancel(e); |
---|
213 | |
---|
214 | case 'button ok': |
---|
215 | case 'button cancel': |
---|
216 | f.button_func(n.className == 'button ok'); |
---|
217 | return Event.cancel(e); |
---|
218 | } |
---|
219 | } |
---|
220 | }); |
---|
221 | |
---|
222 | // Add window |
---|
223 | t.windows = t.windows || {}; |
---|
224 | w = t.windows[id] = { |
---|
225 | id : id, |
---|
226 | mousedown_func : mdf, |
---|
227 | click_func : clf, |
---|
228 | element : new Element(id, {blocker : 1, container : ed.getContainer()}), |
---|
229 | iframeElement : new Element(id + '_ifr'), |
---|
230 | features : f, |
---|
231 | deltaWidth : dw, |
---|
232 | deltaHeight : dh |
---|
233 | }; |
---|
234 | |
---|
235 | w.iframeElement.on('focus', function() { |
---|
236 | t.focus(id); |
---|
237 | }); |
---|
238 | |
---|
239 | t.focus(id); |
---|
240 | t._fixIELayout(id, 1); |
---|
241 | |
---|
242 | // if (DOM.get(id + '_ok')) |
---|
243 | // DOM.get(id + '_ok').focus(); |
---|
244 | |
---|
245 | return w; |
---|
246 | }, |
---|
247 | |
---|
248 | focus : function(id) { |
---|
249 | var t = this, w = t.windows[id]; |
---|
250 | |
---|
251 | w.zIndex = this.zIndex++; |
---|
252 | w.element.setStyle('zIndex', w.zIndex); |
---|
253 | w.element.update(); |
---|
254 | |
---|
255 | id = id + '_wrapper'; |
---|
256 | DOM.removeClass(t.lastId, 'focus'); |
---|
257 | DOM.addClass(id, 'focus'); |
---|
258 | t.lastId = id; |
---|
259 | }, |
---|
260 | |
---|
261 | _addAll : function(te, ne) { |
---|
262 | var i, n, t = this, dom = tinymce.DOM; |
---|
263 | |
---|
264 | if (is(ne, 'string')) |
---|
265 | te.appendChild(dom.doc.createTextNode(ne)); |
---|
266 | else if (ne.length) { |
---|
267 | te = te.appendChild(dom.create(ne[0], ne[1])); |
---|
268 | |
---|
269 | for (i=2; i<ne.length; i++) |
---|
270 | t._addAll(te, ne[i]); |
---|
271 | } |
---|
272 | }, |
---|
273 | |
---|
274 | _startDrag : function(id, se, ac) { |
---|
275 | var t = this, mu, mm, d = document, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh; |
---|
276 | |
---|
277 | // Get positons and sizes |
---|
278 | // cp = DOM.getPos(t.editor.getContainer()); |
---|
279 | cp = {x : 0, y : 0}; |
---|
280 | vp = DOM.getViewPort(); |
---|
281 | |
---|
282 | // Reduce viewport size to avoid scrollbars |
---|
283 | vp.w -= 2; |
---|
284 | vp.h -= 2; |
---|
285 | |
---|
286 | sex = se.screenX; |
---|
287 | sey = se.screenY; |
---|
288 | dx = dy = dw = dh = 0; |
---|
289 | |
---|
290 | // Handle mouse up |
---|
291 | mu = Event.add(d, 'mouseup', function(e) { |
---|
292 | Event.remove(d, 'mouseup', mu); |
---|
293 | Event.remove(d, 'mousemove', mm); |
---|
294 | |
---|
295 | if (eb) |
---|
296 | eb.remove(); |
---|
297 | |
---|
298 | we.moveBy(dx, dy); |
---|
299 | we.resizeBy(dw, dh); |
---|
300 | sz = we.getSize(); |
---|
301 | DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight}); |
---|
302 | t._fixIELayout(id, 1); |
---|
303 | |
---|
304 | return Event.cancel(e); |
---|
305 | }); |
---|
306 | |
---|
307 | if (ac != 'move') |
---|
308 | startMove(); |
---|
309 | |
---|
310 | function startMove() { |
---|
311 | if (eb) |
---|
312 | return; |
---|
313 | |
---|
314 | t._fixIELayout(id, 0); |
---|
315 | |
---|
316 | // Setup event blocker |
---|
317 | DOM.add(d.body, 'div', { |
---|
318 | id : 'mceEventBlocker', |
---|
319 | 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'), |
---|
320 | style : {left : vp.x, top : vp.y, width : vp.w - 20, height : vp.h - 20, zIndex : 20001} |
---|
321 | }); |
---|
322 | eb = new Element('mceEventBlocker'); |
---|
323 | eb.update(); |
---|
324 | |
---|
325 | // Setup placeholder |
---|
326 | p = we.getXY(); |
---|
327 | sz = we.getSize(); |
---|
328 | sx = cp.x + p.x - vp.x; |
---|
329 | sy = cp.y + p.y - vp.y; |
---|
330 | DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'placeholder', style : {left : sx, top : sy, width : sz.w, height : sz.h}}); |
---|
331 | ph = new Element('mcePlaceHolder'); |
---|
332 | }; |
---|
333 | |
---|
334 | // Handle mouse move/drag |
---|
335 | mm = Event.add(d, 'mousemove', function(e) { |
---|
336 | var x, y, v; |
---|
337 | |
---|
338 | startMove(); |
---|
339 | |
---|
340 | x = e.screenX - sex; |
---|
341 | y = e.screenY - sey; |
---|
342 | |
---|
343 | switch (ac) { |
---|
344 | case 'resize-w': |
---|
345 | dx = x; |
---|
346 | dw = 0 - x; |
---|
347 | break; |
---|
348 | |
---|
349 | case 'resize-e': |
---|
350 | dw = x; |
---|
351 | break; |
---|
352 | |
---|
353 | case 'resize-n': |
---|
354 | case 'resize-nw': |
---|
355 | case 'resize-ne': |
---|
356 | if (ac == "resize-nw") { |
---|
357 | dx = x; |
---|
358 | dw = 0 - x; |
---|
359 | } else if (ac == "resize-ne") |
---|
360 | dw = x; |
---|
361 | |
---|
362 | dy = y; |
---|
363 | dh = 0 - y; |
---|
364 | break; |
---|
365 | |
---|
366 | case 'resize-s': |
---|
367 | case 'resize-sw': |
---|
368 | case 'resize-se': |
---|
369 | if (ac == "resize-sw") { |
---|
370 | dx = x; |
---|
371 | dw = 0 - x; |
---|
372 | } else if (ac == "resize-se") |
---|
373 | dw = x; |
---|
374 | |
---|
375 | dh = y; |
---|
376 | break; |
---|
377 | |
---|
378 | case 'move': |
---|
379 | dx = x; |
---|
380 | dy = y; |
---|
381 | break; |
---|
382 | } |
---|
383 | |
---|
384 | // Boundary check |
---|
385 | if (dw < (v = w.features.min_width - sz.w)) { |
---|
386 | if (dx !== 0) |
---|
387 | dx += dw - v; |
---|
388 | |
---|
389 | dw = v; |
---|
390 | } |
---|
391 | |
---|
392 | if (dh < (v = w.features.min_height - sz.h)) { |
---|
393 | if (dy !== 0) |
---|
394 | dy += dh - v; |
---|
395 | |
---|
396 | dh = v; |
---|
397 | } |
---|
398 | |
---|
399 | dw = Math.min(dw, w.features.max_width - sz.w); |
---|
400 | dh = Math.min(dh, w.features.max_height - sz.h); |
---|
401 | dx = Math.max(dx, vp.x - (sx + vp.x)); |
---|
402 | dy = Math.max(dy, vp.y - (sy + vp.y)); |
---|
403 | dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x)); |
---|
404 | dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y)); |
---|
405 | |
---|
406 | // Move if needed |
---|
407 | if (dx + dy !== 0) { |
---|
408 | if (sx + dx < 0) |
---|
409 | dx = 0; |
---|
410 | |
---|
411 | if (sy + dy < 0) |
---|
412 | dy = 0; |
---|
413 | |
---|
414 | ph.moveTo(sx + dx, sy + dy); |
---|
415 | } |
---|
416 | |
---|
417 | // Resize if needed |
---|
418 | if (dw + dh !== 0) |
---|
419 | ph.resizeTo(sz.w + dw, sz.h + dh); |
---|
420 | |
---|
421 | return Event.cancel(e); |
---|
422 | }); |
---|
423 | |
---|
424 | return Event.cancel(se); |
---|
425 | }, |
---|
426 | |
---|
427 | resizeBy : function(dw, dh, id) { |
---|
428 | var w = this.windows[id]; |
---|
429 | |
---|
430 | if (w) { |
---|
431 | w.element.resizeBy(dw, dh); |
---|
432 | w.iframeElement.resizeBy(dw, dh); |
---|
433 | } |
---|
434 | }, |
---|
435 | |
---|
436 | close : function(win, id) { |
---|
437 | var t = this, w, d = document, ix = 0, fw; |
---|
438 | |
---|
439 | // Probably not inline |
---|
440 | if (!id && win) { |
---|
441 | t.parent(win); |
---|
442 | return; |
---|
443 | } |
---|
444 | |
---|
445 | if (w = t.windows[id]) { |
---|
446 | t.onClose.dispatch(t); |
---|
447 | Event.remove(d, 'mousedown', w.mousedownFunc); |
---|
448 | Event.remove(d, 'click', w.clickFunc); |
---|
449 | |
---|
450 | DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak |
---|
451 | w.element.remove(); |
---|
452 | delete t.windows[id]; |
---|
453 | |
---|
454 | // Find front most window and focus that |
---|
455 | each (t.windows, function(w) { |
---|
456 | if (w.zIndex > ix) { |
---|
457 | fw = w; |
---|
458 | ix = w.zIndex; |
---|
459 | } |
---|
460 | }); |
---|
461 | |
---|
462 | if (fw) |
---|
463 | t.focus(fw.id); |
---|
464 | } |
---|
465 | }, |
---|
466 | |
---|
467 | setTitle : function(ti, id) { |
---|
468 | DOM.get(id + '_title').innerHTML = DOM.encode(ti); |
---|
469 | }, |
---|
470 | |
---|
471 | alert : function(txt, cb, s) { |
---|
472 | var t = this, w; |
---|
473 | |
---|
474 | w = t.open({ |
---|
475 | title : t, |
---|
476 | type : 'alert', |
---|
477 | button_func : function(s) { |
---|
478 | if (cb) |
---|
479 | cb.call(s || t, s); |
---|
480 | |
---|
481 | t.close(null, w.id); |
---|
482 | }, |
---|
483 | content : DOM.encode(t.editor.getLang(txt, txt)), |
---|
484 | inline : 1, |
---|
485 | width : 400, |
---|
486 | height : 130 |
---|
487 | }); |
---|
488 | }, |
---|
489 | |
---|
490 | confirm : function(txt, cb, s) { |
---|
491 | var t = this, w; |
---|
492 | |
---|
493 | w = t.open({ |
---|
494 | title : t, |
---|
495 | type : 'confirm', |
---|
496 | button_func : function(s) { |
---|
497 | if (cb) |
---|
498 | cb.call(s || t, s); |
---|
499 | |
---|
500 | t.close(null, w.id); |
---|
501 | }, |
---|
502 | content : DOM.encode(t.editor.getLang(txt, txt)), |
---|
503 | inline : 1, |
---|
504 | width : 400, |
---|
505 | height : 130 |
---|
506 | }); |
---|
507 | }, |
---|
508 | |
---|
509 | // Internal functions |
---|
510 | |
---|
511 | _fixIELayout : function(id, s) { |
---|
512 | var w, img; |
---|
513 | |
---|
514 | if (!tinymce.isIE6) |
---|
515 | return; |
---|
516 | |
---|
517 | // Fixes the bug where hover flickers and does odd things in IE6 |
---|
518 | each(['n','s','w','e','nw','ne','sw','se'], function(v) { |
---|
519 | var e = DOM.get(id + '_resize_' + v); |
---|
520 | |
---|
521 | DOM.setStyles(e, { |
---|
522 | width : s ? e.clientWidth : '', |
---|
523 | height : s ? e.clientHeight : '', |
---|
524 | cursor : DOM.getStyle(e, 'cursor', 1) |
---|
525 | }); |
---|
526 | |
---|
527 | DOM.setStyle(id + "_bottom", 'bottom', '-1px'); |
---|
528 | |
---|
529 | e = 0; |
---|
530 | }); |
---|
531 | |
---|
532 | // Fixes graphics glitch |
---|
533 | if (w = this.windows[id]) { |
---|
534 | // Fixes rendering bug after resize |
---|
535 | w.element.hide(); |
---|
536 | w.element.show(); |
---|
537 | |
---|
538 | // Forced a repaint of the window |
---|
539 | //DOM.get(id).style.filter = ''; |
---|
540 | |
---|
541 | // IE has a bug where images used in CSS won't get loaded |
---|
542 | // sometimes when the cache in the browser is disabled |
---|
543 | // This fix tries to solve it by loading the images using the image object |
---|
544 | each(DOM.select('div,a', id), function(e, i) { |
---|
545 | if (e.currentStyle.backgroundImage != 'none') { |
---|
546 | img = new Image(); |
---|
547 | img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); |
---|
548 | } |
---|
549 | }); |
---|
550 | |
---|
551 | DOM.get(id).style.filter = ''; |
---|
552 | } |
---|
553 | } |
---|
554 | }); |
---|
555 | |
---|
556 | // Register plugin |
---|
557 | tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); |
---|
558 | })(); |
---|
559 | |
---|