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 3633a5335..95cd1086f 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("
")
+ .append("").append(_("Version")).append(" | ").append(appProps.getProperty("version"))
+ .append(" |
")
+ .append(_("Signed by")).append(" | ").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(" |
")
+ .append(_("Date")).append(" | ").append(date);
+ }
+ }
+ s = appProps.getProperty("author");
+ if (s != null) {
+ // fixme translate info using bundle specified in appProps
+ desc.append(" |
")
+ .append(_("Author")).append(" | ").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(" |
")
+ .append(_("Description")).append(" | ").append(s);
+ }
+ s = appProps.getProperty("license");
+ if (s != null) {
+ desc.append(" |
")
+ .append(_("License")).append(" | ").append(s);
+ }
+ s = appProps.getProperty("websiteURL");
+ if (s != null) {
+ desc.append(" |
")
+ .append("").append(_("Website")).append(" | ");
+ }
+ s = appProps.getProperty("updateURL");
+ if (s != null) {
+ desc.append(" |
")
+ .append("").append(_("Update link")).append(" | ");
+ }
+ desc.append(" |
");
+ renderForm(buf, app, app, false,
+ "true".equals(val), false, desc.toString(), false, false);
}
}
buf.append("\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 37ca94cd6..488275a23 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(" ");
- buf.append(Messages.getString(name, ctx)).append("");
+ buf.append(name).append("");
}
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 99562789a..df777712c 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 814fbff86..7eb343a68 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("" + _("Plugin {0} successfully installed, router restart required", appName) + "");
- else
+ else {
updateStatus("" + _("Plugin {0} successfully installed", appName) + "");
+ Properties pluginProps = PluginStarter.pluginProperties();
+ pluginProps.setProperty(PluginStarter.PREFIX + appName + PluginStarter.ENABLED, "false");
+ PluginStarter.storePluginProperties(pluginProps);
+ }
} else {
// start everything
try {