Author: bombe
Date: 2007-10-29 18:45:34 +0000 (Mon, 29 Oct 2007)
New Revision: 15647

Modified:
   trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
   trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
Log:
let users change the reload-on-startup setting for plugins from the web 
interface

Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2007-10-29 
18:30:50 UTC (rev 15646)
+++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2007-10-29 
18:45:34 UTC (rev 15647)
@@ -141,6 +141,21 @@
                                ctx.sendReplyHeaders(302, "Found", headers, 
null, 0);
                                return;
                        }
+                       if (request.isPartSet("change-reload-submit")) {
+                               int pluginInfoWrapperHashCode = 
request.getIntPart("plugin-id", -1);
+                               boolean newReload = 
request.isPartSet("reload-on-startup");
+                               Iterator/*<PluginInfoWrapper>*/ pluginIterator 
= pm.getPlugins().iterator();
+                               while (pluginIterator.hasNext()) {
+                                       PluginInfoWrapper pluginInfoWrapper = 
(PluginInfoWrapper) pluginIterator.next();
+                                       if (pluginInfoWrapper.hashCode() == 
pluginInfoWrapperHashCode) {
+                                               
pluginInfoWrapper.setAutoRefresh(newReload);
+                                               break;
+                                       }
+                               }
+                               headers.put("Location", ".");
+                               ctx.sendReplyHeaders(302, "Found", headers, 
null, 0);
+                               return;
+                       }
                        if (request.isPartSet("cancel")){
                                headers.put("Location", "/plugins/");
                                ctx.sendReplyHeaders(302, "Found", headers, 
null, 0);
@@ -379,7 +394,10 @@
                        headerRow.addChild("th", l10n("classNameTitle"));
                        headerRow.addChild("th", l10n("internalIDTitle"));
                        headerRow.addChild("th", l10n("startedAtTitle"));
+                       headerRow.addChild("th", l10n("reloadOnStartupShort"));
                        headerRow.addChild("th");
+                       headerRow.addChild("th");
+                       headerRow.addChild("th");
                        Iterator it = pm.getPlugins().iterator();
                        while (it.hasNext()) {
                                PluginInfoWrapper pi = (PluginInfoWrapper) 
it.next();
@@ -387,19 +405,29 @@
                                pluginRow.addChild("td", 
pi.getPluginClassName());
                                pluginRow.addChild("td", pi.getThreadName());
                                pluginRow.addChild("td", new 
Date(pi.getStarted()).toString());
-                               HTMLNode actionCell = pluginRow.addChild("td");
+                               HTMLNode autoReloadChangeForm = 
ctx.addFormChild(pluginRow.addChild("td", "align", "center"), ".", 
"changeAutoReloadForm");
+                               if (pi.isAutoRefresh()) {
+                                       autoReloadChangeForm.addChild("input", 
new String[] { "name", "type", "checked" }, new String[] { "reload-on-startup", 
"checkbox", "checked" });
+                               } else {
+                                       autoReloadChangeForm.addChild("input", 
new String[] { "name", "type" }, new String[] { "reload-on-startup", "checkbox" 
});
+                               }
+                               autoReloadChangeForm.addChild("input", new 
String[] { "name", "type", "value" }, new String[] { "plugin-id", "hidden", 
String.valueOf(pi.hashCode()) });
+                               autoReloadChangeForm.addChild("input", new 
String[] { "name", "type", "value" }, new String[] { "change-reload-submit", 
"submit", l10n("changeReloadOnStartup") });
                                if (pi.isStopping()) {
-                                       actionCell.addChild("#", 
l10n("pluginStopping"));
+                                       pluginRow.addChild("td", 
l10n("pluginStopping"));
+                                       /* add two empty cells. */
+                                       pluginRow.addChild("td");
+                                       pluginRow.addChild("td");
                                } else {
                                        if (pi.isPproxyPlugin()) {
-                                               HTMLNode visitForm = 
actionCell.addChild("form", new String[] { "method", "action", "target" }, new 
String[] { "get", pi.getPluginClassName(), "_new" });
+                                               HTMLNode visitForm = 
pluginRow.addChild("td").addChild("form", new String[] { "method", "action", 
"target" }, new String[] { "get", pi.getPluginClassName(), "_new" });
                                                visitForm.addChild("input", new 
String[] { "type", "name", "value" }, new String[] { "hidden", "formPassword", 
core.formPassword });
                                                visitForm.addChild("input", new 
String[] { "type", "value" }, new String[] { "submit", 
L10n.getString("PluginToadlet.visit") });
                                        }
-                                       HTMLNode unloadForm = 
ctx.addFormChild(actionCell, ".", "unloadPluginForm");
+                                       HTMLNode unloadForm = 
ctx.addFormChild(pluginRow.addChild("td"), ".", "unloadPluginForm");
                                        unloadForm.addChild("input", new 
String[] { "type", "name", "value" }, new String[] { "hidden", "unload", 
pi.getThreadName() });
                                        unloadForm.addChild("input", new 
String[] { "type", "value" }, new String[] { "submit", l10n("unload") });
-                                       HTMLNode reloadForm = 
ctx.addFormChild(actionCell, ".", "reloadPluginForm");
+                                       HTMLNode reloadForm = 
ctx.addFormChild(pluginRow.addChild("td"), ".", "reloadPluginForm");
                                        reloadForm.addChild("input", new 
String[] { "type", "name", "value" }, new String[] { "hidden", "reload", 
pi.getThreadName() });
                                        reloadForm.addChild("input", new 
String[] { "type", "value" }, new String[] { "submit", l10n("reload") });
                                }

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-10-29 
18:30:50 UTC (rev 15646)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2007-10-29 
18:45:34 UTC (rev 15647)
@@ -704,6 +704,7 @@
 PluginToadlet.unsupportedMethod=Unsupported method.
 PluginToadlet.unsupportedMethodTitle=Unsupported Method
 PluginToadlet.visit=Visit
+PproxyToadlet.changeReloadOnStartup=Change
 PproxyToadlet.classNameTitle=Class Name
 PproxyToadlet.downloadNotAllowedFromRemoteServer=Download of plugins is only 
allowed from our server.
 PproxyToadlet.Error=Error
@@ -722,8 +723,9 @@
 PproxyToadlet.pluginUnloadedWithName=The plugin ${name} has been unloaded.
 PproxyToadlet.plugins=Plugins
 PproxyToadlet.pluginsWithNodeName=Plugins of ${name}
+PproxyToadlet.reloadOnStartupShort=Reload on Startup
+PproxyToadlet.reload=Reload
 PproxyToadlet.refreshOnStartup=Reload from server on startup
-PproxyToadlet.reload=Reload
 PproxyToadlet.returnToPluginPage=Return to plugin page
 PproxyToadlet.startedAtTitle=Started at
 PproxyToadlet.startingPluginsTitle=Starting Plugins

Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java      
2007-10-29 18:30:50 UTC (rev 15646)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java      
2007-10-29 18:45:34 UTC (rev 15647)
@@ -54,6 +54,17 @@
                return autoRefresh;
        }

+       /**
+        * Sets the new value for the refresh-on-startup feature.
+        * 
+        * @param autoRefresh
+        *            <code>true</code> if the plugin should be reloaded on
+        *            startup, <code>false</code> otherwise
+        */
+       public void setAutoRefresh(boolean autoRefresh) {
+               this.autoRefresh = autoRefresh;
+       }
+
        void setThread(Thread ps) {
                if(thread != null)
                        throw new IllegalStateException("Already set a thread");


Reply via email to