cross
New Foswiki release 2.1.6 is available with important security fixes.
Sourceforge foswiki email lists being discontinued. Subscribe to the new Foswiki announce and discuss lists at MailingLists
This question about Topic Markup Language and applications: Answered

Using CALC to set variables inside formatted search

I'm building an application. I want a "create" form, in HTML, that will provide a set of checkboxes.

The items for the checkboxes are in a table in topic "CheckboxItems", e.g.

| *Item* |
| A |
| B |
| C |
| D |
| E |

In my HTML form, I can do this (lines broken for clarity):
%SEARCH{ "^\| +[^\*][^\|]*\|" topic="CheckboxItems" 
  type="regex" multiple="on" nonoise="on" 
  format="<label><input type='checkbox' name='Item' 
    value='$pattern(^\| *(.*?) *\|.*)' class='foswikiCheckbox' 
    /> $pattern(^\| *(.*?) *\|.*) &nbsp;</label>
  "
}% 

This works. I see a set of checkboxes in the result.

However, in the interests of DRY (Don't Repeat Yourself), I thought "I'll set a variable for the pattern!"

So, I tried this:
%SEARCH{ "^\| +[^\*][^\|]*\|" topic="CheckboxItems" 
  type="regex" multiple="on" nonoise="on" 
  format="$percntCALC{ $SET(cbitem, $pattern(^\| *(.*?) *\|.*)) 
    <label><input type='checkbox' name='Item' 
    value='$GET(cbitem)' class='foswikiCheckbox' 
    /> $GET(cbitem) &nbsp;</label> }$percnt
  "
}% 

I get almost the same output except that it's 'verbatim'. All of the HTML angle brackets are escaped. i.e. the source contains:

&lt;label&gt;&lt;input type='checkbox' name='Item' value='A' class='foswikiCheckbox' /&gt; A &nbsp;&lt;/label&gt;
...

I assume I'm doing something very silly, but what?

-- VickiBrown - 21 Jun 2016

See SpreadSheetPlugin documentation for the SPREADSHEETPLUGIN_ALLOWHTML setting. SSP macros will not emit html, to prevent certain XSS attacks.

-- GeorgeClark - 21 Jun 2016

Here's an approach using FilterPlugin's %FORMATLIST:

%STARTSECTION{"table"}%
| *Item* |
| A |
| B |
| C |
| D |
| E |
%ENDSECTION{"table"}%

%FORMATLIST{
   "$percntINCLUDE{\"%WEB%.%TOPIC%\" section=\"table\"}$percnt"
   split="\n"
   skip="1"
   pattern="\s*\|\s*(.*?)\s*\|"
   format="<label><input type='checkbox' name='Item' value='$1' class='foswikiCheckbox' /> $1</label>"
   separator="$n"
}%

-- Main.MichaelDaum - 21 Jun 2016

 

QuestionForm edit

Subject Topic Markup Language and applications
Extension SpreadSheetPlugin
Version Foswiki 2.1.2
Status Answered
Related Topics
Topic revision: r4 - 23 Jun 2016, VickiBrown - This page was cached on 23 Mar 2018 - 03:18.

The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License