Add 'My' > 'Groups' menu entry that shows list of own groups

Users can already see a list of the groups in which they are member
under 'Settings' > 'Groups', but most users don't know about this.
They rather expect this to be available from the top menu.

Putting this under 'My' > 'Groups' and not under 'People' > 'My
Groups' has the advantage that the menu entry is then configurable
and users that don't need it, can remove it.

The my groups screen is displayed for '#/groups/self'. There is no
'admin' prefix as we have it for the group list screen
('#/admin/groups/') since this prefix only exists due to historic
reasons and should rather be removed. '#/groups/self' was chosen to
make the URL similar to the URL of the user dashboard, which is
'#/dashboard/self'. At the moment only '#/groups/self' is supported,
but in future this may be extended to also support
'#/groups/<account-id>'.

Change-Id: I6d4d0722f0bf36fd5099a9bfc25258b8f5cc3ef9
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin 2014-04-29 13:39:48 +02:00
parent d8530c317a
commit 21e535d832
4 changed files with 48 additions and 0 deletions

View File

@ -44,6 +44,7 @@ public class PageLinks {
public static final String ADMIN_PROJECTS = "/admin/projects/";
public static final String ADMIN_CREATE_PROJECT = "/admin/create-project/";
public static final String ADMIN_PLUGINS = "/admin/plugins/";
public static final String MY_GROUPS = "/groups/self";
public static String toChange(final ChangeInfo c) {
return toChange(c.getId());

View File

@ -21,6 +21,7 @@ import static com.google.gerrit.common.PageLinks.ADMIN_PLUGINS;
import static com.google.gerrit.common.PageLinks.ADMIN_PROJECTS;
import static com.google.gerrit.common.PageLinks.DASHBOARDS;
import static com.google.gerrit.common.PageLinks.MINE;
import static com.google.gerrit.common.PageLinks.MY_GROUPS;
import static com.google.gerrit.common.PageLinks.PROJECTS;
import static com.google.gerrit.common.PageLinks.QUERY;
import static com.google.gerrit.common.PageLinks.REGISTER;
@ -55,6 +56,7 @@ import com.google.gerrit.client.admin.AccountGroupScreen;
import com.google.gerrit.client.admin.CreateGroupScreen;
import com.google.gerrit.client.admin.CreateProjectScreen;
import com.google.gerrit.client.admin.GroupListScreen;
import com.google.gerrit.client.admin.MyGroupsListScreen;
import com.google.gerrit.client.admin.PluginListScreen;
import com.google.gerrit.client.admin.ProjectAccessScreen;
import com.google.gerrit.client.admin.ProjectBranchesScreen;
@ -258,6 +260,9 @@ public class Dispatcher {
} else if (matchPrefix("/admin/", token)) {
admin(token);
} else if (matchExact(MY_GROUPS, token)) {
Gerrit.display(token, new MyGroupsListScreen());
} else if (/* DEPRECATED URL */matchPrefix("/c2/", token)) {
changeScreen2 = true;
change(token);

View File

@ -0,0 +1,41 @@
// Copyright (C) 2014 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.client.admin;
import com.google.gerrit.client.groups.GroupList;
import com.google.gerrit.client.rpc.ScreenLoadCallback;
import com.google.gerrit.client.ui.AccountScreen;
public class MyGroupsListScreen extends AccountScreen {
private GroupTable groups;
@Override
protected void onInitUI() {
super.onInitUI();
groups = new GroupTable();
add(groups);
}
@Override
protected void onLoad() {
super.onLoad();
GroupList.my(new ScreenLoadCallback<GroupList>(this) {
@Override
protected void preDisplay(GroupList result) {
groups.display(result);
groups.finishDisplay();
}});
}
}

View File

@ -156,6 +156,7 @@ public class GetPreferences implements RestReadView<AccountResource> {
my.add(new TopMenu.MenuItem("Draft Comments", "#/q/has:draft", null));
my.add(new TopMenu.MenuItem("Watched Changes", "#/q/is:watched+is:open", null));
my.add(new TopMenu.MenuItem("Starred Changes", "#/q/is:starred", null));
my.add(new TopMenu.MenuItem("Groups", "#/groups/self", null));
}
return my;
}