Reputation: 1097
I need to add another drop down menu next to "Tools" item in TinyMCE 4:
The closest solution I found was this:
// Adds a custom menu item to the editor that inserts contents when clicked
// The context option allows you to add the menu item to an existing default menu
tinymce.init({
...
setup: function(ed) {
ed.addMenuItem('example', {
text: 'My menu item',
context: 'tools',
onclick: function() {
ed.insertContent('Hello world!!');
}
});
}
});
But it only adds an item to the already existing "Tools" menu.
Upvotes: 7
Views: 8869
Reputation: 1
Since you generate the menu dynamically, that is, the menu data comes in a JSON object, I try to loop through a FOR and it does not work for me.
editor.ui.registry.addMenuButton('mybutton', {
text: 'Insertar un campo del formulario',
fetch: function (callback) {
var menuItems = [];
for (let i = 0; i < Object.keys(json).length; i++){
//console.log(json[i]);
//for (var clave in json) {
var items = [
{
type: 'menuitem',
text: json[i].text,
onAction: function () {
editor.insertContent(json[i].value);
}
}
];
menuItems.push(items);
}
callback(menuItems);
}
});
Upvotes: -1
Reputation: 197
You can try to specify both 'menu' and 'menubar' option when you call tinymce.init() to add a new menubar item on the modern theme.
I tried it and it works.
You can check the live demo on http://fiddle.tinymce.com/39eaab/1 with TinyMCE 4.1.7.
<script type="text/javascript">
tinymce.init({
selector: "textarea",
menu : {
file : {title : 'File' , items : 'newdocument'},
edit : {title : 'Edit' , items : 'undo redo | cut copy paste pastetext | selectall'},
insert : {title : 'Insert', items : 'link media | template hr'},
view : {title : 'View' , items : 'visualaid'},
format : {title : 'Format', items : 'bold italic underline strikethrough superscript subscript | formats | removeformat'},
table : {title : 'Table' , items : 'inserttable tableprops deletetable | cell row column'},
tools : {title : 'Tools' , items : 'spellchecker code'},
newmenu: {title : 'New Menu', items : 'newmenuitem'}
},
menubar: 'file edit newmenu',
setup: function(editor) {
editor.addMenuItem('newmenuitem', {
text: 'New Menu Item',
context: 'newmenu',
onclick: function () { alert('yey!'); }
});
}
});
</script>
<form method="post" action="dump.php">
<textarea name="content"></textarea>
</form>
Upvotes: 18
Reputation: 13
Not sure it's what you need, but what if you try this:
<script type="text/javascript">
tinymce.init({
selector: "textarea",
toolbar: "mybutton",
setup: function(editor) {
editor.addButton('mybutton', {
type: 'menubutton',
text: 'My button',
icon: false,
menu: [
{text: 'Menu item 1', onclick: function() {editor.insertContent('Menu item 1');}},
{text: 'Menu item 2', onclick: function() {editor.insertContent('Menu item 2');}}
]
});
}
});
</script>
You can view the result of the code here
Upvotes: 0