根据用户选择的 Tinymce 加载按钮

Tinymce load buttons according to users selection

我们正在为 transcription/annotation 使用 Tinymce。每个按钮都是'thing'的一种。但是我们有很多东西,所以不希望所有的东西都加载。

相反,我们希望微型 mce 编辑器默认隐藏所有按钮,但包含您正在转录的所有类型文档的下拉列表除外。然后用户可以 select 文档类型,瞧,按钮出现了。

Tinymce 可以吗?还有其他人这样做过吗?

这必须在 tinymce 编辑器中完成,因为我们将编辑器加载为浮动 window。

您是否考虑过根据用户输入动态加载和卸载 tinyMCE 实例?

我在这里整理了一个示例(带有下拉列表),其中演示了 3 个不同的 Tiny MCE 版本,带有不同的按钮。会有更好/更简洁的方法来做到这一点 - 这是一个演示概念(并显示它有效)的粗略示例

http://fiddle.tinymce.com/fVeaab/2

完整代码:

<script type="text/javascript">

function loadTinyMce(type) {
    var toolbar

    if(type!==null) {
        switch(type) {
          case "a":
              toolbar = "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";
          break;
          case "b":
              toolbar = "insertfile undo redo | styleselect | bold italic";
          break;
          case "c":
              toolbar = "bullist numlist outdent indent | link image";
          break;
      }

        //Kill current (Probably better way to do this)
        destroy();

      //Run setup function with a custom set of toolbars    
      setup(toolbar);
    }



}

function setup(toolbarOptions) {

    tinymce.init({
      selector: "textarea",
      plugins: [
          "advlist autolink lists link image charmap print preview anchor",
          "searchreplace visualblocks code fullscreen",
          "insertdatetime media table contextmenu paste"
      ],
      toolbar: toolbarOptions
  });
}

function destroy() {
    tinymce.remove();
}

</script>

<select onchange="loadTinyMce(this.value);">
<option value="">Choose</option>
<option value="a">Example A</option>
<option value="b">Example B</option>
<option value="c">Example C</option>
</select>

<Br><Br>
<textarea name="content" id="content"></textarea>

关键是保持设置不变,并根据您的情况修改用户选择的选项。

我稍微修改了@Pete 的代码,效果很好。

代码如下:

    <script type="text/javascript">

    var settings = {
        selector: "textarea",
        plugins: [
            "advlist autolink lists link image charmap print preview anchor",
            "searchreplace visualblocks code fullscreen",
            "insertdatetime media table contextmenu paste"
        ],
        toolbar: []
    };

    function loadTinyMce(type) {
        if (type !== null) {
            switch (type) {
                case "a":
                    settings.toolbar = "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";
                    break;
                case "b":
                    settings.toolbar = "insertfile undo redo | styleselect | bold italic";
                    break;
                case "c":
                    settings.toolbar = "bullist numlist outdent indent | link image";
                    break;
            }

            tinymce.remove();

            //Run setup function with a custom set of toolbars  
            tinymce.init(settings);
        }



    }

</script>

<select onchange="loadTinyMce(this.value);">
<option value="">Choose</option>
<option value="a">Example A</option>
<option value="b">Example B</option>
<option value="c">Example C</option>
</select>

<Br><Br>
<textarea name="content" id="content"></textarea>