I'm using the Ruby gem for CK Editor (https://github.com/galetahub/ckeditor) and I'm getting this error:
Uncaught TypeError: Cannot read property 'langEntries' of null
Here's where it's occurring in the code:
CKEDITOR.plugins.load = CKEDITOR.tools.override(CKEDITOR.plugins.load, function (a) {
var d = {};
return function (b, c, e) {
var i = {},
g = function (b) {
a.call(this, b, function (a) {
CKEDITOR.tools.extend(i, a);
var b = [],
l;
for (l in a) {
var s = a[l],
q = s && s.requires;
if (!d[l]) {
if (s.icons)
for (var u = s.icons.split(","), f = u.length; f--;) CKEDITOR.skin.addIcon(u[f], s.path + "icons/" + (CKEDITOR.env.hidpi && s.hidpi ? "hidpi/" : "") + u[f] + ".png");
d[l] = 1
}
if (q) {
q.split && (q = q.split(","));
for (s = 0; s < q.length; s++) i[q[s]] || b.push(q[s])
}
}
if (b.length) g.call(this,
b);
else { *ERRORING HERE*
for (l in i) {
s = i[l];
if (s.onLoad && !s.onLoad._called) {
s.onLoad() === false && delete i[l];
s.onLoad._called = 1
}
}
c && c.call(e || window, i)
}
}, this)
};
g.call(this, b)
}
});
CKEDITOR.plugins.setLang = function (a, d, b) {
var c = this.get(a),
a = c.langEntries || (c.langEntries = {}),
c = c.lang || (c.lang = []);
c.split && (c = c.split(","));
CKEDITOR.tools.indexOf(c, d) == -1 && c.push(d);
a[d] = b
};
CKEDITOR.ui = function (a) {
if (a.ui) return a.ui;
this.items = {};
this.instances = {};
this.editor = a;
this._ = {
handlers: {}
};
return this
};
I'm trying to use this Simple Uploads plugin and it has a whole bunch of languages. My directory structure is like this:
Here's the documentation for CK Editor for this error:
http://docs.ckeditor.com/#!/api/CKEDITOR.plugins-method-setLang
All of my plugin's language files are formatted correctly, so struggling to find what the issue is.
Any help with resolving this would be greatly appreciated
EDIT: Here's the English lang file -
CKEDITOR.plugins.setLang( 'simpleuploads', 'en',
{
// Tooltip for the "add file" toolbar button
addFile : 'Add a file',
// Tooltip for the "add image" toolbar button
addImage: 'Add an image',
// Shown after the data has been sent to the server and we're waiting for the response
processing: 'Processing...',
// File size is over config.simpleuploads_maxFileSize OR the server returns HTTP status 413
fileTooBig : 'The file is too big, please use a smaller one.',
// The extension matches one of the blacklisted ones in config.simpleuploads_invalidExtensions
invalidExtension : 'Invalid file type, please use only valid files.',
// The extension isn't included in config.simpleuploads_acceptedExtensions
nonAcceptedExtension: 'The file type is not valid, please use only valid files:\r\n%0',
// The file isn't an accepted type for images
nonImageExtension: 'You must select an image',
// The width of the image is over the allowed maximum
imageTooWide: 'The image is too wide',
// The height of the image is over the allowed maximum
imageTooTall: 'The image is too tall'
});
The problem comes from the way rails compiles the assets. It generates one big js file and if your plugin.js code does not load before the files in the /lang it throws an error and stops the execution of the generated by rails big js file. This means if you have any js code past the point where the error occurred it won't be executed as well. Here is what helped me solve the problem:
//= require ckeditor/init
//= require ckeditor/config
//= require ckeditor/plugins/YOUR_PLUGIN/plugin // plugin.js in folder
//= require ckeditor/plugins/YOUR_PLUGIN/lang/en // en.js in folder
//= require_directory .
Remove the following line from application.js
// = require_tree ./ckeditor
If you are using ckeditor-rails
In app/assets/javascripts/application.js
, add:
//= require ckeditor-jquery
and ensure that language value is like this:
config.language = 'en';
config.language_list = [ 'en:English', 'es:Spanish' ];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With