Item2200: Inconsistencies in WysiwigPlugin Documentation and operation

Priority: Normal
Current State: Closed
Released In: 1.1.0
Target Release: minor
Applies To: Extension
Component: WysiwygPlugin
Reported By: GeorgeClark
Waiting For:
Last Change By: KennethLavrsen
The documentation for the WYSIWYG plugin (or the implementation of the plugin) is inconsistent in several areas. I'm unsure whether the issues are in the documentation, or the plugin.

  • WYSIWYGPLUGIN_ICONS is not documented.

  • WYSIWYGPLUGIN_STICKYBITS default documentation doesn't match what's actually in the code. In addition, the h\d regex to match heading tags doesn't work when passed through the setting. h[0-9] alternate syntax works.

  • In WysiwygPlugin#Translator_control section, the WYSIWYG_EXCLUDE settings are not used for TinyMCE plugin. The code checks to see if WYSIWYGSKIN is set. If it is not set, the code to process the EXCLUDE controls is bypassed.

  • The WYSIWYG_STICKYBITS is not processed in the TML2HTML routines, so this setting doesn't actually protect the markup from the editor. There appear to be two cases:
    • The editor (TinyMCE) preserves the tag. In this case, the STICKYBITS code works, and prevents the HTML2TML code from converting tags with unsupported attributes back to TML. Examples of working protection include "compact" lists.
    • The editor (TinyMCE) corrupts or drops the tag. In this case, STICKYBITS code does not protect the tag, it is lost in the editor, and never seen by the HTML2TML code. Examples of lost markup include the <center> tag and <div align=center>. By default the latter should be protected by the default STICKBITS setting, but it is not.

Carefully reading the documentation, it does state that it applys only in the HTML2TML conversion, but it is not totally clear how it works. Documentation needs some clarification.

It appears that STICKYBITS might need to be expanded with some additional settings.

  • Externalize the TML2HTML "PALATABLE_TAGS" field. This is the list of tags that the editor supports. WYSIWIGPLUGIN_SUPPORTEDTAGS?
    • It should be up to the editor plugin itself to register with WysiwygPlugin the tag + attribute combinations it supports (or does not support), perhaps with TINYMCEPLUGIN_SUPPORTEDTAGS and TINYMCEPLUGIN_SUPPORTEDTAGS_TUNE. For _TUNE method to work we'd need to have _UNSUPPORTEDTAGS and _TUNE as well.
    • Calls to WysiwygPlugin html2tml and tml2html would need to be aware of which editor was making the call, so that it knows which set of (UN)SUPPORTEDTAGS to apply (assuming support for multiple editors). -- PaulHarvey
  • Add an "Exception" setting that will exclude tags based upon attributes. WYSIWIGPLUGIN_UNSUPPORTEDATTRIBUTES in the form of the current STICKYBITS.
      • strict: minimum (no?) HTML
      • normal: our current default _STICKYBITS
      • liberal: Enable editor features as much as possible. Probably, the liberal policy should be defined by the editor.
      • all: don't strip any HTML which is supported by the editor.
    • It would also be useful to enable add some extra policy modifiers, so you could Eg. have normal,stricttable to make pasting from word/excel documents cleaner... -- PaulHarvey

So if a tag will be corrupted by the editor, it should either be deleted from PALATABLE_TAGS, or if corruption is sensitive to an attribute, added to the exception. If the tag is supported by the editor but will not survive the conversion back to TML, then it would be added to the STICKYBITS setting.

The differences are that STICKYBITS are transparent to the user. The markup is passed through the editor unmodified. Where as the new SUPPORTEDTAGS settings would result in visible protection of the markup similar to the <sticky> protection.

Continue discussion of STICKYBITS etc. over at Development.WysiwygContentPolicies

-- PaulHarvey - 20 Nov 2009

The documentation changes have been made. Changing to Waiting for Release.

-- GeorgeClark - 12 Aug 2010

ItemTemplate edit

Summary Inconsistencies in WysiwigPlugin Documentation and operation
ReportedBy GeorgeClark
Codebase 1.0.7
SVN Range Foswiki-1.0.7, Sun, 20 Sep 2009, build 5061
AppliesTo Extension
Component WysiwygPlugin
Priority Normal
CurrentState Closed
Checkins distro:90044ee14079 distro:d7d402e7c31b distro:2612ab29edca
TargetRelease minor
ReleasedIn 1.1.0
Topic revision: r9 - 04 Oct 2010, KennethLavrsen
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. see CopyrightStatement. Creative Commons License