I'm trying to override default justify left/right/center in creditor 4 so they will justify whole text to left/right/center instead of every line separately. I've added code below into creditor.config.js and all works ok but I can't update/refresh new values in ckeditor. Looks like setData() does update ckeditor values but it executes in a loop, tried wrapping it in setTimout() but that doesn't change anything. Tried update element, setValue, setHtml...
CKEDITOR.on('instanceReady', function (ev) {
ev.editor.on('selectionChange', function () {
var text = ev.editor.getData();
text = text.replace(new RegExp('(class="rtecenter")|(class="rteleft") |(class="rteright")','g'),'');
text = '<div class="rteleft">'+text+'</div>';
// ev.editor.setData(text);
// ev.editor.element.setValue(text);
// ev.editor.element.setHtml(text);
});
});
Right, thanks! Got it working eventually, pretty simple... i.e. This is how to override 'justifycenter' command in CKEditor 4 :
CKEDITOR.on('instanceReady', function (ev) {
var editor = ev.editor;
var overridecmd_justifycenter = new CKEDITOR.command(editor, {
exec: function(editor){
var ps = editor.document.$.getElementsByTagName("p");
for (var i=0; i < ps.length; i++){
if(ps[i].className.indexOf("rtecenter") < 0) {
ps[i].className = "rtecenter";
}
}
}
});
// Replace default button commands with overrides
ev.editor.commands.justifycenter.exec = overridecmd_justifycenter.exec;
});