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: 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, _);