MD Composer extras

Возможно ли переместить опцию «Создать опрос» (на компьютере) из дополнительного меню рядом с остальными кнопками форматирования?

Как и ваш запрос для мобильных устройств, это требует более сложного редактирования, которое я не могу добавить в этот компонент темы. Однако это должно быть выполнимо в рамках пользовательского компонента для настольных версий, следуя логике, представленной angus и spirobel.

3 лайка

Как можно убрать центральную кнопку и выровнять кнопки влево и вправо?

Кстати, мне очень нравится этот компонент.

Привет!

Вы можете добавить эти строки CSS в вашу тему или в компонент:

.align_center_button, .align_right_button, .align_justify_button {
    display: none;
}

Думаю, вы имели в виду кнопку выравнивания по ширине, так как выравнивание по левому краю не было добавлено в тот же компонент.

1 лайк

Можно ли переместить все эти новые кнопки в меню «Параметры»?

Это возможно, но вам придется немного покопаться в коде.

В разделе Desktop > Head вы найдете весь JavaScript — нужно изменить несколько строк.

Например, код для кнопки на панели инструментов выглядит так:

api.onToolbarCreate(toolbar => {
    toolbar.addButton({
        id: "underline_button",
        group: "fontStyles",
        icon: "underline",
        perform: e => e.applySurround('[u]', '[/u]', 'underline_text')
    });
});

Вам нужно заменить его на следующий:

api.addToolbarPopupMenuOptionsCallback(() => {
  return {
      action: "underline",
      icon: "underline",
      label: "underline_button"
  };
});

А затем добавить действие в этот блок:

api.modifyClass("controller:composer", {
  actions: {
    underline() {
      this.get("toolbarEvent").applySurround('[u]', '[/u]', "underline_text");
    },
    floatleft() {
      this.get("toolbarEvent").applySurround('[wrap="floatl"]\n', '\n[/wrap]', "float_left_text");
    },
    columns() {
      this.get("toolbarEvent").applySurround('[wrap="columns"]\n', '\n[/wrap]', "columns_text");
    }
  }
});

С переводом проблем быть не должно.

Вы быстро заметите, если что-то пойдёт не так, поскольку Discourse выводит сообщения об ошибках при сохранении изменений.

5 лайков

Отличный компонент, @Steven! Было бы здорово, если бы у нас также были H1, H2 и H3.

2 лайка

Можно ли добавить [color] [/color] к этому компоненту темы? Если да, то это было бы идеально, так как тогда можно будет использовать официальный редактор Discourse с поддержкой BBCode и Markdown. Сейчас я использую панель инструментов форматирования + mdcomposer. Конечно, я могу использовать CSS, чтобы скрыть лишние кнопки, но есть места, где CSS не применяется, например, в панели администратора или в плагине Custom Wizard от Pavilion. Кнопка цвета используется очень часто.

Вот что у меня получается с CSS (это идеально):
image

А вот что получается без него:
image

1 лайк

Мой план — создать компонент для тех, кто не хочет использовать плагин. Однако я сделаю ветку с поддержкой цветных BB-кодов. Попробую реализовать это через несколько часов, если будет время. Сообщу вам, когда всё будет готово, и расскажу, как установить.

Скорее всего, я потруду над реорганизацией компонента темы. По умолчанию я предпочитаю простой TC, но для тех, у кого есть официальный плагин BB-кодов, сделаю отдельную ветку «все опции» с кнопками для нижнего индекса и ветку BB-кодов.

2 лайка

Спасибо, кнопки нижнего и верхнего индекса — одна из причин продолжать использовать md composer, чего не хватает другим плагинам и компонентам тем. Официальный bbcode включает множество функций, отсутствующих в плагине панели форматирования, например [spoiler] [/spoiler]. Чтобы получить лучшее из обоих миров, я считаю, что лучше сохранить bbcode discourse, а затем добавить необходимые кнопки через mdcomposer.

Я не думал, что кнопки скриптов популярны, но оставлю их в базовом компоненте.

Создам несколько веток: одну простую — только с базовыми кнопками форматирования, и ветку для цветов, которая добавит цветовой bbcode.

2 лайка

Привет, ребята,

Хотел сообщить, что в md composer добавлена новая ветка color. Теперь вы можете использовать официальный плагин bbcode для Discourse + md composer (ветка color) + discourse spoiler-alert (размытие спойлеров). Считаю, что это лучшее доступное сочетание кнопок для композитора на Discourse.

Также есть идея добавить выбор цвета с использованием этой бесплатной библиотеки:

Если кто-то хочет помочь и знает, как добавить выбор цвета, не стесняйтесь помочь Стивену!

2 лайка

Как можно полностью скрыть или удалить некоторые из этих кнопок? Нам нужны лишь несколько из них, и я заметил, что удаление кнопки не убирает сам элемент — он всё ещё отображается в списке (остаётся пустое место без видимого значка).

Лучший способ — добавить несколько строк CSS в вашу текущую тему.

Я привёл эти примеры для кнопок выравнивания, если вы хотите их скрыть.

.align_center_button, .align_right_button, .align_justify_button {
    display: none;
}

Я также могу предоставить вам CSS-код для конкретных кнопок, которые нужно скрыть.

5 лайков

Привет, Стивен, отличный компонент. Спасибо, что поделился!

Вопрос на скорую руку: возможно ли добавить кнопки для вставки неразрывных пробелов (например, nbsp, ensp, emsp)? Что мне следует использовать вместо applySurround?

Некоторые участники моего сообщества испытывают трудности с форматированием постов (в основном отступами), и я думаю, что это им очень помогло бы.

Спасибо!

Да, вы можете легко добавить кнопку, и вместо applysurround я использую addText.

У меня есть этот старый пример, который вы можете использовать:

api.onToolbarCreate(toolbar => {
    toolbar.addButton({
        id: "br_button",
        group: "extras",
        icon: "level-down-alt",
        perform: e => e.addText('<br>', 'br_text')
    });
});
3 лайка

Спасибо! Это сработает!

Хм… Похоже, в панели инструментов форматирования Discourse нет зачёркивания, а здесь оно есть. Тем не менее, я предпочитаю панель форматирования, так как в ней есть всё остальное и даже больше, но мне бы хотелось иметь возможность зачёркивания. Что вы рекомендуете, учитывая проблему совместимости между этими двумя компонентами?

Я мог бы добавить кнопку зачёркивания в панель инструментов плагина — это может оказаться актуальным в будущем.

Я подумаю над этим, а пока вы можете использовать плагин и добавить этот компонент: GitHub - MonDiscourse/discourse-strikethrough: Add a strikethrough button in the composer · GitHub

Он добавит кнопку зачёркивания в всплывающее меню действий, и он совместим с плагином.

3 лайка

Я отправил pull-запрос: https://github.com/MonDiscourse/md-composer-extras/pull/10, который, если я не перепутал запятую или что-то в этом роде, должен исправить

Чтобы избежать ошибок в тестах, добавьте ключ `pluginId` в вызов `modifyClass`. Это обеспечит применение модификации только один раз.
2 лайка