save refresh setting

This commit is contained in:
zzz
2010-01-02 02:43:18 +00:00
parent 9d167dc83a
commit 2d5decd943
3 changed files with 26 additions and 14 deletions

View File

@ -11,6 +11,8 @@ public class CSSHelper extends HelperBase {
public static final String DEFAULT_THEME = "light"; public static final String DEFAULT_THEME = "light";
private static final String BASE = "/themes/console/"; private static final String BASE = "/themes/console/";
private static final String FORCE = "classic"; private static final String FORCE = "classic";
public static final String PROP_REFRESH = "routerconsole.summaryRefresh";
public static final String DEFAULT_REFRESH = "60";
public String getTheme(String userAgent) { public String getTheme(String userAgent) {
String url = BASE; String url = BASE;
@ -34,6 +36,17 @@ public class CSSHelper extends HelperBase {
return Messages.getLanguage(_context); return Messages.getLanguage(_context);
} }
/** change refresh and save it */
public void setRefresh(String r) {
_context.router().setConfigSetting(PROP_REFRESH, r);
_context.router().saveConfig();
}
/** @return refresh time in seconds, as a string */
public String getRefresh() {
return _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH);
}
/** translate the title and display consistently */ /** translate the title and display consistently */
public String title(String s) { public String title(String s) {
StringBuilder buf = new StringBuilder(128); StringBuilder buf = new StringBuilder(128);

View File

@ -6,10 +6,12 @@
String d = request.getParameter("refresh"); String d = request.getParameter("refresh");
String newDelay = ""; String newDelay = "";
if (d == null || "".equals(d)) if (d == null || "".equals(d))
d = System.getProperty("routerconsole.summaryRefresh"); d = intl.getRefresh();
else else {
d = net.i2p.data.DataHelper.stripHTML(d); // XSS
// pass the new delay parameter to the iframe // pass the new delay parameter to the iframe
newDelay = "?refresh=" + d; newDelay = "?refresh=" + d;
}
if (!"0".equals(d)) if (!"0".equals(d))
out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n"); out.print("<iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\">\n");
%> %>
@ -25,13 +27,11 @@
out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n"); out.print("<div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"GET\">\n");
out.print("<b>"); out.print("<b>");
// We have intl defined when this is included, but not when compiled standalone. // We have intl defined when this is included, but not when compiled standalone.
// Not that we really need it standalone, but I can't figure out how to keep out.print(intl._("Refresh (s)"));
// this from being compiled by JspC in the build file. out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");
out.print(net.i2p.router.web.Messages.getString("Refresh (s)", net.i2p.I2PAppContext.getGlobalContext()));
out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n");
out.print("<button type=\"submit\" value=\"Enable\" >"); out.print("<button type=\"submit\" value=\"Enable\" >");
// ditto // ditto
out.print(net.i2p.router.web.Messages.getString("Enable", net.i2p.I2PAppContext.getGlobalContext())); out.print(intl._("Enable"));
out.print("</button>\n"); out.print("</button>\n");
out.print("</form></div></div>\n"); out.print("</form></div></div>\n");
} }

View File

@ -19,11 +19,10 @@
"Shutdown immediately".equals(action) || "Restart immediately".equals(action); "Shutdown immediately".equals(action) || "Restart immediately".equals(action);
if (!shutdownSoon) { if (!shutdownSoon) {
if (d == null || "".equals(d)) { if (d == null || "".equals(d)) {
d = System.getProperty("routerconsole.summaryRefresh"); d = intl.getRefresh();
if (d == null || "".equals(d))
d = "60";
} else { } else {
System.setProperty("routerconsole.summaryRefresh", d); d = net.i2p.data.DataHelper.stripHTML(d); // XSS
intl.setRefresh(d);
} }
// we probably don't get here if d == "0" since caught in summary.jsi, but just // we probably don't get here if d == "0" since caught in summary.jsi, but just
// to be sure... // to be sure...
@ -42,7 +41,7 @@
long delay = 60; long delay = 60;
try { delay = Long.parseLong(d); } catch (NumberFormatException nfe) {} try { delay = Long.parseLong(d); } catch (NumberFormatException nfe) {}
if (delay*1000 < timeleft + 5000) if (delay*1000 < timeleft + 5000)
out.print("<meta http-equiv=\"refresh\" content=\"" + d + "\" />\n"); out.print("<meta http-equiv=\"refresh\" content=\"" + d + "\" >\n");
else else
shutdownSoon = true; shutdownSoon = true;
} }
@ -57,13 +56,13 @@
if ("0".equals(d)) { if ("0".equals(d)) {
out.print("<b>"); out.print("<b>");
out.print(intl._("Refresh (s)")); out.print(intl._("Refresh (s)"));
out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" />\n"); out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");
out.print("<button type=\"submit\" value=\"Enable\" >"); out.print("<button type=\"submit\" value=\"Enable\" >");
out.print(intl._("Enable")); out.print(intl._("Enable"));
out.print("</button></div>\n"); out.print("</button></div>\n");
} else { } else {
// this will load in the iframe but subsequent pages will not have the iframe // this will load in the iframe but subsequent pages will not have the iframe
out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" />\n"); out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" >\n");
out.print("<button type=\"submit\" value=\"Disable\" >"); out.print("<button type=\"submit\" value=\"Disable\" >");
out.print(intl._("Disable {0}s Refresh", d)); out.print(intl._("Disable {0}s Refresh", d));
out.print("</button></div>\n"); out.print("</button></div>\n");