Как добавить пользовательский оптон меню в 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')