Commit ffcf3e6c authored by catch's avatar catch
Browse files

Issue #3261585 by longwave, ankithashetty, Wim Leers: Remove IE11 warning for...

Issue #3261585 by longwave, ankithashetty, Wim Leers: Remove IE11 warning for CKEditor 5 in Drupal 10, since Drupal 10 does not support IE anyway
parent a76814b0
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ drupal.ckeditor5:
    - core/ckeditor5.editorDecoupled
    - core/ckeditor5
    - editor/drupal.editor
    - ckeditor5/ie11.user.warnings
    - ckeditor5/drupal.ckeditor5.stylesheets
    - core/drupalSettings
    - core/drupal.message
@@ -85,25 +84,6 @@ drupal.ckeditor5.mediaAlign:
  dependencies:
    - ckeditor5/drupal.ckeditor5.media

ie11.user.warnings:
  js:
    js/ie11.user.warnings.js: { }
  css:
    theme:
      css/ie-warnings.css: { }
  dependencies:
    - core/drupal
    - core/drupal.message
    - editor/drupal.editor

ie11.filter.warnings:
  js:
    js/ie11.filter.warnings.js: {}
  dependencies:
    - core/drupal
    - core/drupal.message
    - core/once

drupal.ckeditor5.filter.admin:
  js:
    js/ckeditor5.filter.admin.js: {}
