Use gitweb rather than gitiles in weblink (when available)
Besides using a plugin such as gitiles to add web_links information to
the commit, Gerrit also supports configuring the link through the gitweb
section of the server config. Use this information rather than web_links
when it's available.
Related to change: https://gerrit-review.googlesource.com/c/76655/
Bug: Issue 3950
Bug: Issue 4032
Change-Id: I346824c6db0f5451bca60a56ec61efafcb9cf715
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.html b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.html
index 5f76a79..98e8e9a 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.html
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.html
@@ -106,11 +106,11 @@
<section>
<span class="title">Commit</span>
<span class="value">
- <template is="dom-if" if="[[_computeShowWebLink(commitInfo)]]">
+ <template is="dom-if" if="[[_showWebLink]]">
<a target="_blank"
- href$="[[_computeWebLink(commitInfo)]]">[[_computeShortHash(change)]]</a>
+ href$="[[_webLink]]">[[_computeShortHash(change)]]</a>
</template>
- <template is="dom-if" if="[[!_computeShowWebLink(commitInfo)]]">
+ <template is="dom-if" if="[[!_showWebLink]]">
[[_computeShortHash(change)]]
</template>
</span>
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
index 8e2e000..825b88b 100644
--- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
+++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata.js
@@ -30,17 +30,35 @@
commitInfo: Object,
mutable: Boolean,
serverConfig: Object,
+ _showWebLink: {
+ type: Boolean,
+ computed: '_computeShowWebLink(change, commitInfo, serverConfig)',
+ },
+ _webLink: {
+ type: String,
+ computed: '_computeWebLink(change, commitInfo, serverConfig)',
+ },
},
behaviors: [
Gerrit.RESTClientBehavior,
],
- _computeShowWebLink: function(commitInfo) {
- return commitInfo.web_links && commitInfo.web_links.length;
+ _computeShowWebLink: function(change, commitInfo, serverConfig) {
+ return (commitInfo.web_links && commitInfo.web_links.length) || (
+ serverConfig.gitweb && serverConfig.gitweb.url &&
+ serverConfig.gitweb.type && serverConfig.gitweb.type.revision);
},
- _computeWebLink: function(commitInfo) {
+ _computeWebLink: function(change, commitInfo, serverConfig) {
+ if (serverConfig.gitweb && serverConfig.gitweb.url &&
+ serverConfig.gitweb.type && serverConfig.gitweb.type.revision) {
+ return serverConfig.gitweb.url +
+ serverConfig.gitweb.type.revision
+ .replace('${project}', change.project)
+ .replace('${commit}', commitInfo.commit);
+ }
+
return '../../' + commitInfo.web_links[0].url;
},