use of com.google.gerrit.client.account.AccountCapabilities in project gerrit by GerritCodeReview.
the class Gerrit method refreshMenuBar.
public static void refreshMenuBar() {
menuLeft.clear();
menuRight.clear();
menuBars = new HashMap<>();
boolean signedIn = isSignedIn();
AuthInfo authInfo = info().auth();
LinkMenuBar m;
m = new LinkMenuBar();
menuBars.put(GerritTopMenu.ALL.menuName, m);
addLink(m, C.menuAllOpen(), PageLinks.toChangeQuery("status:open"));
addLink(m, C.menuAllMerged(), PageLinks.toChangeQuery("status:merged"));
addLink(m, C.menuAllAbandoned(), PageLinks.toChangeQuery("status:abandoned"));
menuLeft.add(m, C.menuAll());
if (signedIn) {
LinkMenuBar myBar = new LinkMenuBar();
menuBars.put(GerritTopMenu.MY.menuName, myBar);
if (myPrefs.my() != null) {
myBar.clear();
String url = null;
List<TopMenuItem> myMenuItems = Natives.asList(myPrefs.my());
if (!myMenuItems.isEmpty()) {
if (myMenuItems.get(0).getUrl().startsWith("#")) {
url = myMenuItems.get(0).getUrl().substring(1);
}
for (TopMenuItem item : myMenuItems) {
addExtensionLink(myBar, item);
}
}
defaultScreenToken = url;
}
menuLeft.add(myBar, C.menuMine());
menuLeft.selectTab(1);
} else {
menuLeft.selectTab(0);
}
final LinkMenuBar projectsBar = new LinkMenuBar();
menuBars.put(GerritTopMenu.PROJECTS.menuName, projectsBar);
addLink(projectsBar, C.menuProjectsList(), PageLinks.ADMIN_PROJECTS);
projectsBar.addItem(new ProjectLinkMenuItem(C.menuProjectsInfo(), ProjectScreen.INFO));
projectsBar.addItem(new ProjectLinkMenuItem(C.menuProjectsBranches(), ProjectScreen.BRANCHES));
projectsBar.addItem(new ProjectLinkMenuItem(C.menuProjectsTags(), ProjectScreen.TAGS));
projectsBar.addItem(new ProjectLinkMenuItem(C.menuProjectsAccess(), ProjectScreen.ACCESS));
final LinkMenuItem dashboardsMenuItem = new ProjectLinkMenuItem(C.menuProjectsDashboards(), ProjectScreen.DASHBOARDS) {
@Override
protected boolean match(String token) {
return super.match(token) || (!getTargetHistoryToken().isEmpty() && ("/admin" + token).startsWith(getTargetHistoryToken()));
}
};
projectsBar.addItem(dashboardsMenuItem);
menuLeft.add(projectsBar, C.menuProjects());
if (signedIn) {
final LinkMenuBar peopleBar = new LinkMenuBar();
menuBars.put(GerritTopMenu.PEOPLE.menuName, peopleBar);
final LinkMenuItem groupsListMenuItem = addLink(peopleBar, C.menuPeopleGroupsList(), PageLinks.ADMIN_GROUPS);
menuLeft.add(peopleBar, C.menuPeople());
final LinkMenuBar pluginsBar = new LinkMenuBar();
menuBars.put(GerritTopMenu.PLUGINS.menuName, pluginsBar);
AccountCapabilities.all(new GerritCallback<AccountCapabilities>() {
@Override
public void onSuccess(AccountCapabilities result) {
if (result.canPerform(CREATE_PROJECT)) {
insertLink(projectsBar, C.menuProjectsCreate(), PageLinks.ADMIN_CREATE_PROJECT, projectsBar.getWidgetIndex(dashboardsMenuItem) + 1);
}
if (result.canPerform(CREATE_GROUP)) {
insertLink(peopleBar, C.menuPeopleGroupsCreate(), PageLinks.ADMIN_CREATE_GROUP, peopleBar.getWidgetIndex(groupsListMenuItem) + 1);
}
if (result.canPerform(VIEW_PLUGINS)) {
insertLink(pluginsBar, C.menuPluginsInstalled(), PageLinks.ADMIN_PLUGINS, 0);
menuLeft.insert(pluginsBar, C.menuPlugins(), menuLeft.getWidgetIndex(peopleBar) + 1);
}
}
}, CREATE_PROJECT, CREATE_GROUP, VIEW_PLUGINS);
}
if (hasDocumentation) {
m = new LinkMenuBar();
menuBars.put(GerritTopMenu.DOCUMENTATION.menuName, m);
addDocLink(m, C.menuDocumentationTOC(), "index.html");
addDocLink(m, C.menuDocumentationSearch(), "user-search.html");
addDocLink(m, C.menuDocumentationUpload(), "user-upload.html");
addDocLink(m, C.menuDocumentationAccess(), "access-control.html");
addDocLink(m, C.menuDocumentationAPI(), "rest-api.html");
addDocLink(m, C.menuDocumentationProjectOwnerGuide(), "intro-project-owner.html");
menuLeft.add(m, C.menuDocumentation());
}
if (signedIn) {
whoAmI(!authInfo.isClientSslCertLdap());
} else {
switch(authInfo.authType()) {
case CLIENT_SSL_CERT_LDAP:
break;
case OPENID:
menuRight.addItem(C.menuRegister(), new Command() {
@Override
public void execute() {
String t = History.getToken();
if (t == null) {
t = "";
}
doSignIn(PageLinks.REGISTER + t);
}
});
menuRight.addItem(C.menuSignIn(), new Command() {
@Override
public void execute() {
doSignIn(History.getToken());
}
});
break;
case OAUTH:
menuRight.addItem(C.menuSignIn(), new Command() {
@Override
public void execute() {
doSignIn(History.getToken());
}
});
break;
case OPENID_SSO:
menuRight.addItem(C.menuSignIn(), new Command() {
@Override
public void execute() {
doSignIn(History.getToken());
}
});
break;
case HTTP:
case HTTP_LDAP:
if (authInfo.loginUrl() != null) {
String signinText = authInfo.loginText() == null ? C.menuSignIn() : authInfo.loginText();
menuRight.add(anchor(signinText, authInfo.loginUrl()));
}
break;
case LDAP:
case LDAP_BIND:
case CUSTOM_EXTENSION:
if (authInfo.registerUrl() != null) {
String registerText = authInfo.registerText() == null ? C.menuRegister() : authInfo.registerText();
menuRight.add(anchor(registerText, authInfo.registerUrl()));
}
menuRight.addItem(C.menuSignIn(), new Command() {
@Override
public void execute() {
doSignIn(History.getToken());
}
});
break;
case DEVELOPMENT_BECOME_ANY_ACCOUNT:
menuRight.add(anchor("Become", loginRedirect("")));
break;
}
}
ConfigServerApi.topMenus(new GerritCallback<TopMenuList>() {
@Override
public void onSuccess(TopMenuList result) {
List<TopMenu> topMenuExtensions = Natives.asList(result);
for (TopMenu menu : topMenuExtensions) {
String name = menu.getName();
LinkMenuBar existingBar = menuBars.get(name);
LinkMenuBar bar = existingBar != null ? existingBar : new LinkMenuBar();
for (TopMenuItem item : Natives.asList(menu.getItems())) {
addMenuLink(bar, item);
}
if (existingBar == null) {
menuBars.put(name, bar);
menuLeft.add(bar, name);
}
}
}
});
}
Aggregations