Item11592: WYSIWYG doesn't protect newlines in GluePlugin macro syntax
Priority: Enhancement
Current State: Closed
Released In: 1.1.6
Target Release: patch
Applies To: Extension
Component: WysiwygPlugin
Branches: Release01x01 trunk
Consider the following code, set up for
GluePlugin:
| *Company ID* | *Supplier Type* | *Partner Rank* | *Service Focus* | *Supplier Markets* | *Market Focus* |
%~~ SEARCH{
~~~ search="META:FORM.*?ApplicationForm"
~~~ topic="XYZ*" nosearch="on" nototal="on" regex="on" noheader="on"
~~~ excludetopic="%TOPIC%"
~~~ format="|
~~~ [[$topic][$formfield(CompanyID)]] |
~~~ $formfield(SupplierType) |
~~~ $formfield(PartnerRank) |
~~~ $formfield(Service Focus) |
~~~ $formfield(SupplierMarkets) |
~~~ $formfield(MarketFocus) |
~~~ " }%
If this code is in a page that is edited with WYSIWYG, whether or not the code in this section is modified, when the page is saved the result is
| *Company ID* | *Supplier Type* | *Partner Rank* | *Service Focus* | *Supplier Markets* | *Market Focus* |
%~~ SEARCH{ ~~~ search="META:FORM.*?ApplicationForm" ~~~ topic="XYZ*" nosearch="on" nototal="on" regex="on" noheader="on" ~~~ excludetopic="%TOPIC%" ~~~ format="| ~~~ [[$topic][$formfield(CompanyID)]] | ~~~ $formfield(SupplierType) | ~~~ $formfield(PartnerRank) | ~~~ $formfield(Service Focus) | ~~~ $formfield(SupplierMarkets) | ~~~ $formfield(MarketFocus) | ~~~ " }%
This breaks the code. (Glue Plugin cannot use it.)
It also violates the Principle of Least Surprise. WYSIWYG should not reformat the content of the page unless the USER reformats the content.
--
VickiBrown - 03 Mar 2012
Thanks Vicki,
You're right, of course, but the mechanics of actually achieving this is hugely non-trivial.
Having said that,
MichaelTempest did some great work on trunk's
WysiwygPlugin which addresses this in
Item2174. I made a testing release (and I think Crawford made another) that you can test, if you're feeling adventurous, at
Extensions/Testing.WysiwygPlugin - also requires trunk
TinyMCEPlugin, you can get from
Extensions/Testing.TinyMCEPlugin
FWIW you can also do without
GluePlugin, Eg.
| *Company ID* | *Supplier Type* | *Partner Rank* | *Service Focus* | *Supplier Markets* | *Market Focus* |
%SEARCH{
search="form.name~'*ApplicationForm'"
type="query"
topic="XYZ*"
nonoise="on"
excludetopic="%TOPIC%"
format="| [[$topic][$formfield(CompanyID)]] \
| $formfield(SupplierType) \
| $formfield(PartnerRank) \
| $formfield(Service Focus) \
| $formfield(SupplierMarkets) \
| $formfield(MarketFocus) |"
}%
I'm not sure if it works with
GluePlugin markup, though, so your testing would be very welcome
If you have the time to confirm that the latest
WysiwygPlugin &
TinyMCEPlugin works okay with glue markup, we can mark this as duplicate of
Item2174
--
PaulHarvey - 03 Mar 2012
Silly me; I tested at trunk.foswiki.org/Sandbox
http://trunk.foswiki.org/Sandbox/TestTopic44758.
%SEARCH{....}%
is protected fine; but
%~~~ SEARCH{}%
isn't.
I've re-titled the bug so we can think about improving
Item2174 to cover unofficial macro syntax the
GluePlugin one.
--
PaulHarvey - 03 Mar 2012
It appears to be a simple fix. The regex looking to protect macros needs to match
%(?:~~ )?
- allowing for optional glue syntax between the % and the macro name.
--
GeorgeClark - 06 May 2012