96 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			96 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.$);
							 |