diff --git a/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.api.php b/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.api.php index c4d8857..2d76cee 100644 --- a/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.api.php +++ b/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.api.php @@ -281,3 +281,17 @@ function hook_wysiwyg_editor_settings_alter(&$settings, $context) { $settings['cleanup_on_startup'] = TRUE; } } + +/** + * Dynamically load include files for wysiwyg implemented by all modules. + * + * This hook allows virtual include information to be added during wysiwyg_load_ + * includes and allows module to builders to add wysiwyg plugins without having + * to create physical files. + * + * @TODO Implement with a pass by reference variable to allow other modules to + * act on passed plugins. + */ +function hook_wysiwyg_inject_includes() { + return $plugins; +} diff --git a/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.module b/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.module index 669567f..22c577b 100644 --- a/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.module +++ b/docroot/sites/all/modules/contrib/wysiwyg/wysiwyg.module @@ -941,6 +941,7 @@ function wysiwyg_get_all_plugins() { } $plugins = wysiwyg_load_includes('plugins', 'plugin'); + foreach ($plugins as $name => $properties) { $plugin = &$plugins[$name]; // Fill in required/default properties. @@ -1002,6 +1003,17 @@ function wysiwyg_load_includes($type = 'editors', $hook = 'editor', $file = NULL } } } + + // Check for plugins via other modules. + if ($type == 'plugins') { + // Get other possible plugins from modules using custom hook. + $plugins = module_invoke_all('wysiwyg_inject_includes'); + + foreach ($plugins as $k => $v) { + $info[$k] = $v; + } + } + return $info; }