+0 −1
Original line number Diff line number Diff line
@@ -397,7 +397,6 @@ function _ckeditor5_get_langcode_mapping($lang = FALSE) {
 */
function ckeditor5_library_info_alter(&$libraries, $extension) {
  if ($extension === 'filter') {
    $libraries['drupal.filter.admin']['dependencies'][] = 'ckeditor5/ie11.filter.warnings';
    $libraries['drupal.filter.admin']['dependencies'][] = 'ckeditor5/drupal.ckeditor5.filter.admin';
  }

+0 −17
Original line number Diff line number Diff line
.quickedit-field.quickedit-highlighted.ck5-ie11,
.quickedit-form.quickedit-highlighted.ck5-ie11,
.quickedit-field .quickedit-highlighted.ck5-ie11 {
  cursor: default;
  box-shadow: 0 0 0 1px #f00, 0 0 0 2px #f00;
}

.quickedit .icon.ck5-ie11 {
  margin-left: 0.5em;
  padding-left: 1.5em;
}

.quickedit .icon.ck5-ie11:before {
  background-image: url(../../../misc/icons/e32700/error.svg);
  background-position: left center;
  background-size: 1.3em;
}
+0 −121
Original line number Diff line number Diff line
/**
 * @file
 * Provides IE11 compatibility warnings when choosing a text editor.
 */

((Drupal, once) => {
  /**
   * Presents a warning when selecting CKEditor 5 as a text format's text editor.
   *
   * @type {Drupal~behavior}
   */
  Drupal.behaviors.ckEditor5warn = {
    attach: function attach() {
      const isIE11 = !!document.documentMode;
      const editorSelect = once(
        'editor-ie11-warning',
        '[data-drupal-selector="filter-format-edit-form"] [data-drupal-selector="edit-editor-editor"], [data-drupal-selector="filter-format-add-form"] [data-drupal-selector="edit-editor-editor"]',
      );

      if (typeof editorSelect[0] !== 'undefined') {
        const select = editorSelect[0];

        // Add a container for messages above the text format select element.
        const selectMessageContainer = document.createElement('div');
        select.parentNode.after(selectMessageContainer, select);
        const selectMessages = new Drupal.Message(selectMessageContainer);
        const editorSettings = document.querySelector(
          '#editor-settings-wrapper',
        );

        /**
         * Adds IE11 compatibility warnings to the message container.
         */
        const addIE11Warning = () => {
          selectMessages.add(
            Drupal.t(
              'CKEditor 5 is not compatible with Internet Explorer. Text fields using CKEditor 5 will fall back to plain HTML editing without CKEditor for users of Internet Explorer.',
            ),
            {
              type: 'warning',
              id: 'ie_11_warning',
            },
          );
          if (isIE11) {
            // https://www.drupal.org/docs/system-requirements/browser-requirements
            selectMessages.add(
              Drupal.t(
                'Text editor toolbar settings are not available in Internet Explorer. They will be available in other <a href="@supported-browsers">supported browsers</a>.',
                {
                  '@supported-browsers':
                    'https://www.drupal.org/docs/system-requirements/browser-requirements',
                },
              ),
              {
                type: 'error',
                id: 'ie_11_error',
              },
            );
            editorSettings.hidden = true;
          }
        };

        /**
         * Adds a warning if the selected editor is CKEditor 5, otherwise clears
         * any existing IE11 warnings.
         */
        const updateWarningStatus = () => {
          if (
            select.value === 'ckeditor5' &&
            !select.hasAttribute('data-error-switching-to-ckeditor5')
          ) {
            addIE11Warning();
          } else {
            if (selectMessages.select('ie_11_warning')) {
              selectMessages.remove('ie_11_warning');
            }
            if (selectMessages.select('ie_11_error')) {
              selectMessages.remove('ie_11_error');
            }
          }
        };

        updateWarningStatus();

        // This observer listens for two different attribute changes that, when
        // they occur, may require adding or removing the IE11 warnings.
        // - If the disabled attribute was removed, which is potentially due to
        //   an AJAX update having completed.
        // - If the data-error-switching-to-ckeditor5 attribute was removed,
        //   which means a switch to CKEditor 5 that was previously blocked due
        //   to validation errors has resumed and completed.
        const editorSelectObserver = new MutationObserver((mutations) => {
          for (let i = 0; i < mutations.length; i++) {
            // When the select input is no longer disabled, the AJAX request
            // is complete and the UI is in a state where it can be determined
            // if the ckeditor_stylesheets warning is needed.
            const switchToCKEditor5Complete =
              mutations[i].type === 'attributes' &&
              mutations[i].attributeName === 'disabled' &&
              !select.disabled;
            const fixedErrorsPreventingSwitchToCKEditor5 =
              mutations[i].type === 'attributes' &&
              mutations[i].attributeName ===
                'data-error-switching-to-ckeditor5' &&
              !select.hasAttribute('data-error-switching-to-ckeditor5');
            if (
              switchToCKEditor5Complete ||
              fixedErrorsPreventingSwitchToCKEditor5
            ) {
              updateWarningStatus();
            }
          }
        });

        editorSelectObserver.observe(select, {
          attributes: true,
        });
      }
    },
  };
})(Drupal, once);
+0 −69
Original line number Diff line number Diff line
/**
* DO NOT EDIT THIS FILE.
* See the following change record for more information,
* https://www.drupal.org/node/2815083
* @preserve
**/

((Drupal, once) => {
  Drupal.behaviors.ckEditor5warn = {
    attach: function attach() {
      const isIE11 = !!document.documentMode;
      const editorSelect = once('editor-ie11-warning', '[data-drupal-selector="filter-format-edit-form"] [data-drupal-selector="edit-editor-editor"], [data-drupal-selector="filter-format-add-form"] [data-drupal-selector="edit-editor-editor"]');

      if (typeof editorSelect[0] !== 'undefined') {
        const select = editorSelect[0];
        const selectMessageContainer = document.createElement('div');
        select.parentNode.after(selectMessageContainer, select);
        const selectMessages = new Drupal.Message(selectMessageContainer);
        const editorSettings = document.querySelector('#editor-settings-wrapper');

        const addIE11Warning = () => {
          selectMessages.add(Drupal.t('CKEditor 5 is not compatible with Internet Explorer. Text fields using CKEditor 5 will fall back to plain HTML editing without CKEditor for users of Internet Explorer.'), {
            type: 'warning',
            id: 'ie_11_warning'
          });

          if (isIE11) {
            selectMessages.add(Drupal.t('Text editor toolbar settings are not available in Internet Explorer. They will be available in other <a href="@supported-browsers">supported browsers</a>.', {
              '@supported-browsers': 'https://www.drupal.org/docs/system-requirements/browser-requirements'
            }), {
              type: 'error',
              id: 'ie_11_error'
            });
            editorSettings.hidden = true;
          }
        };

        const updateWarningStatus = () => {
          if (select.value === 'ckeditor5' && !select.hasAttribute('data-error-switching-to-ckeditor5')) {
            addIE11Warning();
          } else {
            if (selectMessages.select('ie_11_warning')) {
              selectMessages.remove('ie_11_warning');
            }

            if (selectMessages.select('ie_11_error')) {
              selectMessages.remove('ie_11_error');
            }
          }
        };

        updateWarningStatus();
        const editorSelectObserver = new MutationObserver(mutations => {
          for (let i = 0; i < mutations.length; i++) {
            const switchToCKEditor5Complete = mutations[i].type === 'attributes' && mutations[i].attributeName === 'disabled' && !select.disabled;
            const fixedErrorsPreventingSwitchToCKEditor5 = mutations[i].type === 'attributes' && mutations[i].attributeName === 'data-error-switching-to-ckeditor5' && !select.hasAttribute('data-error-switching-to-ckeditor5');

            if (switchToCKEditor5Complete || fixedErrorsPreventingSwitchToCKEditor5) {
              updateWarningStatus();
            }
          }
        });
        editorSelectObserver.observe(select, {
          attributes: true
        });
      }
    }
  };
})(Drupal, once);
 No newline at end of file
Loading