Last active
December 12, 2015 00:18
-
-
Save aschempp/4682480 to your computer and use it in GitHub Desktop.
Allow to load multiple tinyMCE configs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var tinyMCE_GZ_shim = tinyMCE_GZ_shim || (function() { | |
"use strict"; | |
var tinyMCE_GZ = window.tinyMCE_GZ; | |
var tinyMCE = null; | |
var initialized = false; | |
var config_gz = []; | |
var config_tiny = {}; | |
var create_shim = function(t, s) { | |
var shim, k; | |
if (Object.create) { | |
shim = Object.create(t); | |
for (k in s) { | |
if (s.hasOwnProperty(k)) { | |
shim[k] = s[k]; | |
} | |
} | |
} else { | |
shim = s; | |
shim.__proto__ = t; | |
} | |
return shim; | |
} | |
var array_unique = function(arr) { | |
var unique = []; | |
var i, total; | |
arr = arr.sort(); | |
for (i=0, total=arr.length; i<total; i++) { | |
if (arr[i + 1] != arr[i]) { | |
unique.push(arr[i]); | |
} | |
} | |
return unique; | |
} | |
var tinyMCE_GZ_shim = { | |
init: function(s) { | |
config_gz.push(s) | |
} | |
} | |
var tinyMCE_shim = { | |
init: function(s) { | |
var elements = s.elements.split(','); | |
var i, total; | |
for (i=0, total=elements.length; i<total; i++) { | |
config_tiny[elements[i]] = s; | |
} | |
}, | |
execCommand: function(c, u, v) { | |
initialize(); | |
if (tinyMCE && typeof config_tiny[v] != 'undefined') { | |
tinyMCE.init(config_tiny[v]); | |
tinyMCE.execCommand(c, u, v); | |
} | |
} | |
} | |
var initialize = function() { | |
if (initialized) return; | |
var settings = {plugins:[], themes:[], languages:[]}; | |
var i, s, k, total; | |
for (i=0, total=config_gz.length;i<total; i++) { | |
s = config_gz[i]; | |
for (k in s) { | |
if (k == 'plugins' || k == 'themes' || k == 'languages') { | |
[].push.apply(settings[k], s[k].split(',')); | |
} | |
else if (s.hasOwnProperty(k)) { | |
settings[k] = s[k]; | |
} | |
} | |
} | |
settings.plugins = array_unique(settings.plugins).join(','); | |
settings.themes = array_unique(settings.themes).join(','); | |
settings.languages = array_unique(settings.languages).join(','); | |
// load tinyMCE | |
tinyMCE_GZ.init(settings); | |
tinyMCE = window.tinyMCE; | |
tinyMCE_shim = create_shim(tinyMCE, tinyMCE_shim); | |
window.tinyMCE = tinyMCE_shim; | |
initialized = true; | |
} | |
window.tinyMCE = tinyMCE_shim; | |
tinyMCE_GZ_shim = create_shim(tinyMCE_GZ, tinyMCE_GZ_shim); | |
return tinyMCE_GZ_shim; | |
})(); | |
window.tinyMCE_GZ = tinyMCE_GZ_shim; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment