【问题标题】:How to add custom menu opton in Tinymce in Rails如何在 Rails 的 Tinymce 中添加自定义菜单选项
【发布时间】:2014-11-24 02:28:27
【问题描述】:

我正在为 Tinymce 使用 tinymce-rails gem,我想添加自定义菜单选项。现在,我正在执行 gem 的 readme 中的建议,例如:

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

我正在使用simple-form

我想在编辑器中添加一个带有一堆选项的下拉菜单(我有一个名称数组),当用户单击一个选项时,应将所选名称插入到编辑器的视图中。这些名称将是动态的。

我尝试将许多选项传递给初始化程序tinymce,但无法获得结果。

【问题讨论】:

    标签: ruby-on-rails tinymce tinymce-4 tinymce-rails


    【解决方案1】:

    您可以手动启动 tinymce 并同时创建菜单项,而不是使用 gem 中的默认启动器:

    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')
    

    【讨论】:

    • 感谢 Allan,但我想要类似于该选项的东西(使用 rails 初始化程序),因为我在 4-5 个不同的地方使用编辑器,并且我希望有条件地在几个地方使用菜单选项。如果我使用它,那么我必须在我通常不喜欢的视图中编写大量代码。有没有其他解决办法?
    • 您可以在您的 jquery 资产中定义这样的函数并使用您的参数调用它。或者,另一个不错的选择是 js.erb 部分,您可以在必要时使用参数调用它。有机会我会为你模拟一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多