VIVO-541 Tweaks to the .ftl and .js

This commit is contained in:
j2blake 2013-11-18 18:13:09 -05:00
parent 818962d0a6
commit 09dacc8e5a
4 changed files with 102 additions and 49 deletions

View file

@ -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;
} }
} }

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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>