Переключение на HTML атрибут выравнивания вместо значения по умолчанию CSS text-align для электронных писем - PullRequest
0 голосов
/ 10 января 2020

Я использую CKeditor 4 для электронной почты, и поэтому я хотел бы использовать выравнивание текста с атрибутом html align вместо css.

по умолчанию, например: <p style="text-align:center">test</p>

Что Мне нужно: <p align="center">test</p>

Я знаю, что атрибут align устарел, но он более надежен в электронных письмах, просматриваемых в более старых версиях Outlook, и проще для пользователей, которые ничего не знают о html / css.

Самым чистым решением, которое я нашел, работающим для меня, является внесение следующих изменений в конфигурацию. js:

  • Больше не отображаются кнопки выравнивания удалив { name: 'paragraph', items : [ 'JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock' ] }, из config.toolbar_MyToolbar.

  • Добавление config.disallowedContent = '*{text-align}';

  • Добавление некоторых дополнительных форматов абзацев и использование их для выравнивания вместо стандартные кнопки выравнивания:

    config.format_tags = 'left;center;right;justify;h1;h2;h3;h4'; config.format_left = { element: 'p', attributes: { 'align': 'left' } }; config.format_center = { element: 'p', attributes: { 'align': 'center' } }; config.format_right = { element: 'p', attributes: { 'align': 'right' } }; config.format_justify = { element: 'p', attributes: { 'align': 'justify' } }

(для этого мне пришлось добавить плагин Format)

Это работает отлично, но я предпочитаю использование кнопок, если это возможно, потому что они более интуитивно понятны или пользователи ...

У кого-нибудь есть решение для простого и легкого переключения с css выравнивания текста на атрибут html выравнивания?

Или, если проще и возможно, связать стандартные кнопки выравнивания с новыми добавленными стилями абзаца, которые уже делают свое дело.

Что-то в этом направлении, которое уже обнаруживает, когда я нажимаю стандартную центральную кнопку:

`CKEDITOR.on('instanceReady', function (ev) {

    // Create a new command with the desired exec function
    var editor = ev.editor;
    var overridecmd = new CKEDITOR.command(editor, {
        exec: function(editor){
            // Replace this with your desired save button code
            //alert(editor.document.getBody().getHtml());
            javascript:void('center');
        }
    });

    // Replace the old save's exec function with the new one
    ev.editor.commands.justifycenter.exec = overridecmd.exec;
});`

Но я не знаю, как вызвать функцию, которая вызывается при нажатии format_center в разделе «Формат абзаца». javascript:void('center'); это то, что я вижу при наведении курсора

Я очень ценю вашу помощь!

С уважением, Кристоф

EUREKA: я нашел простое решение без необходимости выше :

`var styleCenter = new CKEDITOR.style({
    element: 'p',
    attributes: {
        'align': 'center'
    }
});

    CKEDITOR.on('instanceReady', function (ev) {

        // Create a new command with the desired exec function
        var editor = ev.editor;
        var overridecmd = new CKEDITOR.command(editor, {
            exec: function(editor){
                // Replace this with your desired save button code
                editor.applyStyle(styleCenter);
            }
        });

        // Replace the old save's exec function with the new one
        ev.editor.commands.justifycenter.exec = overridecmd.exec;
    });`

Или есть лучшее решение?

...