tinymce.plugin.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * TinyMCE RichText Editor Plugin
  4. *
  5. * Events: OnRichTextEditorInit, OnRichTextEditorRegister,
  6. * OnBeforeManagerPageInit, OnRichTextBrowserInit
  7. *
  8. * @author Jeff Whitfield <jeff@collabpad.com>
  9. * @author Shaun McCormick <shaun@collabpad.com>
  10. *
  11. * @var modX $modx
  12. * @var array $scriptProperties
  13. *
  14. * @package tinymce
  15. * @subpackage build
  16. */
  17. if ($modx->event->name == 'OnRichTextEditorRegister') {
  18. $modx->event->output('TinyMCE');
  19. return;
  20. }
  21. require_once $modx->getOption('tiny.core_path',null,$modx->getOption('core_path').'components/tinymce/').'tinymce.class.php';
  22. $tiny = new TinyMCE($modx,$scriptProperties);
  23. $useEditor = $tiny->context->getOption('use_editor',false);
  24. $whichEditor = $tiny->context->getOption('which_editor','');
  25. /* Handle event */
  26. switch ($modx->event->name) {
  27. case 'OnRichTextEditorInit':
  28. if ($useEditor && $whichEditor == 'TinyMCE') {
  29. unset($scriptProperties['chunk']);
  30. if (isset($forfrontend) || $modx->context->get('key') != 'mgr') {
  31. $def = $tiny->context->getOption('cultureKey',$tiny->context->getOption('manager_language','en'));
  32. $tiny->properties['language'] = $modx->getOption('fe_editor_lang',array(),$def);
  33. $tiny->properties['frontend'] = true;
  34. unset($def);
  35. }
  36. /* commenting these out as it causes problems with richtext tvs */
  37. //if (isset($scriptProperties['resource']) && !$resource->get('richtext')) return;
  38. //if (!isset($scriptProperties['resource']) && !$modx->getOption('richtext_default',null,false)) return;
  39. $tiny->setProperties($scriptProperties);
  40. $html = $tiny->initialize();
  41. $modx->event->output($html);
  42. unset($html);
  43. }
  44. break;
  45. case 'OnRichTextBrowserInit':
  46. if ($useEditor && $whichEditor == 'TinyMCE') {
  47. $inRevo20 = (boolean)version_compare($modx->version['full_version'],'2.1.0-rc1','<');
  48. $modx->getVersionData();
  49. $source = $tiny->context->getOption('default_media_source',null,1);
  50. $modx->controller->addHtml('<script type="text/javascript">var inRevo20 = '.($inRevo20 ? 1 : 0).';MODx.source = "'.$source.'";</script>');
  51. $modx->controller->addJavascript($tiny->config['assetsUrl'].'jscripts/tiny_mce/tiny_mce_popup.js');
  52. if (file_exists($tiny->config['assetsPath'].'jscripts/tiny_mce/langs/'.$tiny->properties['language'].'.js')) {
  53. $modx->controller->addJavascript($tiny->config['assetsUrl'].'jscripts/tiny_mce/langs/'.$tiny->properties['language'].'.js');
  54. } else {
  55. $modx->controller->addJavascript($tiny->config['assetsUrl'].'jscripts/tiny_mce/langs/en.js');
  56. }
  57. $modx->controller->addJavascript($tiny->config['assetsUrl'].'tiny.browser.js');
  58. $modx->event->output('Tiny.browserCallback');
  59. }
  60. return '';
  61. break;
  62. default: break;
  63. }
  64. return;