Configuration option change.showAssignee
Allows hiding of all assignee UI elements from users, effectively disabling assignee workflow. Change-Id: I29fecebcec6a09ab32ebc7f5ea78c1f739f3379a
This commit is contained in:
		| @@ -980,6 +980,13 @@ performance improvements by reducing the number of refs in the repo. | |||||||
| + | + | ||||||
| Default is true. | Default is true. | ||||||
|  |  | ||||||
|  | [[change.showAssignee]]change.showAssignee:: | ||||||
|  | + | ||||||
|  | Allow assignee workflow. If set to false, assignees will not be visible anywhere | ||||||
|  | in UI. | ||||||
|  | + | ||||||
|  | Default is true. | ||||||
|  |  | ||||||
| [[change.submitLabel]]change.submitLabel:: | [[change.submitLabel]]change.submitLabel:: | ||||||
| + | + | ||||||
| Label name for the submit button. | Label name for the submit button. | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ package com.google.gerrit.extensions.common; | |||||||
|  |  | ||||||
| public class ChangeConfigInfo { | public class ChangeConfigInfo { | ||||||
|   public Boolean allowBlame; |   public Boolean allowBlame; | ||||||
|  |   public Boolean showAssignee; | ||||||
|   public Boolean allowDrafts; |   public Boolean allowDrafts; | ||||||
|   public int largeChange; |   public int largeChange; | ||||||
|   public String replyLabel; |   public String replyLabel; | ||||||
|   | |||||||
| @@ -59,6 +59,7 @@ public class ServerInfo extends JavaScriptObject { | |||||||
|     public final native int largeChange() /*-{ return this.large_change || 0; }-*/; |     public final native int largeChange() /*-{ return this.large_change || 0; }-*/; | ||||||
|     public final native String replyLabel() /*-{ return this.reply_label; }-*/; |     public final native String replyLabel() /*-{ return this.reply_label; }-*/; | ||||||
|     public final native String replyTooltip() /*-{ return this.reply_tooltip; }-*/; |     public final native String replyTooltip() /*-{ return this.reply_tooltip; }-*/; | ||||||
|  |     public final native boolean showAssignee() /*-{ return this.show_assignee || false; }-*/; | ||||||
|     public final native int updateDelay() /*-{ return this.update_delay || 0; }-*/; |     public final native int updateDelay() /*-{ return this.update_delay || 0; }-*/; | ||||||
|     public final native boolean isSubmitWholeTopicEnabled() /*-{ |     public final native boolean isSubmitWholeTopicEnabled() /*-{ | ||||||
|         return this.submit_whole_topic; }-*/; |         return this.submit_whole_topic; }-*/; | ||||||
|   | |||||||
| @@ -120,8 +120,6 @@ public class SearchSuggestOracle extends HighlightSuggestOracle { | |||||||
|     suggestions.add("is:merged"); |     suggestions.add("is:merged"); | ||||||
|     suggestions.add("is:abandoned"); |     suggestions.add("is:abandoned"); | ||||||
|     suggestions.add("is:mergeable"); |     suggestions.add("is:mergeable"); | ||||||
|     suggestions.add("is:assigned"); |  | ||||||
|     suggestions.add("is:unassigned"); |  | ||||||
|  |  | ||||||
|     suggestions.add("status:"); |     suggestions.add("status:"); | ||||||
|     suggestions.add("status:open"); |     suggestions.add("status:open"); | ||||||
| @@ -141,7 +139,11 @@ public class SearchSuggestOracle extends HighlightSuggestOracle { | |||||||
|       suggestions.add("hashtag:"); |       suggestions.add("hashtag:"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     suggestions.add("assignee:"); |     if (Gerrit.info().change().showAssignee()) { | ||||||
|  |       suggestions.add("is:assigned"); | ||||||
|  |       suggestions.add("is:unassigned"); | ||||||
|  |       suggestions.add("assignee:"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     suggestions.add("AND"); |     suggestions.add("AND"); | ||||||
|     suggestions.add("OR"); |     suggestions.add("OR"); | ||||||
|   | |||||||
| @@ -171,6 +171,7 @@ public class ChangeScreen extends Screen { | |||||||
|   @UiField Anchor permalink; |   @UiField Anchor permalink; | ||||||
|  |  | ||||||
|   @UiField Assignee assignee; |   @UiField Assignee assignee; | ||||||
|  |   @UiField Element assigneeRow; | ||||||
|   @UiField Element ccText; |   @UiField Element ccText; | ||||||
|   @UiField Reviewers reviewers; |   @UiField Reviewers reviewers; | ||||||
|   @UiField Hashtags hashtags; |   @UiField Hashtags hashtags; | ||||||
| @@ -1294,8 +1295,12 @@ public class ChangeScreen extends Screen { | |||||||
|     topic.set(info, revision); |     topic.set(info, revision); | ||||||
|     commit.set(commentLinkProcessor, info, revision); |     commit.set(commentLinkProcessor, info, revision); | ||||||
|     related.set(info, revision); |     related.set(info, revision); | ||||||
|     assignee.set(info); |  | ||||||
|     reviewers.set(info); |     reviewers.set(info); | ||||||
|  |     if (Gerrit.info().change().showAssignee()) { | ||||||
|  |       assignee.set(info); | ||||||
|  |     } else { | ||||||
|  |       setVisible(assigneeRow, false); | ||||||
|  |     } | ||||||
|     if (Gerrit.isNoteDbEnabled()) { |     if (Gerrit.isNoteDbEnabled()) { | ||||||
|       hashtags.set(info, revision); |       hashtags.set(info, revision); | ||||||
|     } else { |     } else { | ||||||
|   | |||||||
| @@ -463,7 +463,7 @@ limitations under the License. | |||||||
|                 </g:FlowPanel> |                 </g:FlowPanel> | ||||||
|               </td> |               </td> | ||||||
|             </tr> |             </tr> | ||||||
|             <tr> |             <tr ui:field='assigneeRow'> | ||||||
|               <th><ui:msg>Assignee</ui:msg></th> |               <th><ui:msg>Assignee</ui:msg></th> | ||||||
|               <td> |               <td> | ||||||
|                 <c:Assignee ui:field='assignee'/> |                 <c:Assignee ui:field='assignee'/> | ||||||
|   | |||||||
| @@ -73,6 +73,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> { | |||||||
|  |  | ||||||
|   private final List<Section> sections; |   private final List<Section> sections; | ||||||
|   private int columns; |   private int columns; | ||||||
|  |   private final boolean showAssignee; | ||||||
|   private final boolean showLegacyId; |   private final boolean showLegacyId; | ||||||
|   private List<String> labelNames; |   private List<String> labelNames; | ||||||
|  |  | ||||||
| @@ -80,6 +81,7 @@ public class ChangeTable extends NavigationTable<ChangeInfo> { | |||||||
|     super(Util.C.changeItemHelp()); |     super(Util.C.changeItemHelp()); | ||||||
|     columns = BASE_COLUMNS; |     columns = BASE_COLUMNS; | ||||||
|     labelNames = Collections.emptyList(); |     labelNames = Collections.emptyList(); | ||||||
|  |     showAssignee = Gerrit.info().change().showAssignee(); | ||||||
|     showLegacyId = Gerrit.getUserPreferences().legacycidInChangeTable(); |     showLegacyId = Gerrit.getUserPreferences().legacycidInChangeTable(); | ||||||
|  |  | ||||||
|     if (Gerrit.isSignedIn()) { |     if (Gerrit.isSignedIn()) { | ||||||
| @@ -106,6 +108,9 @@ public class ChangeTable extends NavigationTable<ChangeInfo> { | |||||||
|     if (!showLegacyId) { |     if (!showLegacyId) { | ||||||
|       fmt.addStyleName(0, C_ID, Gerrit.RESOURCES.css().dataHeaderHidden()); |       fmt.addStyleName(0, C_ID, Gerrit.RESOURCES.css().dataHeaderHidden()); | ||||||
|     } |     } | ||||||
|  |     if (!showAssignee) { | ||||||
|  |       fmt.addStyleName(0, C_ASSIGNEE, Gerrit.RESOURCES.css().dataHeaderHidden()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     table.addClickHandler(new ClickHandler() { |     table.addClickHandler(new ClickHandler() { | ||||||
|       @Override |       @Override | ||||||
| @@ -166,7 +171,9 @@ public class ChangeTable extends NavigationTable<ChangeInfo> { | |||||||
|     fmt.addStyleName(row, C_SUBJECT, Gerrit.RESOURCES.css().cSUBJECT()); |     fmt.addStyleName(row, C_SUBJECT, Gerrit.RESOURCES.css().cSUBJECT()); | ||||||
|     fmt.addStyleName(row, C_STATUS, Gerrit.RESOURCES.css().cSTATUS()); |     fmt.addStyleName(row, C_STATUS, Gerrit.RESOURCES.css().cSTATUS()); | ||||||
|     fmt.addStyleName(row, C_OWNER, Gerrit.RESOURCES.css().cOWNER()); |     fmt.addStyleName(row, C_OWNER, Gerrit.RESOURCES.css().cOWNER()); | ||||||
|     fmt.addStyleName(row, C_ASSIGNEE, Gerrit.RESOURCES.css().cASSIGNEE()); |     fmt.addStyleName(row, C_ASSIGNEE, | ||||||
|  |         showAssignee ? Gerrit.RESOURCES.css().cASSIGNEE() | ||||||
|  |             : Gerrit.RESOURCES.css().dataCellHidden()); | ||||||
|     fmt.addStyleName(row, C_LAST_UPDATE, Gerrit.RESOURCES.css().cLastUpdate()); |     fmt.addStyleName(row, C_LAST_UPDATE, Gerrit.RESOURCES.css().cLastUpdate()); | ||||||
|     fmt.addStyleName(row, C_SIZE, Gerrit.RESOURCES.css().cSIZE()); |     fmt.addStyleName(row, C_SIZE, Gerrit.RESOURCES.css().cSIZE()); | ||||||
|  |  | ||||||
| @@ -242,16 +249,18 @@ public class ChangeTable extends NavigationTable<ChangeInfo> { | |||||||
|       table.setText(row, C_OWNER, ""); |       table.setText(row, C_OWNER, ""); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (c.assignee() != null) { |     if (showAssignee) { | ||||||
|       table.setWidget(row, C_ASSIGNEE, |       if (c.assignee() != null) { | ||||||
|           AccountLinkPanel.forAssignee(c.assignee())); |         table.setWidget(row, C_ASSIGNEE, | ||||||
|       if (Objects.equals(c.assignee().getId(), |             AccountLinkPanel.forAssignee(c.assignee())); | ||||||
|           Gerrit.getUserAccount().getId())) { |         if (Objects.equals(c.assignee().getId(), | ||||||
|         table.getRowFormatter().addStyleName(row, |             Gerrit.getUserAccount().getId())) { | ||||||
|             Gerrit.RESOURCES.css().cASSIGNEDTOME()); |           table.getRowFormatter().addStyleName(row, | ||||||
|  |               Gerrit.RESOURCES.css().cASSIGNEDTOME()); | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         table.setText(row, C_ASSIGNEE, ""); | ||||||
|       } |       } | ||||||
|     } else { |  | ||||||
|       table.setText(row, C_ASSIGNEE, ""); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     table.setWidget(row, C_PROJECT, new ProjectLink(c.projectNameKey())); |     table.setWidget(row, C_PROJECT, new ProjectLink(c.projectNameKey())); | ||||||
|   | |||||||
| @@ -203,6 +203,9 @@ public class GetServerInfo implements RestReadView<ConfigResource> { | |||||||
|     ChangeConfigInfo info = new ChangeConfigInfo(); |     ChangeConfigInfo info = new ChangeConfigInfo(); | ||||||
|     info.allowBlame = toBoolean(cfg.getBoolean("change", "allowBlame", true)); |     info.allowBlame = toBoolean(cfg.getBoolean("change", "allowBlame", true)); | ||||||
|     info.allowDrafts = toBoolean(cfg.getBoolean("change", "allowDrafts", true)); |     info.allowDrafts = toBoolean(cfg.getBoolean("change", "allowDrafts", true)); | ||||||
|  |     info.showAssignee = | ||||||
|  |         toBoolean(cfg.getBoolean("change", "showAssignee", true) | ||||||
|  |             && isNoteDbEnabled()); | ||||||
|     info.largeChange = cfg.getInt("change", "largeChange", 500); |     info.largeChange = cfg.getInt("change", "largeChange", 500); | ||||||
|     info.replyTooltip = |     info.replyTooltip = | ||||||
|         Optional.fromNullable(cfg.getString("change", null, "replyTooltip")) |         Optional.fromNullable(cfg.getString("change", null, "replyTooltip")) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Gustaf Lundh
					Gustaf Lundh