Как добавить пользовательский оптон меню в Tinymce в Rails

Я использую tinymce-rails драгоценный камень для Tinymce, и я хочу добавить пользовательский пункт меню. Прямо сейчас я делаю то, что предлагается в readme драгоценного камня, как:

<%= f.input :content , :label => false ,  :placeholder => 'Content', input_html: {class: "tinymce"} %>
<%= tinymce %>

я использую simple-form,

Я хочу добавить раскрывающийся список в редакторе с кучей опций (у меня есть массив имен), и когда пользователь нажимает на опцию, то выбранное имя должно быть вставлено в представление редактора. И эти имена будут динамическими.

Я попытался передать много вариантов инициализатору tinymce но не смог получить результат.

1 ответ

Вместо того, чтобы использовать инициатор по умолчанию из драгоценного камня, вы можете инициировать tinymce вручную и одновременно создать пункт меню:

http://www.tinymce.com/tryit/menuitem.php

Что-то вроде этого:

<script type="text/javascript">
    tinymce.init({
        selector: '.my-class textarea',
        toolbar: "styleselect | bold italic | mybutton",
        setup: function(editor) {
        <% @my_items.each_with_index do |name, index| %>
            editor.addMenuItem('<%= name %>', {
                text: '<%= name %>',
                context: 'tools',
                onclick: function() {
                    editor.insertContent('<%= name %>');
                }
            <%= index == (@my_items.count - 1) ? '});' : '}),' %>
        < % end %>   
    });
</script>

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

Теоретически вы также можете сделать это в файле config / tinymce.yml, но из-за динамического характера это не совсем правдоподобно.

Что-то еще, на что вы можете обратить внимание, это передача меню в activeEditor, например:

tinyMCE.activeEditor.controlManager.get('my_menu')
Другие вопросы по тегам