diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java index aa2315a72c516d9ad1ee62dd9d57fda7c6550737..130af3c9df763268bf2d78d5c5e05d803d1ddb0f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java @@ -20,6 +20,7 @@ public class CSSHelper extends HelperBase { public static final String PROP_REFRESH = "routerconsole.summaryRefresh"; public static final String DEFAULT_REFRESH = "60"; public static final int MIN_REFRESH = 3; + public static final String PROP_DISABLE_REFRESH = "routerconsole.summaryDisableRefresh"; private static final String PROP_XFRAME = "routerconsole.disableXFrame"; public String getTheme(String userAgent) { @@ -90,6 +91,25 @@ public class CSSHelper extends HelperBase { return r; } + /** + * change disable refresh boolean and save it + * @since 0.9.1 + */ + public void setDisableRefresh(String r) { + String disableRefresh = "false"; + if ("0".equals(r)) + disableRefresh = "true"; + _context.router().saveConfig(PROP_DISABLE_REFRESH, disableRefresh); + } + + /** + * @return true if refresh is disabled + * @since 0.9.1 + */ + public boolean getDisableRefresh() { + return _context.getBooleanProperty(PROP_DISABLE_REFRESH); + } + /** translate the title and display consistently */ public String title(String s) { StringBuilder buf = new StringBuilder(128); diff --git a/apps/routerconsole/jsp/summary.jsi b/apps/routerconsole/jsp/summary.jsi index 0eb9d77b0b857f5f42137db0ed41681afaf63c72..6a388b817292094842f4494fffa41cb5bfab1238 100644 --- a/apps/routerconsole/jsp/summary.jsi +++ b/apps/routerconsole/jsp/summary.jsi @@ -20,8 +20,10 @@ d = net.i2p.data.DataHelper.stripHTML(d); // XSS // pass the new delay parameter to the iframe newDelay = "?refresh=" + d; + // update disable boolean + intl.setDisableRefresh(d); } - if (!"0".equals(d)) + if (!intl.getDisableRefresh()) out.print("<noscript><iframe src=\"/summaryframe.jsp" + newDelay + "\" height=\"1500\" width=\"200\" scrolling=\"auto\" frameborder=\"0\" title=\"sidepanel\"></noscript>\n"); } %> @@ -40,7 +42,7 @@ } // d and allowIFrame defined above - if (!"0".equals(d)) { + if (!intl.getDisableRefresh()) { out.print("</div><noscript></iframe></noscript>\n"); } else if (allowIFrame) { // since we don't have an iframe this will reload the base page, and diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp index 218e78ba6ab9cf5a7c24ade9357b8a7d88336ce6..4af6be78f4c8a211db130899c582fd2a69cbe945 100644 --- a/apps/routerconsole/jsp/summaryframe.jsp +++ b/apps/routerconsole/jsp/summaryframe.jsp @@ -26,10 +26,11 @@ } else { d = net.i2p.data.DataHelper.stripHTML(d); // XSS intl.setRefresh(d); + intl.setDisableRefresh(d); } // we probably don't get here if d == "0" since caught in summary.jsi, but just // to be sure... - if (!"0".equals(d)) { + if (!intl.getDisableRefresh()) { // doesn't work for restart or shutdown with no expl. tunnels, // since the call to ConfigRestartBean.renderStatus() hasn't happened yet... // So we delay slightly @@ -64,7 +65,7 @@ // d and shutdownSoon defined above if (!shutdownSoon) { out.print("<hr>\n<div class=\"refresh\"><form action=\"summaryframe.jsp\" method=\"POST\">\n"); - if ("0".equals(d)) { + if (intl.getDisableRefresh()) { out.print("<b>"); out.print(intl._("Refresh (s)")); out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");