VIVO-541 First cut at the developer panel.
This commit is contained in:
parent
35251e89f4
commit
0fce9f6a7b
21 changed files with 762 additions and 139 deletions
|
@ -814,6 +814,15 @@
|
|||
<url-pattern>/searchHelp</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>DeveloperAjax</servlet-name>
|
||||
<servlet-class>edu.cornell.mannlib.vitro.webapp.utils.developer.DeveloperSettingsServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>DeveloperAjax</servlet-name>
|
||||
<url-pattern>/admin/developerAjax</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<!-- for now, need to make sure the links on CALS' site doesn't break -->
|
||||
<servlet-mapping>
|
||||
<servlet-name>SearchController</servlet-name>
|
||||
|
|
82
webapp/web/js/developer/developerPanel.js
Normal file
82
webapp/web/js/developer/developerPanel.js
Normal file
|
@ -0,0 +1,82 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
function DeveloperPanel(developerAjaxUrl) {
|
||||
this.setupDeveloperPanel = updateDeveloperPanel;
|
||||
|
||||
function updateDeveloperPanel(data) {
|
||||
$.ajax({
|
||||
url: developerAjaxUrl,
|
||||
dataType: "json",
|
||||
data: data,
|
||||
complete: function(xhr, status) {
|
||||
updatePanelContents(xhr.responseText);
|
||||
if (document.getElementById("developerPanelSaveButton")) {
|
||||
enablePanelOpener();
|
||||
addBehaviorToElements();
|
||||
updateDisabledFields();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function updatePanelContents(contents) {
|
||||
document.getElementById("developerPanel").innerHTML = contents;
|
||||
}
|
||||
|
||||
function enablePanelOpener() {
|
||||
document.getElementById("developerPanelClickMe").onclick = function() {
|
||||
document.getElementById("developerPanelClickText").style.display = "none";
|
||||
document.getElementById("developerPanelBody").style.display = "block";
|
||||
};
|
||||
}
|
||||
|
||||
function addBehaviorToElements() {
|
||||
document.getElementById("developerPanelSaveButton").onclick = function() {
|
||||
updateDeveloperPanel(collectFormData());
|
||||
}
|
||||
document.getElementById("developer.enabled").onchange = updateDisabledFields
|
||||
document.getElementById("developer.loggingRDFService.enable").onchange = updateDisabledFields
|
||||
}
|
||||
|
||||
function updateDisabledFields() {
|
||||
var developerEnabled = document.getElementById("developer.enabled").checked;
|
||||
document.getElementById("developer.defeatFreemarkerCache").disabled = !developerEnabled;
|
||||
document.getElementById("developer.insertFreemarkerDelimiters").disabled = !developerEnabled;
|
||||
document.getElementById("developer.i18n.defeatCache").disabled = !developerEnabled;
|
||||
document.getElementById("developer.i18n.logStringRequests").disabled = !developerEnabled;
|
||||
document.getElementById("developer.loggingRDFService.enable").disabled = !developerEnabled;
|
||||
|
||||
var rdfServiceEnabled = developerEnabled && document.getElementById("developer.loggingRDFService.enable").checked;
|
||||
document.getElementById("developer.loggingRDFService.stackTrace").disabled = !rdfServiceEnabled;
|
||||
document.getElementById("developer.loggingRDFService.restriction").disabled = !rdfServiceEnabled;
|
||||
}
|
||||
|
||||
function collectFormData() {
|
||||
var data = new Object();
|
||||
data["developer.panelOpen"] = false;
|
||||
getCheckbox("developer.enabled", data);
|
||||
getCheckbox("developer.defeatFreemarkerCache", data);
|
||||
getCheckbox("developer.insertFreemarkerDelimiters", data);
|
||||
getCheckbox("developer.i18n.defeatCache", data);
|
||||
getCheckbox("developer.i18n.logStringRequests", data);
|
||||
getCheckbox("developer.loggingRDFService.enable", data);
|
||||
getCheckbox("developer.loggingRDFService.stackTrace", data);
|
||||
getText("developer.loggingRDFService.restriction", data);
|
||||
return data;
|
||||
}
|
||||
|
||||
function getCheckbox(key, dest) {
|
||||
dest[key] = document.getElementById(key).checked;
|
||||
}
|
||||
|
||||
function getText(key, dest) {
|
||||
dest[key] = document.getElementById(key).value;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Relies on the global variable for the AJAX URL.
|
||||
*/
|
||||
$(document).ready(function() {
|
||||
new DeveloperPanel(developerAjaxUrl).setupDeveloperPanel({});
|
||||
});
|
|
@ -0,0 +1,5 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<div id="developerPanel" > </div>
|
||||
<script>developerAjaxUrl = '${urls.developerAjax}'</script>
|
||||
${scripts.add('<script type="text/javascript" src="${urls.base}/js/developer/developerPanel.js"></script>')}
|
|
@ -0,0 +1,91 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
|
||||
<#macro showCheckbox key>
|
||||
<input type="checkbox" id="${key}" <#if settings[key]>checked</#if>>
|
||||
</#macro>
|
||||
|
||||
<#macro showTextbox key>
|
||||
<input type="text" id="${key}" size="40" value="${settings[key]}" >
|
||||
</#macro>
|
||||
|
||||
|
||||
<style>
|
||||
div.developer {
|
||||
background-color: red;
|
||||
padding: 0px 10px 0px 10px;
|
||||
font-size: small;
|
||||
font-variant: small-caps;
|
||||
}
|
||||
|
||||
div.developer #developerPanelBody {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.developer .container {
|
||||
border: thin groove black
|
||||
}
|
||||
</style>
|
||||
|
||||
<#if !settings["developer.enabled"]>
|
||||
<#elseif !settings["mayControl"]>
|
||||
<div class="developer">
|
||||
<h1>${siteName} is running in developer mode.</h1>
|
||||
</div>
|
||||
<#else>
|
||||
<div class="developer">
|
||||
<h1 id="developerPanelClickMe">${siteName} is running in developer mode.
|
||||
<span id="developerPanelClickText">(click for Options)</span>
|
||||
</h1>
|
||||
<div id="developerPanelBody">
|
||||
<form>
|
||||
<label>
|
||||
<@showCheckbox "developer.enabled" />
|
||||
Enable developer mode
|
||||
</label>
|
||||
|
||||
<div class="container">
|
||||
Freemarker templates
|
||||
<label>
|
||||
<@showCheckbox "developer.defeatFreemarkerCache" />
|
||||
Defeat the template cache
|
||||
</label>
|
||||
<label>
|
||||
<@showCheckbox "developer.insertFreemarkerDelimiters" />
|
||||
Insert HTML comments at start and end of templates
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
SPARQL Queries
|
||||
<label>
|
||||
<@showCheckbox "developer.loggingRDFService.enable" />
|
||||
Log each query
|
||||
</label>
|
||||
<label>
|
||||
<@showCheckbox "developer.loggingRDFService.stackTrace" />
|
||||
Add stack trace
|
||||
</label>
|
||||
<label>
|
||||
Restrict by calling stack
|
||||
<@showTextbox "developer.loggingRDFService.restriction" />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
Language support
|
||||
<label>
|
||||
<@showCheckbox "developer.i18n.defeatCache" />
|
||||
Defeat the cache of language property files
|
||||
</label>
|
||||
<label>
|
||||
<@showCheckbox "developer.i18n.logStringRequests" />
|
||||
Log the retrieval of language strings
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<input type="button" id="developerPanelSaveButton" value="Save Settings" name="foo" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</#if>
|
|
@ -1,5 +1,7 @@
|
|||
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
|
||||
|
||||
<#include "developer.ftl">
|
||||
|
||||
<nav role="navigation">
|
||||
<ul id="main-nav" role="list">
|
||||
<#list menu.items as item>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue