Add PolyGerrit site theme file url to REST API

Change-Id: If25d0850f92f90aa4eabdf9aa74f0d3bc6307392
This commit is contained in:
Viktar Donich
2017-07-20 16:20:09 -07:00
parent 8e2036ee1a
commit 38252c5dfa
4 changed files with 18 additions and 1 deletions

View File

@@ -1801,6 +1801,9 @@ the first matched group, `$2` for the second matched group, etc.
Information about the configuration from the
link:config-gerrit.html#user[user] section as link:#user-config-info[
UserConfigInfo] entity.
|`default_theme` |optional|
URL to a default PolyGerrit UI theme plugin, if available.
Located in `/static/gerrit-theme.html` by default.
|=======================================
[[sshd-info]]

View File

@@ -28,4 +28,5 @@ public class ServerInfo {
public Map<String, String> urlAliases;
public UserConfigInfo user;
public ReceiveInfo receive;
public String defaultTheme;
}

View File

@@ -53,6 +53,7 @@ import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.project.ProjectCache;
import com.google.inject.Inject;
import java.net.MalformedURLException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
@@ -86,6 +87,7 @@ public class GetServerInfo implements RestReadView<ConfigResource> {
private final AgreementJson agreementJson;
private final GerritOptions gerritOptions;
private final ChangeIndexCollection indexes;
private final SitePaths sitePaths;
@Inject
public GetServerInfo(
@@ -107,7 +109,8 @@ public class GetServerInfo implements RestReadView<ConfigResource> {
ProjectCache projectCache,
AgreementJson agreementJson,
GerritOptions gerritOptions,
ChangeIndexCollection indexes) {
ChangeIndexCollection indexes,
SitePaths sitePaths) {
this.config = config;
this.authConfig = authConfig;
this.realm = realm;
@@ -127,6 +130,7 @@ public class GetServerInfo implements RestReadView<ConfigResource> {
this.agreementJson = agreementJson;
this.gerritOptions = gerritOptions;
this.indexes = indexes;
this.sitePaths = sitePaths;
}
@Override
@@ -139,6 +143,9 @@ public class GetServerInfo implements RestReadView<ConfigResource> {
info.gerrit = getGerritInfo(config, allProjectsName, allUsersName);
info.noteDbEnabled = toBoolean(isNoteDbEnabled());
info.plugin = getPluginInfo();
if (Files.exists(sitePaths.site_theme)) {
info.defaultTheme = "/static/" + SitePaths.THEME_FILENAME;
}
info.sshd = getSshdInfo(config);
info.suggest = getSuggestInfo(config);

View File

@@ -29,6 +29,7 @@ public final class SitePaths {
public static final String CSS_FILENAME = "GerritSite.css";
public static final String HEADER_FILENAME = "GerritSiteHeader.html";
public static final String FOOTER_FILENAME = "GerritSiteFooter.html";
public static final String THEME_FILENAME = "gerrit-theme.html";
public final Path site_path;
public final Path bin_dir;
@@ -67,6 +68,8 @@ public final class SitePaths {
public final Path site_css;
public final Path site_header;
public final Path site_footer;
// For PolyGerrit UI only.
public final Path site_theme;
public final Path site_gitweb;
/** {@code true} if {@link #site_path} has not been initialized. */
@@ -115,6 +118,9 @@ public final class SitePaths {
site_footer = etc_dir.resolve(FOOTER_FILENAME);
site_gitweb = etc_dir.resolve("gitweb_config.perl");
// For PolyGerrit UI.
site_theme = static_dir.resolve(THEME_FILENAME);
boolean isNew;
try (DirectoryStream<Path> files = Files.newDirectoryStream(site_path)) {
isNew = Iterables.isEmpty(files);