97 lines
2.7 KiB
JavaScript
97 lines
2.7 KiB
JavaScript
|
/*##################################################|*/
|
||
|
/* #CMS.CKEDITOR# */
|
||
|
(function($) {
|
||
|
// CMS.$ will be passed for $
|
||
|
$(document).ready(function () {
|
||
|
/*!
|
||
|
* CNS.CKEditor
|
||
|
* @version: 1.1.0
|
||
|
* @description: Adds cms specific plugins to CKEditor
|
||
|
*/
|
||
|
CMS.CKEditor = {
|
||
|
|
||
|
options: {
|
||
|
// ckeditor default settings, will be overwritten by CKEDITOR_SETTINGS
|
||
|
'language': 'en',
|
||
|
'skin': 'moono',
|
||
|
'toolbar_CMS': [
|
||
|
['Undo', 'Redo'],
|
||
|
['cmsplugins', '-', 'ShowBlocks'],
|
||
|
['Format', 'Styles'],
|
||
|
['TextColor', 'BGColor', '-', 'PasteText', 'PasteFromWord'],
|
||
|
['Maximize', ''],
|
||
|
'/',
|
||
|
['Bold', 'Italic', 'Underline', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
|
||
|
['JustifyLeft', 'JustifyCenter', 'JustifyRight'],
|
||
|
['HorizontalRule'],
|
||
|
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Table'],
|
||
|
['Source']
|
||
|
],
|
||
|
'toolbar_HTMLField': [
|
||
|
['Undo', 'Redo'],
|
||
|
['ShowBlocks'],
|
||
|
['Format', 'Styles'],
|
||
|
['TextColor', 'BGColor', '-', 'PasteText', 'PasteFromWord'],
|
||
|
['Maximize', ''],
|
||
|
'/',
|
||
|
['Bold', 'Italic', 'Underline', '-', 'Subscript', 'Superscript', '-', 'RemoveFormat'],
|
||
|
['JustifyLeft', 'JustifyCenter', 'JustifyRight'],
|
||
|
['HorizontalRule'],
|
||
|
['Link', 'Unlink'],
|
||
|
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Table'],
|
||
|
['Source']
|
||
|
],
|
||
|
|
||
|
'allowedContent': true,
|
||
|
'toolbarCanCollapse': false,
|
||
|
'extraPlugins': 'cmsplugins'
|
||
|
},
|
||
|
|
||
|
init: function (container, options, settings) {
|
||
|
if ($('#' + container).length > 0) {
|
||
|
this.container = $('#' + container);
|
||
|
// add additional settings to options
|
||
|
this.options.toolbar = settings.toolbar;
|
||
|
this.options = $.extend(false, {
|
||
|
'settings': settings
|
||
|
}, this.options, options);
|
||
|
|
||
|
// add additional plugins (autoloads plugins.js)
|
||
|
CKEDITOR.plugins.addExternal('cmsplugins', settings.static_url + '/ckeditor_plugins/cmsplugins/');
|
||
|
|
||
|
// render ckeditor
|
||
|
this.editor = CKEDITOR.replace(container, this.options);
|
||
|
|
||
|
// add additional styling
|
||
|
CKEDITOR.on('instanceReady', $.proxy(CMS.CKEditor, 'setup'));
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// setup is called after ckeditor has been initialized
|
||
|
setup: function () {
|
||
|
// auto maximize modal if alone in a modal
|
||
|
if (this._isAloneInModal()) {
|
||
|
this.editor.execCommand('maximize');
|
||
|
}
|
||
|
|
||
|
// add css tweks to the editor
|
||
|
this.styles();
|
||
|
},
|
||
|
|
||
|
styles: function () {
|
||
|
// add styling to source and fullscreen view
|
||
|
$('.cke_button__maximize, .cke_button__source').parent()
|
||
|
.css('margin-right', 0).parent()
|
||
|
.css('float', 'right');
|
||
|
},
|
||
|
|
||
|
_isAloneInModal: function () {
|
||
|
// return true if the ckeditor is alone in a modal popup
|
||
|
return this.container.parents('body.djangocms_text_ckeditor-text').length > 0;
|
||
|
}
|
||
|
|
||
|
};
|
||
|
|
||
|
});
|
||
|
})(CMS.$);
|