VIVO-541 Tweaks to the .ftl and .js
This commit is contained in:
parent
818962d0a6
commit
09dacc8e5a
4 changed files with 102 additions and 49 deletions
|
@ -82,8 +82,8 @@ public class RDFServiceLogger implements AutoCloseable {
|
||||||
restriction = Pattern.compile(restrictionString);
|
restriction = Pattern.compile(restrictionString);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Failed to compile the pattern for "
|
log.error("Failed to compile the pattern for "
|
||||||
+ Keys.LOGGING_RDF_RESTRICTION.key() + " = "
|
+ Keys.LOGGING_RDF_RESTRICTION + " = " + restriction
|
||||||
+ restriction + " " + e);
|
+ " " + e);
|
||||||
isEnabled = false;
|
isEnabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class DeveloperSettings {
|
||||||
* Enable the I18nLogger to log each string request.
|
* Enable the I18nLogger to log each string request.
|
||||||
*/
|
*/
|
||||||
I18N_LOG_STRINGS("developer.i18n.logStringRequests", true),
|
I18N_LOG_STRINGS("developer.i18n.logStringRequests", true),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enable the LoggingRDFService
|
* Enable the LoggingRDFService
|
||||||
*/
|
*/
|
||||||
|
@ -85,21 +85,74 @@ public class DeveloperSettings {
|
||||||
LOGGING_RDF_RESTRICTION("developer.loggingRDFService.restriction",
|
LOGGING_RDF_RESTRICTION("developer.loggingRDFService.restriction",
|
||||||
false);
|
false);
|
||||||
|
|
||||||
private final String key;
|
private final String propertyName;
|
||||||
|
private final String elementId;
|
||||||
private final boolean bool;
|
private final boolean bool;
|
||||||
|
|
||||||
Keys(String key, boolean bool) {
|
private Keys(String propertyName, boolean bool) {
|
||||||
this.key = key;
|
this.propertyName = propertyName;
|
||||||
|
this.elementId = produceElementId();
|
||||||
this.bool = bool;
|
this.bool = bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String key() {
|
public String propertyName() {
|
||||||
return key;
|
return propertyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String elementId() {
|
||||||
|
return elementId;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isBoolean() {
|
boolean isBoolean() {
|
||||||
return bool;
|
return bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The element ID is camel-case instead of period-delimited. So
|
||||||
|
* "developer.enabled" becomes "developerEnabled".
|
||||||
|
*/
|
||||||
|
String produceElementId() {
|
||||||
|
StringBuilder id = new StringBuilder(propertyName.length());
|
||||||
|
boolean capitalize = false;
|
||||||
|
for (int i = 0; i < propertyName.length(); i++) {
|
||||||
|
char c = propertyName.charAt(i);
|
||||||
|
if (c == '.') {
|
||||||
|
capitalize = true;
|
||||||
|
} else if (capitalize) {
|
||||||
|
id.append(Character.toUpperCase(c));
|
||||||
|
capitalize = false;
|
||||||
|
} else {
|
||||||
|
id.append(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return propertyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Keys fromElementId(String id) {
|
||||||
|
for (Keys k : Keys.values()) {
|
||||||
|
if (k.elementId.equals(id)) {
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.error("Can't find key for element id: '" + id + "'");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Keys fromPropertyName(String name) {
|
||||||
|
for (Keys k : Keys.values()) {
|
||||||
|
if (k.propertyName.equals(name)) {
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.error("Can't find key for property name: '" + name + "'");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -133,7 +186,7 @@ public class DeveloperSettings {
|
||||||
private DeveloperSettings(ServletContext ctx) {
|
private DeveloperSettings(ServletContext ctx) {
|
||||||
updateFromFile(ctx);
|
updateFromFile(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the initial settings from "developer.properties" in the Vitro home
|
* Read the initial settings from "developer.properties" in the Vitro home
|
||||||
* directory.
|
* directory.
|
||||||
|
@ -141,7 +194,7 @@ public class DeveloperSettings {
|
||||||
* This method is "protected" so we can override it for unit tests.
|
* This method is "protected" so we can override it for unit tests.
|
||||||
*/
|
*/
|
||||||
protected void updateFromFile(ServletContext ctx) {
|
protected void updateFromFile(ServletContext ctx) {
|
||||||
Map<String, String> fromFile = new HashMap<>();
|
Map<Keys, String> fromFile = new HashMap<>();
|
||||||
|
|
||||||
ConfigurationProperties props = ConfigurationProperties.getBean(ctx);
|
ConfigurationProperties props = ConfigurationProperties.getBean(ctx);
|
||||||
String home = props.getProperty("vitro.home");
|
String home = props.getProperty("vitro.home");
|
||||||
|
@ -152,7 +205,8 @@ public class DeveloperSettings {
|
||||||
Properties dsProps = new Properties();
|
Properties dsProps = new Properties();
|
||||||
dsProps.load(reader);
|
dsProps.load(reader);
|
||||||
for (String key : dsProps.stringPropertyNames()) {
|
for (String key : dsProps.stringPropertyNames()) {
|
||||||
fromFile.put(key, dsProps.getProperty(key));
|
fromFile.put(Keys.fromPropertyName(key),
|
||||||
|
dsProps.getProperty(key));
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.warn("Failed to load 'developer.properties' file.", e);
|
log.warn("Failed to load 'developer.properties' file.", e);
|
||||||
|
@ -171,16 +225,16 @@ public class DeveloperSettings {
|
||||||
dumpParameterMap(parameterMap);
|
dumpParameterMap(parameterMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, String> fromRequest = new HashMap<>();
|
Map<Keys, String> fromRequest = new HashMap<>();
|
||||||
for (String key : parameterMap.keySet()) {
|
for (String key : parameterMap.keySet()) {
|
||||||
fromRequest.put(key, parameterMap.get(key)[0]);
|
fromRequest.put(Keys.fromElementId(key), parameterMap.get(key)[0]);
|
||||||
}
|
}
|
||||||
update(fromRequest);
|
update(fromRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void update(Map<String, String> changedSettings) {
|
private void update(Map<Keys, String> changedSettings) {
|
||||||
for (Keys key : Keys.values()) {
|
for (Keys key : Keys.values()) {
|
||||||
String s = changedSettings.get(key.key());
|
String s = changedSettings.get(key);
|
||||||
if (s != null) {
|
if (s != null) {
|
||||||
if (key.isBoolean()) {
|
if (key.isBoolean()) {
|
||||||
settings.put(key, Boolean.valueOf(s));
|
settings.put(key, Boolean.valueOf(s));
|
||||||
|
@ -199,10 +253,10 @@ public class DeveloperSettings {
|
||||||
return getString(key);
|
return getString(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getBoolean(Keys key) {
|
public boolean getBoolean(Keys key) {
|
||||||
if (!key.isBoolean()) {
|
if (!key.isBoolean()) {
|
||||||
throw new IllegalArgumentException("Key '" + key.key()
|
throw new IllegalArgumentException("Key '" + key
|
||||||
+ "' does not take a boolean value.");
|
+ "' does not take a boolean value.");
|
||||||
}
|
}
|
||||||
if (settings.containsKey(key)) {
|
if (settings.containsKey(key)) {
|
||||||
|
@ -215,7 +269,7 @@ public class DeveloperSettings {
|
||||||
|
|
||||||
public String getString(Keys key) {
|
public String getString(Keys key) {
|
||||||
if (key.isBoolean()) {
|
if (key.isBoolean()) {
|
||||||
throw new IllegalArgumentException("Key '" + key.key()
|
throw new IllegalArgumentException("Key '" + key
|
||||||
+ "' takes a boolean value.");
|
+ "' takes a boolean value.");
|
||||||
}
|
}
|
||||||
if (settings.containsKey(key)) {
|
if (settings.containsKey(key)) {
|
||||||
|
@ -229,7 +283,7 @@ public class DeveloperSettings {
|
||||||
public Map<String, Object> getSettingsMap() {
|
public Map<String, Object> getSettingsMap() {
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
for (Keys key : Keys.values()) {
|
for (Keys key : Keys.values()) {
|
||||||
map.put(key.key(), get(key));
|
map.put(key.elementId(), get(key));
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,34 +34,33 @@
|
||||||
document.getElementById("developerPanelSaveButton").onclick = function() {
|
document.getElementById("developerPanelSaveButton").onclick = function() {
|
||||||
updateDeveloperPanel(collectFormData());
|
updateDeveloperPanel(collectFormData());
|
||||||
}
|
}
|
||||||
document.getElementById("developer.enabled").onchange = updateDisabledFields
|
document.getElementById("developerEnabled").onchange = updateDisabledFields
|
||||||
document.getElementById("developer.loggingRDFService.enable").onchange = updateDisabledFields
|
document.getElementById("developerLoggingRDFServiceEnable").onchange = updateDisabledFields
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDisabledFields() {
|
function updateDisabledFields() {
|
||||||
var developerEnabled = document.getElementById("developer.enabled").checked;
|
var developerEnabled = document.getElementById("developerEnabled").checked;
|
||||||
document.getElementById("developer.defeatFreemarkerCache").disabled = !developerEnabled;
|
document.getElementById("developerDefeatFreemarkerCache").disabled = !developerEnabled;
|
||||||
document.getElementById("developer.insertFreemarkerDelimiters").disabled = !developerEnabled;
|
document.getElementById("developerInsertFreemarkerDelimiters").disabled = !developerEnabled;
|
||||||
document.getElementById("developer.i18n.defeatCache").disabled = !developerEnabled;
|
document.getElementById("developerI18nDefeatCache").disabled = !developerEnabled;
|
||||||
document.getElementById("developer.i18n.logStringRequests").disabled = !developerEnabled;
|
document.getElementById("developerI18nLogStringRequests").disabled = !developerEnabled;
|
||||||
document.getElementById("developer.loggingRDFService.enable").disabled = !developerEnabled;
|
document.getElementById("developerLoggingRDFServiceEnable").disabled = !developerEnabled;
|
||||||
|
|
||||||
var rdfServiceEnabled = developerEnabled && document.getElementById("developer.loggingRDFService.enable").checked;
|
var rdfServiceEnabled = developerEnabled && document.getElementById("developerLoggingRDFServiceEnable").checked;
|
||||||
document.getElementById("developer.loggingRDFService.stackTrace").disabled = !rdfServiceEnabled;
|
document.getElementById("developerLoggingRDFServiceStackTrace").disabled = !rdfServiceEnabled;
|
||||||
document.getElementById("developer.loggingRDFService.restriction").disabled = !rdfServiceEnabled;
|
document.getElementById("developerLoggingRDFServiceRestriction").disabled = !rdfServiceEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
function collectFormData() {
|
function collectFormData() {
|
||||||
var data = new Object();
|
var data = new Object();
|
||||||
data["developer.panelOpen"] = false;
|
getCheckbox("developerEnabled", data);
|
||||||
getCheckbox("developer.enabled", data);
|
getCheckbox("developerDefeatFreemarkerCache", data);
|
||||||
getCheckbox("developer.defeatFreemarkerCache", data);
|
getCheckbox("developerInsertFreemarkerDelimiters", data);
|
||||||
getCheckbox("developer.insertFreemarkerDelimiters", data);
|
getCheckbox("developerI18nDefeatCache", data);
|
||||||
getCheckbox("developer.i18n.defeatCache", data);
|
getCheckbox("developerI18nLogStringRequests", data);
|
||||||
getCheckbox("developer.i18n.logStringRequests", data);
|
getCheckbox("developerLoggingRDFServiceEnable", data);
|
||||||
getCheckbox("developer.loggingRDFService.enable", data);
|
getCheckbox("developerLoggingRDFServiceStackTrace", data);
|
||||||
getCheckbox("developer.loggingRDFService.stackTrace", data);
|
getText("developerLoggingRDFServiceRestriction", data);
|
||||||
getText("developer.loggingRDFService.restriction", data);
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ div.developer .container {
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<#if !settings["developer.enabled"]>
|
<#if !settings.developerEnabled>
|
||||||
<#elseif !settings["mayControl"]>
|
<#elseif !settings.mayControl>
|
||||||
<div class="developer">
|
<div class="developer">
|
||||||
<h1>${siteName} is running in developer mode.</h1>
|
<h1>${siteName} is running in developer mode.</h1>
|
||||||
</div>
|
</div>
|
||||||
|
@ -40,18 +40,18 @@ div.developer .container {
|
||||||
<div id="developerPanelBody">
|
<div id="developerPanelBody">
|
||||||
<form>
|
<form>
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.enabled" />
|
<@showCheckbox "developerEnabled" />
|
||||||
Enable developer mode
|
Enable developer mode
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
Freemarker templates
|
Freemarker templates
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.defeatFreemarkerCache" />
|
<@showCheckbox "developerDefeatFreemarkerCache" />
|
||||||
Defeat the template cache
|
Defeat the template cache
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.insertFreemarkerDelimiters" />
|
<@showCheckbox "developerInsertFreemarkerDelimiters" />
|
||||||
Insert HTML comments at start and end of templates
|
Insert HTML comments at start and end of templates
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
@ -59,27 +59,27 @@ div.developer .container {
|
||||||
<div class="container">
|
<div class="container">
|
||||||
SPARQL Queries
|
SPARQL Queries
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.loggingRDFService.enable" />
|
<@showCheckbox "developerLoggingRDFServiceEnable" />
|
||||||
Log each query
|
Log each query
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.loggingRDFService.stackTrace" />
|
<@showCheckbox "developerLoggingRDFServiceStackTrace" />
|
||||||
Add stack trace
|
Add stack trace
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
Restrict by calling stack
|
Restrict by calling stack
|
||||||
<@showTextbox "developer.loggingRDFService.restriction" />
|
<@showTextbox "developerLoggingRDFServiceRestriction" />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
Language support
|
Language support
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.i18n.defeatCache" />
|
<@showCheckbox "developerI18nDefeatCache" />
|
||||||
Defeat the cache of language property files
|
Defeat the cache of language property files
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
<@showCheckbox "developer.i18n.logStringRequests" />
|
<@showCheckbox "developerI18nLogStringRequests" />
|
||||||
Log the retrieval of language strings
|
Log the retrieval of language strings
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue