| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
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, re, title, divElm; 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 re = new RegExp('{|\\\$|}', 'g'); 69 title = document.title.replace(re, ""); 70 if (typeof(tinyMCELang[title]) != "undefined") { 71 divElm = document.createElement("div"); 72 divElm.innerHTML = tinyMCELang[title]; 73 document.title = divElm.innerHTML; 74 75 if (typeof(tinyMCE.setWindowTitle) != 'undefined') 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 var i, doc, body, oldMargin, wrapper, iframe, nodes, dx, dy; 127 128 // Netscape 7.1 workaround 129 if (this.isWindow && tinyMCE.isNS71) { 130 window.resizeBy(0, 10); 131 return; 132 } 133 134 if (this.isWindow) { 135 doc = document; 136 body = doc.body; 137 138 if (body.style.display == 'none') 139 body.style.display = 'block'; 140 141 // Remove margin 142 oldMargin = body.style.margin; 143 body.style.margin = '0'; 144 145 // Create wrapper 146 wrapper = doc.createElement("div"); 147 wrapper.id = 'mcBodyWrapper'; 148 wrapper.style.display = 'none'; 149 wrapper.style.margin = '0'; 150 151 // Wrap body elements 152 nodes = doc.body.childNodes; 153 for (i=nodes.length-1; i>=0; i--) { 154 if (wrapper.hasChildNodes()) 155 wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild); 156 else 157 wrapper.appendChild(nodes[i].cloneNode(true)); 158 159 nodes[i].parentNode.removeChild(nodes[i]); 160 } 161 162 // Add wrapper 163 doc.body.appendChild(wrapper); 164 165 // Create iframe 166 iframe = document.createElement("iframe"); 167 iframe.id = "mcWinIframe"; 168 iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document; 169 iframe.width = "100%"; 170 iframe.height = "100%"; 171 iframe.style.margin = '0'; 172 173 // Add iframe 174 doc.body.appendChild(iframe); 175 176 // Measure iframe 177 iframe = document.getElementById('mcWinIframe'); 178 dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth; 179 dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight; 180 181 // Resize window 182 // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy); 183 window.resizeBy(dx, dy); 184 185 // Hide iframe and show wrapper 186 body.style.margin = oldMargin; 187 iframe.style.display = 'none'; 188 wrapper.style.display = 'block'; 189 } 190 }, 191 192 resizeToContent : function() { 193 var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); 194 var isOpera = (navigator.userAgent.indexOf("Opera") != -1); 195 var elm, width, height, x, y, dx, dy; 196 197 if (isOpera) 198 return; 199 200 if (isMSIE) { 201 try { window.resizeTo(10, 10); } catch (e) {} 202 203 elm = document.body; 204 width = elm.offsetWidth; 205 height = elm.offsetHeight; 206 dx = (elm.scrollWidth - width) + 4; 207 dy = elm.scrollHeight - height; 208 209 try { window.resizeBy(dx, dy); } catch (e) {} 210 } else { 211 window.scrollBy(1000, 1000); 212 if (window.scrollX > 0 || window.scrollY > 0) { 213 window.resizeBy(window.innerWidth * 2, window.innerHeight * 2); 214 window.sizeToContent(); 215 window.scrollTo(0, 0); 216 x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0); 217 y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0); 218 window.moveTo(x, y); 219 } 220 } 221 }, 222 223 getWindowArg : function(name, default_value) { 224 return tinyMCE.getWindowArg(name, default_value); 225 }, 226 227 restoreSelection : function() { 228 var inst; 229 230 if (this.storeSelection) { 231 inst = tinyMCE.selectedInstance; 232 233 inst.getWin().focus(); 234 235 if (inst.selectionBookmark) 236 inst.selection.moveToBookmark(inst.selectionBookmark); 237 } 238 }, 239 240 execCommand : function(command, user_interface, value) { 241 var inst = tinyMCE.selectedInstance; 242 243 this.restoreSelection(); 244 inst.execCommand(command, user_interface, value); 245 246 // Store selection 247 if (this.storeSelection) 248 inst.selectionBookmark = inst.selection.getBookmark(true); 249 }, 250 251 close : function() { 252 tinyMCE.closeWindow(window); 253 }, 254 255 pickColor : function(e, element_id) { 256 tinyMCE.selectedInstance.execCommand('mceColorPicker', true, { 257 element_id : element_id, 258 document : document, 259 window : window, 260 store_selection : false 261 }); 262 }, 263 264 openBrowser : function(element_id, type, option) { 265 var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); 266 var url = document.getElementById(element_id).value; 267 268 tinyMCE.setWindowArg("window", window); 269 tinyMCE.setWindowArg("document", document); 270 271 // Call to external callback 272 if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined") 273 alert("Callback function: " + cb + " could not be found."); 274 else 275 eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);"); 276 }, 277 278 importClass : function(c) { 279 var n; 280 281 window[c] = function() {}; 282 283 for (n in window.opener[c].prototype) 284 window[c].prototype[n] = window.opener[c].prototype[n]; 285 286 window[c].constructor = window.opener[c].constructor; 287 } 288 289 }; 290 291 // Setup global instance 292 var tinyMCEPopup = new TinyMCE_Popup(); 293 294 tinyMCEPopup.init();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Dec 1 03:56:46 2008 | Cross-referenced by PHPXref 0.7 |