Chris@0: /**
Chris@0: * DO NOT EDIT THIS FILE.
Chris@0: * See the following change record for more information,
Chris@0: * https://www.drupal.org/node/2815083
Chris@0: * @preserve
Chris@0: **/
Chris@0:
Chris@0: (function ($, Drupal, drupalSettings, _) {
Chris@0: Drupal.ckeditor = Drupal.ckeditor || {};
Chris@0:
Chris@0: Drupal.behaviors.ckeditorAdmin = {
Chris@0: attach: function attach(context) {
Chris@0: var $configurationForm = $(context).find('.ckeditor-toolbar-configuration').once('ckeditor-configuration');
Chris@0: if ($configurationForm.length) {
Chris@0: var $textarea = $configurationForm.find('.js-form-item-editor-settings-toolbar-button-groups').hide().find('textarea');
Chris@0:
Chris@0: $configurationForm.append(drupalSettings.ckeditor.toolbarAdmin);
Chris@0:
Chris@14: Drupal.ckeditor.models.Model = new Drupal.ckeditor.Model({
Chris@0: $textarea: $textarea,
Chris@0: activeEditorConfig: JSON.parse($textarea.val()),
Chris@0: hiddenEditorConfig: drupalSettings.ckeditor.hiddenCKEditorConfig
Chris@0: });
Chris@0:
Chris@0: var viewDefaults = {
Chris@14: model: Drupal.ckeditor.models.Model,
Chris@0: el: $('.ckeditor-toolbar-configuration')
Chris@0: };
Chris@0: Drupal.ckeditor.views = {
Chris@0: controller: new Drupal.ckeditor.ControllerView(viewDefaults),
Chris@0: visualView: new Drupal.ckeditor.VisualView(viewDefaults),
Chris@0: keyboardView: new Drupal.ckeditor.KeyboardView(viewDefaults),
Chris@0: auralView: new Drupal.ckeditor.AuralView(viewDefaults)
Chris@0: };
Chris@0: }
Chris@0: },
Chris@0: detach: function detach(context, settings, trigger) {
Chris@0: if (trigger !== 'unload') {
Chris@0: return;
Chris@0: }
Chris@0:
Chris@0: var $configurationForm = $(context).find('.ckeditor-toolbar-configuration').findOnce('ckeditor-configuration');
Chris@0: if ($configurationForm.length && Drupal.ckeditor.models && Drupal.ckeditor.models.Model) {
Chris@0: var config = Drupal.ckeditor.models.Model.toJSON().activeEditorConfig;
Chris@0: var buttons = Drupal.ckeditor.views.controller.getButtonList(config);
Chris@0: var $activeToolbar = $('.ckeditor-toolbar-configuration').find('.ckeditor-toolbar-active');
Chris@0: for (var i = 0; i < buttons.length; i++) {
Chris@0: $activeToolbar.trigger('CKEditorToolbarChanged', ['removed', buttons[i]]);
Chris@0: }
Chris@0: }
Chris@0: }
Chris@0: };
Chris@0:
Chris@0: Drupal.ckeditor = {
Chris@0: views: {},
Chris@0:
Chris@0: models: {},
Chris@0:
Chris@0: registerButtonMove: function registerButtonMove(view, $button, callback) {
Chris@0: var $group = $button.closest('.ckeditor-toolbar-group');
Chris@0:
Chris@0: if ($group.hasClass('placeholder')) {
Chris@0: if (view.isProcessing) {
Chris@0: return;
Chris@0: }
Chris@0: view.isProcessing = true;
Chris@0:
Chris@0: Drupal.ckeditor.openGroupNameDialog(view, $group, callback);
Chris@0: } else {
Chris@0: view.model.set('isDirty', true);
Chris@0: callback(true);
Chris@0: }
Chris@0: },
Chris@0: registerGroupMove: function registerGroupMove(view, $group) {
Chris@0: var $row = $group.closest('.ckeditor-row');
Chris@0: if ($row.hasClass('placeholder')) {
Chris@0: $row.removeClass('placeholder');
Chris@0: }
Chris@0:
Chris@0: $row.parent().children().each(function () {
Chris@0: $row = $(this);
Chris@0: if ($row.find('.ckeditor-toolbar-group').not('.placeholder').length === 0) {
Chris@0: $row.addClass('placeholder');
Chris@0: }
Chris@0: });
Chris@0: view.model.set('isDirty', true);
Chris@0: },
Chris@0: openGroupNameDialog: function openGroupNameDialog(view, $group, callback) {
Chris@0: callback = callback || function () {};
Chris@0:
Chris@0: function validateForm(form) {
Chris@0: if (form.elements[0].value.length === 0) {
Chris@0: var $form = $(form);
Chris@0: if (!$form.hasClass('errors')) {
Chris@0: $form.addClass('errors').find('input').addClass('error').attr('aria-invalid', 'true');
Chris@0: $('
' + Drupal.t('Please provide a name for the button group.') + '
').insertAfter(form.elements[0]);
Chris@0: }
Chris@0: return true;
Chris@0: }
Chris@0: return false;
Chris@0: }
Chris@0:
Chris@0: function closeDialog(action, form) {
Chris@0: function shutdown() {
Chris@0: dialog.close(action);
Chris@0:
Chris@0: delete view.isProcessing;
Chris@0: }
Chris@0:
Chris@0: function namePlaceholderGroup($group, name) {
Chris@0: if ($group.hasClass('placeholder')) {
Chris@0: var groupID = 'ckeditor-toolbar-group-aria-label-for-' + Drupal.checkPlain(name.toLowerCase().replace(/\s/g, '-'));
Chris@0: $group.removeAttr('aria-label').attr('data-drupal-ckeditor-type', 'group').attr('tabindex', 0).children('.ckeditor-toolbar-group-name').attr('id', groupID).end().children('.ckeditor-toolbar-group-buttons').attr('aria-labelledby', groupID);
Chris@0: }
Chris@0:
Chris@0: $group.attr('data-drupal-ckeditor-toolbar-group-name', name).children('.ckeditor-toolbar-group-name').text(name);
Chris@0: }
Chris@0:
Chris@0: if (action === 'cancel') {
Chris@0: shutdown();
Chris@0: callback(false, $group);
Chris@0: return;
Chris@0: }
Chris@0:
Chris@0: if (form && validateForm(form)) {
Chris@0: return;
Chris@0: }
Chris@0:
Chris@0: if (action === 'apply') {
Chris@0: shutdown();
Chris@0:
Chris@0: namePlaceholderGroup($group, Drupal.checkPlain(form.elements[0].value));
Chris@0:
Chris@0: $group.closest('.ckeditor-row.placeholder').addBack().removeClass('placeholder');
Chris@0:
Chris@0: callback(true, $group);
Chris@0:
Chris@0: view.model.set('isDirty', true);
Chris@0: }
Chris@0: }
Chris@0:
Chris@0: var $ckeditorButtonGroupNameForm = $(Drupal.theme('ckeditorButtonGroupNameForm'));
Chris@0: var dialog = Drupal.dialog($ckeditorButtonGroupNameForm.get(0), {
Chris@0: title: Drupal.t('Button group name'),
Chris@0: dialogClass: 'ckeditor-name-toolbar-group',
Chris@0: resizable: false,
Chris@0: buttons: [{
Chris@0: text: Drupal.t('Apply'),
Chris@0: click: function click() {
Chris@0: closeDialog('apply', this);
Chris@0: },
Chris@0:
Chris@0: primary: true
Chris@0: }, {
Chris@0: text: Drupal.t('Cancel'),
Chris@0: click: function click() {
Chris@0: closeDialog('cancel');
Chris@0: }
Chris@0: }],
Chris@0: open: function open() {
Chris@0: var form = this;
Chris@0: var $form = $(this);
Chris@0: var $widget = $form.parent();
Chris@0: $widget.find('.ui-dialog-titlebar-close').remove();
Chris@0:
Chris@0: $widget.on('keypress.ckeditor', 'input, button', function (event) {
Chris@0: if (event.keyCode === 13) {
Chris@0: var $target = $(event.currentTarget);
Chris@0: var data = $target.data('ui-button');
Chris@0: var action = 'apply';
Chris@0:
Chris@0: if (data && data.options && data.options.label) {
Chris@0: action = data.options.label.toLowerCase();
Chris@0: }
Chris@0: closeDialog(action, form);
Chris@0: event.stopPropagation();
Chris@0: event.stopImmediatePropagation();
Chris@0: event.preventDefault();
Chris@0: }
Chris@0: });
Chris@0:
Chris@0: var text = Drupal.t('Editing the name of the new button group in a dialog.');
Chris@0: if (typeof $group.attr('data-drupal-ckeditor-toolbar-group-name') !== 'undefined') {
Chris@0: text = Drupal.t('Editing the name of the "@groupName" button group in a dialog.', {
Chris@0: '@groupName': $group.attr('data-drupal-ckeditor-toolbar-group-name')
Chris@0: });
Chris@0: }
Chris@0: Drupal.announce(text);
Chris@0: },
Chris@0: close: function close(event) {
Chris@0: $(event.target).remove();
Chris@0: }
Chris@0: });
Chris@0:
Chris@0: dialog.showModal();
Chris@0:
Chris@0: $(document.querySelector('.ckeditor-name-toolbar-group').querySelector('input')).attr('value', $group.attr('data-drupal-ckeditor-toolbar-group-name')).trigger('focus');
Chris@0: }
Chris@0: };
Chris@0:
Chris@0: Drupal.behaviors.ckeditorAdminButtonPluginSettings = {
Chris@0: attach: function attach(context) {
Chris@0: var $context = $(context);
Chris@0: var $ckeditorPluginSettings = $context.find('#ckeditor-plugin-settings').once('ckeditor-plugin-settings');
Chris@0: if ($ckeditorPluginSettings.length) {
Chris@0: $ckeditorPluginSettings.find('[data-ckeditor-buttons]').each(function () {
Chris@0: var $this = $(this);
Chris@0: if ($this.data('verticalTab')) {
Chris@0: $this.data('verticalTab').tabHide();
Chris@0: } else {
Chris@0: $this.hide();
Chris@0: }
Chris@0: $this.data('ckeditorButtonPluginSettingsActiveButtons', []);
Chris@0: });
Chris@0:
Chris@0: $context.find('.ckeditor-toolbar-active').off('CKEditorToolbarChanged.ckeditorAdminPluginSettings').on('CKEditorToolbarChanged.ckeditorAdminPluginSettings', function (event, action, button) {
Chris@0: var $pluginSettings = $ckeditorPluginSettings.find('[data-ckeditor-buttons~=' + button + ']');
Chris@0:
Chris@0: if ($pluginSettings.length === 0) {
Chris@0: return;
Chris@0: }
Chris@0:
Chris@0: var verticalTab = $pluginSettings.data('verticalTab');
Chris@0: var activeButtons = $pluginSettings.data('ckeditorButtonPluginSettingsActiveButtons');
Chris@0: if (action === 'added') {
Chris@0: activeButtons.push(button);
Chris@0:
Chris@0: if (verticalTab) {
Chris@0: verticalTab.tabShow();
Chris@0: } else {
Chris@0: $pluginSettings.show();
Chris@0: }
Chris@0: } else {
Chris@0: activeButtons.splice(activeButtons.indexOf(button), 1);
Chris@0:
Chris@0: if (activeButtons.length === 0) {
Chris@0: if (verticalTab) {
Chris@0: verticalTab.tabHide();
Chris@0: } else {
Chris@0: $pluginSettings.hide();
Chris@0: }
Chris@0: }
Chris@0: }
Chris@0: $pluginSettings.data('ckeditorButtonPluginSettingsActiveButtons', activeButtons);
Chris@0: });
Chris@0: }
Chris@0: }
Chris@0: };
Chris@0:
Chris@0: Drupal.theme.ckeditorRow = function () {
Chris@0: return '';
Chris@0: };
Chris@0:
Chris@0: Drupal.theme.ckeditorToolbarGroup = function () {
Chris@0: var group = '';
Chris@0: group += '';
Chris@0: group += '';
Chris@0: group += '';
Chris@0: group += '';
Chris@0: return group;
Chris@0: };
Chris@0:
Chris@0: Drupal.theme.ckeditorButtonGroupNameForm = function () {
Chris@0: return '';
Chris@0: };
Chris@0:
Chris@0: Drupal.theme.ckeditorButtonGroupNamesToggle = function () {
Chris@0: return '';
Chris@0: };
Chris@0:
Chris@0: Drupal.theme.ckeditorNewButtonGroup = function () {
Chris@0: return '';
Chris@0: };
Chris@0: })(jQuery, Drupal, drupalSettings, _);