[ Index ] |
|
Code source de e107 0.7.8 |
1 // Some global instances, this will be filled later 2 var tinyMCE = null, tinyMCELang = null; 3 4 function TinyMCE_Popup() { 5 }; 6 7 TinyMCE_Popup.prototype = { 8 findWin : function(w) { 9 var c; 10 11 // Check parents 12 c = w; 13 while (c && (c = c.parent) != null) { 14 if (typeof(c.tinyMCE) != "undefined") 15 return c; 16 } 17 18 // Check openers 19 c = w; 20 while (c && (c = c.opener) != null) { 21 if (typeof(c.tinyMCE) != "undefined") 22 return c; 23 } 24 25 // Try top 26 if (typeof(top.tinyMCE) != "undefined") 27 return top; 28 29 return null; 30 }, 31 32 init : function() { 33 var win = window.opener ? window.opener : window.dialogArguments, c; 34 var inst; 35 36 if (!win) 37 win = this.findWin(window); 38 39 if (!win) { 40 alert("tinyMCE object reference not found from popup."); 41 return; 42 } 43 44 window.opener = win; 45 this.windowOpener = win; 46 this.onLoadEval = ""; 47 48 // Setup parent references 49 tinyMCE = win.tinyMCE; 50 tinyMCELang = win.tinyMCELang; 51 52 inst = tinyMCE.selectedInstance; 53 this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false; 54 this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true); 55 56 if (this.isWindow) 57 window.focus(); 58 59 // Store selection 60 if (this.storeSelection) 61 inst.selectionBookmark = inst.selection.getBookmark(true); 62 63 // Setup dir 64 if (tinyMCELang['lang_dir']) 65 document.dir = tinyMCELang['lang_dir']; 66 67 // Setup title 68 var re = new RegExp('{|\\\$|}', 'g'); 69 var title = document.title.replace(re, ""); 70 if (typeof tinyMCELang[title] != "undefined") { 71 var divElm = document.createElement("div"); 72 divElm.innerHTML = tinyMCELang[title]; 73 document.title = divElm.innerHTML; 74 75 if (tinyMCE.setWindowTitle != null) 76 tinyMCE.setWindowTitle(window, divElm.innerHTML); 77 } 78 79 // Output Popup CSS class 80 document.write('<link href="' + tinyMCE.getParam("popups_css") + '" rel="stylesheet" type="text/css">'); 81 82 if (tinyMCE.getParam("popups_css_add")) { 83 c = tinyMCE.getParam("popups_css_add"); 84 85 // Is relative 86 if (c.indexOf('://') == -1 && c.charAt(0) != '/') 87 c = tinyMCE.documentBasePath + "/" + c; 88 89 document.write('<link href="' + c + '" rel="stylesheet" type="text/css">'); 90 } 91 92 tinyMCE.addEvent(window, "load", this.onLoad); 93 }, 94 95 onLoad : function() { 96 var dir, i, elms, body = document.body; 97 98 if (tinyMCE.getWindowArg('mce_replacevariables', true)) 99 body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs); 100 101 dir = tinyMCE.selectedInstance.settings['directionality']; 102 if (dir == "rtl" && document.forms && document.forms.length > 0) { 103 elms = document.forms[0].elements; 104 for (i=0; i<elms.length; i++) { 105 if ((elms[i].type == "text" || elms[i].type == "textarea") && elms[i].getAttribute("dir") != "ltr") 106 elms[i].dir = dir; 107 } 108 } 109 110 if (body.style.display == 'none') 111 body.style.display = 'block'; 112 113 // Execute real onload (Opera fix) 114 if (tinyMCEPopup.onLoadEval != "") 115 eval(tinyMCEPopup.onLoadEval); 116 }, 117 118 executeOnLoad : function(str) { 119 if (tinyMCE.isOpera) 120 this.onLoadEval = str; 121 else 122 eval(str); 123 }, 124 125 resizeToInnerSize : function() { 126 // Netscape 7.1 workaround 127 if (this.isWindow && tinyMCE.isNS71) { 128 window.resizeBy(0, 10); 129 return; 130 } 131 132 if (this.isWindow) { 133 var doc = document; 134 var body = doc.body; 135 var oldMargin, wrapper, iframe, nodes, dx, dy; 136 137 if (body.style.display == 'none') 138 body.style.display = 'block'; 139 140 // Remove margin 141 oldMargin = body.style.margin; 142 body.style.margin = '0'; 143 144 // Create wrapper 145 wrapper = doc.createElement("div"); 146 wrapper.id = 'mcBodyWrapper'; 147 wrapper.style.display = 'none'; 148 wrapper.style.margin = '0'; 149 150 // Wrap body elements 151 nodes = doc.body.childNodes; 152 for (var i=nodes.length-1; i>=0; i--) { 153 if (wrapper.hasChildNodes()) 154 wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild); 155 else 156 wrapper.appendChild(nodes[i].cloneNode(true)); 157 158 nodes[i].parentNode.removeChild(nodes[i]); 159 } 160 161 // Add wrapper 162 doc.body.appendChild(wrapper); 163 164 // Create iframe 165 iframe = document.createElement("iframe"); 166 iframe.id = "mcWinIframe"; 167 iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document']; 168 iframe.width = "100%"; 169 iframe.height = "100%"; 170 iframe.style.margin = '0'; 171 172 // Add iframe 173 doc.body.appendChild(iframe); 174 175 // Measure iframe 176 iframe = document.getElementById('mcWinIframe'); 177 dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth; 178 dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight; 179 180 // Resize window 181 // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy); 182 window.resizeBy(dx, dy); 183 184 // Hide iframe and show wrapper 185 body.style.margin = oldMargin; 186 iframe.style.display = 'none'; 187 wrapper.style.display = 'block'; 188 } 189 }, 190 191 resizeToContent : function() { 192 var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); 193 var isOpera = (navigator.userAgent.indexOf("Opera") != -1); 194 195 if (isOpera) 196 return; 197 198 if (isMSIE) { 199 try { window.resizeTo(10, 10); } catch (e) {} 200 201 var elm = document.body; 202 var width = elm.offsetWidth; 203 var height = elm.offsetHeight; 204 var dx = (elm.scrollWidth - width) + 4; 205 var dy = elm.scrollHeight - height; 206 207 try { window.resizeBy(dx, dy); } catch (e) {} 208 } else { 209 window.scrollBy(1000, 1000); 210 if (window.scrollX > 0 || window.scrollY > 0) { 211 window.resizeBy(window.innerWidth * 2, window.innerHeight * 2); 212 window.sizeToContent(); 213 window.scrollTo(0, 0); 214 var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0); 215 var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0); 216 window.moveTo(x, y); 217 } 218 } 219 }, 220 221 getWindowArg : function(name, default_value) { 222 return tinyMCE.getWindowArg(name, default_value); 223 }, 224 225 restoreSelection : function() { 226 if (this.storeSelection) { 227 var inst = tinyMCE.selectedInstance; 228 229 inst.getWin().focus(); 230 231 if (inst.selectionBookmark) 232 inst.selection.moveToBookmark(inst.selectionBookmark); 233 } 234 }, 235 236 execCommand : function(command, user_interface, value) { 237 var inst = tinyMCE.selectedInstance; 238 239 this.restoreSelection(); 240 inst.execCommand(command, user_interface, value); 241 242 // Store selection 243 if (this.storeSelection) 244 inst.selectionBookmark = inst.selection.getBookmark(true); 245 }, 246 247 close : function() { 248 tinyMCE.closeWindow(window); 249 }, 250 251 pickColor : function(e, element_id) { 252 tinyMCE.selectedInstance.execCommand('mceColorPicker', true, { 253 element_id : element_id, 254 document : document, 255 window : window, 256 store_selection : false 257 }); 258 }, 259 260 openBrowser : function(element_id, type, option) { 261 var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); 262 var url = document.getElementById(element_id).value; 263 264 tinyMCE.setWindowArg("window", window); 265 tinyMCE.setWindowArg("document", document); 266 267 // Call to external callback 268 if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined") 269 alert("Callback function: " + cb + " could not be found."); 270 else 271 eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);"); 272 }, 273 274 importClass : function(c) { 275 window[c] = function() {}; 276 277 for (var n in window.opener[c].prototype) 278 window[c].prototype[n] = window.opener[c].prototype[n]; 279 280 window[c].constructor = window.opener[c].constructor; 281 } 282 283 }; 284 285 // Setup global instance 286 var tinyMCEPopup = new TinyMCE_Popup(); 287 288 tinyMCEPopup.init();
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Apr 1 01:23:32 2007 | par Balluche grâce à PHPXref 0.7 |