【问题标题】:adding custom drop down list in tinymce在 tinymce 中添加自定义下拉列表
【发布时间】:2013-05-15 09:47:19
【问题描述】:

我必须在 tinymce 中显示一个下拉列表。我用谷歌搜索找到任何教程或任何好的例子,但我刚刚找到了代码:

// Adds a menu to the currently active editor instance
var dm = tinyMCE.activeEditor.controlManager.createDropMenu('somemenu');

// Add some menu items
dm.add({title : 'Menu 1', onclick : function() {
    alert('Item 1 was clicked.');
}});

dm.add({title : 'Menu 2', onclick : function() {
    alert('Item 2 was clicked.');
}});

// Adds a submenu
var sub1 = dm.addMenu({title : 'Menu 3'});
sub1.add({title : 'Menu 1.1', onclick : function() {
    alert('Item 1.1 was clicked.');
}});

// Adds a horizontal separator
sub1.addSeparator();

sub1.add({title : 'Menu 1.2', onclick : function() {
    alert('Item 1.2 was clicked.');
}});

// Adds a submenu to the submenu
var sub2 = sub1.addMenu({title : 'Menu 1.3'});

// Adds items to the sub sub menu
sub2.add({title : 'Menu 1.3.1', onclick : function() {
    alert('Item 1.3.1 was clicked.');
}});

sub2.add({title : 'Menu 1.3.2', onclick : function() {
    alert('Item 1.3.2 was clicked.');
}});

dm.add({title : 'Menu 4', onclick : function() {
    alert('Item 3 was clicked.');
}});

// Display the menu at position 100, 100
dm.showMenu(100, 100);

此代码似乎创建了一个下拉列表,但我不知道将此代码放在哪里或如何使用它来显示自定义下拉列表。 请有人帮我在 tinyMCE 中添加自定义下拉列表。

【问题讨论】:

  • 是 TinyMCE 4b 还是 3.5?
  • 我正在使用 TinyMCE 4b 但不确定这段代码我刚刚从 tinyMCE.com 中挑选了这段代码。
  • 您希望下拉列表显示在哪里(菜单、编辑窗口)?
  • @loyalBrown 是的。我该怎么做?
  • 您上面列出的示例看起来像是来自 TinyMCE 3。这两个代码库之间有很大的不同。我可以证明你必须为 3.x 做这件事,但我对 tinyMCE 4 不太熟悉。

标签: drop-down-menu tinymce customization


【解决方案1】:
var myListItems = ['Item1', 'Item2', 'Item3', 'Item4', 'Item5', 'Item6', 'Item7',
        'Item8', 'Item9', 'Item10', 'Item11'];

tinymce.PluginManager.add('mypluginname', function (editor) {
    var menuItems = [];
    tinymce.each(myListItems, function (myListItemName) {
        menuItems.push({
            text: myListItemName,
            onclick: function () {
                editor.insertContent(myListItemName);
            }
        });
    });

    editor.addButton('mypluginname', {
        type: 'menubutton',
        text: 'My Plugin Name',
        icon: 'code',
        menu: menuItems
    });

    editor.addMenuItem('mypluginnameDropDownMenu', {
        icon: 'code',
        text: 'My Plugin Name',
        menu: menuItems,
        context: 'insert',
        prependToContext: true
    });
});

然后在初始化编辑器时添加到插件列表中:

$('#myTesxtArea').tinymce({
theme: "modern",
convert_urls: false,
height: 100,
plugins: [
    "advlist autolink lists link image charmap print preview hr anchor pagebreak",
    "searchreplace wordcount visualblocks visualchars code fullscreen",
    "insertdatetime nonbreaking save table contextmenu directionality",
    "paste textcolor","mypluginname"
],
toolbar1: "undo redo | forecolor backcolor | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
image_advtab: true
});

下面是带有下拉菜单的面板按钮的样子:

【讨论】:

  • 你能解释一下你的答案吗?这将有助于其他人看到您的代码并希望将其应用于自己的情况。
  • 是的,为什么不......
  • 对于那些难以理解what does prependToContext option mean的人,我提供了链接。
【解决方案2】:

首先,注册插件:

var myListItems = ['Item1','Item2'];
tinymce.PluginManager.add('myNewPluginName', function(editor) {
    var menuItems = [];
    tinymce.each(myListItems, function(myListItemName) {
        menuItems.push({
            text: myListItemName,
            onclick: function() {
                editor.insertContent(myListItemName);
            }
        });
    });

    editor.addMenuItem('insertValueOfMyNewDropdown', {
        icon: 'date',
        text: 'Do something with this new dropdown',
        menu: menuItems,
        context: 'insert'
    });
});

然后在初始化编辑器时添加到插件列表中:

$('#myTesxtArea').tinymce({
    theme: "modern",
    convert_urls: false,
    height: 100,
    plugins: [
        "advlist autolink lists link image charmap print preview hr anchor pagebreak",
        "searchreplace wordcount visualblocks visualchars code fullscreen",
        "insertdatetime nonbreaking save table contextmenu directionality",
        "myNewPluginName paste textcolor"
    ],
    toolbar1: "undo redo | forecolor backcolor | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
    image_advtab: true
});

【讨论】:

    【解决方案3】:

    这是 TinyMCE 创建插件的文档http://www.tinymce.com/wiki.php/TinyMCE3x:Creating_a_plugin。我将从这开始只是为了了解插件是如何工作的。然后为了更好地创建下拉菜单,请查看 contextmenu 插件。复制并修改它以满足您的需要。

    【讨论】:

    • 我正在查看 contextmenu 插件代码,但我无法理解单击菜单项时触发的方式和操作。
    • 嗯..看起来就像在菜单项中添加onclick属性一样简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2014-12-21
    • 2010-11-30
    • 2012-05-06
    相关资源
    最近更新 更多