7

I've been asked to use the TinyMCE editor in a project. On the download page, there's a main package, and then a jQuery package

This package contains special jQuery build of TinyMCE and a jQuery integration plugin.
tinymce_3_3_7_jquery.zip

What is the jQuery build of TinyMCE? Is it just TinyMCE with the same features built on top of jQuery? Is it standard TinyMCE but with some kind add-on that makes manipulating TinyMCE with jQuery easier? Something else? A quick internet search told me "it's tiny MCE with jQuery functionality!", but I'm curious what the means.

Alana Storm
  • 164,128
  • 91
  • 395
  • 599
  • As of this date, the "jQuery version" appears to be an illusion. Perhaps it was removed? See updated answer below based on investigating the current NuGet packages. – iCollect.it Ltd Jul 22 '15 at 10:08
  • Q: Why did you accept an answer that only shows the JS code version and not a TinyMMCE jQuery example? The later answer by `@woohoo` is more accurate for the question asked. – iCollect.it Ltd Jul 22 '15 at 10:10

4 Answers4

3

It means that this package does not contain any javascript functions that are already covered by jQuery. i.e. jQuery("selector") to find dom elements.

jigfox
  • 18,057
  • 3
  • 60
  • 73
  • It may mean that, but the NuGet package indicates the "jQuery version" is *nothing but a small jQuery plugin* that sits on top of the full TinyMCE! See answer I added after investigating this matter. – iCollect.it Ltd Jul 22 '15 at 10:07
3

The jquery plugin allows you to use jquery syntax to attach TinyMCE to a textarea. Here is a code sample that illustrates how to convert a textarea control to a wysiwyg editor, at the same time turning on several TinyMCE options.

<!-- Load jQuery -->
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
        google.load("jquery", "1.3");
</script>

<!-- Load jQuery build -->
<script type="text/javascript" src="<your installation path>/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
        // General options
        mode : "textareas",
        theme : "advanced",
        plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

        // Theme options
        theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
        theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,

        // Example content CSS (should be your site CSS)
        content_css : "css/example.css",

        // Drop lists for link/image/media/template dialogs
        template_external_list_url : "js/template_list.js",
        external_link_list_url : "js/link_list.js",
        external_image_list_url : "js/image_list.js",
        media_external_list_url : "js/media_list.js",

        // Replace values for the template plugin
        template_replace_values : {
                username : "Some User",
                staffid : "991234"
        }
});
</script>

<form method="post" action="somepage">
        <textarea name="content" style="width:100%">
        </textarea>
</form>

It's also really simple to retrieve or update the wysiwyg html using the jQuery plugin.

// Will change the contents of an textarea with the ID "someeditor"
$('#someeditor').html('Some contents...');

// Will change the contents all text areas with the class tinymce
$('textarea.tinymce').html('Some contents...');

// Gets the contents from a specific editor
alert($('#someeditor').html());
Bob Black
  • 2,375
  • 2
  • 18
  • 26
  • 1
    Both links are broken now. – murftown Jun 11 '13 at 17:20
  • it would be very nice if there was an actual code example which helps people understand how it works... links rot in time! – scrat.squirrel Jul 14 '13 at 16:41
  • 1
    Thanks, I've updated with actual code samples and removed the broken links – Bob Black Aug 29 '13 at 22:42
  • 1
    While you mention the jQuery plugin, your example does not use it. Perhaps you should update this [old] answer? Investigation of the NuGet packages indicate the current "jQuery version" is *nothing but a small jQuery plugin* that sits on top of the full TinyMCE. See answer I added after investigating this matter. – iCollect.it Ltd Jul 22 '15 at 10:13
  • I have a scenario where I have to update a text area using jquery, I am doing $('#someeditor').html('Some contents...'); but the value is not being reflected in the text area. – Vijender Kumar Sep 22 '18 at 18:00
2

Here is the source code from an example of using the tinymce jquery package (link). Tinymce is now at version 4, but this example is from the 3.x version:

<!-- Load jQuery -->
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
        google.load("jquery", "1.3");
</script>

<!-- Load jQuery build -->
<script type="text/javascript" src="../../js/tinymce_3_x/jscripts/tiny_mce/jquery.tinymce.js"></script>
<script type="text/javascript">
        $(function() {
                $('textarea.tinymce').tinymce({
                        // Location of TinyMCE script
                        script_url : '../../js/tinymce_3_x/jscripts/tiny_mce/tiny_mce.js',

                        // General options
                        theme : "advanced",
                        plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

                        // Theme options
                        theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
                        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
                        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
                        theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
                        theme_advanced_toolbar_location : "top",
                        theme_advanced_toolbar_align : "left",
                        theme_advanced_statusbar_location : "bottom",
                        theme_advanced_resizing : true,

                        // Example content CSS (should be your site CSS)
                        content_css : "css/content.css",

                        // Drop lists for link/image/media/template dialogs
                        template_external_list_url : "lists/template_list.js",
                        external_link_list_url : "lists/link_list.js",
                        external_image_list_url : "lists/image_list.js",
                        media_external_list_url : "lists/media_list.js",

                        // Replace values for the template plugin
                        template_replace_values : {
                                username : "Some User",
                                staffid : "991234"
                        }
                });
        });
</script>

<form method="post" action="somepage">
        <textarea id="content" name="content" class="tinymce" style="width:100%">
        </textarea>

        <!-- Some integration calls -->
        <a href="javascript:;" onmousedown="$('#content').tinymce().show();">[Show]</a>
        <a href="javascript:;" onmousedown="$('#content').tinymce().hide();">[Hide]</a>
        <a href="javascript:;" onmousedown="$('#content').tinymce().execCommand('Bold');">[Bold]</a>
        <a href="javascript:;" onmousedown="alert($('#content').html());">[Get contents]</a>
        <a href="javascript:;" onmousedown="alert($('#content').tinymce().selection.getContent());">[Get selected HTML]</a>
        <a href="javascript:;" onmousedown="alert($('#content').tinymce().selection.getContent({format : 'text'}));">[Get selected text]</a>
        <a href="javascript:;" onmousedown="alert($('#content').tinymce().selection.getNode().nodeName);">[Get selected element]</a>
        <a href="javascript:;" onmousedown="$('#content').tinymce().execCommand('mceInsertContent',false,'<b>Hello world!!</b>');">[Insert HTML]</a>
        <a href="javascript:;" onmousedown="$('#content').tinymce().execCommand('mceReplaceContent',false,'<b>{$selection}</b>');">[Replace selection]</a>
</form>

Hope this helps.

scrat.squirrel
  • 3,607
  • 26
  • 31
2

The answer by Bob Black is right.

In addition the jquery package decreases the size of TinyMCE downloads, modifying the TinyMCE code to use JQuery functions where possible (removing the tinymce implementations from the package).

Rob Dawson
  • 1,349
  • 10
  • 21
  • This no longer(?) appears to be true. The NuGet packages indicates the "jQuery version" is *nothing but a small jQuery plugin* that sits on top of the full TinyMCE! See answer I added after investigating this matter. – iCollect.it Ltd Jul 22 '15 at 10:11