温馨提示:代码在线浏览功能只能做为源码浏览参考,不能展示项目的全部,如果想更进一步了解该代码请下载:BlogEngine v1.3 多皮肤多语言版源码
当前文件路径:BlogEngine/admin/tiny_mce/tiny_mce_popup.js

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(); 289




}
findWin :
}