Добавление HTML-кнопки в редактор Draftail Кнопки действий в Wagtail

У меня проблема с добавлением пользовательской кнопки в Wagtail к кнопкам RichTextEditor, при нажатии на которую пользователь редактора сможет добавить ссылку с html button.

Код, который я использовал для этого в TinyMCE, первоначально был представлен здесь: https://dev.to/codeanddeploy/tinymce-add-custom-button-example-399m

Но я не могу понять, как зарегистрировать хук в Wagtail, чтобы реализовать этот тип функциональности. Здесь есть похожий пример, но я не могу понять, как включить отображение фактической кнопки в стиле, который мы предопределили, как я сделал в редакторе TinyMCE.

Вот пример, который отлично работает для этого случая, но я надеюсь, что есть простой пример с идеей добавления кнопок, как я делал это в TinyMCE: https://erev0s.com/blog/wagtail-list-tips-and-tricks/#add-a-code-button-in-the-rich-text-editor

Вот код из этого сообщения:

from wagtail.core import hooks

@hooks.register("register_rich_text_features")
def register_code_styling(features):
    """Add the <code> to the richtext editor and page."""

    # Step 1
    feature_name = "code"
    type_ = "CODE"
    tag = "code"

    # Step 2
    control = {
        "type": type_,
        "label": "</>",
        "description": "Code"
    }

    # Step 3
    features.register_editor_plugin(
        "draftail", feature_name, draftail_features.InlineStyleFeature(control)
    )

    # Step 4
    db_conversion = {
        "from_database_format": {tag: InlineStyleElementHandler(type_)},
        "to_database_format": {"style_map": {type_: {"element": tag}}}
    }

    # Step 5
    features.register_converter_rule("contentstate", feature_name, db_conversion)

    # Step 6. This is optional
    # This will register this feature with all richtext editors by default
    features.default_features.append(feature_name)

Думаю, вам лучше создать блок для добавления кнопки призыва к действию. Когда мне нужно что-то подобное, я использую StructBlock с параметрами text, url и style https://docs.wagtail.org/en/latest/topics/streamfield.html#structblock

Вернуться на верх