2014-03-25 220 views
6

是否可以创建一个由工具栏按钮组成的下拉菜单菜单?CKEditor的下拉菜单按钮4

我想在工具栏上有一个按钮,它将对齐按钮(可能还有其他)分组到一个下拉菜单中。

谢谢

回答

6

问题并不难,但你仍然需要编写几行代码。 pluginsLoaded中的以下逻辑可以(应该)在全新插件(可以称为“分组对齐”)的init中定义。否则,如果执行得太晚,例如工具栏生成后,整个代码没有意义。

查看official plugin development guide了解更多信息。

另请参见jsFiddle的示例。

CKEDITOR.replace('editor', { 
    plugins: 'wysiwygarea,sourcearea,basicstyles,toolbar,menu,menubutton,justify', 
    on: { 
     pluginsLoaded: function() { 
      var editor = this, 
       items = {}; 

      editor.addMenuGroup('some_group'); 

      items.justifyleft = { 
       label: editor.lang.justify.left, 
       group: 'some_group', 
       command: 'justifyleft', 
       order: 1 
      }; 

      items.justifyright = { 
       label: editor.lang.justify.right, 
       group: 'some_group', 
       command: 'justifyright', 
       order: 2 
      }; 

      editor.addMenuItems(items); 

      editor.ui.add('Groupped', CKEDITOR.UI_MENUBUTTON, { 
       label: 'Groupped justify', 
       // Disable in source mode. 
       modes: { 
        wysiwyg: 1 
       }, 
       icon: 'JustifyLeft', 
       onMenu: function() { 
        var active = {}; 

        // Make all items active. 
        for (var p in items) 
         active[ p ] = CKEDITOR.TRISTATE_OFF; 

        return active; 
       } 
      });      
     } 
    } 
}); 
+0

非常感谢oleq修复它。你为我节省了很多时间。迈克尔接受这是正确的答案。 – Zain

1

我有@oleq建议的相同代码。在我的情况下,我需要他们在插件初始化,所以不能显示菜单项,因为由项目对象中的“命令”造成的错误。我不知道到底为什么这发生,但我设法消除命令并添加onclick事件的每个项目

items.flleft = { 
      label: "Add and align left", 
      group: 'some_group', 
      icon: this.path + 'icons/imgtemplate_left.png', 
      order: 1, 
      onClick: function(){ 
       // Do stuff on menu item clicked 
      } 
     }; 

希望这有助于