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