Mercurial > public > sg101
comparison media/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js @ 45:a5b4c5ce0658
Breaking down and controlling all media files, including javascript libraries.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Fri, 19 Jun 2009 03:16:03 +0000 |
parents | |
children | 149c3567fec1 |
comparison
equal
deleted
inserted
replaced
44:08cd19c1ee50 | 45:a5b4c5ce0658 |
---|---|
1 /** | |
2 * $Id: editor_plugin_src.js 999 2009-02-10 17:42:58Z 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 = 300000; | |
37 t.count = 0; | |
38 t.windows = {}; | |
39 }, | |
40 | |
41 open : function(f, p) { | |
42 var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u; | |
43 | |
44 f = f || {}; | |
45 p = p || {}; | |
46 | |
47 // Run native windows | |
48 if (!f.inline) | |
49 return t.parent(f, p); | |
50 | |
51 // Only store selection if the type is a normal window | |
52 if (!f.type) | |
53 t.bookmark = ed.selection.getBookmark('simple'); | |
54 | |
55 id = DOM.uniqueId(); | |
56 vp = DOM.getViewPort(); | |
57 f.width = parseInt(f.width || 320); | |
58 f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0); | |
59 f.min_width = parseInt(f.min_width || 150); | |
60 f.min_height = parseInt(f.min_height || 100); | |
61 f.max_width = parseInt(f.max_width || 2000); | |
62 f.max_height = parseInt(f.max_height || 2000); | |
63 f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0))); | |
64 f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0))); | |
65 f.movable = f.resizable = true; | |
66 p.mce_width = f.width; | |
67 p.mce_height = f.height; | |
68 p.mce_inline = true; | |
69 p.mce_window_id = id; | |
70 p.mce_auto_focus = f.auto_focus; | |
71 | |
72 // Transpose | |
73 // po = DOM.getPos(ed.getContainer()); | |
74 // f.left -= po.x; | |
75 // f.top -= po.y; | |
76 | |
77 t.features = f; | |
78 t.params = p; | |
79 t.onOpen.dispatch(t, f, p); | |
80 | |
81 if (f.type) { | |
82 opt += ' mceModal'; | |
83 | |
84 if (f.type) | |
85 opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1); | |
86 | |
87 f.resizable = false; | |
88 } | |
89 | |
90 if (f.statusbar) | |
91 opt += ' mceStatusbar'; | |
92 | |
93 if (f.resizable) | |
94 opt += ' mceResizable'; | |
95 | |
96 if (f.minimizable) | |
97 opt += ' mceMinimizable'; | |
98 | |
99 if (f.maximizable) | |
100 opt += ' mceMaximizable'; | |
101 | |
102 if (f.movable) | |
103 opt += ' mceMovable'; | |
104 | |
105 // Create DOM objects | |
106 t._addAll(DOM.doc.body, | |
107 ['div', {id : id, 'class' : ed.settings.inlinepopups_skin || 'clearlooks2', style : 'width:100px;height:100px'}, | |
108 ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt}, | |
109 ['div', {id : id + '_top', 'class' : 'mceTop'}, | |
110 ['div', {'class' : 'mceLeft'}], | |
111 ['div', {'class' : 'mceCenter'}], | |
112 ['div', {'class' : 'mceRight'}], | |
113 ['span', {id : id + '_title'}, f.title || ''] | |
114 ], | |
115 | |
116 ['div', {id : id + '_middle', 'class' : 'mceMiddle'}, | |
117 ['div', {id : id + '_left', 'class' : 'mceLeft'}], | |
118 ['span', {id : id + '_content'}], | |
119 ['div', {id : id + '_right', 'class' : 'mceRight'}] | |
120 ], | |
121 | |
122 ['div', {id : id + '_bottom', 'class' : 'mceBottom'}, | |
123 ['div', {'class' : 'mceLeft'}], | |
124 ['div', {'class' : 'mceCenter'}], | |
125 ['div', {'class' : 'mceRight'}], | |
126 ['span', {id : id + '_status'}, 'Content'] | |
127 ], | |
128 | |
129 ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}], | |
130 ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], | |
131 ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], | |
132 ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], | |
133 ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}], | |
134 ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}], | |
135 ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}], | |
136 ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}], | |
137 ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}], | |
138 ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}], | |
139 ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}], | |
140 ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}], | |
141 ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}] | |
142 ] | |
143 ] | |
144 ); | |
145 | |
146 DOM.setStyles(id, {top : -10000, left : -10000}); | |
147 | |
148 // Fix gecko rendering bug, where the editors iframe messed with window contents | |
149 if (tinymce.isGecko) | |
150 DOM.setStyle(id, 'overflow', 'auto'); | |
151 | |
152 // Measure borders | |
153 if (!f.type) { | |
154 dw += DOM.get(id + '_left').clientWidth; | |
155 dw += DOM.get(id + '_right').clientWidth; | |
156 dh += DOM.get(id + '_top').clientHeight; | |
157 dh += DOM.get(id + '_bottom').clientHeight; | |
158 } | |
159 | |
160 // Resize window | |
161 DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh}); | |
162 | |
163 u = f.url || f.file; | |
164 if (u) { | |
165 if (tinymce.relaxedDomain) | |
166 u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain; | |
167 | |
168 u = tinymce._addVer(u); | |
169 } | |
170 | |
171 if (!f.type) { | |
172 DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'}); | |
173 DOM.setStyles(id + '_ifr', {width : f.width, height : f.height}); | |
174 DOM.setAttrib(id + '_ifr', 'src', u); | |
175 } else { | |
176 DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok'); | |
177 | |
178 if (f.type == 'confirm') | |
179 DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel'); | |
180 | |
181 DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'}); | |
182 DOM.setHTML(id + '_content', f.content.replace('\n', '<br />')); | |
183 } | |
184 | |
185 // Register events | |
186 mdf = Event.add(id, 'mousedown', function(e) { | |
187 var n = e.target, w, vp; | |
188 | |
189 w = t.windows[id]; | |
190 t.focus(id); | |
191 | |
192 if (n.nodeName == 'A' || n.nodeName == 'a') { | |
193 if (n.className == 'mceMax') { | |
194 w.oldPos = w.element.getXY(); | |
195 w.oldSize = w.element.getSize(); | |
196 | |
197 vp = DOM.getViewPort(); | |
198 | |
199 // Reduce viewport size to avoid scrollbars | |
200 vp.w -= 2; | |
201 vp.h -= 2; | |
202 | |
203 w.element.moveTo(vp.x, vp.y); | |
204 w.element.resizeTo(vp.w, vp.h); | |
205 DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight}); | |
206 DOM.addClass(id + '_wrapper', 'mceMaximized'); | |
207 } else if (n.className == 'mceMed') { | |
208 // Reset to old size | |
209 w.element.moveTo(w.oldPos.x, w.oldPos.y); | |
210 w.element.resizeTo(w.oldSize.w, w.oldSize.h); | |
211 w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight); | |
212 | |
213 DOM.removeClass(id + '_wrapper', 'mceMaximized'); | |
214 } else if (n.className == 'mceMove') | |
215 return t._startDrag(id, e, n.className); | |
216 else if (DOM.hasClass(n, 'mceResize')) | |
217 return t._startDrag(id, e, n.className.substring(13)); | |
218 } | |
219 }); | |
220 | |
221 clf = Event.add(id, 'click', function(e) { | |
222 var n = e.target; | |
223 | |
224 t.focus(id); | |
225 | |
226 if (n.nodeName == 'A' || n.nodeName == 'a') { | |
227 switch (n.className) { | |
228 case 'mceClose': | |
229 t.close(null, id); | |
230 return Event.cancel(e); | |
231 | |
232 case 'mceButton mceOk': | |
233 case 'mceButton mceCancel': | |
234 f.button_func(n.className == 'mceButton mceOk'); | |
235 return Event.cancel(e); | |
236 } | |
237 } | |
238 }); | |
239 | |
240 // Add window | |
241 w = t.windows[id] = { | |
242 id : id, | |
243 mousedown_func : mdf, | |
244 click_func : clf, | |
245 element : new Element(id, {blocker : 1, container : ed.getContainer()}), | |
246 iframeElement : new Element(id + '_ifr'), | |
247 features : f, | |
248 deltaWidth : dw, | |
249 deltaHeight : dh | |
250 }; | |
251 | |
252 w.iframeElement.on('focus', function() { | |
253 t.focus(id); | |
254 }); | |
255 | |
256 // Setup blocker | |
257 if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') { | |
258 DOM.add(DOM.doc.body, 'div', { | |
259 id : 'mceModalBlocker', | |
260 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker', | |
261 style : {zIndex : t.zIndex - 1} | |
262 }); | |
263 | |
264 DOM.show('mceModalBlocker'); // Reduces flicker in IE | |
265 } else | |
266 DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1); | |
267 | |
268 if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel)) | |
269 DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); | |
270 | |
271 t.focus(id); | |
272 t._fixIELayout(id, 1); | |
273 | |
274 // Focus ok button | |
275 if (DOM.get(id + '_ok')) | |
276 DOM.get(id + '_ok').focus(); | |
277 | |
278 t.count++; | |
279 | |
280 return w; | |
281 }, | |
282 | |
283 focus : function(id) { | |
284 var t = this, w; | |
285 | |
286 if (w = t.windows[id]) { | |
287 w.zIndex = this.zIndex++; | |
288 w.element.setStyle('zIndex', w.zIndex); | |
289 w.element.update(); | |
290 | |
291 id = id + '_wrapper'; | |
292 DOM.removeClass(t.lastId, 'mceFocus'); | |
293 DOM.addClass(id, 'mceFocus'); | |
294 t.lastId = id; | |
295 } | |
296 }, | |
297 | |
298 _addAll : function(te, ne) { | |
299 var i, n, t = this, dom = tinymce.DOM; | |
300 | |
301 if (is(ne, 'string')) | |
302 te.appendChild(dom.doc.createTextNode(ne)); | |
303 else if (ne.length) { | |
304 te = te.appendChild(dom.create(ne[0], ne[1])); | |
305 | |
306 for (i=2; i<ne.length; i++) | |
307 t._addAll(te, ne[i]); | |
308 } | |
309 }, | |
310 | |
311 _startDrag : function(id, se, ac) { | |
312 var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh; | |
313 | |
314 // Get positons and sizes | |
315 // cp = DOM.getPos(t.editor.getContainer()); | |
316 cp = {x : 0, y : 0}; | |
317 vp = DOM.getViewPort(); | |
318 | |
319 // Reduce viewport size to avoid scrollbars while dragging | |
320 vp.w -= 2; | |
321 vp.h -= 2; | |
322 | |
323 sex = se.screenX; | |
324 sey = se.screenY; | |
325 dx = dy = dw = dh = 0; | |
326 | |
327 // Handle mouse up | |
328 mu = Event.add(d, 'mouseup', function(e) { | |
329 Event.remove(d, 'mouseup', mu); | |
330 Event.remove(d, 'mousemove', mm); | |
331 | |
332 if (eb) | |
333 eb.remove(); | |
334 | |
335 we.moveBy(dx, dy); | |
336 we.resizeBy(dw, dh); | |
337 sz = we.getSize(); | |
338 DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight}); | |
339 t._fixIELayout(id, 1); | |
340 | |
341 return Event.cancel(e); | |
342 }); | |
343 | |
344 if (ac != 'Move') | |
345 startMove(); | |
346 | |
347 function startMove() { | |
348 if (eb) | |
349 return; | |
350 | |
351 t._fixIELayout(id, 0); | |
352 | |
353 // Setup event blocker | |
354 DOM.add(d.body, 'div', { | |
355 id : 'mceEventBlocker', | |
356 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'), | |
357 style : {zIndex : t.zIndex + 1} | |
358 }); | |
359 | |
360 if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel)) | |
361 DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2}); | |
362 | |
363 eb = new Element('mceEventBlocker'); | |
364 eb.update(); | |
365 | |
366 // Setup placeholder | |
367 p = we.getXY(); | |
368 sz = we.getSize(); | |
369 sx = cp.x + p.x - vp.x; | |
370 sy = cp.y + p.y - vp.y; | |
371 DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}}); | |
372 ph = new Element('mcePlaceHolder'); | |
373 }; | |
374 | |
375 // Handle mouse move/drag | |
376 mm = Event.add(d, 'mousemove', function(e) { | |
377 var x, y, v; | |
378 | |
379 startMove(); | |
380 | |
381 x = e.screenX - sex; | |
382 y = e.screenY - sey; | |
383 | |
384 switch (ac) { | |
385 case 'ResizeW': | |
386 dx = x; | |
387 dw = 0 - x; | |
388 break; | |
389 | |
390 case 'ResizeE': | |
391 dw = x; | |
392 break; | |
393 | |
394 case 'ResizeN': | |
395 case 'ResizeNW': | |
396 case 'ResizeNE': | |
397 if (ac == "ResizeNW") { | |
398 dx = x; | |
399 dw = 0 - x; | |
400 } else if (ac == "ResizeNE") | |
401 dw = x; | |
402 | |
403 dy = y; | |
404 dh = 0 - y; | |
405 break; | |
406 | |
407 case 'ResizeS': | |
408 case 'ResizeSW': | |
409 case 'ResizeSE': | |
410 if (ac == "ResizeSW") { | |
411 dx = x; | |
412 dw = 0 - x; | |
413 } else if (ac == "ResizeSE") | |
414 dw = x; | |
415 | |
416 dh = y; | |
417 break; | |
418 | |
419 case 'mceMove': | |
420 dx = x; | |
421 dy = y; | |
422 break; | |
423 } | |
424 | |
425 // Boundary check | |
426 if (dw < (v = w.features.min_width - sz.w)) { | |
427 if (dx !== 0) | |
428 dx += dw - v; | |
429 | |
430 dw = v; | |
431 } | |
432 | |
433 if (dh < (v = w.features.min_height - sz.h)) { | |
434 if (dy !== 0) | |
435 dy += dh - v; | |
436 | |
437 dh = v; | |
438 } | |
439 | |
440 dw = Math.min(dw, w.features.max_width - sz.w); | |
441 dh = Math.min(dh, w.features.max_height - sz.h); | |
442 dx = Math.max(dx, vp.x - (sx + vp.x)); | |
443 dy = Math.max(dy, vp.y - (sy + vp.y)); | |
444 dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x)); | |
445 dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y)); | |
446 | |
447 // Move if needed | |
448 if (dx + dy !== 0) { | |
449 if (sx + dx < 0) | |
450 dx = 0; | |
451 | |
452 if (sy + dy < 0) | |
453 dy = 0; | |
454 | |
455 ph.moveTo(sx + dx, sy + dy); | |
456 } | |
457 | |
458 // Resize if needed | |
459 if (dw + dh !== 0) | |
460 ph.resizeTo(sz.w + dw, sz.h + dh); | |
461 | |
462 return Event.cancel(e); | |
463 }); | |
464 | |
465 return Event.cancel(se); | |
466 }, | |
467 | |
468 resizeBy : function(dw, dh, id) { | |
469 var w = this.windows[id]; | |
470 | |
471 if (w) { | |
472 w.element.resizeBy(dw, dh); | |
473 w.iframeElement.resizeBy(dw, dh); | |
474 } | |
475 }, | |
476 | |
477 close : function(win, id) { | |
478 var t = this, w, d = DOM.doc, ix = 0, fw, id; | |
479 | |
480 id = t._findId(id || win); | |
481 | |
482 // Probably not inline | |
483 if (!t.windows[id]) { | |
484 t.parent(win); | |
485 return; | |
486 } | |
487 | |
488 t.count--; | |
489 | |
490 if (t.count == 0) | |
491 DOM.remove('mceModalBlocker'); | |
492 | |
493 if (w = t.windows[id]) { | |
494 t.onClose.dispatch(t); | |
495 Event.remove(d, 'mousedown', w.mousedownFunc); | |
496 Event.remove(d, 'click', w.clickFunc); | |
497 Event.clear(id); | |
498 Event.clear(id + '_ifr'); | |
499 | |
500 DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak | |
501 w.element.remove(); | |
502 delete t.windows[id]; | |
503 | |
504 // Find front most window and focus that | |
505 each (t.windows, function(w) { | |
506 if (w.zIndex > ix) { | |
507 fw = w; | |
508 ix = w.zIndex; | |
509 } | |
510 }); | |
511 | |
512 if (fw) | |
513 t.focus(fw.id); | |
514 } | |
515 }, | |
516 | |
517 setTitle : function(w, ti) { | |
518 var e; | |
519 | |
520 w = this._findId(w); | |
521 | |
522 if (e = DOM.get(w + '_title')) | |
523 e.innerHTML = DOM.encode(ti); | |
524 }, | |
525 | |
526 alert : function(txt, cb, s) { | |
527 var t = this, w; | |
528 | |
529 w = t.open({ | |
530 title : t, | |
531 type : 'alert', | |
532 button_func : function(s) { | |
533 if (cb) | |
534 cb.call(s || t, s); | |
535 | |
536 t.close(null, w.id); | |
537 }, | |
538 content : DOM.encode(t.editor.getLang(txt, txt)), | |
539 inline : 1, | |
540 width : 400, | |
541 height : 130 | |
542 }); | |
543 }, | |
544 | |
545 confirm : function(txt, cb, s) { | |
546 var t = this, w; | |
547 | |
548 w = t.open({ | |
549 title : t, | |
550 type : 'confirm', | |
551 button_func : function(s) { | |
552 if (cb) | |
553 cb.call(s || t, s); | |
554 | |
555 t.close(null, w.id); | |
556 }, | |
557 content : DOM.encode(t.editor.getLang(txt, txt)), | |
558 inline : 1, | |
559 width : 400, | |
560 height : 130 | |
561 }); | |
562 }, | |
563 | |
564 // Internal functions | |
565 | |
566 _findId : function(w) { | |
567 var t = this; | |
568 | |
569 if (typeof(w) == 'string') | |
570 return w; | |
571 | |
572 each(t.windows, function(wo) { | |
573 var ifr = DOM.get(wo.id + '_ifr'); | |
574 | |
575 if (ifr && w == ifr.contentWindow) { | |
576 w = wo.id; | |
577 return false; | |
578 } | |
579 }); | |
580 | |
581 return w; | |
582 }, | |
583 | |
584 _fixIELayout : function(id, s) { | |
585 var w, img; | |
586 | |
587 if (!tinymce.isIE6) | |
588 return; | |
589 | |
590 // Fixes the bug where hover flickers and does odd things in IE6 | |
591 each(['n','s','w','e','nw','ne','sw','se'], function(v) { | |
592 var e = DOM.get(id + '_resize_' + v); | |
593 | |
594 DOM.setStyles(e, { | |
595 width : s ? e.clientWidth : '', | |
596 height : s ? e.clientHeight : '', | |
597 cursor : DOM.getStyle(e, 'cursor', 1) | |
598 }); | |
599 | |
600 DOM.setStyle(id + "_bottom", 'bottom', '-1px'); | |
601 | |
602 e = 0; | |
603 }); | |
604 | |
605 // Fixes graphics glitch | |
606 if (w = this.windows[id]) { | |
607 // Fixes rendering bug after resize | |
608 w.element.hide(); | |
609 w.element.show(); | |
610 | |
611 // Forced a repaint of the window | |
612 //DOM.get(id).style.filter = ''; | |
613 | |
614 // IE has a bug where images used in CSS won't get loaded | |
615 // sometimes when the cache in the browser is disabled | |
616 // This fix tries to solve it by loading the images using the image object | |
617 each(DOM.select('div,a', id), function(e, i) { | |
618 if (e.currentStyle.backgroundImage != 'none') { | |
619 img = new Image(); | |
620 img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1'); | |
621 } | |
622 }); | |
623 | |
624 DOM.get(id).style.filter = ''; | |
625 } | |
626 } | |
627 }); | |
628 | |
629 // Register plugin | |
630 tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups); | |
631 })(); | |
632 |