Thomas,
Thank for very much for your suggestion. The group syntax was exactly
what I needed.
However, I am still having some trouble with getting the TOC macro to
correctly pick up wiki syntax rendered with $doc.display() that is
contained in an object's property.
I have also noticed that using wiki syntax instead of html,
$doc.display seems to behave differently and overrides the default
editor setting.
Here is my example - I am using wiki syntax similar to the following
(simplified for example's sake):
************START CODE****************
(% class="grid sortable doOddEven" id="Table" %)
(% class="sortHeader" %)|=Field 1|=Field 2
|Data 1|(((
(% class="mktree" name="tree" %)
* (((
=$doc.display("String", $object)=
)))
** (((
$doc.display("TextArea", $object)
)))
)))
{{toc /}}
************END CODE****************
The TextArea property contains a large quantity of text formatted in
xwiki syntax. The display works just fine - the contents of the
property render correctly and display in the table.
Two problems:
1) The TOC macro only recognizes the String property that I manually
enclose in "=" Heading 1 syntax. It doesn't seem to be picking up the
wiki syntax contained in the object properties. So if I had 3 objects
on the page, I get:
*String 1
*String 2
*String 3
Instead of:
*String 1
**Heading 2 from TextArea**
**Heading 2 from TextArea**
*String 2
Etc....
I'm afraid I don't know very much about the order of macro rendering
or whether it is even possible to accomplish what I am describing...
2) When I use the Inline editing mode, another TextArea property of
the object (not shown in the code above) does not show up with the
WYSIWYG editor, even though it is set as the default editor. When
using the {{html}} macro and code like this:
<li>$doc.display("TextAreaWYSIWYG", $object)</li>
The property correctly displays in Inline mode with the WYSIWYG
editor. Now that I am using only wiki syntax to display the table, all
TextArea properties show up in the Plain Text editor, regardless of
their default setting. Am I doing something wrong?
Many thanks for all of the help, I have made very significant progress
on my project thanks to this list...
aaron
On Sun, Oct 23, 2011 at 1:50 AM, Thomas Mortagne
<thomas.mortagne(a)xwiki.com> wrote:
On Sun, Oct 23, 2011 at 12:27 AM, Ashtar
Communications
<ashtarcommunications(a)gmail.com> wrote:
Thank you for the feedback - I have been playing
with passing custom
parameters, and have a few additional clarification questions.
It seems that I need to use pure wiki syntax if I want the TOC macro
to work right. I am currently relying on the {{html}} macro for two
things which I can't figure out how to replace with custom parameters:
1) Nested <ul>'s - I can only get the custom parameter to apply to one
line, and can't figure out how to nest another <ul>.
Something like this:
(% class="mktree" name="tree" %)
* $doc.display("Title", $obj)
<velocity code, including an {{html}} block to create an <input> element>
**Additional parts of tree
***Additional parts of tree
Just returns two different <ul>'s, only the first one of which has the
custom parameter. Is this because the additional lines of code before
continuing the tree forces the rendering engine to close the first
<ul>? Any way to override that?
Here is an example of wiki syntax with custom parameters on each ul:
(% param=value %)
* toto
(% param2=value2 %)
** titi
but custom parameters on li is not supported yet.
2) Table Sorter - Unfortunately, the whole set of object display code
is wrapped in an {{html}} macro because I am using the old Table
Sorter extension code. This is because I want to display multiple
properties from each object in a single table cell. Looking at the
Live Table macro, it seems that it only supports binding a table to a
class and then setting a column to display a single property - where I
need a single cell to include multiple properties displayed using
custom code.
Accomplishing this using the html syntax is simple - I can include an
arbitrary amount of code in each <td> tag.
To use wiki syntax for a sortable table, the XWiki Syntax document
says I should use this:
(% class="grid sortable filterable doOddEven" id="tableid" %)
(% class="sortHeader" %)|=Title 1|=Title 2
|Cell 11|Cell 12
|Cell 21|Cell 22
This creates the table fine - but I can't figure out how to include
additional multi-line code in a single cell. As soon as I put in a new
line, etc...it closes the table. Is there any way to accomplish this
using wiki syntax? Should I be trying to use LiveTable instead
somehow?
You can put as many lines you want without closing the table but it's
closed by an empty line. If you need to have several paragraphs you
can use "group" syntax
(
http://platform.xwiki.org/xwiki/bin/view/Main/XWikiSyntax#HGroups) as
in
(% class="grid sortable filterable doOddEven" id="tableid" %)
(% class="sortHeader" %)|=Title 1|=Title 2
|Cell 11|(((
Cell 12
with
several
paragraphs
)))|Cell 21|Cell 22
If the above is confusing, here's what I'm really asking:
I want to use a sortable table to display multiple objects of the same
class on the same page. I would like that table to display multiple
properties of each object in certain cells in the row. Some of those
properties will contain wiki syntax - which I would like to be
readable by the TOC macro after the table has been rendered. Is there
a way to accomplish this?
Thank you,
Aaron
On Thu, Oct 20, 2011 at 1:18 PM, Ashtar Communications
<ashtarcommunications(a)gmail.com> wrote:
Interesting - I had missed the ability to pass
custom parameters using
wiki syntax. I will play with that and see if I can get it to output
the same html I need.
I am in fact using a series of nested <ul> within each <div>, that
forms a collapsible javascript tree. The js is touchy about the exact
formatting of the UL - if I can't get the tags to nest correctly using
wiki syntax then I may be back with additional questions.
A more accurate but simplified version of each object's display code is:
<ul class="tree">
<li>
<h2>some content</h2>
<input />
<input />
</li>
<ul>
<li>Some velocity code, returns wiki syntax with headings</li>
<li>Some velocity code, returns wiki syntax with headings</li>
<li>Some velocity code, returns wiki syntax with headings</li>
</ul>
</ul>
Thanks much,
aaron
On Thu, Oct 20, 2011 at 12:52 PM, Thomas Mortagne
<thomas.mortagne(a)xwiki.com> wrote:
On Thu, Oct 20, 2011 at 7:10 PM, Ashtar
Communications
<ashtarcommunications(a)gmail.com> wrote:
> That makes sense, thank you for the clarification. Unfortunately, I am
> using the HTML macro to generate the final output - this is because I
> need to use <ul>'s with a javascript to make the div's into
> collapsible trees.
>
> Does that mean I'm out of luck?
<ul> ? I don't see much lists in your example, did you mean div ?
You can get div with custom parameters in pure wiki syntax the following way:
(% class="somecssclass" %)
(((
div content
)))
which produces
<div class="somecssclass">div content</div>
And if you really mean list, list most of the wiki elements list
support custom parameters too:
(% class="somecssclass" %)
* mylist element 1
* mylist element 2
which produces
<ul class="somecssclass">
<li>mylist element 1</li>
<li>mylist element 2</li>
</ul
You can put anything you want in custom parameters and html renderer
will print them as you provided them depending of the element.
Using the html macro should always be the last resort, usually when
you get some html you don't really have control on that you need to
display or when you need to display elements not supported by the wiki
syntax (yet) like <form> related stuff.
>
> On Thu, Oct 20, 2011 at 12:45 AM, Thomas Mortagne
> <thomas.mortagne(a)xwiki.com> wrote:
>> On Thu, Oct 20, 2011 at 8:02 AM, Ashtar Communications
>> <ashtarcommunications(a)gmail.com> wrote:
>>> One more tonight...
>>>
>>> It seems that I am unable to use the built-in TOC macro for wiki
>>> content which is generated dynamically from a Class Sheet {{include}}.
>>> I assume this is because the TOC macro is rendered before (or
>>> simultaneously with) the include macro which actually displays the
>>> objects on the page, so as far as the TOC macro knows, there are no
>>> wiki headings on the page (yet) to create an outline from.
>>
>> Actually no, there is a concept of priority in macros and TOC macro
>> priority is very low specifically to support use case like that. But
>> TOC only support (generated or not) real wiki content which mean if
>> you have anything in a html macro it will not support it because html
>> macro produce a RawBlock which is a black box containing html syntax
>> for other macros.
>>
>> So if you use case is just what you described it should work well.
>>
>>>
>>> Does anyone have any suggestions on how to parse through the final
>>> rendered output of the wiki page to generate a table of contents for
>>> dynamically generated wiki content? If I'm missing something with the
>>> existing macro, that would be great...
>>>
>>> What I am looking to do is write some code (preferably in a panel, I
>>> think), which creates a TOC-style index of all the wiki-syntax
>>> headings contained on the fully rendered page, after the content has
>>> been generated from TextArea properties of a set of attached objects
>>> to the page.
>>>
>>> I have written custom display code that loops through every object of
>>> a custom class attached to a page and then displays some of that
>>> objects properties in a series of collapsible div's. Each object
>>> contains two TextArea properties - one for WYSIWYG data, and one for
>>> plain text, which would be formatted in wiki syntax. The result is a
>>> list of each objects name with an expandable <div> full of the
>>> wiki-rendered content contained in the TextArea properties. I would
>>> like to generate a TOC which "reads through" that content and comes
up
>>> with a list of only the relevant headings under each displayed
>>> "object"
>>>
>>> For example, on a page with 3 objects, the custom display code in the
>>> Class Sheet results in this (the wiki syntax appears fully rendered,
>>> obviously):
>>>
>>> Object 1 Name - Click to expand
>>> ******Hidden until clicked********
>>> ==Heading 2==
>>> ===Heading 3===
>>> Normal text, etc...
>>>
>>> Object 2 Name - Click to expand
>>> ******Hidden until clicked********
>>> ==Heading 2==
>>> ===Heading 3===
>>> Normal text, etc...
>>>
>>> Object 3 Name - Click to expand
>>> ******Hidden until clicked********
>>> ==Heading 2==
>>> ===Heading 3===
>>> Normal text, etc...
>>>
>>>
>>> I would like the TOC to return:
>>>
>>> Object 1
>>> Heading 2
>>> Heading 3
>>> Object 2
>>> Heading 2
>>> Heading 3
>>> Object 3
>>> Heading 2
>>> Heading 3
>>>
>>> Even when all the div's are initially collapsed/hidden. It would be
>>> ideal if the TOC was clickable and went to the relevant anchor...
>>
>> Are the divs done using html macro or using wiki syntax ?
>>
>>>
>>> I can obviously use getValue() with each TextArea property to return a
>>> string with that objects wiki syntax - but I don't have an easy way to
>>> parse that string to only return the heading levels...
>>>
>>> Any guidance would be appreciated.
>>>
>>> Thanks,
>>>
>>> aaron
>>> _______________________________________________
>>> users mailing list
>>> users(a)xwiki.org
>>>
http://lists.xwiki.org/mailman/listinfo/users
>>>
>>
>>
>>
>> --
>> Thomas Mortagne
>> _______________________________________________
>> users mailing list
>> users(a)xwiki.org
>>
http://lists.xwiki.org/mailman/listinfo/users
>>
> _______________________________________________
> users mailing list
> users(a)xwiki.org
>
http://lists.xwiki.org/mailman/listinfo/users
>
--
Thomas Mortagne
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users
--
Thomas Mortagne
_______________________________________________
users mailing list
users(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/users