tinymcemodx

Tiny MCE adding custom HTML tags


I am using Tiny 4.3.3 for MODx I need to add a

<p class="classname">
 <em class="openImg"></em>
  Some randome Input text by the user
 <em class="closeImg"></em>
</p>

I don't mind if is an extra menu Item or is in the Paragraph dropdown menu. I just want the less time consuming work around possible.

I have tried this http://alexzag.blogspot.co.uk/2009/12/custom-tags-in-tinymce.html but somehow this doesn't work.

Could anyone point me to a good tutorial or tell me how could i add a icon or name to the drop down menu that creates the p and em tags with the right classes automatically please? Thanks


Solution

  • It has been a while since the question was asked, but as i am currently making exactly the same, i thought i share my discoveries and solutions regarding this matter. :)

    I am extending TinyMCE for a test-project at work and our solution needs custom tags - in some of them the user should be able to enter only one line, in others (as your em) a lot of text.

    Steps to be done, in order to achieve the desired solution:

    plugin code:

    tinymce.PluginManager.add('customem', function(editor, url) {
        // Add a button that opens a window
        editor.addButton('customEmElementButton', {
            text: 'Custom EM',
            icon: false,
            onclick: function() {
                // Open window
                editor.windowManager.open({
                    title: 'Please input text',
                    body: [
                        {type: 'textbox', name: 'description', label: 'Text'}
                    ],
                    onsubmit: function(e) {
                        // Insert content when the window form is submitted
                        editor.insertContent('<emstart>EM Start</emstart><p>' + e.data.description + '</p><emend>EM End</emend>');
                    }
                });
            }
        });
    
        // Adds a menu item to the tools menu
        editor.addMenuItem('customEmElementMenuItem', {
            text: 'Custom EM Element',
            context: 'tools',
            onclick: function() {
                editor.insertContent('<emstart>EM Start</emstart><p>Example text!</p><emend>EM End</emend>');
            }
        });
    });
    

    The last step is to load your custom plugin to the editor (using the plugin and toolbar configuration option) and enjoy the result:

        tinymce.init({
            selector: "textarea#editor",
            height: "500px",
            plugins: [
                     "code, preview, contextmenu, image, link, searchreplace, customem"
               ],
            toolbar: "bold italic | example | code | preview | link | searchreplace | customEmElementButton",
            contextmenu: "bold italic",
            extended_valid_elements : "emstart,emend",
            custom_elements: "emstart,emend",
            content_css: "editor.css",
         });
    

    The editor now looks like this:

    enter image description here

    and the source like in your example:

    enter image description here