Integrating a Rich Text Editor ############################## Build your own wysiwyg plugin. Elgg is bundled with a plugin for CKEditor_, and previously shipped with TinyMCE_ support. However, if you have a wysiwyg that you prefer, you could use this tutorial to help you build your own. .. _CKEditor: http://ckeditor.com/ .. _TinyMCE: http://www.tinymce.com/ All forms in Elgg should try to use the provided input views located in ``views/default/input``. If these views are used, then it is simple for plugin authors to replace a view, in this case longtext.php, with their wysiwyg. Create your plugin skeleton --------------------------- You will need to create your plugin and give it a start.php file where the plugin gets initialized, as well as a manifest.xml file to tell the Elgg engine about your plugin. Read more in the guide about :doc:`/guides/plugins`. Add the WYSIWYG library code ---------------------------- Now you need to upload TinyMCE into a directory in your plugin. We strongly encourage you to put third party libraries in a “vendors” directory, as that is standard practice in Elgg plugins and will make your plugin much more approachable by other developers:: mod/tinymce/vendors/tinymce/ Tell Elgg when and how to load TinyMCE -------------------------------------- Now that you have: * created your start file * intialized the plugin * uploaded the wysiwyg code It is time to tell Elgg how to apply TinyMCE to longtext fields. We're going to do that by extending the input/longtext view and including some javascript. Create a view tinymce/longtext and add the following code: .. code:: php Then, in your plugin's init function, extend the input/longtext view .. code:: php function tinymce_init() { elgg_extend_view('input/longtext', 'tinymce/longtext'); } That's it! Now every time someone uses input/longtext, TinyMCE will be loaded and applied to that textarea.