I almost have it right I think: #foreach($topicDefenitionDoc in $topicDefenitionDocs) #set($topicDefenitionDocument=$xwiki.getDocument($topicDefenitionDoc)) #set($topicDefenitionObject=$topicDefenitionDocument.getObject($classDefenitionName)) == $topicDefenitionDocument.display('topicTitle','view',$topicDefenitionObject) == ##$topicDefenitionDocument.display('topicDescription','view',$topicDefenitionObject) #foreach($ParagraphBlock in $topicDefenitionDocument.getDocument().getXDOM().getBlocks("class:ParagraphBlock", "DESCENDANT")) #if($velocityCount == 1) #set ($blockParent = $ParagraphBlock.getParent()) #set ($leadParagraph = $services.rendering.render($ParagraphBlock, "xwiki/2.1")) #if($blockParent.getParameter('class') == 'lead') (%class="lead"%)((($leadParagraph))) #else $leadParagraph #end #end #end
The one issue I have left is the translation. The $topicDefenitionsDocs are in the $context.language But the Blocks are in the default language? How can I get the blocks in the $context.language Gerritjan Koekkoek Vader van Rai Koekkoek (cdls) en voorzitter vereniging CdLS Visit our website Facebook email ________________________________________ From: users <users-boun...@xwiki.org> on behalf of Thomas Mortagne <thomas.morta...@xwiki.com> Sent: 11 June 2015 13:51 To: XWiki Users Subject: Re: [xwiki-users] Get parts of a page... On Thu, Jun 11, 2015 at 12:58 PM, Gerritjan Koekkoek <gerrit...@cdlsworld.org> wrote: > A little progress, but what to do to inspect if paragraph has class lead to > it and to display the paragraph remains unclear. > > #foreach($topicDefenitionDoc in $topicDefenitionDocs) > #set($topicDefenitionDocument=$xwiki.getDocument($topicDefenitionDoc)) > > #set($topicDefenitionObject=$topicDefenitionDocument.getObject($classDefenitionName)) > == > $topicDefenitionDocument.display('topicTitle','view',$topicDefenitionObject) > == > > $topicDefenitionDocument.display('topicDescription','view',$topicDefenitionObject) > #foreach($ParagraphBlock in > $topicDefenitionDocument.getDocument().getXDOM().getBlocks("class:ParagraphBlock", > "DESCENDANT")) > #if($velocityCount == 1) > $ParagraphBlock.self > #end > $velocityCount > #end > #end > #else > > Will give me a correct count of all html <p> parts > One of these, usually the first is enclosed by a <div class="lead"> > I would like to display this text only > $ParagraphBlock.self > But it does only show: > $ParagraphBlock.self There is no such method in Block so not sure what you expect "self" to do. If you want to render a block you can use rendering service, see http://extensions.xwiki.org/xwiki/bin/view/Extension/Rendering+Module. > > as if method in this context is not valid > > Second I have no idea how to inspect the <div class="lead"> that holds the > first <p> > > My output currently looks as follows: > > Behavior > Behavioral problems in people with CdLS are not inevitable. In fact, some > people have no behavioral problems, while others are mild, have transient > problems. Many problems are treatable. At the same time it is obviously the > severity of behavioral problems in people who injure themselves or others > deny. > Many behavior problems are a reaction to something in the body or the > environment and they are cyclical (they come and go). Behavioral changes > often occur in early childhood and the teenage years. Like most people, > develop people with CdLS behavior for a certain reason, and it is important > to first address the underlying causes of the behavior. If the source of the > behavior is determined, one can try to recognize that resource and to avoid. > > If the behavior follows a pattern (such as it is always at the same time, > same place, or to a particular person) treatment will begin to investigate > whether the situation can be changed. When the problem is that the > environment does not provide sufficient structure or variation, that can be > addressed. Discovering the reasons for behavior is the most difficult part of > the treatment. Sometimes one can not eliminate the cause and one should look > for ways to control the behavior. This can vary from moment to rest in your > own room, distract the person to another activity to the use of protective > clothing. > > It remains important to always look at possible underlying medical problems. > Gastrointestinal problems, muscle pain, ear infections, dental pain and > epilepsy can cause irritability, self-injurious behavior or aggressive > behavior. Even people who can communicate well, sometimes can not recognize > the source of their discontent. Undetected disease (silent reflux) and tooth > decay / gum disease are the two most common causes of behavioral changes. > > > $ParagraphBlock.self > 1 > 2 > 3 > 4 > > Gerritjan Koekkoek > Vader van Rai Koekkoek (cdls) en voorzitter vereniging CdLS > Visit our website > Facebook > email > > > > > ________________________________________ > From: Gerritjan Koekkoek > Sent: 08 June 2015 18:45 > To: XWiki Users > Subject: Re: [xwiki-users] Get parts of a page... > > I'm not sure what cased the 503, maybe because I did: > #foreach($topicDefenitionDoc in $topicDefenitionDocs) > #set($topicDefenitionDocument=$xwiki.getDocument($topicDefenitionDoc)) > > #set($topicDefenitionObject=$topicDefenitionDocument.getObject($classDefenitionName)) > == > $topicDefenitionDocument.display('topicTitle','view',$topicDefenitionObject) > == > #foreach($headerBlock in > $topicDefenitionDocument.getXDOM().getBlocks("class:HeaderBlock", > ""DESCENDANT")) > $headerBlock -- to inspect what's inside > #end > #end > > I changed the inside of the loop to $velocityCount and indeed the numbers > seemed to allign wel with number of headers inside the page > > I've now changed class:HeaderBlock into class:GroupBlock > but now the $velocityCount equals 1 all the time wile my text is like: > == Behavior == > Behavioral problems in people with CdLS are not inevitable. In fact, some > people have no behavioral problems, while others are mild, have transient > problems. Many problems are treatable. At the same time it is obviously the > severity of behavioral problems in people who injure themselves or others > deny. > > Many behavior problems are a reaction to something in the body or the > environment and they are cyclical (they come and go). Behavioral changes > often occur in early childhood and the teenage years. Like most people, > develop people with CdLS behavior for a certain reason, and it is important > to first address the underlying causes of the behavior. If the source of the > behavior is determined, one can try to recognize that resource and to avoid. > > If the behavior follows a pattern (such as it is always at the same time, > same place, or to a particular person) treatment will begin to investigate > whether the situation can be changed. When the problem is that the > environment does not provide sufficient structure or variation, that can be > addressed. Discovering the reasons for behavior is the most difficult part of > the treatment. Sometimes one can not eliminate the cause and one should look > for ways to control the behavior. This can vary from moment to rest in your > own room, distract the person to another activity to the use of protective > clothing. > > It remains important to always look at possible underlying medical problems. > Gastrointestinal problems, muscle pain, ear infections, dental pain and > epilepsy can cause irritability, self-injurious behavior or aggressive > behavior. Even people who can communicate well, sometimes can not recognize > the source of their discontent. Undetected disease (silent reflux) and tooth > decay / gum disease are the two most common causes of behavioral changes. > > I would have expected the velocity count to number to 4 )equal to number op > <p>tags in the text? but it counts only 1 > > Gerritjan Koekkoek > Vader van Rai Koekkoek (cdls) en voorzitter vereniging CdLS > Visit our website > Facebook > email > > > > > ________________________________________ > From: users <users-boun...@xwiki.org> on behalf of Thomas Mortagne > <thomas.morta...@xwiki.com> > Sent: 08 June 2015 11:19 > To: XWiki Users > Subject: Re: [xwiki-users] Get parts of a page... > > On Mon, Jun 8, 2015 at 11:11 AM, Gerritjan Koekkoek > <gerrit...@cdlsworld.org> wrote: >> From: users <users-boun...@xwiki.org> on behalf of Thomas Mortagne >> <thomas.morta...@xwiki.com> >> Sent: 08 June 2015 11:00 >> To: XWiki Users >> Subject: Re: [xwiki-users] Get parts of a page... >> >> On Mon, Jun 8, 2015 at 10:52 AM, Gerritjan Koekkoek >> <gerrit...@cdlsworld.org> wrote: >>> From: users <users-boun...@xwiki.org> on behalf of Thomas Mortagne >>> <thomas.morta...@xwiki.com> >>> Sent: 08 June 2015 10:46 >>> To: XWiki Users >>> Subject: Re: [xwiki-users] Get parts of a page... >>> >>> On Mon, Jun 8, 2015 at 10:28 AM, Gerritjan Koekkoek >>> <gerrit...@cdlsworld.org> wrote: >>>> Hi, >>>> >>>> this indeed looks very useful... >>>> We run XWiki version 6.4 >> >> Is this functionality very costly from a performance perspective? >> The loop i'm running will give me approx 25 pages >> Now I have added the loop through all the Headerblocks and the server >> crashed (503 service not available) >> Now retrying and the page load is very slow: Wating for many minutes now? > > Loading 25 pages is slow whatever you do with them, then they are in > cache and it should be OK. I don't see how reading a XDOM could cause > a crash, you should look at the log and see what this 503 really mean. > >> >>>> ________________________________________ >>>> From: users <users-boun...@xwiki.org> on behalf of Thomas Mortagne >>>> <thomas.morta...@xwiki.com> >>>> Sent: 08 June 2015 10:17 >>>> To: XWiki Users >>>> Subject: Re: [xwiki-users] Get parts of a page... >>>> >>>> In your macro you could get the document and then use something like >>>> what is described in >>>> http://www.xwiki.org/xwiki/bin/view/ReleaseNotes/ReleaseNotesXWiki61RC1#HAccesstoBlockMatchersfromvelocityscripts >>>> to extract the GroupBlock you want (i.e. the one with a parameter >>>> "class" equals to "lead" from what I understood). >>>> >>>> My script is: >>>> #foreach($topicDefenitionDoc in $topicDefenitionDocs) >>>> >>>> #set($topicDefenitionDocument=$xwiki.getDocument($topicDefenitionDoc)) >>>> >>>> #set($topicDefenitionObject=$topicDefenitionDocument.getObject($classDefenitionName)) >>>> == >>>> $topicDefenitionDocument.display('topicTitle','view',$topicDefenitionObject) >>>> == >>>> $topicDefenitionDocument.getXDOM().getBlocks("class:lead", >>>> "DESCENDANT") >>> I understand above line should be changed in: >>> #foreach($headerBlock in >>> $topicDefenitionDocument.getXDOM().getBlocks("class:HeaderBlock", >>> "DESCENDANT")) >>> But how do is then inspect if the block has the 'class="lead" ? >> >> Note that HeaderBlock is for headers and what you have in your example >> in your first mail is a GroupBlock. >> >> Now for the parameters I talked about see >> http://nexus.xwiki.org/nexus/service/local/repositories/releases/archive/org/xwiki/rendering/xwiki-rendering-api/6.4.4/xwiki-rendering-api-6.4.4-javadoc.jar/!/org/xwiki/rendering/block/Block.html#getParameter%28java.lang.String%29 >> >> When you have the block you can as for the value of "class" parameter >> using $headerBlock.getParameter('class') >> >>> ... >>> #end >>>> #end >>>> >>>> But the output I get is: >>>> == Behavior == >>>> $topicDefenitionDocument.getXDOM().getBlocks("class:lead", "DESCENDANT") >>>> == Early Intervention / Education == >>>> $topicDefenitionDocument.getXDOM().getBlocks("class:lead", "DESCENDANT") >>>> >>>> ... >>>> What am I missing? >>> >>> the "class" in $topicDefenitionDocument.getXDOM().getBlocks("class:lead", >>> "DESCENDANT") has nothing to do with css. This is the Java class of >>> the block you want to find so you are supposed to put GroupBlock there >>> as I suggested and then select the one in the list having the >>> parameter "class" equals to "lead". >>> >>>> I also tried: >>>> $topicDefenitionDocument..getDocument().getXDOM().getBlocks("class:lead", >>>> "DESCENDANT") >>>> Same result, as if methods/functions are not available? >>>> >>>> On Mon, Jun 8, 2015 at 9:31 AM, Gerritjan Koekkoek >>>> <gerrit...@cdlsworld.org> wrote: >>>>> I know wiki has a nice macro to select a part of a page based on headers. >>>>> >>>>> But headers can be changed and when you translate the page the page >>>>> holding the macro wil have a ugly error. >>>>> >>>>> >>>>> {{include reference="DocumentToInclude" section="HMySection"}} >>>>> >>>>> >>>>> How could I do it based on the following wiki syntax: >>>>> >>>>> >>>>> (%class="lead")((( >>>>> >>>>> Text to be included >>>>> >>>>> ))) >>>>> >>>>> Text to be excluded >>>>> >>>>> >>>>> 'Text to be included' and 'text to be excluded' can have any wiki-markup >>>>> >>>>> >>>>> I would like to create a macro that would look like >>>>> >>>>> {{myGetSectionMacro reference="DocumentToInclude" onlyLeadText="true"}} >>>>> >>>>> >>>>> I could get the whole page by >>>>> >>>>> {{myGetSectionMacro reference="DocumentToInclude" onlyLeadText="false"}} >>>>> >>>>> >>>>> I could get only 'Text to be excluded' by >>>>> >>>>> {{myGetSectionMacro reference="DocumentToInclude" onlyLeadText="false" >>>>> onlyRestText="true"}} >>>>> >>>>> Any suggestion is welcome >>>>> Note that the used Class is a bootstrap class that will add markup to the >>>>> section that will show it as a INTRO text... >>>>> >>>>> >>>>> Gerritjan Koekkoek >>>>> Vader van Rai Koekkoek (cdls) en voorzitter vereniging CdLS >>>>> Visit our website<http://www.cdlsworld.org> >>>>> Facebook<https://www.facebook.com/gerritjan.koekkoek> >>>>> email<gerrit...@cdlsworld.org> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> users mailing list >>>>> users@xwiki.org >>>>> http://lists.xwiki.org/mailman/listinfo/users >>>> >>>> >>>> >>>> -- >>>> Thomas Mortagne >>>> _______________________________________________ >>>> users mailing list >>>> users@xwiki.org >>>> http://lists.xwiki.org/mailman/listinfo/users >>>> _______________________________________________ >>>> users mailing list >>>> users@xwiki.org >>>> http://lists.xwiki.org/mailman/listinfo/users >>> >>> >>> >>> -- >>> Thomas Mortagne >>> _______________________________________________ >>> users mailing list >>> users@xwiki.org >>> http://lists.xwiki.org/mailman/listinfo/users >>> _______________________________________________ >>> users mailing list >>> users@xwiki.org >>> http://lists.xwiki.org/mailman/listinfo/users >> >> >> >> -- >> Thomas Mortagne >> _______________________________________________ >> users mailing list >> users@xwiki.org >> http://lists.xwiki.org/mailman/listinfo/users >> _______________________________________________ >> users mailing list >> users@xwiki.org >> http://lists.xwiki.org/mailman/listinfo/users > > > > -- > Thomas Mortagne > _______________________________________________ > users mailing list > users@xwiki.org > http://lists.xwiki.org/mailman/listinfo/users > _______________________________________________ > users mailing list > users@xwiki.org > http://lists.xwiki.org/mailman/listinfo/users -- Thomas Mortagne _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users _______________________________________________ users mailing list users@xwiki.org http://lists.xwiki.org/mailman/listinfo/users