Thanks Ludovic, $xwiki.getUniquePageName is excellent!

The only 'hack' I still have to make is generating empty pages '2010',
'2011', '2012', '2013' so there won't be a page created with that
name.

For those interested in the outcome:
{{velocity}}
##configure these variables
#set($space="Sandbox2")
#set($template="AppSpace.DemoTemplate")
#set(#editmode="edit") ##either 'edit' or 'inline', depending on the template
##end configurable values
#set($parent=$space+".WebHome")
#set($year= ${xwiki.formatDate($datetool.date, 'yyyy')})
#set($year=${request.year}) ##could have been 'if !$year -> set from
system time, but this won't overrule


#set($docname=$xwiki.getUniquePageName($space , $year))

#if(!$xwiki.exists($docname) && $xwiki.hasAccessLevel('edit',
$context.user, $docname))
   $response.sendRedirect($xwiki.getURL($docname, $editmode,
"template=$template&parent=$parent"))
   ## Stop processing, since we already sent a redirect.
   #stop
 #end
{{/velocity}}

On Wed, Jan 11, 2012 at 9:34 PM, Ludovic Dubost <[email protected]> wrote:
> Joris,
>
> There is the $xwiki.getUniquePageName("SpaceName" , "BasePageName") which
> allows to give you a page name not existing in XWiki.
> It works in most cases, except if you generate the page name before the
> save (for the form display) as you risk having twice the same name.
>
> If you make this call just before the save, the duplicate risks are close
> to zero.
>
> As Edo has mentionned, a component would be needed to guarantee zero
> possible duplication and/or to generate the page name for the edit form
> (before saving). An even there there are some issues to support clustering.
> We have been thinking about this and is part of our plan for 3.4/3.5 or
> early 4.0.
>
> Ludovic
>
> 2012/1/11 Joris Dirks <[email protected]>
>
>> One of the use cases I have for my wiki is storing 'issues', where
>> each issue should have a serial number consisting of year + subsequent
>> number.
>>
>> I was thinking about a script like this, but one of the problems is:
>> there is no 'while' function in Velocity.
>>
>> How would you create a form for this? Thanks for your ideas!
>>
>> Joris
>>
>> #set($space="Issues"}
>> #set($template="AppSpace.IssueTemplate")
>> #set($parent=$space.WebHome)
>> #set($year= ${xwiki.formatDate($datetool.date, 'yyyy')})
>> #set($partID="0"
>> #set($genericID=$space"."$year)
>>
>> #while($xwiki.exists($space.$issueID'')
>> {
>> #set($partID=$partID+1)
>> #set($issueID=$year"-"$partID)
>> }
>>
>>  #if(!$xwiki.exists($issueID) && $xwiki.hasAccessLevel('edit',
>> $context.user, $issueID))
>>    $response.sendRedirect($xwiki.getURL($ID, 'inline',
>> "template=$template}&parent=$parent"))
>>    ## Stop processing, since we already sent a redirect.
>>    #stop
>>  #end
>> _______________________________________________
>> users mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/users
>>
>
>
>
> --
> Ludovic Dubost
> Founder and CEO
> Blog: http://blog.ludovic.org/
> XWiki: http://www.xwiki.com
> Skype: ldubost GTalk: ldubost
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/users
_______________________________________________
users mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/users

Reply via email to