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 ``input/longtext``, with their wysiwyg. Add the WYSIWYG library code ---------------------------- Now you need to upload TinyMCE into a directory in your plugin. We strongly encourage you to use ``composer`` to manage third-party dependencies, since it is so much easier to upgrade and maintain that way: .. code-block:: sh composer require npm-asset/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-block:: php Then, in your plugin's ``elgg-plugin.php`` file extend the ``input/longtext`` view: .. code-block:: php return [ 'view_extensions' => [ 'input/longtext' => [ 'tinymce/longtext' => [], ], ], ]; That's it! Now every time someone uses ``input/longtext`` TinyMCE will be loaded and applied to that textarea.