The method `$services.refactoring.move` seems to have a bug, that the old page is not deleted. Adding a `$services.refactoring.delete` solves the problem. Assuming the following tree:
Ramzi
|-+ meinTest3
|-- My new title
The following code:
#set($source = $services.model.resolveDocument('Ramzi.meinTest3.sub-site'))
#set ($destination = $services.model.resolveSpace('Ramzi.meinTest3.submenu'))
$services.refactoring.move($source, $destination).join()
will produce the following tree:
Ramzi
|-+ meinTest3
|-- sub-site ## This should not be anymore
|-+ submenu
|-- My new title
The 'old' page (Ramzi.meinTest3.sub-site) has a redirect to the 'new' page (Ramzi.meinTest3.submenu.sub-site). A reproducable snippet (before running, create the page 'Ramzi.meinTest3.sub-site' or set '$resetWorkingEnv' to true):
{{velocity}}
## This should be saved in Ramzi.meinTest3.WebHome
#* -=-=-=-=-=-=-=-=-=- optional setup -=-=-=-=-=-=-=-=-=- *#
#set ($resetWorkingEnv = false)
#macro(createNewPage)
#set($myDoc = $xwiki.getDocument("Ramzi.meinTest3.sub-site"))
$myDoc.setTitle("My new title")
$myDoc.setContent("My cool content...")
$myDoc.save()
#end
#macro(deletePages $space)
#set($query = "where doc.space like '$space' and doc.name <> 'WebHome'")
#set($data = $services.query.xwql($query).execute())
$data.size() to be deleted.
#foreach ($page in $data)
#set($currDoc = $xwiki.getDocument($page))
$currDoc.delete()
#end
#end
#if ($resetWorkingEnv)
## start from clean state
#deletePages('Ramzi.meinTest3%')
#createNewPage()
#end
#* -=-=-=-=-=-=-=-=-=- Here the actual code starts -=-=-=-=-=-=-=-=-=- *#
#set($source = $services.model.resolveDocument('Ramzi.meinTest3.sub-site'))
#set ($destination = $services.model.resolveSpace('Ramzi.meinTest3.submenu'))
$services.refactoring.move($source, $destination).join()
##$services.refactoring.delete($source).join() ## This causes the wanted behaviour.
{{/velocity}}
The redirect could be desired behaviour, but keeping the 'old' page in the nav-view is not expected behaviour from a move-method. Thanks for any input. |