
Should be done for synergy with the rest of the buttons in the view. Change-Id: I8290f810df61f0957d3a4ab4149344bce32451e9
490 lines
19 KiB
HTML
490 lines
19 KiB
HTML
<!--
|
|
Copyright (C) 2016 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.
|
|
-->
|
|
|
|
<link rel="import" href="../../../bower_components/polymer/polymer.html">
|
|
|
|
<link rel="import" href="../../../behaviors/docs-url-behavior/docs-url-behavior.html">
|
|
<link rel="import" href="../../../styles/shared-styles.html">
|
|
<link rel="import" href="../../../styles/gr-menu-page-styles.html">
|
|
<link rel="import" href="../../../styles/gr-page-nav-styles.html">
|
|
<link rel="import" href="../../../styles/gr-form-styles.html">
|
|
<link rel="import" href="../../settings/gr-change-table-editor/gr-change-table-editor.html">
|
|
<link rel="import" href="../../shared/gr-button/gr-button.html">
|
|
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
|
|
<link rel="import" href="../../shared/gr-page-nav/gr-page-nav.html">
|
|
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
|
|
<link rel="import" href="../../shared/gr-select/gr-select.html">
|
|
<link rel="import" href="../gr-account-info/gr-account-info.html">
|
|
<link rel="import" href="../gr-agreements-list/gr-agreements-list.html">
|
|
<link rel="import" href="../gr-email-editor/gr-email-editor.html">
|
|
<link rel="import" href="../gr-group-list/gr-group-list.html">
|
|
<link rel="import" href="../gr-http-password/gr-http-password.html">
|
|
<link rel="import" href="../gr-identities/gr-identities.html">
|
|
<link rel="import" href="../gr-menu-editor/gr-menu-editor.html">
|
|
<link rel="import" href="../gr-ssh-editor/gr-ssh-editor.html">
|
|
<link rel="import" href="../gr-watched-projects-editor/gr-watched-projects-editor.html">
|
|
|
|
<dom-module id="gr-settings-view">
|
|
<template>
|
|
<style include="shared-styles">
|
|
#newEmailInput {
|
|
width: 20em;
|
|
}
|
|
#email {
|
|
margin-bottom: 1em;
|
|
}
|
|
.filters p {
|
|
margin-bottom: 1em;
|
|
}
|
|
.queryExample em {
|
|
color: violet;
|
|
}
|
|
</style>
|
|
<style include="gr-form-styles"></style>
|
|
<style include="gr-menu-page-styles"></style>
|
|
<style include="gr-page-nav-styles"></style>
|
|
<div class="loading" hidden$="[[!_loading]]">Loading...</div>
|
|
<div hidden$="[[_loading]]" hidden>
|
|
<gr-page-nav class="navStyles">
|
|
<ul>
|
|
<li><a href="#Profile">Profile</a></li>
|
|
<li><a href="#Preferences">Preferences</a></li>
|
|
<li><a href="#DiffPreferences">Diff Preferences</a></li>
|
|
<li><a href="#Menu">Menu</a></li>
|
|
<li><a href="#ChangeTableColumns">Change Table Columns</a></li>
|
|
<li><a href="#Notifications">Notifications</a></li>
|
|
<li><a href="#EmailAddresses">Email Addresses</a></li>
|
|
<li><a href="#HTTPCredentials">HTTP Credentials</a></li>
|
|
<li hidden$="[[!_serverConfig.sshd]]"><a href="#SSHKeys">
|
|
SSH Keys
|
|
</a></li>
|
|
<li><a href="#Groups">Groups</a></li>
|
|
<li><a href="#Identities">Identities</a></li>
|
|
<template is="dom-if" if="[[_serverConfig.auth.use_contributor_agreements]]">
|
|
<li>
|
|
<a href="#Agreements">Agreements</a>
|
|
</li>
|
|
</template>
|
|
<li><a href="#MailFilters">Mail Filters</a></li>
|
|
</ul>
|
|
</gr-page-nav>
|
|
<main class="gr-form-styles">
|
|
<h1>User Settings</h1>
|
|
<h2
|
|
id="Profile"
|
|
class$="[[_computeHeaderClass(_accountInfoChanged)]]">Profile</h2>
|
|
<fieldset id="profile">
|
|
<gr-account-info
|
|
id="accountInfo"
|
|
mutable="{{_accountNameMutable}}"
|
|
has-unsaved-changes="{{_accountInfoChanged}}"></gr-account-info>
|
|
<gr-button
|
|
on-tap="_handleSaveAccountInfo"
|
|
disabled="[[!_accountInfoChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2
|
|
id="Preferences"
|
|
class$="[[_computeHeaderClass(_prefsChanged)]]">Preferences</h2>
|
|
<fieldset id="preferences">
|
|
<section>
|
|
<span class="title">Changes per page</span>
|
|
<span class="value">
|
|
<gr-select
|
|
bind-value="{{_localPrefs.changes_per_page}}">
|
|
<select>
|
|
<option value="10">10 rows per page</option>
|
|
<option value="25">25 rows per page</option>
|
|
<option value="50">50 rows per page</option>
|
|
<option value="100">100 rows per page</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Date/time format</span>
|
|
<span class="value">
|
|
<gr-select
|
|
bind-value="{{_localPrefs.date_format}}">
|
|
<select>
|
|
<option value="STD">Jun 3 ; Jun 3, 2016</option>
|
|
<option value="US">06/03 ; 06/03/16</option>
|
|
<option value="ISO">06-03 ; 2016-06-03</option>
|
|
<option value="EURO">3. Jun ; 03.06.2016</option>
|
|
<option value="UK">03/06 ; 03/06/2016</option>
|
|
</select>
|
|
</gr-select>
|
|
<gr-select
|
|
bind-value="{{_localPrefs.time_format}}">
|
|
<select>
|
|
<option value="HHMM_12">4:10 PM</option>
|
|
<option value="HHMM_24">16:10</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Email notifications</span>
|
|
<span class="value">
|
|
<gr-select
|
|
bind-value="{{_localPrefs.email_strategy}}">
|
|
<select>
|
|
<option value="CC_ON_OWN_COMMENTS">Every comment</option>
|
|
<option value="ENABLED">Only comments left by others</option>
|
|
<option value="DISABLED">None</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section hidden$="[[!_localPrefs.email_format]]">
|
|
<span class="title">Email format</span>
|
|
<span class="value">
|
|
<gr-select
|
|
bind-value="{{_localPrefs.email_format}}">
|
|
<select>
|
|
<option value="HTML_PLAINTEXT">HTML and plaintext</option>
|
|
<option value="PLAINTEXT">Plaintext only</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Diff view</span>
|
|
<span class="value">
|
|
<gr-select
|
|
bind-value="{{_localPrefs.diff_view}}">
|
|
<select>
|
|
<option value="SIDE_BY_SIDE">Side by side</option>
|
|
<option value="UNIFIED_DIFF">Unified diff</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Expand inline diffs</span>
|
|
<span class="value">
|
|
<input
|
|
id="expandInlineDiffs"
|
|
type="checkbox"
|
|
checked$="[[_localPrefs.expand_inline_diffs]]"
|
|
on-change="_handleExpandInlineDiffsChanged">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Publish comments on push</span>
|
|
<span class="value">
|
|
<input
|
|
id="publishCommentsOnPush"
|
|
type="checkbox"
|
|
checked$="[[_localPrefs.publish_comments_on_push]]"
|
|
on-change="_handlePublishCommentsOnPushChanged">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">
|
|
Insert Signed-off-by Footer For Inline Edit Changes
|
|
</span>
|
|
<span class="value">
|
|
<input
|
|
id="insertSignedOff"
|
|
type="checkbox"
|
|
checked$="[[_localPrefs.signed_off_by]]"
|
|
on-change="_handleInsertSignedOff">
|
|
</span>
|
|
</section>
|
|
<gr-button
|
|
id="savePrefs"
|
|
on-tap="_handleSavePreferences"
|
|
disabled="[[!_prefsChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2
|
|
id="DiffPreferences"
|
|
class$="[[_computeHeaderClass(_diffPrefsChanged)]]">
|
|
Diff Preferences
|
|
</h2>
|
|
<fieldset id="diffPreferences">
|
|
<section>
|
|
<span class="title">Context</span>
|
|
<span class="value">
|
|
<gr-select bind-value="{{_diffPrefs.context}}">
|
|
<select>
|
|
<option value="3">3 lines</option>
|
|
<option value="10">10 lines</option>
|
|
<option value="25">25 lines</option>
|
|
<option value="50">50 lines</option>
|
|
<option value="75">75 lines</option>
|
|
<option value="100">100 lines</option>
|
|
<option value="-1">Whole file</option>
|
|
</select>
|
|
</gr-select>
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Fit to screen</span>
|
|
<span class="value">
|
|
<input
|
|
id="lineWrapping"
|
|
type="checkbox"
|
|
checked$="[[_diffPrefs.line_wrapping]]"
|
|
on-change="_handleLineWrappingChanged">
|
|
</span>
|
|
</section>
|
|
<section id="columnsPref" hidden$="[[_diffPrefs.line_wrapping]]">
|
|
<span class="title">Diff width</span>
|
|
<span class="value">
|
|
<input
|
|
is="iron-input"
|
|
type="number"
|
|
prevent-invalid-input
|
|
allowed-pattern="[0-9]"
|
|
bind-value="{{_diffPrefs.line_length}}">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Tab width</span>
|
|
<span class="value">
|
|
<input
|
|
is="iron-input"
|
|
type="number"
|
|
prevent-invalid-input
|
|
allowed-pattern="[0-9]"
|
|
bind-value="{{_diffPrefs.tab_size}}">
|
|
</span>
|
|
</section>
|
|
<section hidden$="[[!_diffPrefs.font_size]]">
|
|
<span class="title">Font size</span>
|
|
<span class="value">
|
|
<input
|
|
is="iron-input"
|
|
type="number"
|
|
prevent-invalid-input
|
|
allowed-pattern="[0-9]"
|
|
bind-value="{{_diffPrefs.font_size}}">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Show tabs</span>
|
|
<span class="value">
|
|
<input
|
|
id="showTabs"
|
|
type="checkbox"
|
|
checked$="[[_diffPrefs.show_tabs]]"
|
|
on-change="_handleShowTabsChanged">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Show trailing whitespace</span>
|
|
<span class="value">
|
|
<input
|
|
id="showTrailingWhitespace"
|
|
type="checkbox"
|
|
checked$="[[_diffPrefs.show_whitespace_errors]]"
|
|
on-change="_handleShowTrailingWhitespaceChanged">
|
|
</span>
|
|
</section>
|
|
<section>
|
|
<span class="title">Syntax highlighting</span>
|
|
<span class="value">
|
|
<input
|
|
id="syntaxHighlighting"
|
|
type="checkbox"
|
|
checked$="[[_diffPrefs.syntax_highlighting]]"
|
|
on-change="_handleSyntaxHighlightingChanged">
|
|
</span>
|
|
</section>
|
|
<gr-button
|
|
id="saveDiffPrefs"
|
|
on-tap="_handleSaveDiffPreferences"
|
|
disabled$="[[!_diffPrefsChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2 id="Menu" class$="[[_computeHeaderClass(_menuChanged)]]">Menu</h2>
|
|
<fieldset id="menu">
|
|
<gr-menu-editor menu-items="{{_localMenu}}"></gr-menu-editor>
|
|
<gr-button
|
|
id="saveMenu"
|
|
on-tap="_handleSaveMenu"
|
|
disabled="[[!_menuChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2 id="ChangeTableColumns"
|
|
class$="[[_computeHeaderClass(_changeTableChanged)]]">
|
|
Change Table Columns
|
|
</h2>
|
|
<fieldset id="changeTableColumns">
|
|
<gr-change-table-editor
|
|
show-number="{{_showNumber}}"
|
|
displayed-columns="{{_localChangeTableColumns}}">
|
|
</gr-change-table-editor>
|
|
<gr-button
|
|
id="saveChangeTable"
|
|
on-tap="_handleSaveChangeTable"
|
|
disabled="[[!_changeTableChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2
|
|
id="Notifications"
|
|
class$="[[_computeHeaderClass(_watchedProjectsChanged)]]">
|
|
Notifications
|
|
</h2>
|
|
<fieldset id="watchedProjects">
|
|
<gr-watched-projects-editor
|
|
has-unsaved-changes="{{_watchedProjectsChanged}}"
|
|
id="watchedProjectsEditor"></gr-watched-projects-editor>
|
|
<gr-button
|
|
on-tap="_handleSaveWatchedProjects"
|
|
disabled$="[[!_watchedProjectsChanged]]"
|
|
id="_handleSaveWatchedProjects">Save changes</gr-button>
|
|
</fieldset>
|
|
<h2
|
|
id="EmailAddresses"
|
|
class$="[[_computeHeaderClass(_emailsChanged)]]">
|
|
Email Addresses
|
|
</h2>
|
|
<fieldset id="email">
|
|
<gr-email-editor
|
|
id="emailEditor"
|
|
has-unsaved-changes="{{_emailsChanged}}"></gr-email-editor>
|
|
<gr-button
|
|
on-tap="_handleSaveEmails"
|
|
disabled$="[[!_emailsChanged]]">Save changes</gr-button>
|
|
</fieldset>
|
|
<fieldset id="newEmail">
|
|
<section>
|
|
<span class="title">New email address</span>
|
|
<span class="value">
|
|
<input
|
|
id="newEmailInput"
|
|
bind-value="{{_newEmail}}"
|
|
is="iron-input"
|
|
type="text"
|
|
disabled="[[_addingEmail]]"
|
|
on-keydown="_handleNewEmailKeydown"
|
|
placeholder="email@example.com">
|
|
</span>
|
|
</section>
|
|
<section
|
|
id="verificationSentMessage"
|
|
hidden$="[[!_lastSentVerificationEmail]]">
|
|
<p>
|
|
A verification email was sent to
|
|
<em>[[_lastSentVerificationEmail]]</em>. Please check your inbox.
|
|
</p>
|
|
</section>
|
|
<gr-button
|
|
disabled="[[!_computeAddEmailButtonEnabled(_newEmail, _addingEmail)]]"
|
|
on-tap="_handleAddEmailButton">Send verification</gr-button>
|
|
</fieldset>
|
|
<h2 id="HTTPCredentials">HTTP Credentials</h2>
|
|
<fieldset>
|
|
<gr-http-password id="httpPass"></gr-http-password>
|
|
</fieldset>
|
|
<div hidden$="[[!_serverConfig.sshd]]">
|
|
<h2
|
|
id="SSHKeys"
|
|
class$="[[_computeHeaderClass(_keysChanged)]]">SSH keys</h2>
|
|
<gr-ssh-editor
|
|
id="sshEditor"
|
|
has-unsaved-changes="{{_keysChanged}}"></gr-ssh-editor>
|
|
</div>
|
|
<h2 id="Groups">Groups</h2>
|
|
<fieldset>
|
|
<gr-group-list id="groupList"></gr-group-list>
|
|
</fieldset>
|
|
<h2 id="Identities">Identities</h2>
|
|
<fieldset>
|
|
<gr-identities id="identities"></gr-identities>
|
|
</fieldset>
|
|
<template is="dom-if" if="[[_serverConfig.auth.use_contributor_agreements]]">
|
|
<h2 id="Agreements">Agreements</h2>
|
|
<fieldset>
|
|
<gr-agreements-list id="agreementsList"></gr-agreements-list>
|
|
</fieldset>
|
|
</template>
|
|
<h2 id="MailFilters">Mail Filters</h2>
|
|
<fieldset class="filters">
|
|
<p>
|
|
Gerrit emails include metadata about the change to support
|
|
writing mail filters.
|
|
</p>
|
|
<p>
|
|
Here are some example Gmail queries that can be used for filters or
|
|
for searching through archived messages. View the
|
|
<a href$="[[_getFilterDocsLink(_docsBaseUrl)]]"
|
|
target="_blank"
|
|
rel="nofollow">Gerrit documentation</a>
|
|
for the complete set of footers.
|
|
</p>
|
|
<table>
|
|
<tbody>
|
|
<tr><th>Name</th><th>Query</th></tr>
|
|
<tr>
|
|
<td>Changes requesting my review</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Reviewer: <em>Your Name</em>
|
|
<<em>your.email@example.com</em>>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Changes from a specific owner</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Owner: <em>Owner name</em>
|
|
<<em>owner.email@example.com</em>>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Changes targeting a specific branch</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Branch: <em>branch-name</em>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Changes in a specific project</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Project: <em>project-name</em>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Messages related to a specific Change ID</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Change-Id: <em>Change ID</em>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Messages related to a specific change number</td>
|
|
<td>
|
|
<code class="queryExample">
|
|
"Gerrit-Change-Number: <em>change number</em>"
|
|
</code>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</fieldset>
|
|
</main>
|
|
</div>
|
|
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
|
|
</template>
|
|
<script src="../../../scripts/util.js"></script>
|
|
<script src="gr-settings-view.js"></script>
|
|
</dom-module>
|