Author: dward
Date: 2008-02-09 00:30:54 +0100 (Sat, 09 Feb 2008)
New Revision: 7455
Modified:
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/macros.vm
Log:
- CURRIKI-1567
- Request and Join forms now support roles
Modified:
xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/macros.vm
===================================================================
--- xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/macros.vm
2008-02-08 22:14:26 UTC (rev 7454)
+++ xwiki-products/curriki/trunk/web/src/main/webapp/skins/curriki8/macros.vm
2008-02-08 23:30:54 UTC (rev 7455)
@@ -2580,6 +2580,17 @@
<input type="hidden" name="xpage" value="plain" />
$uprofile.display("profile","edit")
<br />
+#if($sm.getRoles($spaceName).size() > 0) ## {
+$msg.get("groups.members.selectroles")<br />
+$msg.get("groups.members.selectroles.info")<br />
+<select name="roles" multiple size=4>
+#groupRoleSelector($spaceName false false $memberName)
+</select>
+#foreach($role in $ret_hasRoles) ## {
+<input type="hidden" name="hasrole" value="${role}" />
+#end ## }
+<br />
+#end ## }
$uprofile.display("allowNotifications","edit")
$msg.get("groups_members_create_membersettings_email")
<br />
$uprofile.display("allowNotificationsFromSelf","edit")
$msg.get("groups_members_create_membersettings_changenotice")
@@ -3078,4 +3089,145 @@
#end
#end ##}
##
+## Core Group Role macros
+##
+#macro(groupGetRoles $spaceName $withAdmin) ## {
+## Sets ret_groupRoles
+#set($ret_groupRoles = $xwiki.arrayList)
+#set($ret_groupRoleNames = $sm.getRoles($spaceName))
+#foreach($role in $ret_groupRoleNames) ## {
+ #set($discard = $ret_groupRoles.add($xwiki.getDocument($role)))
+#end ## }
+#if($withAdmin) ## {
+ #set($adminGroup = $xwiki.getDocument($sm.getAdminGroupName($spaceName)))
+ #set($discard = $adminGroup.setTitle($msg.get("groups.roles.admin.title")))
+ #set($discard = $ret_groupRoleNames.add(0,
$sm.getAdminGroupName($spaceName)))
+ #set($discard = $ret_groupRoles.add(0, $adminGroup))
+#end ## }
+#end ## }
+##
+##
+#macro(checkForUniqueRole $spaceName $roleName) ## {
+#set($ret_isRoleUnique = true)
+#groupGetRoles($spaceName true)
+#foreach($role in $ret_groupRoles)
+ #if($roleName.equalsIgnoreCase($role.title)) ## {
+ #set($ret_isRoleUnique = false)
+ #end ## }
+#end ## }
+#end ## }
+##
+##
+#macro(checkForValidSizeRole $spaceName $roleName) ## {
+#set($ret_isRoleValidSize = true)
+#if($roleName.length() > 32 || $roleName.length() == 0) ## {
+ #set($ret_isRoleValidSize = false)
+#end ## }
+#end ## }
+##
+##
+#macro(findUniquePageWithExtra $spaceName $prefix $suffix $extra) ## {
+#set($ret_pageName = "${prefix}${extra}${suffix}")
+#if($xwiki.exists($ret_pageName)) ## {
+ #set($extra = "_"+$xwiki.generateRandomString(3).toLowerCase())
+ #findUniquePageWithExtra($spaceName $prefix $suffix $extra)
+#end ## }
+#end ## }
+##
+##
+#macro(findUniqueRolePage $spaceName $roleName) ## {
+#set($clearName = $xwiki.clearName($roleName))
+#if($clearName.length() == 0) ## {
+ #set($clearName = "__"+$xwiki.generateRandomString(3).toLowerCase())
+#end ## }
+#findUniquePageWithExtra($spaceName "Role_${clearName}" "Group" "")
+#end ## }
+##
+##
+#macro(createGroupRole $spaceName $roleName) ## {
+#set($ret_err = false)
+#set($ret_rDoc = false)
+#set($roleName = $roleName.trim())
+#checkForUniqueRole($spaceName $roleName)
+#checkForValidSizeRole($spaceName $roleName)
+#if(!$ret_isRoleUnique) ## {
+ #set($ret_err = $msg.get("groups.roles.create.notunique"))
+#elseif(!$ret_isRoleValidSize) ## } {
+ #set($ret_err = $msg.get("groups.roles.create.invalidsize"))
+#else ## } {
+ #findUniqueRolePage($spaceName $roleName)
+ #set($ret_rDoc = $xwiki.getDocument("${spaceName}.${ret_pageName}"))
+ #set($discard = $ret_rDoc.setTitle($roleName))
+ #set($discard =
$ret_rDoc.saveWithProgrammingRights($msg.get("groups.roles.comment.created",
[$roleName])))
+ #set($ret_success = $msg.get("groups.roles.create.created", [$roleName]))
+#end ## }
+#end ## }
+##
+##
+#macro(renameGroupRole $groupDoc $newRoleName) ## {
+#set($ret_err = false)
+#set($newRoleName = $newRoleName.trim())
+#checkForUniqueRole($groupDoc.space $newRoleName)
+#checkForValidSizeRole($groupDoc.space $newRoleName)
+#if(!$ret_isRoleUnique) ## {
+ #set($ret_err = $msg.get("groups.roles.rename.notunique"))
+#elseif(!$ret_isRoleValidSize) ## } {
+ #set($ret_err = $msg.get("groups.roles.rename.invalidsize"))
+#else ## } {
+ #set($discard = $groupDoc.setTitle($newRoleName))
+ #set($discard =
$groupDoc.saveWithProgrammingRights($msg.get("groups.roles.comment.renamed",
[$oldRoleName,$newRoleName])))
+ #set($ret_success = $msg.get("groups.roles.rename.renamed", [$oldRoleName,
$newRoleName]))
+#end ## }
+#end ## }
+##
+##
+#macro(deleteGroupRole $groupDoc) ## {
+#set($roleName = $groupDoc.title)
+#set($discard = $groupDoc.deleteWithProgrammingRights())
+#set($ret_success = $msg.get("groups.roles.delete.deleted", [$roleName]))
+#end ## }
+##
+##
+#macro(addUserToRole $groupName $member) ## {
+#set($discard = $sm.addUserToRole($spaceName, $member, $groupName))
+#end ## }
+##
+##
+#macro(removeUserFromRole $groupName $member) ## {
+#set($discard = $sm.removeUserFromRole($spaceName, $member, $groupName))
+#end ## }
+##
+##
+#macro(groupGetRoleMemberCount $groupDoc) ## {
+## Sets ret_roleCount
+#set($userList = $groupDoc.getObjects("XWiki.XWikiGroups"))
+#set($ret_roleCount = $userList.size())
+#end ## }
+##
+##
+#macro(groupRoleSelector $spaceName $withAdmin $disableEmpty $selectFor) ## {
+#groupGetRoles($spaceName $withAdmin)
+#set($ret_hasRoles = $xwiki.arrayList)
+#foreach($role in $ret_groupRoles) ## {
+ #if($disableEmpty) ## {
+ #groupGetRoleMemberCount($role)
+ #set($disabled = ($ret_roleCount == 0))
+ #else ## } {
+ #set($disabled = false)
+ #end ## }
+ #if($!selectFor) ## {
+ #set($sql = ", BaseObject as obj, StringProperty as prop1 where
doc.fullName ='${role.fullName}' and doc.fullName=obj.name and
obj.className='XWiki.XWikiGroups' and obj.id=prop1.id.id and
prop1.id.name='member' and prop1.id.value='${selectFor}'")
+ #set($search = $xwiki.searchDocuments($sql, 1, 0))
+ #set($selected = ($search.size() > 0))
+ #if($selected) ## {
+ #set($discard = $ret_hasRoles.add($role.fullName))
+ #end ## }
+ #else ## } {
+ #set($selected = false)
+ #end ## }
+<option#if($disabled) DISABLED#end #if($selected) SELECTED#end
value="${role.fullName}">$role.title</option>
+#end ## }
+#end ## }
+##
+##
## End of Groups Macros ## }
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications