Index: wysiwyg_editor.admin.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg_editor.admin.inc,v
retrieving revision 1.1.2.19
diff -u -p -r1.1.2.19 wysiwyg_editor.admin.inc
--- wysiwyg_editor.admin.inc	5 Oct 2008 16:57:54 -0000	1.1.2.19
+++ wysiwyg_editor.admin.inc	7 Oct 2008 12:59:59 -0000
@@ -221,18 +221,16 @@ function wysiwyg_editor_profile_form($pr
   foreach ($plugins as $name => $meta) {
     if (isset($meta['buttons']) && is_array($meta['buttons'])) {
       foreach ($meta['buttons'] as $button => $title) {
-        $img_src = $meta['path'] ."/images/$name.gif";
+        // @todo Button icon locations are different in editors, editor versions,
+        //   and contrib/custom plugins (like Image Assist, f.e.).
+        $img_src = $meta['path'] ."/img/$name.gif";
         // Handle plugins that have more than one button.
         if (!file_exists($img_src)) {
-          $img_src = $meta['path'] ."/images/$button.gif";
+          $img_src = $meta['path'] ."/img/$button.gif";
         }
         $icon = file_exists($img_src) ? '<img src="'. base_path() . $img_src .'" title="'. $button .'" style="border: 1px solid grey; vertical-align: middle;" />' : '';
-        if (isset($meta['url'])) {
-          $title = $icon .' '. l($title, $meta['url'], array('target' => '_blank'));
-        }
-        else {
-          $title = $icon .' '. $title;
-        }
+        $title = (isset($meta['url']) ? l($title, $meta['url'], array('target' => '_blank')) : $title);
+        $title = (!empty($icon) ? $icon .' '. $title : $title);
         $form['buttons'][$name][$button] = array(
           '#type' => 'checkbox',
           '#title' => $title,
@@ -242,15 +240,9 @@ function wysiwyg_editor_profile_form($pr
     }
     else if (isset($meta['extensions']) && is_array($meta['extensions'])) {
       foreach ($meta['extensions'] as $extension => $title) {
-        if (isset($meta['url'])) {
-          $title = l($title, $meta['url'], array('target' => '_blank'));
-        }
-        else {
-          $title = $title;
-        }
         $form['buttons'][$name][$extension] = array(
           '#type' => 'checkbox',
-          '#title' => $title,
+          '#title' => isset($meta['url']) ? l($title, $meta['url'], array('target' => '_blank')) : $title,
           '#default_value' => !empty($profile->settings['buttons'][$name][$extension]) ? $profile->settings['buttons'][$name][$extension] : FALSE,
         );
       }
Index: wysiwyg_editor.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/wysiwyg_editor.module,v
retrieving revision 1.1.2.26
diff -u -p -r1.1.2.26 wysiwyg_editor.module
--- wysiwyg_editor.module	5 Oct 2008 21:01:47 -0000	1.1.2.26
+++ wysiwyg_editor.module	7 Oct 2008 13:33:29 -0000
@@ -279,6 +279,12 @@ function wysiwyg_editor_add_plugin_setti
     $plugins = array();
     $editor = wysiwyg_get_editor($profile->settings['editor']);
     $info = module_invoke_all('wysiwyg_plugin', $editor['name'], $editor['installed version']);
+    // Only keep enabled plugins in this profile.
+    foreach ($info as $plugin => $meta) {
+      if (!isset($profile->settings['buttons'][$plugin])) {
+        unset($info[$plugin]);
+      }
+    }
 
     if (isset($editor['plugin settings callback']) && function_exists($editor['plugin settings callback'])) {
       $plugins = $editor['plugin settings callback']($editor, $profile, $info);
Index: editors/js/tinymce-3.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/wysiwyg/editors/js/tinymce-3.js,v
retrieving revision 1.1.2.2
diff -u -p -r1.1.2.2 tinymce-3.js
--- editors/js/tinymce-3.js	5 Oct 2008 21:01:48 -0000	1.1.2.2
+++ editors/js/tinymce-3.js	7 Oct 2008 13:18:40 -0000
@@ -26,10 +26,9 @@ Drupal.wysiwyg.init.tinymce = function(e
     tinyMCE.init(config);
   }
   // @todo Move into global library settings.
-  // @todo Plugin architecture is completely different in 3.x.
-//  for (var plugin in Drupal.settings.wysiwygEditor.plugins.tinymce) {
-//    tinyMCE.loadPlugin(plugin, Drupal.settings.wysiwygEditor.plugins.tinymce[plugin]);
-//  }
+  for (var plugin in Drupal.settings.wysiwygEditor.plugins.tinymce) {
+    tinymce.PluginManager.load(plugin, Drupal.settings.wysiwygEditor.plugins.tinymce[plugin] + '/editor_plugin.js');
+  }
 }
 
 /**
