{{velocity}} --- Script-start --- ## Velocity Macros können scheinbar keine Werte zurückgeben, diese Variable wird als Art-Rückgabewert (global) verwendet #set($xWikipermission = "") ## 0 = debug log / output ist deaktiv, 1 = es wird output in die Seite geschrieben #set($debug = 0) ## Konvertiert die Confluence Space-Permission in xWiki-Permission und ## setzt die globale xWikipermission entsprechend (wenn leer, dann keine Konvertierung) #macro(convertConfluencePermissions $permission) #set($xWikipermission = "") ## xWiki Permissions ## view - ability to view pages ## comment - ability to write page comments ## edit - ability to edit page content ## script - control programmatically exactly what users are allowed to do ## delete - ability to delete pages ## admin - ability to administer pages or the wiki ## Confluence Space Permissions ## VIEWSPACE ## REMOVEOWNCONTENT ## EDITSPACE ## REMOVEPAGE ## EDITBLOG ## REMOVEBLOG ## CREATEATTACHMENT ## REMOVEATTACHMENT ## COMMENT ## REMOVECOMMENT ## SETPAGEPERMISSIONS ## REMOVEMAIL ## EXPORTSPACE ## SETSPACEPERMISSIONS #if ($permission.equals("VIEWSPACE")) #set($xWikipermission = "view") #elseif($permission.equals("EDITSPACE") || $permission.equals("EDITBLOG")) #set($xWikipermission = "edit") #elseif($permission.equals("COMMENT")) #set($xWikipermission = "comment") #elseif($permission.equals("SETSPACEPERMISSIONS")) #set($xWikipermission = "admin") #end #end ## Setzt die xWiki-Permission für das gesamte Wiki (alle Unterseiten) ## Es werden keine Persmissions gelöscht, nur hinzugefügt #macro(setPermissions $spaceId $permissions $groups $users) ## Das aktuelle Doc in dem sich das Script befindet, greift auf die Page & Child-Rechte zu #set ($mydoc = $xwiki.getDocument($spaceId)) #set ($RightsObjectAdmins = $mydoc.getObject("XWiki.XWikiGlobalRights", true)) ## $logtool.error($RightsObjectAdmins.getDisplayTitle()) #set ($result = $RightsObjectAdmins.set("groups", $groups)) #set ($result = $RightsObjectAdmins.set("levels", $permissions)) #set ($result = $RightsObjectAdmins.set("users", $users)) #set ($result = $RightsObjectAdmins.set("allow", 1)) ## Don't forget to save the modifications $mydoc.save() #end() #set ($attachmentContent = $doc.getAttachment("entities.xml").getContentAsString()) #set ($xmlDoc = $services.xml.parse($attachmentContent)) #set ($objectNodes = $xmlDoc.getElementsByTagName("object")) #if($debug == 1) length: $objectNodes.getLength() #end #set ($stop = $objectNodes.getLength() - 1) #foreach($i in [0..$stop]) ## item: $objectNodes.item($i).getNodeName() ## attr: $objectNodes.item($i).getAttributes().item(0).getNodeName() #set ($attrValue = $objectNodes.item($i).getAttributes().item(0).getNodeValue()) #if($attrValue.equals("SpacePermission")) #set($children = $objectNodes.item($i).getChildNodes()) ## childs: $children.getLength() #set($stopChildren = $children.getLength() - 1) #foreach($c in [0..$stopChildren]) #if($c == 0) #set($confluencePermission = "") #set($confluenceGroup = "") #end ## Es wird immer davon ausgegangen, dass type vor group kommt, damit sind am Ende beide Variablen gefüllt #set($nameAttr = $children.item($c).getAttributes().getNamedItem("name").getNodeValue()) #if($nameAttr.equals("type")) #set($confluencePermission = $children.item($c).getChildNodes().item(0).getNodeValue()) ## permission: $!confluencePermission #end #if($nameAttr.equals("group")) #set($confluenceGroup = $children.item($c).getChildNodes().item(0).getNodeValue()) ## Paranoia - wirklich beide vars gefüllt? #if("$!confluencePermission" != "" && "$!confluenceGroup" != "") #if($debug == 1) permission: $!confluencePermission group: $!confluenceGroup #end #convertConfluencePermissions($confluencePermission) #if("$!xWikipermission" != "") ## Hardcoded PoC ## Todo: xWiki-Startseite ermitteln ## Todo: Group und User-Name nach xWiki konvertieren #set($spaceId = "TESTARGESPACE02.WebPreferences") ## #set($permissions = "view,comment,edit,delete") #set($permissions = $xWikipermission) #set($groups = "XWiki.XWikiAdminGroup") #set($users = "XWiki.baerthlein") #setPermissions($spaceId $permissions $groups $users) #end ## Mehrfachvorkommen verhindern #if(!$uniqueSpacepermissions.contains($confluencePermission)) $uniqueSpacepermissions.add($confluencePermission) #end #end ## Verarbeitung stoppen - Performance #break #end #end #end #end --- Script-Ende --- {{/velocity}}