On May 5, 2009, at 4:16 PM, Pascal Voitot wrote:
no better idea... a very special case to remind in the syntax help to my mind...
Just committed the new behavior. Would be great if some users/devs could verify it works on their use cases. Thanks -Vincent
Pascal
On Tue, May 5, 2009 at 9:40 AM, Vincent Massol <[email protected]> wrote:
After trying to implement it I've found the following caveats:
* if the user wants an html comment he needs to escape the -- * if the user wants a NL he'll need to enter <br/> * if the user wants a paragraph he'll need to enter <p>...</p> * And the most problematic one IMO: the user needs to be very careful about new lines since:
<table> <tr> <td> * [[listitem]] </td> </tr> </table>
is very different from
<table> <tr> <td> * [[listitem]]
</td> </tr> </table>
In the first case the </td>, </tr> and </table> and continuation of the list item written in wiki syntax since the wiki parser accepts multiline content... hence you'll get in XHTML:
<table><tbody><tr><td><ul><li><!--startwikilink:listitem--><span class="wikicreatelink"><a href="/xwiki/bin/view/listitem? parent=xwiki:Space.Page"><span class="wikigeneratedlinkcontent">Page</ span></a></span><!--stopwikilink--></td></tr></tbody></table></li></ ul>
which is completely invalid.
The same applies for:
{{macro/}} </td>
vs
{{macro/}}
</td>
in the first case the macro is inline and will generate inline content and in the second case it's standalone.
Still trying to figure out a best solution but I don't see one right now...
If you have any idea, shoot!
Thanks -Vincent
On May 4, 2009, at 3:25 PM, Vincent Massol wrote:
Hi,
After discussing with Thomas we've reached the conclusion that we should change the way the HTML macro handle its content when wiki=true. For ex take the following input:
{{velocity}} ... {{html wiki="true"}} <form> $xwiki.includeForm("XWiki.MyClassSheet") <br /> <p> <input type="submit" name="submit" value="Create this new Workpackage" /> </p> </form> {{/html}} ... {{/velocity}}
And assume that MyClassSheet has some $doc.display() velocity code which thus generate {{html}} macros.
Current Result ============
Right now here's what happens: 1) velocity macro is executed and $xwiki.includeForm executes 2) MyClassSheet generate {{html}} macro content thus yielding:
{{html wiki="true"}} <form> {{html}}...<someTag>...</someTag>{{/html}} </form> {{/html}}
3) After velocity has finished executing the velocity macro calls the wiki parser on the result and thus the top level HTML macro executes 4) since wiki=true the content is given to a SAX parser and each XML tag content is given to the wiki parser. Thus "{{html}}...", "..." and "{{/html}}" will be parser by the wiki parser separately (because <someTag> is valid XML), thus generating non expected content as a result.
Proposed change ==============
Modify the HTML behavior so that the wiki parser executes first (instead of the SAX parser) and render the result using a special renderer that prints the special symbols and text as is.
When run on our example this would give (same steps 1) and 2)):
3) wiki parser executes and generate XDOM. Render it using the special renderer
Note that this means that if in HTML your write content that has a meaning in some wiki syntax you'll need to escape it. For example if you have:
{{html wiki=true}} <!--hello--> {{/html}}
you'll get some strikethrough. So you'll need to write instead:
{{html wiki=true}} <!~-~-hello~-~-> {{/html}}
WDYT?
Here's my +1
Thanks -Vincent
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs