Skip to content
Snippets Groups Projects
lbdesign-button-shortcode.js 4.89 KiB
Newer Older
  • Learn to ignore specific revisions
  • (function() {
        tinymce.create('tinymce.plugins.Lbdesign', {
            /**
            * Initializes the plugin, this will be executed after the plugin has been created.
            * This call is done before the editor instance has finished it's initialization so use the onInit event
            * of the editor instance to intercept that event.
            *
            * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
            * @param {string} url Absolute URL to where the plugin is located.
            */
            init : function(ed, url) {
                ed.addButton('buttonshortcode', {
                    title : 'Insert button shortcode',
                    cmd : 'buttonshortcode',
    
                    image : lbdbs_plugin.url + 'img/icon-grey.png'
    
                });
                ed.addCommand('buttonshortcode', function() {
    
                    ed.windowManager.open({
                        title : 'Insert a Button',
                        body: [
                            {type: 'textbox', name: 'link', label: 'Link'},
    
                            {type: 'checkbox', name: 'new_tab', label: 'Open link in a new tab'},
    
                            {type: 'textbox', name: 'content', label: 'Button Text' },
                            {type: 'listbox',
                                name: 'type',
    
                                'values': [
    
                                    {text: 'Default', value: 'default'},
                                    {text: 'Primary', value: 'primary'},
                                    {text: 'Action', value: 'action'},
                                    {text: 'Highlight', value: 'highlight'},
                                    {text: 'Warning', value: 'warning'},
                                    {text: 'Info', value: 'info'}
    
                                ]
                            },
                            {type: 'listbox',
                                name: 'size',
    
                                'values': [
    
                                    {text: 'Default', value: 'default'},
                                    {text: 'Small', value: 'small'},
                                    {text: 'Large', value: 'large'},
                                    {text: 'Extra Large', value: 'xlarge'}
                                ]
                            },
                            {type: 'listbox',
                                name: 'styles',
                                label: 'Button Style',
                                'values': [
                                    {text: 'Default', value: 'default'},
                                    {text: 'Rounded', value: 'rounded'},
                                    {text: 'Pill', value: 'pill'},
                                    {text: 'Block', value: 'block'}
    
                            },
                            {type: 'textbox', name: 'custom_class', label: 'Custom Button Class'},
    
                        ],
                        onsubmit: function(e) {
                            ed.focus();
    
    
                            // build shortcode that gets inserted into the content when 'ok' is pressed on the modal
                            // [lbdesign_button link="" new_tab="" type="" size="" style="" custom_class=""][/lbdesign_button]
                            ed.selection.setContent('[lbdesign_button link="' + e.data.link + '" new_tab="' + e.data.new_tab + '" type="' + e.data.type + '" size="' + e.data.size + '" style="' + e.data.styles + '" custom_class="' + e.data.custom_class + '"]' + e.data.content + '[/lbdesign_button]');
    
                });
            },
    
            /**
            * Creates control instances based in the incomming name. This method is normally not
            * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
            * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
            * method can be used to create those.
            *
            * @param {String} n Name of the control to create.
            * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
            * @return {tinymce.ui.Control} New control instance or null if no control was created.
            */
            createControl : function(n, cm) {
                return null;
            },
    
            /**
            * Returns information about the plugin as a name/value array.
            * The current keys are longname, author, authorurl, infourl and version.
            *
            * @return {Object} Name/value array containing information about the plugin.
            */
            getInfo : function() {
                return {
                    longname : 'LBDesign Button Shortcode',
    
                    author : 'Lauren Pittenger @ LBDesign',
                    authorurl : 'http://lbdesign.tv',
    
                };
            }
        });
    
        // Register plugin
        tinymce.PluginManager.add( 'lbdesign', tinymce.plugins.Lbdesign );
    })();