Merge branch 'stable'
* stable: Support different color pallete when not signed in Send new patchset event after its available Enable git:// download URLs if canonicalGitUrl set Fix NPE on Gerrit startup if mail.from doesn't include a name Add config setting to only suggest users which are in a visible group Change-Id: I2bc9ca40e616c7f7b0c12de41f631c916439289c
This commit is contained in:
commit
0bfcc2181c
@ -1779,6 +1779,9 @@ or a user to a group.
|
|||||||
If `SAME_GROUP`, only users who are also members of a group the
|
If `SAME_GROUP`, only users who are also members of a group the
|
||||||
current user is a member of will be offered.
|
current user is a member of will be offered.
|
||||||
+
|
+
|
||||||
|
If `VISIBLE_GROUP`, only users who are members of at least one group
|
||||||
|
that is visible to the current user will be offered.
|
||||||
|
+
|
||||||
If `OFF`, no account suggestions are given.
|
If `OFF`, no account suggestions are given.
|
||||||
+
|
+
|
||||||
Default is `ALL`.
|
Default is `ALL`.
|
||||||
@ -1792,7 +1795,8 @@ Background color for the page, and major data tables like the all
|
|||||||
open changes table or the account dashboard. The value must be a
|
open changes table or the account dashboard. The value must be a
|
||||||
valid HTML hex color code, or standard color name.
|
valid HTML hex color code, or standard color name.
|
||||||
+
|
+
|
||||||
By default white, `FFFFFF`.
|
By default white, `FFFFFF` for signed-out theme and `FCFEEF` (creme)
|
||||||
|
for signed-in theme.
|
||||||
|
|
||||||
[[theme.topMenuColor]]theme.topMenuColor::
|
[[theme.topMenuColor]]theme.topMenuColor::
|
||||||
+
|
+
|
||||||
@ -1827,6 +1831,19 @@ code, or standard color name.
|
|||||||
+
|
+
|
||||||
By default a shade of yellow, `FFFFCC`.
|
By default a shade of yellow, `FFFFCC`.
|
||||||
|
|
||||||
|
A different theme may be used for signed-in vs. signed-out user status
|
||||||
|
by using the "signed-in" and "signed-out" theme sections. Variables
|
||||||
|
not specified in a section are inherited from the default theme.
|
||||||
|
|
||||||
|
----
|
||||||
|
[theme]
|
||||||
|
backgroundColor = FFFFFF
|
||||||
|
[theme "signed-in"]
|
||||||
|
backgroundColor = C0C0C0
|
||||||
|
[theme "signed-out"]
|
||||||
|
backgroundColor = 00FFFF
|
||||||
|
----
|
||||||
|
|
||||||
[[trackingid]] Section trackingid
|
[[trackingid]] Section trackingid
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
@ -42,12 +42,6 @@ public class GerritConfig implements Cloneable {
|
|||||||
protected List<RegexFindReplace> commentLinks;
|
protected List<RegexFindReplace> commentLinks;
|
||||||
protected boolean documentationAvailable;
|
protected boolean documentationAvailable;
|
||||||
|
|
||||||
protected String backgroundColor;
|
|
||||||
protected String topMenuColor;
|
|
||||||
protected String textColor;
|
|
||||||
protected String trimColor;
|
|
||||||
protected String selectionColor;
|
|
||||||
|
|
||||||
public String getRegisterUrl() {
|
public String getRegisterUrl() {
|
||||||
return registerUrl;
|
return registerUrl;
|
||||||
}
|
}
|
||||||
@ -166,44 +160,4 @@ public class GerritConfig implements Cloneable {
|
|||||||
public void setDocumentationAvailable(final boolean available) {
|
public void setDocumentationAvailable(final boolean available) {
|
||||||
documentationAvailable = available;
|
documentationAvailable = available;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getBackgroundColor() {
|
|
||||||
return backgroundColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBackgroundColor(String color) {
|
|
||||||
backgroundColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTopMenuColor() {
|
|
||||||
return topMenuColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTopMenuColor(String color) {
|
|
||||||
topMenuColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTextColor() {
|
|
||||||
return textColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTextColor(String color) {
|
|
||||||
textColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTrimColor() {
|
|
||||||
return trimColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTrimColor(String color) {
|
|
||||||
trimColor = color;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSelectionColor() {
|
|
||||||
return selectionColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSelectionColor(String color) {
|
|
||||||
selectionColor = color;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -22,4 +22,13 @@ public class HostPageData {
|
|||||||
public Account account;
|
public Account account;
|
||||||
public AccountDiffPreference accountDiffPref;
|
public AccountDiffPreference accountDiffPref;
|
||||||
public GerritConfig config;
|
public GerritConfig config;
|
||||||
|
public Theme theme;
|
||||||
|
|
||||||
|
public static class Theme {
|
||||||
|
public String backgroundColor;
|
||||||
|
public String topMenuColor;
|
||||||
|
public String textColor;
|
||||||
|
public String trimColor;
|
||||||
|
public String selectionColor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,10 +26,18 @@ public class NoSuchGroupException extends Exception {
|
|||||||
this(key, null);
|
this(key, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoSuchGroupException(final AccountGroup.UUID key) {
|
||||||
|
this(key, null);
|
||||||
|
}
|
||||||
|
|
||||||
public NoSuchGroupException(final AccountGroup.Id key, final Throwable why) {
|
public NoSuchGroupException(final AccountGroup.Id key, final Throwable why) {
|
||||||
super(MESSAGE + key.toString(), why);
|
super(MESSAGE + key.toString(), why);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NoSuchGroupException(final AccountGroup.UUID key, final Throwable why) {
|
||||||
|
super(MESSAGE + key.toString(), why);
|
||||||
|
}
|
||||||
|
|
||||||
public NoSuchGroupException(final AccountGroup.NameKey k) {
|
public NoSuchGroupException(final AccountGroup.NameKey k) {
|
||||||
this(k, null);
|
this(k, null);
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ public class Gerrit implements EntryPoint {
|
|||||||
|
|
||||||
private static String myHost;
|
private static String myHost;
|
||||||
private static GerritConfig myConfig;
|
private static GerritConfig myConfig;
|
||||||
|
private static HostPageData.Theme myTheme;
|
||||||
private static Account myAccount;
|
private static Account myAccount;
|
||||||
private static AccountDiffPreference myAccountDiffPref;
|
private static AccountDiffPreference myAccountDiffPref;
|
||||||
|
|
||||||
@ -183,6 +184,11 @@ public class Gerrit implements EntryPoint {
|
|||||||
return myConfig;
|
return myConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Site theme information (site specific colors)/ */
|
||||||
|
public static HostPageData.Theme getTheme() {
|
||||||
|
return myTheme;
|
||||||
|
}
|
||||||
|
|
||||||
/** @return the currently signed in user's account data; null if no account */
|
/** @return the currently signed in user's account data; null if no account */
|
||||||
public static Account getUserAccount() {
|
public static Account getUserAccount() {
|
||||||
return myAccount;
|
return myAccount;
|
||||||
@ -264,6 +270,7 @@ public class Gerrit implements EntryPoint {
|
|||||||
hpd.load(new GerritCallback<HostPageData>() {
|
hpd.load(new GerritCallback<HostPageData>() {
|
||||||
public void onSuccess(final HostPageData result) {
|
public void onSuccess(final HostPageData result) {
|
||||||
myConfig = result.config;
|
myConfig = result.config;
|
||||||
|
myTheme = result.theme;
|
||||||
if (result.account != null) {
|
if (result.account != null) {
|
||||||
myAccount = result.account;
|
myAccount = result.account;
|
||||||
}
|
}
|
||||||
|
@ -25,8 +25,8 @@ limitations under the License.
|
|||||||
>
|
>
|
||||||
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
||||||
<ui:style>
|
<ui:style>
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
@eval trimColor com.google.gerrit.client.Gerrit.getConfig().getTrimColor();
|
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -25,8 +25,8 @@ limitations under the License.
|
|||||||
>
|
>
|
||||||
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
||||||
<ui:style>
|
<ui:style>
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
@eval backgroundColor com.google.gerrit.client.Gerrit.getConfig().getBackgroundColor();
|
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -26,7 +26,7 @@ limitations under the License.
|
|||||||
>
|
>
|
||||||
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
<ui:with field='res' type='com.google.gerrit.client.admin.AdminResources'/>
|
||||||
<ui:style>
|
<ui:style>
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -13,8 +13,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
@eval textColor com.google.gerrit.client.Gerrit.getConfig().getTextColor();
|
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
|
||||||
@def deletedBackground #a9a9a9;
|
@def deletedBackground #a9a9a9;
|
||||||
|
|
||||||
@sprite .deleteIcon {
|
@sprite .deleteIcon {
|
||||||
|
@ -189,7 +189,8 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel implements O
|
|||||||
|
|
||||||
if (changeDetail.isAllowsAnonymous()
|
if (changeDetail.isAllowsAnonymous()
|
||||||
&& Gerrit.getConfig().getGitDaemonUrl() != null
|
&& Gerrit.getConfig().getGitDaemonUrl() != null
|
||||||
&& allowedSchemes.contains(DownloadScheme.ANON_GIT)) {
|
&& (allowedSchemes.contains(DownloadScheme.ANON_GIT) ||
|
||||||
|
allowedSchemes.contains(DownloadScheme.DEFAULT_DOWNLOADS))) {
|
||||||
StringBuilder r = new StringBuilder();
|
StringBuilder r = new StringBuilder();
|
||||||
r.append(Gerrit.getConfig().getGitDaemonUrl());
|
r.append(Gerrit.getConfig().getGitDaemonUrl());
|
||||||
r.append(projectName);
|
r.append(projectName);
|
||||||
|
@ -38,11 +38,11 @@
|
|||||||
@def norm-font Arial Unicode MS, Arial, sans-serif;
|
@def norm-font Arial Unicode MS, Arial, sans-serif;
|
||||||
@def mono-font 'Lucida Console', 'Lucida Sans Typewriter', Monaco, monospace;
|
@def mono-font 'Lucida Console', 'Lucida Sans Typewriter', Monaco, monospace;
|
||||||
|
|
||||||
@eval backgroundColor com.google.gerrit.client.Gerrit.getConfig().getBackgroundColor();
|
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
|
||||||
@eval topMenuColor com.google.gerrit.client.Gerrit.getConfig().getTopMenuColor();
|
@eval topMenuColor com.google.gerrit.client.Gerrit.getTheme().topMenuColor;
|
||||||
@eval textColor com.google.gerrit.client.Gerrit.getConfig().getTextColor();;
|
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
|
||||||
@eval trimColor com.google.gerrit.client.Gerrit.getConfig().getTrimColor();
|
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
|
|
||||||
|
|
||||||
@sprite .greenCheckClass {
|
@sprite .greenCheckClass {
|
||||||
|
@ -23,10 +23,10 @@
|
|||||||
@external .gwt-TabPanel;
|
@external .gwt-TabPanel;
|
||||||
@external .gwt-TabPanelBottom;
|
@external .gwt-TabPanelBottom;
|
||||||
|
|
||||||
@eval backgroundColor com.google.gerrit.client.Gerrit.getConfig().getBackgroundColor();
|
@eval backgroundColor com.google.gerrit.client.Gerrit.getTheme().backgroundColor;
|
||||||
@eval textColor com.google.gerrit.client.Gerrit.getConfig().getTextColor();;
|
@eval textColor com.google.gerrit.client.Gerrit.getTheme().textColor;
|
||||||
@eval trimColor com.google.gerrit.client.Gerrit.getConfig().getTrimColor();
|
@eval trimColor com.google.gerrit.client.Gerrit.getTheme().trimColor;
|
||||||
@eval selectionColor com.google.gerrit.client.Gerrit.getConfig().getSelectionColor();
|
@eval selectionColor com.google.gerrit.client.Gerrit.getTheme().selectionColor;
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background: backgroundColor;
|
background: backgroundColor;
|
||||||
|
@ -149,28 +149,9 @@ class GerritConfigProvider implements Provider<GerritConfig> {
|
|||||||
}
|
}
|
||||||
config.setCommentLinks(links);
|
config.setCommentLinks(links);
|
||||||
|
|
||||||
config.setBackgroundColor(getThemeColor("backgroundColor", "#FFFFFF"));
|
|
||||||
config.setTextColor(getThemeColor("textColor", "#000000"));
|
|
||||||
config.setTrimColor(getThemeColor("trimColor", "#D4E9A9"));
|
|
||||||
config.setSelectionColor(getThemeColor("selectionColor", "#FFFFCC"));
|
|
||||||
|
|
||||||
config
|
|
||||||
.setTopMenuColor(getThemeColor("topMenuColor", config.getTrimColor()));
|
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getThemeColor(String name, String defaultValue) {
|
|
||||||
String v = cfg.getString("theme", null, name);
|
|
||||||
if (v == null || v.isEmpty()) {
|
|
||||||
v = defaultValue;
|
|
||||||
}
|
|
||||||
if (!v.startsWith("#") && v.matches("^[0-9a-fA-F]{2,6}$")) {
|
|
||||||
v = "#" + v;
|
|
||||||
}
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GerritConfig get() {
|
public GerritConfig get() {
|
||||||
try {
|
try {
|
||||||
|
@ -62,6 +62,8 @@ public class HostPageServlet extends HttpServlet {
|
|||||||
|
|
||||||
private final Provider<CurrentUser> currentUser;
|
private final Provider<CurrentUser> currentUser;
|
||||||
private final GerritConfig config;
|
private final GerritConfig config;
|
||||||
|
private final HostPageData.Theme signedOutTheme;
|
||||||
|
private final HostPageData.Theme signedInTheme;
|
||||||
private final SitePaths site;
|
private final SitePaths site;
|
||||||
private final Document template;
|
private final Document template;
|
||||||
private final String noCacheName;
|
private final String noCacheName;
|
||||||
@ -70,10 +72,12 @@ public class HostPageServlet extends HttpServlet {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
HostPageServlet(final Provider<CurrentUser> cu, final SitePaths sp,
|
HostPageServlet(final Provider<CurrentUser> cu, final SitePaths sp,
|
||||||
final GerritConfig gc, final ServletContext servletContext)
|
final ThemeFactory themeFactory, final GerritConfig gc,
|
||||||
throws IOException, ServletException {
|
final ServletContext servletContext) throws IOException, ServletException {
|
||||||
currentUser = cu;
|
currentUser = cu;
|
||||||
config = gc;
|
config = gc;
|
||||||
|
signedOutTheme = themeFactory.getSignedOutTheme();
|
||||||
|
signedInTheme = themeFactory.getSignedInTheme();
|
||||||
site = sp;
|
site = sp;
|
||||||
|
|
||||||
final String pageName = "HostPage.html";
|
final String pageName = "HostPage.html";
|
||||||
@ -158,12 +162,16 @@ public class HostPageServlet extends HttpServlet {
|
|||||||
w.write(HPD_ID + ".account=");
|
w.write(HPD_ID + ".account=");
|
||||||
json(((IdentifiedUser) user).getAccount(), w);
|
json(((IdentifiedUser) user).getAccount(), w);
|
||||||
w.write(";");
|
w.write(";");
|
||||||
|
|
||||||
w.write(HPD_ID + ".accountDiffPref=");
|
w.write(HPD_ID + ".accountDiffPref=");
|
||||||
json(((IdentifiedUser) user).getAccountDiffPreference(), w);
|
json(((IdentifiedUser) user).getAccountDiffPreference(), w);
|
||||||
w.write(";");
|
w.write(";");
|
||||||
|
|
||||||
final byte[] userData = w.toString().getBytes("UTF-8");
|
w.write(HPD_ID + ".theme=");
|
||||||
|
json(signedInTheme, w);
|
||||||
|
w.write(";");
|
||||||
|
|
||||||
|
final byte[] userData = w.toString().getBytes("UTF-8");
|
||||||
raw = concat(page.part1, userData, page.part2);
|
raw = concat(page.part1, userData, page.part2);
|
||||||
} else {
|
} else {
|
||||||
raw = page.full;
|
raw = page.full;
|
||||||
@ -303,7 +311,14 @@ public class HostPageServlet extends HttpServlet {
|
|||||||
}
|
}
|
||||||
part1 = raw.substring(0, p).getBytes("UTF-8");
|
part1 = raw.substring(0, p).getBytes("UTF-8");
|
||||||
part2 = raw.substring(raw.indexOf('>', p) + 1).getBytes("UTF-8");
|
part2 = raw.substring(raw.indexOf('>', p) + 1).getBytes("UTF-8");
|
||||||
full = concat(part1, part2, new byte[0]);
|
|
||||||
|
final StringWriter w = new StringWriter();
|
||||||
|
w.write(HPD_ID + ".theme=");
|
||||||
|
json(signedOutTheme, w);
|
||||||
|
w.write(";");
|
||||||
|
|
||||||
|
final byte[] themeData = w.toString().getBytes("UTF-8");
|
||||||
|
full = concat(part1, themeData, part2);
|
||||||
full_gz = HtmlDomUtil.compress(full);
|
full_gz = HtmlDomUtil.compress(full);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
// Copyright (C) 2011 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.httpd.raw;
|
||||||
|
|
||||||
|
import com.google.gerrit.common.data.HostPageData;
|
||||||
|
import com.google.gerrit.server.config.GerritServerConfig;
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
|
||||||
|
import org.eclipse.jgit.lib.Config;
|
||||||
|
|
||||||
|
class ThemeFactory {
|
||||||
|
private final Config cfg;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ThemeFactory(@GerritServerConfig Config cfg) {
|
||||||
|
this.cfg = cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostPageData.Theme getSignedOutTheme() {
|
||||||
|
return getTheme("signed-out");
|
||||||
|
}
|
||||||
|
|
||||||
|
HostPageData.Theme getSignedInTheme() {
|
||||||
|
return getTheme("signed-in");
|
||||||
|
}
|
||||||
|
|
||||||
|
private HostPageData.Theme getTheme(String name) {
|
||||||
|
HostPageData.Theme theme = new HostPageData.Theme();
|
||||||
|
theme.backgroundColor = color(name, "backgroundColor", "#FFFFFF");
|
||||||
|
theme.textColor = color(name, "textColor", "#000000");
|
||||||
|
theme.trimColor = color(name, "trimColor", "#D4E9A9");
|
||||||
|
theme.selectionColor = color(name, "selectionColor", "#FFFFCC");
|
||||||
|
theme.topMenuColor = color(name, "topMenuColor", theme.trimColor);
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String color(String section, String name, String defaultValue) {
|
||||||
|
String v = cfg.getString("theme", section, name);
|
||||||
|
if (v == null || v.isEmpty()) {
|
||||||
|
v = cfg.getString("theme", null, name);
|
||||||
|
if (v == null || v.isEmpty()) {
|
||||||
|
if ("signed-in".equals(section) && "backgroundColor".equals(name)) {
|
||||||
|
v = "#FCFEEF";
|
||||||
|
} else {
|
||||||
|
v = defaultValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!v.startsWith("#") && v.matches("^[0-9a-fA-F]{2,6}$")) {
|
||||||
|
v = "#" + v;
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
@ -17,5 +17,6 @@ package com.google.gerrit.httpd.rpc;
|
|||||||
public enum SuggestAccountsEnum {
|
public enum SuggestAccountsEnum {
|
||||||
ALL,
|
ALL,
|
||||||
SAME_GROUP,
|
SAME_GROUP,
|
||||||
|
VISIBLE_GROUP,
|
||||||
OFF;
|
OFF;
|
||||||
}
|
}
|
||||||
|
@ -174,6 +174,23 @@ class SuggestServiceImpl extends BaseServiceImplementation implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case VISIBLE_GROUP: {
|
||||||
|
Set<AccountGroup.UUID> usersGroups = groupsOf(account);
|
||||||
|
usersGroups.remove(AccountGroup.ANONYMOUS_USERS);
|
||||||
|
usersGroups.remove(AccountGroup.REGISTERED_USERS);
|
||||||
|
usersGroups.remove(authConfig.getBatchUsersGroup());
|
||||||
|
for (AccountGroup.UUID usersGroup : usersGroups) {
|
||||||
|
try {
|
||||||
|
if (groupControlFactory.controlFor(usersGroup).isVisible()) {
|
||||||
|
map.put(account.getId(), info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} catch (NoSuchGroupException e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case OFF:
|
case OFF:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -42,6 +42,15 @@ public class GroupControl {
|
|||||||
return new GroupControl(user.get(), group);
|
return new GroupControl(user.get(), group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GroupControl controlFor(final AccountGroup.UUID groupId)
|
||||||
|
throws NoSuchGroupException {
|
||||||
|
final AccountGroup group = groupCache.get(groupId);
|
||||||
|
if (group == null) {
|
||||||
|
throw new NoSuchGroupException(groupId);
|
||||||
|
}
|
||||||
|
return new GroupControl(user.get(), group);
|
||||||
|
}
|
||||||
|
|
||||||
public GroupControl controlFor(final AccountGroup group) {
|
public GroupControl controlFor(final AccountGroup group) {
|
||||||
return new GroupControl(user.get(), group);
|
return new GroupControl(user.get(), group);
|
||||||
}
|
}
|
||||||
|
@ -1435,8 +1435,6 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
|
|||||||
insertDummyApproval(result, reviewer, catId, db);
|
insertDummyApproval(result, reviewer, catId, db);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hooks.doPatchsetCreatedHook(result.change, ps);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final RefUpdate ru = repo.updateRef(ps.getRefName());
|
final RefUpdate ru = repo.updateRef(ps.getRefName());
|
||||||
@ -1447,6 +1445,7 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
|
|||||||
+ repo.getDirectory() + ": " + ru.getResult());
|
+ repo.getDirectory() + ": " + ru.getResult());
|
||||||
}
|
}
|
||||||
replication.scheduleUpdate(project.getNameKey(), ru.getName());
|
replication.scheduleUpdate(project.getNameKey(), ru.getName());
|
||||||
|
hooks.doPatchsetCreatedHook(result.change, ps);
|
||||||
request.cmd.setResult(ReceiveCommand.Result.OK);
|
request.cmd.setResult(ReceiveCommand.Result.OK);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -52,8 +52,8 @@ public class FromAddressGeneratorProvider implements
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
final Address a = Address.parse(from);
|
final Address a = Address.parse(from);
|
||||||
final ParamertizedString name = new ParamertizedString(a.name);
|
final ParamertizedString name = a.name != null ? new ParamertizedString(a.name) : null;
|
||||||
if (name.getParameterNames().isEmpty()) {
|
if (name == null || name.getParameterNames().isEmpty()) {
|
||||||
generator = new ServerGen(a);
|
generator = new ServerGen(a);
|
||||||
} else {
|
} else {
|
||||||
generator = new PatternGen(srvAddr, accountCache, name, a.email);
|
generator = new PatternGen(srvAddr, accountCache, name, a.email);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user