Index: administration/src/main/resources/XWiki/XWikiGroupSheet.xml
===================================================================
--- administration/src/main/resources/XWiki/XWikiGroupSheet.xml (revision 29916)
+++ administration/src/main/resources/XWiki/XWikiGroupSheet.xml (working copy)
@@ -24,113 +24,186 @@
false
#set($interface = $xwiki.rightsmanager.defaultUi)
#set($mainwk = $context.isMainWiki())
+#set($groupDoc = $doc)
+#if($doc.fullName == 'Main.UsersDirectory')
+ #set($groupDoc = $xwiki.getDocument('XWiki.XWikiAllGroup'))
+#end
+#macro(hasEditGroupRight)
+ #set($hasEditGroupRight = false)
+ #if($hasAdmin && $doc.getObject('XWiki.XWikiGroups', false))
+ #set($hasEditGroupRight = true)
+ #end
+#end
+#hasEditGroupRight()
## display the new interface
#if($interface == "new")
-$xwiki.jsfx.use("js/xwiki/usersandgroups/usersandgroups.js", true)
-$xwiki.ssfx.use("js/xwiki/usersandgroups/usersandgroups.css")
-$xwiki.jsfx.use("js/xwiki/table/livetable.js", true)
-$xwiki.ssfx.use("js/xwiki/table/livetable.css", true)
-#set($columnOptions = {
- "member" : {'link': 'auto', 'type': 'text'},
- "_actions" : {
- 'actions': ['delete'],
- 'actionCallbacks': {'delete': 'table.deleteRow(i);'},
- 'ajaxActions': {'delete': true}
- }
-})
-#if($hasAdmin && $context.action == 'inline')
- #set($columns = ['member', '_actions'])
-#else
- #set($columns = ['member'])
-#end
-#livetable("groupusers", $columns, $columnOptions, {'url' : "${doc.getURL()}?xpage=getgroupmembers", 'translationPrefix' : 'xe.admin.groups.', 'javascriptName' : 'editgrouptable'})
-##
-##
-##
-#if($context.action == "inline")
- <div id="addNewMember">
- <table>
- <tr><td class="addlabel">$msg.get("xe.admin.groups.addUser") #if(!$mainwk)</td>
- <td><select name="wiki" onchange="changeWiki(this);">
- <option value="local" selected="selected">$msg.get("xe.admin.local")</option>
- <option value="global">$msg.get("xe.admin.global")</option>
- </select></td>
- #else <input type="hidden" name="wiki" value="local" /></td> #end
- <td>
- <input id="userSuggest" type="text" size="30" name="newMember" autocomplete="off" onfocus="window.createSuggest(this, 'user');"/>
- </td>
- <td>
- <input type="button" id="addNewUser" class="button" value="$msg.get('xe.admin.groups.addUser.submit')" onclick="addNewMember('user', $('userSuggest').value);"/>
- </td>
- </tr>
- <tr>
- <td class="addlabel">$msg.get("xe.admin.groups.addGroup") #if(!$mainwk)</td>
- <td><select name="wiki" onchange="changeWiki(this);">
- <option value="local" selected="selected">$msg.get("xe.admin.local")</option>
- <option value="global">$msg.get("xe.admin.global")</option>
- </select></td>
- #else <input type="hidden" name="wiki" value="local" /></td> #end
- <td>
- <input id="groupSuggest" type="text" size="30" name="newMember" autocomplete="off" onfocus="window.createSuggest(this, 'group');"/>
- </td>
- <td>
- <input type="button" id="addNewGroup" class="button" value="$msg.get('xe.admin.groups.addGroup.submit')" onclick="addNewMember('group', $('groupSuggest').value);"/>
- </td>
- </tr>
- <tr><td colspan="3" id="errMsg"></td></tr>
- </table>
- </div>
-{pre}
-<script type="text/javascript">
-// <![CDATA[
-window.addNewMember = function(uorg, name)
-{
- //url = adduorg
- if(name)
- {
- var url = "$doc.getURL("view")" + "?xpage=adduorg" + "&" + "uorg=" + uorg + "&" + "name=" + name;
- new Ajax.Request(url,
- {
- method: 'get',
- onSuccess: function(transport) {
- $('userSuggest').value = "";
- $('groupSuggest').value = "";
+ $xwiki.jsfx.use("js/xwiki/usersandgroups/usersandgroups.js", true)
+ $xwiki.ssfx.use("js/xwiki/usersandgroups/usersandgroups.css")
+ $xwiki.jsfx.use("js/xwiki/table/livetable.js", true)
+ $xwiki.ssfx.use("js/xwiki/table/livetable.css", true)
+ ##
+ ##
+ #if($context.action == 'inline' && $hasEditGroupRight)
+ <div id="addNewMember">
+ <table>
+ <tr>
+ <td class="addlabel">$msg.get("xe.admin.groups.addUser")
+ #if(!$mainwk)
+ </td>
+ <td><select name="wiki" onchange="changeWiki(this);">
+ <option value="local" selected="selected">$msg.get("xe.admin.local")</option>
+ <option value="global">$msg.get("xe.admin.global")</option>
+ </select>
+ </td>
+ #else
+ <input type="hidden" name="wiki" value="local" /></td>
+ #end
+ <td>
+ <input id="userSuggest" type="text" size="30" name="newMember" autocomplete="off" />
+ </td>
+ <td>
+ <input type="button" id="addNewUser" class="button" value="$msg.get('xe.admin.groups.addUser.submit')" />
+ </td>
+ </tr>
+ <tr>
+ <td class="addlabel">$msg.get("xe.admin.groups.addGroup")
+ #if(!$mainwk)
+ </td>
+ <td><select name="wiki" onchange="changeWiki(this);">
+ <option value="local" selected="selected">$msg.get("xe.admin.local")</option>
+ <option value="global">$msg.get("xe.admin.global")</option>
+ </select>
+ </td>
+ #else
+ <input type="hidden" name="wiki" value="local" /></td>
+ #end
+ <td>
+ <input id="groupSuggest" type="text" size="30" name="newMember" autocomplete="off" />
+ </td>
+ <td>
+ <input type="button" id="addNewGroup" class="button" value="$msg.get('xe.admin.groups.addGroup.submit')" />
+ </td>
+ </tr>
+ <tr><td colspan="3" id="errMsg"></td></tr>
+ </table>
+ </div><br />
+ ##
+ ##
+ {pre}
+ <script type="text/javascript">
+ // <![CDATA[
+ if (typeof XWiki == "undefined") {
+ var XWiki = {};
+ }
- var nr = parseInt(transport.responseText);
- if(nr == 0) $('errMsg').innerHTML = "$msg.get('xe.admin.groups.addUser.duplicate')";
- else {
- var end = editgrouptable.limit;
- var start = editgrouptable.lastOffset;
- editgrouptable.clearCache();
- if(start < 1) start = 1;
- editgrouptable.getRows(start, end, start, end);
- }
- }
- });
+ Object.extend(XWiki, {
+ groupmanager : {
+ /*
+ ** Initialize Group Manager javascript widgets (called on document load).
+ */
+ userSuggest: null,
+
+ groupSuggest: null,
+
+ init: function() {
+ if (XWiki.contextaction != 'view') {
+ this.initSuggestWidget();
+ this.initAddNewMemberWidget();
+ }
+ },
+ initSuggestWidget: function() {
+ if($('userSuggest')){
+ $('userSuggest').observe('focus', this.createSuggest.bind(this, $('userSuggest'), 'user', true));
+ }
+ if($('groupSuggest')){
+ $('groupSuggest').observe('focus', this.createSuggest.bind(this, $('groupSuggest'), 'group', false));
+ }
+ },
+ initAddNewMemberWidget: function() {
+ if($('addNewUser')){
+ $('addNewUser').observe('click', this.addNewMember.bind(this, 'user', $('userSuggest')));
+ }
+ if($('addNewGroup')){
+ $('addNewGroup').observe('click', this.addNewMember.bind(this, 'group', $('groupSuggest')));
+ }
+ },
+ createSuggest: function(input, uorg, suggestObj) {
+ //clear the errors
+ $('errMsg').innerHTML = "";
+
+ suggesturl = "${doc.getURL()}?xpage=uorgsuggest&classname=XWiki.XWikiUsers&wiki=local";
+
+ //if(suggesturl.indexOf("&" + "uorg=") > 0)
+ // suggesturl = suggesturl.substring(0, suggesturl.indexOf("&" + "uorg="));
+
+ if(uorg == "user"){
+ suggesturl += "&" + "uorg=user" + "&";
+ }else{
+ suggesturl += "&" + "uorg=group" + "&";
+ }
+ // input.id = input.id;
+ return new ajaxSuggest(input, { script: suggesturl, varname:'input' } );
+ },
+ addNewMember: function(uorg, input) {
+ if(input) {
+ var url = "${doc.getURL()}?xpage=adduorg" + "&" + "uorg=" + uorg + "&" + "name=" + input.value;
+ new Ajax.Request(url, {
+ method: 'get',
+ onSuccess: function(transport) {
+ $('userSuggest').value = "";
+ $('groupSuggest').value = "";
+
+ var nr = parseInt(transport.responseText);
+ if(nr == 0){
+ if(uorg == "user"){
+ $('errMsg').innerHTML = "$msg.get('xe.admin.groups.addUser.duplicate')";
+ }else{
+ $('errMsg').innerHTML = "$msg.get('xe.admin.groups.addGroup.duplicate')";
+ }
+ }else{
+ var end = editgrouptable.limit;
+ var start = editgrouptable.lastOffset;
+ editgrouptable.clearCache();
+ if(start < 1)
+ start = 1;
+ editgrouptable.getRows(start, end, start, end);
+ }
+ }
+ });
+ }
+ }
+ }
+ });
+ XWiki.groupmanager.init();
+ // ]]>
+ </script>
+ {/pre}
+ ##
+ ##
+ #end
+ ##
+ ##
+ #set($columnOptions = {
+ "member" : {'link': 'auto', 'type': 'text'},
+ '_avatar' : { 'type' : 'none', 'link' : 'none', 'html' : 'true', 'sortable' : false },
+ 'email' : { 'type' : 'text' },
+ 'company' : { 'type' : 'text' },
+ 'phone' : { 'type' : 'text', 'sortable' : false },
+ "_actions" : {
+ 'actions': ['delete'],
+ 'actionCallbacks': {'delete': 'table.deleteRow(i);'},
+ 'ajaxActions': {'delete': true}
}
-}
- //create new ajax suggest
- suggesturl = "$doc.getURL()" + "?xpage=uorgsuggest" + "&" + "classname=XWiki.XWikiUsers" + "&" + "wiki=local";
-
- window.createSuggest = function(input, uorg)
- {
- if(suggesturl.indexOf("&" + "uorg=") > 0) suggesturl = suggesturl.substring(0, suggesturl.indexOf("&" + "uorg="));
- if(uorg == "user")
- suggesturl += "&" + "uorg=user" + "&";
- else
- suggesturl += "&" + "uorg=group" + "&";
-
- //clear the errors
- $('errMsg').innerHTML = "";
- return new ajaxSuggest(input, { script: suggesturl, varname:'input' } );
-}
-// ]]>
-</script>
-{/pre}
-#end
-##
-##
-##
+ })
+ #if($hasAdmin && $context.action == 'inline' && $hasEditGroupRight)
+ #set($columns = ['_avatar', 'member', 'email', 'company', 'phone', '_actions'])
+ #else
+ #set($columns = ['_avatar', 'member', 'email', 'company', 'phone'])
+ #end
+ #livetable("groupusers", $columns, $columnOptions, {'url' : "${groupDoc.getURL()}?xpage=getgroupmembers", 'translationPrefix' : 'xe.admin.groups.', 'javascriptName' : 'editgrouptable'})
+ ##
+ ##
+ ##
#else ## stable interface
1 $doc.name
@@ -157,11 +230,11 @@
#set($totalPages = ($allObjects.size() - 1) / $itemsPerPage)
#set($crtPageNumber = $startAt / $itemsPerPage)
#set($objects = $allObjects.subList($startAt, $endAt))
-#if($context.action == "inline")
+#if($context.action == "inline" && $hasEditGroupRight)
#warning($msg.get("userdeletioncannotbecanceled"))
#set($redirect = $xwiki.getRequestURL())
{table}
-<span class="floatleft">$msg.get("xe.admin.groups.members")</span> <a id="adduser" href="$doc.getURL("objectadd","classname=XWiki.XWikiGroups&xredirect=$redirect")" title="$msg.get("addusertogroup")"><span class="hidden">($msg.get("add"))</span></a> |
+<span class="floatleft">$msg.get("xe.admin.groups.members")</span> <a id="adduser" href="$doc.getURL("objectadd","classname=XWiki.XWikiGroups&xredirect=$redirect")" title="$msg.get("addusertogroup")"><span class="hidden">($msg.get("add"))</span></a> |
#foreach($obj in $objects)
$doc.display("member", $obj) | <a class="deletelink" href="$doc.getURL("objectremove", "classname=XWiki.XWikiGroups&classid=${obj.number}&xredirect=${doc.getURL('inline')}")" title="$msg.get("removethisuserfromgroup")">$msg.get("delete")</a>
#end ##foreach
Index: panels/src/main/resources/Panels/QuickLinks.xml
===================================================================
--- panels/src/main/resources/Panels/QuickLinks.xml (revision 29916)
+++ panels/src/main/resources/Panels/QuickLinks.xml (working copy)
@@ -103,6 +103,7 @@
#panelheader($msg.get("xe.panels.quicklinks"))
* [$msg.get("xe.panels.quicklinks.dashboard")>Main.Dashboard] <a href="$xwiki.getURL('Main.WebRss', 'view', 'xpage=plain')"><img src="$xwiki.getSkinFile('icons/xwiki/rss-medium.png')" alt="(RSS)" title="RSS feed for wiki updates" class="icon rss"/></a>
* [$msg.get("xe.panels.quicklinks.index")>Main.AllDocs]
+* [$msg.get("xe.panels.quicklinks.usersdirectory")>Main.UsersDirectory]
* [$msg.get("xe.panels.quicklinks.blog")>Blog.WebHome] <a href="$xwiki.getURL('Blog.GlobalBlogRss', 'view', 'xpage=plain')"><img src="$xwiki.getSkinFile('icons/xwiki/rss-medium.png')" alt="(RSS)" title="RSS feed for blog posts" class="icon rss"/></a>
* [$msg.get("xe.panels.quicklinks.sandbox")>Sandbox.WebHome]
#if ($xwiki.hasAdminRights())