I tied to replace getDocument() in this line with getTranslatedDocument()... #foreach($ParagraphBlock in $topicDefenitionDocument.getDocument().getXDOM().getBlocks("class:ParagraphBlock", "DESCENDANT"))
But the $ParagraphBlock is empty??? 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 19:46 To: XWiki Users Subject: Re: [xwiki-users] Get parts of a page... On Thu, Jun 11, 2015 at 4:37 PM, Gerritjan Koekkoek <gerrit...@cdlsworld.org> wrote: > 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 In document API you have getTranslatedDocument() which return the right document from current locale point of view on which you can then call getXDOM(). > > 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 -- 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