You are here

function editor_display_toolbars in Editor 5

Same name and namespace in other branches
  1. 6 editor.module \editor_display_toolbars()

Generate toolbar markup.

  • Plugins required for display within the $profile passed are gathered.
  • Spacer characters; '|' are replaced with theme_editor_spacer().
  • Plugins are validated for dependencies.
  • hook_plugin_api('alter') is invoked.
  • Plugin themes are applied.

Parameters

object $profile: Plugin profile object

Return value

string Markup.

See also

theme_editor_toolbar()

theme_editor_spacer()

1 call to editor_display_toolbars()
editor_attach in ./editor.module
Initialize the editor attachment process.

File

./editor.module, line 213
Extendable WYSIWYG editor @author Tj Holowaychuk <tj@vision-media.ca> @link http://vision-media.ca @package Editor

Code

function editor_display_toolbars($profile) {
  $items = array();
  $plugins = editor_profile_plugins($profile);
  $plugin_count = count($plugins);
  if (count($plugins)) {
    foreach ($plugins as $i => $plugin) {

      // Ignore processing hidden plugins
      if ($plugin->class == 'hidden') {
        continue;
      }

      // Check for spacers
      if ($plugin == '|') {

        // No need for spacers at the beginning or end or the toolbars
        if ($i != 0 && $i != $plugin_count - 1) {
          $items[] = theme('editor_spacer');
        }
        continue;
      }

      // Invoke alter op
      editor_invoke_plugin_api('alter', $plugin);
      $plugin_class = editor_plugin_class_get($plugin->class);

      // Class must be available
      if ($plugin && $plugin_class) {

        // Theme must be available
        $theme = 'theme_' . $plugin_class->theme;
        if (function_exists($theme)) {
          $args = array();
          $args[] = $plugin_class->theme;
          $args[] = $plugin;
          if (count($plugin->theme_args)) {
            foreach ($plugin->theme_args as $arg) {
              $args[] = $arg;
            }
          }
          $items[] = @call_user_func_array('theme', $args);
        }
      }
    }
  }
  return theme('editor_toolbar', implode(' ', $items));
}