******************************************************************** D R U P A L M O D U L E ******************************************************************** Name: TinyMCE module Maintainers: Theodore Serbinski and Matt Westgate and Jeff Robbins Richard Bennett Jonathan Dependancies: This module requires the third-party TinyMCE editor and a Javascript-enabled web browser. Currently it is known to work with Internet Explorer, Mozilla and Firefox and degrade gracefully for Safari and Konqueror users. A browser compatibility chart is here: http://tinymce.moxiecode.com/tinymce/docs/compatiblity_chart.html INSTALLATION: ******************************************************************** NOTE: During this installation process you'll be asked to also install the official TinyMCE package from tinymce.moxiecode.com. 1. Place the entire tinymce directory into your Drupal modules/ directory. 2. Download TinyMCE 2.0 from http://tinymce.moxiecode.com/ Remember to uncompress the file and make sure the folder is named 'tinymce'. 3. Place the entire 'tinymce' engine folder inside your modules/tinymce directory. So the TinyMCE engine will live in modules/tinymce/tinymce 4. Enable this module by navigating to: administer > modules *note - all database tables will be automatically created during this step 5. Setup role based tinymce profiles via administer > settings > tinymce 6. To boost the performance of TinyMCE, download the "TinyMCE compressor" from: http://tinymce.moxiecode.com/download.php Place the tiny_mce_gzip.php file in modules/tinymce/tinymce/jscripts/tiny_mce 7. To use AJAX spell checking, download the spellchecker plugin: (note: this requires TinyMCE 2.0.6+) http://tinymce.moxiecode.com/download.php Extract this file to modules/tinymce/tinymce/jscripts/tiny_mce/plugins/ Then edit config.php in plugins/spellchecker/: Uncomment this line and comment out all other require_once's: require_once("classes/TinyGoogleSpell.class.php"); // Google web service Set this to true: $spellCheckerConfig['enabled'] = true; Enable spellchecker in TinyMCE settings page, under "buttons and plugins" Create new content as a role that has TinyMCE permissions and see TinyMCE in action! README: ******************************************************************** Once TinyMCE is enabled, the default behavior is that all textareas will use TinyMCE for all users. The admin can change these defaults at administer > settings > tinymce The admin can choose what theme TinyMCE should be the default and user's can override this by editing their account (if they've been given permissions to do so). User's also have the option of disabling TinyMCE completely. The admin can also define which pages TinyMCE should be used on. This cannot be changed on a per user basis. PLUGINS FOR TINYMCE: ******************************************************************** Adding plugins to TinyMCE is very easy. By default, all TinyMCE plugins are disabled, but can easily be enabled by going to: Administer > settings > tinymce And then editing a profile (make sure you create one first!) and going to the Buttons & Plugins section. To enable a button or a plugin, simply check a box and TinyMCE will automatically be updated. To find out more info on what a specific button or plugin does, click the corresponding link (note not all buttons have help text). If you wish to add more plugins to TinyMCE, simply extract these plugins to the folder: tinymce\jscripts\tiny_mce\plugins Then open up plugin_reg.php, found in the TinyMCE module folder. Add the following lines: $plugins['plugin_name'] = array(); $plugins['plugin_name']['theme_advanced_buttons3'] = array('icon_name'); // note, you can choose which row of buttons to use by changing // the 3 to either 1 or 2 $plugins['plugin_name']['plugin_property'] = array('property_value'); Be sure to set the 'plugin_name' to the name of the plugin (generally the plugin folder name) and set the 'icon_name' and other properties (properties are optional). See plugin_reg.php for more examples. To add Drupal specific plugins, TinyMCE comes bundled with plugins in the main module directory. These plugins include: - drupalimage: works in conjunction with the img_assist Drupal module NOTE: If you want to use img_assist with TinyMCE, you don't have to install a plugin. Just enable the img_assist module and click the photo icon that appears below each textarea. Follow the directions in the README.txt for these plugins to enable them. CAVEATS ******************************************************************** By default, Drupal uses the 'Filtered HTML' input format for adding content to the site and this can create conflicts with TinyMCE. It's best when using this editor to use an input format that has all filters disabled. What I usually do is create an input format called 'Rich-text editing' and set that as the default format for roles which use TinyMCE exclusively. To modify your input formats go to: Administer > input formats > configure > configure filters TWEAKING THE TINYMCE THEME ******************************************************************** Developers have complete control over when and how tinymce is enabled for each textarea inside Drupal by creating a custom Drupal theme function. The following example assumes you're using a phptemplate based theme. Put the following function in your themes template.php file: /** * Customize a TinyMCE theme. * * @param init * An array of settings TinyMCE should invoke a theme. You may override any * of the TinyMCE settings. Details here: * * http://tinymce.moxiecode.com/wrapper.php?url=tinymce/docs/using.htm * * @param textarea_name * The name of the textarea TinyMCE wants to enable. * * @param theme_name * The default tinymce theme name to be enabled for this textarea. The * sitewide default is 'simple', but the user may also override this. * * @param is_running * A boolean flag that identifies id TinyMCE is currently running for this * request life cycle. It can be ignored. */ function theme_tinymce_theme($init, $textarea_name, $theme_name, $is_running) { switch ($textarea_name) { // Disable tinymce for these textareas case 'log': // book and page log case 'img_assist_pages': case 'caption': // signature case 'pages': case 'access_pages': //TinyMCE profile settings. case 'user_mail_welcome_body': // user config settings case 'user_mail_approval_body': // user config settings case 'user_mail_pass_body': // user config settings case 'synonyms': // taxonomy terms case 'description': // taxonomy terms unset($init); break; // Force the 'simple' theme for some of the smaller textareas. case 'signature': case 'site_mission': case 'site_footer': case 'site_offline_message': case 'page_help': case 'user_registration_help': case 'user_picture_guidelines': $init['theme'] = 'simple'; foreach ($init as $k => $v) { if (strstr($k, 'theme_advanced_')) unset($init[$k]); } break; } /* Example, add some extra features when using the advanced theme. // If $init is available, we can extend it if (isset($init)) { switch ($theme_name) { case 'advanced': $init['extended_valid_elements'] = array('a[href|target|name|title|onclick]'); break; } } */ // Always return $init return $init; } If you study the above function you can see that tinymce can be completely disabled or you can even switch themes for a given textarea. See the TinyMCE manual for details on the parameters that can be sent to TinyMCE: http://tinymce.moxiecode.com/documentation.php TINYMCE KEYBOARD SHORTCUTS ******************************************************************** Ctrl+Z Undo Ctrl+Y Redo Ctrl+B Bold Ctrl+I Italic Ctrl+U Underline