Adding Menu button
Copy the complete contents from TinyMce-4 development package have it in your assets or public folder, it includes tinymce's classes, langs, plugins and other files, scripts and everything you need.
Name a button, here I will name as R.design, on click drop down menu with a single item named "menu1" appears, onclick, the content is appended in the editor, don't forget to include tinymce.min.js
tinymce.init({ selector: "textarea", setup: function(editor) { editor.addButton('report_design', { type: 'menubutton', text: 'R.Design', icon: false, menu: [ {text: 'menu1 ', onclick: function() {editor.insertContent('menu1');}} ] }); }, plugins: [ "advlist autolink lists link image charmap print preview anchor", "searchreplace visualblocks code fullscreen", "insertdatetime media table contextmenu paste moxiemanager", "emoticons print textcolor" ], toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | emoticons | forecolor backcolor | print | menu " });
selector: "textarea"indicates editor will be placed for input type textarea.
Using with Rails
menu: [ <% @array.each do |value| %> {text: '<%= value %>', onclick: function() {editor.insertContent('<%= value %>');} <% end %> ]
Re-order tool-bar icons, coloring text and background.
toolbar: "insertfile undo redo" toolbar: "undo insertfile redo"
If the text color icon and background coloring is missing, all you need is to add the textcolor into your plugins;[...] first, then use the forecolor and backcolor in the toolbar, so the icon does appear in the editor toolbar.
All of the things you include/defined in tinymce/plugins/* folder can be used in the tinymce editor.toolbar: "forecolor backcolor"
Changing table border
File: tinymce/skins/lightgray/content.min.css
That has style applied for table.
border: 1px dashed #BBBBBB;Override the default styling, simple and comparatively better than default.
.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption { border: 1px solid black; border-collapse: collapse; font-size: 14px; }
Sub-Menu items
menu: [ { text:'Menu item', menu:[ {text:'sub1',value:'val1'},{text:'sub2',value:'val2'}], onclick: function() {editor.insertContent('<%= "submenu" %>');} } ]
Using along with rails, onclick of a submenu item, item insertion into editor's textarea space.
menu: [ { text:'Student Basic Data', menu:[<% @object.each do |data| %>{text:'<%= data %>', onclick: function() {editor.insertContent('<%= data %>');}},<% end %>] } ]
Window Manager
{ text:'Name', onclick: function() { editor.windowManager.open({ title: 'Paper Margins', body: [ {type: 'textbox', name: 'first', label: 'first name',value: ''}, {type: 'textbox', name: 'last', label: 'last name', value: ''} ], onsubmit: function(e) { // Insert content when the window form is submitted editor.insertContent('First Name' + e.data.first); editor.insertContent('Last Name' + e.data.last); } }); } }
Using along rails
{text:'Margins', onclick: function() { editor.windowManager.open({ title: 'Paper Margins', body: [ { type: 'textbox', name: 'top', label: 'Margin top (cm)', value: '<%=@report.top if @custom_report.top.present? %>' } ], onsubmit: function(e) { <%= remote_function( :url => {:controller=>"controller",:action => "action"}, :with => "'margin_top=' + e.data.top " ) %> } }); } }
Enjoy Customizing tinymce - code.