Console: Hide news section in summary bar if news fetching

is disabled, or if empty (ticket #2301)
This commit is contained in:
zzz
2019-06-17 13:11:23 +00:00
parent 3aeadaa719
commit 61cdc7c7d2

View File

@ -16,6 +16,7 @@ import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.router.news.NewsEntry;
import net.i2p.router.news.NewsManager;
import net.i2p.router.web.ConfigUpdateHandler;
import net.i2p.router.web.CSSHelper;
import net.i2p.router.web.Messages;
import net.i2p.router.web.NavHelper;
@ -974,11 +975,6 @@ class SummaryBarRenderer {
StringBuilder buf = new StringBuilder(512);
String consoleNonce = CSSHelper.getNonce();
if (consoleNonce != null) {
// Set up title and pre-headings stuff.
//buf.append("<h3><a href=\"/configupdate\">")
buf.append("<h3><a href=\"/news\">")
.append(_t("News &amp; Updates"))
.append("</a></h3><hr class=\"b\"><div class=\"sb_newsheadings\">\n");
// Get news content.
List<NewsEntry> entries = Collections.emptyList();
ClientAppManager cmgr = _context.clientAppManager();
@ -988,18 +984,33 @@ class SummaryBarRenderer {
entries = nmgr.getEntries();
}
if (!entries.isEmpty()) {
buf.append("<table>\n");
DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT);
// the router sets the JVM time zone to UTC but saves the original here so we can get it
fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context));
int i = 0;
// show a min of 1, max of 3, none older than 60 days over min
final int min = 1;
// Except, if news fetching is disabled, min is 0 and oldest is 7 days.
// We still show news even if disabled, because the user could click it manually
String freq = _context.getProperty(ConfigUpdateHandler.PROP_REFRESH_FREQUENCY,
ConfigUpdateHandler.DEFAULT_REFRESH_FREQUENCY);
long ms = ConfigUpdateHandler.DEFAULT_REFRESH_FREQ;
try {
ms = Long.parseLong(freq);
} catch (NumberFormatException nfe) {}
final int min = (ms > 0) ? 1 : 0;
final int max = 3;
final long age = (ms > 0) ? 60*24*60*60*1000L : 7*24*60*60*1000L;
final long oldest = _context.clock().now() - age;
for (NewsEntry entry : entries) {
if (i >= min && entry.updated > 0 &&
entry.updated < _context.clock().now() - 60*24*60*60*1000L)
entry.updated < oldest)
break;
if (i == 0) {
// Set up title and pre-headings stuff.
buf.append("<h3><a href=\"/news\">")
.append(_t("News &amp; Updates"))
.append("</a></h3><hr class=\"b\"><div class=\"sb_newsheadings\">\n<table>\n");
}
buf.append("<tr><td><a href=\"/?news=1&amp;consoleNonce=")
.append(consoleNonce)
.append("\"");
@ -1014,17 +1025,9 @@ class SummaryBarRenderer {
if (++i >= max)
break;
}
buf.append("</table>\n");
} else {
buf.append("<center><i>")
.append(_t("none"))
.append("</i></center>");
if (i > 0)
buf.append("</table>\n</div>\n");
}
// Add post-headings stuff.
//buf.append("<a href=\"/news\">")
//.append(_t("Show all news"))
//.append("</a>\n");
buf.append("</div>\n");
}
return buf.toString();
}