From 85482a67f57e44abfb3374f1411e51c3ff3fd39f Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Mon, 8 Feb 2010 16:15:23 +0000 Subject: [PATCH] plugin description on configclients --- .../i2p/router/web/ConfigClientsHelper.java | 54 ++++++++++++++++++- .../src/net/i2p/router/web/NavHelper.java | 5 +- .../src/net/i2p/router/web/PluginStarter.java | 41 ++++++++++---- .../i2p/router/web/PluginUpdateHandler.java | 6 ++- 4 files changed, 90 insertions(+), 16 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index 3633a53356..95cd1086f9 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -1,5 +1,7 @@ package net.i2p.router.web; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Properties; @@ -79,8 +81,56 @@ public class ConfigClientsHelper extends HelperBase { if (name.startsWith(PluginStarter.PREFIX) && name.endsWith(PluginStarter.ENABLED)) { String app = name.substring(PluginStarter.PREFIX.length(), name.lastIndexOf(PluginStarter.ENABLED)); String val = props.getProperty(name); - renderForm(buf, app, app, !"addressbook".equals(app), - "true".equals(val), false, app, false, false); + Properties appProps = PluginStarter.pluginProperties(_context, app); + StringBuilder desc = new StringBuilder(256); + desc.append("<table border=\"0\">") + .append("<tr><td><b>").append(_("Version")).append("<td>").append(appProps.getProperty("version")) + .append("<tr><td><b>") + .append(_("Signed by")).append("<td>").append(appProps.getProperty("keyName")); + String s = appProps.getProperty("date"); + if (s != null) { + long ms = 0; + try { + ms = Long.parseLong(s); + } catch (NumberFormatException nfe) {} + if (ms > 0) { + String date = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date(ms)); + desc.append("<tr><td><b>") + .append(_("Date")).append("<td>").append(date); + } + } + s = appProps.getProperty("author"); + if (s != null) { + // fixme translate info using bundle specified in appProps + desc.append("<tr><td><b>") + .append(_("Author")).append("<td>").append(s); + } + s = appProps.getProperty("description_" + Messages.getLanguage(_context)); + if (s == null) + s = appProps.getProperty("description"); + if (s != null) { + // fixme translate info using bundle specified in appProps + desc.append("<tr><td><b>") + .append(_("Description")).append("<td>").append(s); + } + s = appProps.getProperty("license"); + if (s != null) { + desc.append("<tr><td><b>") + .append(_("License")).append("<td>").append(s); + } + s = appProps.getProperty("websiteURL"); + if (s != null) { + desc.append("<tr><td>") + .append("<a href=\"").append(s).append("\">").append(_("Website")).append("</a><td> "); + } + s = appProps.getProperty("updateURL"); + if (s != null) { + desc.append("<tr><td>") + .append("<a href=\"").append(s).append("\">").append(_("Update link")).append("</a><td> "); + } + desc.append("</table>"); + renderForm(buf, app, app, false, + "true".equals(val), false, desc.toString(), false, false); } } buf.append("</table>\n"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java index 37ca94cd66..488275a23b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NavHelper.java @@ -25,8 +25,7 @@ public class NavHelper { } /** - * Fixme, this translates with the router console bundle, not - * the plugin bundle + * Translated string is loaded by PluginStarter */ public static String getClientAppLinks(I2PAppContext ctx) { StringBuilder buf = new StringBuilder(1024); @@ -34,7 +33,7 @@ public class NavHelper { String name = iter.next(); String path = _apps.get(name); buf.append(" <a target=\"_top\" href=\"").append(path).append("\">"); - buf.append(Messages.getString(name, ctx)).append("</a>"); + buf.append(name).append("</a>"); } return buf.toString(); } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java index 99562789ab..df777712c2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -131,20 +131,31 @@ public class PluginStarter implements Runnable { // add themes in console/themes // add summary bar link - File pluginConfig = new File(pluginDir, "plugin.config"); - if (pluginConfig.exists()) { - Properties props = new Properties(); - DataHelper.loadProps(props, pluginConfig); - String name = props.getProperty("consoleLinkName"); - String url = props.getProperty("consoleLinkURL"); - if (name != null && url != null && name.length() > 0 && url.length() > 0) - NavHelper.registerApp(name, url); - } + Properties props = pluginProperties(ctx, appName); + String name = props.getProperty("consoleLinkName_" + Messages.getLanguage(ctx)); + if (name == null) + name = props.getProperty("consoleLinkName"); + String url = props.getProperty("consoleLinkURL"); + if (name != null && url != null && name.length() > 0 && url.length() > 0) + NavHelper.registerApp(name, url); return true; } - /** this auto-adds a propery for every dir in the plugin directory */ + /** plugin.config */ + public static Properties pluginProperties(I2PAppContext ctx, String appName) { + File cfgFile = new File(ctx.getAppDir(), PluginUpdateHandler.PLUGIN_DIR + '/' + appName + '/' + "plugin.config"); + Properties rv = new Properties(); + try { + DataHelper.loadProps(rv, cfgFile); + } catch (IOException ioe) {} + return rv; + } + + /** + * plugins.config + * this auto-adds a propery for every dir in the plugin directory + */ public static Properties pluginProperties() { File dir = I2PAppContext.getGlobalContext().getConfigDir(); Properties rv = new Properties(); @@ -167,6 +178,16 @@ public class PluginStarter implements Runnable { return rv; } + /** + * plugins.config + */ + public static void storePluginProperties(Properties props) { + File cfgFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), "plugins.config"); + try { + DataHelper.storeProps(props, cfgFile); + } catch (IOException ioe) {} + } + /** see comments in ConfigClientsHandler */ static Server getConsoleServer() { Collection c = Server.getHttpServers(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java index 814fbff86a..7eb343a685 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginUpdateHandler.java @@ -313,8 +313,12 @@ public class PluginUpdateHandler extends UpdateHandler { if (Boolean.valueOf(props.getProperty("dont-start-at-install")).booleanValue()) { if (Boolean.valueOf(props.getProperty("router-restart-required")).booleanValue()) updateStatus("<b>" + _("Plugin {0} successfully installed, router restart required", appName) + "</b>"); - else + else { updateStatus("<b>" + _("Plugin {0} successfully installed", appName) + "</b>"); + Properties pluginProps = PluginStarter.pluginProperties(); + pluginProps.setProperty(PluginStarter.PREFIX + appName + PluginStarter.ENABLED, "false"); + PluginStarter.storePluginProperties(pluginProps); + } } else { // start everything try { -- GitLab