551
+ − 1
var tinyMCE_GZ = {
+ − 2
settings : {
+ − 3
themes : '',
+ − 4
plugins : '',
+ − 5
languages : '',
+ − 6
disk_cache : true,
+ − 7
page_name : 'tiny_mce_gzip.php',
+ − 8
debug : false,
+ − 9
suffix : ''
+ − 10
},
582
+ − 11
551
+ − 12
init : function(s, cb, sc) {
+ − 13
var t = this, n, i, nl = document.getElementsByTagName('script');
+ − 14
+ − 15
for (n in s)
+ − 16
t.settings[n] = s[n];
+ − 17
+ − 18
s = t.settings;
+ − 19
582
+ − 20
t.baseURL = scriptPath + '/includes/clientside/tinymce';
551
+ − 21
+ − 22
if (!t.coreLoaded)
+ − 23
t.loadScripts(1, s.themes, s.plugins, s.languages, cb, sc);
+ − 24
},
+ − 25
+ − 26
loadScripts : function(co, th, pl, la, cb, sc) {
+ − 27
var t = this, x, w = window, q, c = 0, ti, s = t.settings;
+ − 28
+ − 29
function get(s) {
+ − 30
x = 0;
+ − 31
+ − 32
try {
+ − 33
x = new ActiveXObject(s);
+ − 34
} catch (s) {
+ − 35
}
+ − 36
+ − 37
return x;
+ − 38
};
+ − 39
+ − 40
// Build query string
+ − 41
q = 'js=true&diskcache=' + (s.disk_cache ? 'true' : 'false') + '&core=' + (co ? 'true' : 'false') + '&suffix=' + escape(s.suffix) + '&themes=' + escape(th) + '&plugins=' + escape(pl) + '&languages=' + escape(la);
+ − 42
+ − 43
if (co)
+ − 44
t.coreLoaded = 1;
+ − 45
+ − 46
// Send request
+ − 47
x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Msxml2.XMLHTTP') || get('Microsoft.XMLHTTP');
+ − 48
x.overrideMimeType && x.overrideMimeType('text/javascript');
+ − 49
x.open('GET', t.baseURL + '/' + s.page_name + '?' + q, !!cb);
+ − 50
// x.setRequestHeader('Content-Type', 'text/javascript');
+ − 51
x.send('');
+ − 52
+ − 53
// Handle asyncronous loading
+ − 54
if (cb) {
+ − 55
// Wait for response
+ − 56
ti = w.setInterval(function() {
+ − 57
if (x.readyState == 4 || c++ > 10000) {
+ − 58
w.clearInterval(ti);
+ − 59
+ − 60
if (c < 10000 && x.status == 200) {
+ − 61
t.loaded = 1;
+ − 62
t.eval(x.responseText);
+ − 63
tinymce.dom.Event.domLoaded = true;
+ − 64
cb.call(sc || t, x);
+ − 65
}
+ − 66
+ − 67
ti = x = null;
+ − 68
}
+ − 69
}, 10);
+ − 70
} else
+ − 71
t.eval(x.responseText);
+ − 72
},
+ − 73
+ − 74
start : function() {
+ − 75
var t = this, each = tinymce.each, s = t.settings, sl, ln = s.languages.split(',');
+ − 76
+ − 77
tinymce.suffix = s.suffix;
+ − 78
+ − 79
// Extend script loader
+ − 80
tinymce.create('tinymce.compressor.ScriptLoader:tinymce.dom.ScriptLoader', {
+ − 81
loadScripts : function(sc, cb, s) {
+ − 82
var ti = this, th = [], pl = [], la = [];
+ − 83
+ − 84
each(sc, function(o) {
+ − 85
var u = o.url;
+ − 86
+ − 87
if ((!ti.lookup[u] || ti.lookup[u].state != 2) && u.indexOf(t.baseURL) === 0) {
+ − 88
// Collect theme
+ − 89
if (u.indexOf('editor_template') != -1) {
+ − 90
th.push(/\/themes\/([^\/]+)/.exec(u)[1]);
+ − 91
load(u, 1);
+ − 92
}
+ − 93
+ − 94
// Collect plugin
+ − 95
if (u.indexOf('editor_plugin') != -1) {
+ − 96
pl.push(/\/plugins\/([^\/]+)/.exec(u)[1]);
+ − 97
load(u, 1);
+ − 98
}
+ − 99
+ − 100
// Collect language
+ − 101
if (u.indexOf('/langs/') != -1) {
+ − 102
la.push(/\/langs\/([^.]+)/.exec(u)[1]);
+ − 103
load(u, 1);
+ − 104
}
+ − 105
}
+ − 106
});
+ − 107
+ − 108
if (th.length + pl.length + la.length > 0) {
+ − 109
if (sl.settings.strict_mode) {
+ − 110
// Async
+ − 111
t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
+ − 112
return;
+ − 113
} else
+ − 114
t.loadScripts(0, th.join(','), pl.join(','), la.join(','), cb, s);
+ − 115
}
+ − 116
+ − 117
return ti.parent(sc, cb, s);
+ − 118
}
+ − 119
});
+ − 120
+ − 121
sl = tinymce.ScriptLoader = new tinymce.compressor.ScriptLoader();
+ − 122
+ − 123
function load(u, sp) {
+ − 124
var o;
+ − 125
+ − 126
if (!sp)
+ − 127
u = t.baseURL + u;
+ − 128
+ − 129
o = {url : u, state : 2};
+ − 130
sl.queue.push(o);
+ − 131
sl.lookup[o.url] = o;
+ − 132
};
+ − 133
+ − 134
// Add core languages
+ − 135
each (ln, function(c) {
+ − 136
if (c)
+ − 137
load('/langs/' + c + '.js');
+ − 138
});
+ − 139
+ − 140
// Add themes with languages
+ − 141
each(s.themes.split(','), function(n) {
+ − 142
if (n) {
+ − 143
load('/themes/' + n + '/editor_template' + s.suffix + '.js');
+ − 144
+ − 145
each (ln, function(c) {
+ − 146
if (c)
+ − 147
load('/themes/' + n + '/langs/' + c + '.js');
+ − 148
});
+ − 149
}
+ − 150
});
+ − 151
+ − 152
// Add plugins with languages
+ − 153
each(s.plugins.split(','), function(n) {
+ − 154
if (n) {
+ − 155
load('/plugins/' + n + '/editor_plugin' + s.suffix + '.js');
+ − 156
+ − 157
each (ln, function(c) {
+ − 158
if (c)
+ − 159
load('/plugins/' + n + '/langs/' + c + '.js');
+ − 160
});
+ − 161
}
+ − 162
});
+ − 163
},
+ − 164
+ − 165
end : function() {
+ − 166
},
+ − 167
+ − 168
eval : function(co) {
+ − 169
var w = window;
+ − 170
+ − 171
// Evaluate script
+ − 172
if (!w.execScript) {
+ − 173
if (/Gecko/.test(navigator.userAgent))
+ − 174
eval(co, w); // Firefox 3.0
+ − 175
else
+ − 176
eval.call(w, co);
+ − 177
} else
+ − 178
w.execScript(co); // IE
+ − 179
}
+ − 180
};