#715228 by TwoD: Extended comment and improved the Regular Expression.
authorHenrik Danielsson
Sun, 17 Oct 2010 20:52:59 +0000 (20:52 +0000)
committerHenrik Danielsson
Sun, 17 Oct 2010 20:52:59 +0000 (20:52 +0000)
editors/js/tinymce-2.js
editors/js/tinymce-3.js

index a09e5aa..1f902e9 100644 (file)
@@ -49,9 +49,15 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
     tinyMCE.settings[setting] = settings[setting];
   }
 
-  // #715228: Remove extra mceItem class added by Wysiwyg < v2.1.
+  // Remove TinyMCE's internal mceItem class, which was incorrectly added to
+  // submitted content by Wysiwyg <2.1. TinyMCE only temporarily adds the class
+  // for placeholder elements. If preemptively set, the class prevents (native)
+  // editor plugins from gaining an active state, so we have to manually remove
+  // it prior to attaching the editor. This is done on the client-side instead
+  // of the server-side, as Wysiwyg has no way to figure out where content is
+  // stored, and the class only affects editing.
   $field = $('#' + params.field);
-  $field.val($field.val().replace(/class=(['"].*?)\bmceItem\b(.*?['"])/ig, 'class=$1$2'));
+  $field.val($field.val().replace(/(<.+?\s+class=['"][\w\s]*?)\bmceItem\b([\w\s]*?['"].*?>)/ig, '$1$2'));
 
   // Attach editor.
   tinyMCE.execCommand('mceAddControl', true, params.field);
index b935e2d..d8f20be 100644 (file)
@@ -65,9 +65,15 @@ Drupal.wysiwyg.editor.attach.tinymce = function(context, params, settings) {
     $('#' + ed.editorContainer + ' table.mceToolbar').remove();
   });
 
-  // #715228: Remove extra mceItem class added by Wysiwyg < v2.1.
+  // Remove TinyMCE's internal mceItem class, which was incorrectly added to
+  // submitted content by Wysiwyg <2.1. TinyMCE only temporarily adds the class
+  // for placeholder elements. If preemptively set, the class prevents (native)
+  // editor plugins from gaining an active state, so we have to manually remove
+  // it prior to attaching the editor. This is done on the client-side instead
+  // of the server-side, as Wysiwyg has no way to figure out where content is
+  // stored, and the class only affects editing.
   $field = $('#' + params.field);
-  $field.val($field.val().replace(/class=(['"].*?)\bmceItem\b(.*?['"])/ig, 'class=$1$2'));
+  $field.val($field.val().replace(/(<.+?\s+class=['"][\w\s]*?)\bmceItem\b([\w\s]*?['"].*?>)/ig, '$1$2'));
 
   // Attach editor.
   ed.render();