Author: toad
Date: 2008-05-03 17:14:09 +0000 (Sat, 03 May 2008)
New Revision: 19708

Modified:
   trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
   trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
Log:
One-click access to advanced vs simple config options. Advanced mode still sets 
the default.

Modified: trunk/freenet/src/freenet/clients/http/ConfigToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ConfigToadlet.java   2008-05-03 
16:55:52 UTC (rev 19707)
+++ trunk/freenet/src/freenet/clients/http/ConfigToadlet.java   2008-05-03 
17:14:09 UTC (rev 19708)
@@ -29,6 +29,8 @@
 public class ConfigToadlet extends Toadlet {
        // If a setting has to be more than a meg, something is seriously wrong!
        private static final int MAX_PARAM_VALUE_SIZE = 1024*1024;
+       private static final int MODE_SIMPLE = 1;
+       private static final int MODE_ADVANCED = 2;
        private final Config config;
        private final NodeClientCore core;
        private final Node node;
@@ -134,14 +136,36 @@

                SubConfig[] sc = config.getConfigs();
                Arrays.sort(sc);
-               boolean advancedModeEnabled = core.isAdvancedModeEnabled();

                HTMLNode pageNode = 
ctx.getPageMaker().getPageNode(L10n.getString("ConfigToadlet.fullTitle", new 
String[] { "name" }, new String[] { node.getMyName() }), ctx);
                HTMLNode contentNode = 
ctx.getPageMaker().getContentNode(pageNode);

                contentNode.addChild(core.alerts.createSummary());

-               if(advancedModeEnabled){
+               // Mode can be changed by a link, not just by the default
+               
+               int mode = core.isAdvancedModeEnabled() ? MODE_ADVANCED : 
MODE_SIMPLE;
+               
+               if(req.isParameterSet("mode")) {
+                       mode = req.getIntParam("mode", mode);
+               }
+               
+               // FIXME style this properly
+               HTMLNode table = contentNode.addChild("table", "border", "1");
+               HTMLNode row = table.addChild("tr");
+               HTMLNode cell = row.addChild("td");
+               
+               if(mode != MODE_SIMPLE)
+                       cell.addChild("a", new String[] { "href", "title" }, 
new String[] { "/config/?mode=1", l10n("modeSimpleTooltip") }, 
l10n("modeSimple"));
+               else
+                       cell.addChild("b", "title", l10n("modeSimpleTooltip"), 
l10n("modeSimple"));
+               cell = row.addChild("td");
+               if(mode != MODE_ADVANCED)
+                       cell.addChild("a", new String[] { "href", "title" }, 
new String[] { "/config/?mode=2", l10n("modeAdvancedTooltip") }, 
l10n("modeAdvanced"));
+               else
+                       cell.addChild("b", "title", 
l10n("modeAdvancedTooltip"), l10n("modeAdvanced"));
+               
+               if(mode >= MODE_ADVANCED){
                        HTMLNode navigationBar = 
ctx.getPageMaker().getInfobox("navbar", l10n("configNavTitle"));
                        HTMLNode navigationContent = 
ctx.getPageMaker().getContentNode(navigationBar).addChild("ul");
                        navigationContent.addChild("a", "href", 
TranslationToadlet.TOADLET_URL, l10n("contributeTranslation"));
@@ -182,13 +206,13 @@
                        HTMLNode configGroupUlNode = new HTMLNode("ul", 
"class", "config");

                        for(int j=0; j<o.length; j++){
-                               if(! (!advancedModeEnabled && o[j].isExpert())){
+                               if(! (mode == MODE_SIMPLE && o[j].isExpert())){
                                        displayedConfigElements++;
                                        String configName = o[j].getName();

                                        HTMLNode configItemNode = 
configGroupUlNode.addChild("li");
                                        configItemNode.addChild("span", new 
String[]{ "class", "title", "style" },
-                                                       new String[]{ 
"configshortdesc", L10n.getString("ConfigToadlet.defaultIs", new String[] { 
"default" }, new String[] { o[j].getDefault() }) + (advancedModeEnabled ? " 
["+sc[i].getPrefix() + '.' + o[j].getName() + ']' : ""), 
+                                                       new String[]{ 
"configshortdesc", L10n.getString("ConfigToadlet.defaultIs", new String[] { 
"default" }, new String[] { o[j].getDefault() }) + (mode >= MODE_ADVANCED ? " 
["+sc[i].getPrefix() + '.' + o[j].getName() + ']' : ""), 
                                                        "cursor: help;" 
}).addChild(L10n.getHTMLNode(o[j].getShortDesc()));
                                        HTMLNode configItemValueNode = 
configItemNode.addChild("span", "class", "config");
                                        if(o[j].getValueString() == null){

Modified: trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties
===================================================================
--- trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-05-03 
16:55:52 UTC (rev 19707)
+++ trunk/freenet/src/freenet/l10n/freenet.l10n.en.properties   2008-05-03 
17:14:09 UTC (rev 19708)
@@ -86,6 +86,10 @@
 ConfigToadlet.fproxy=fproxy
 ConfigToadlet.fullTitle=Freenet Node Configuration of ${name}
 ConfigToadlet.logger=logger
+ConfigToadlet.modeSimple=Simple config options
+ConfigToadlet.modeSimpleTooltip=Config options that all users should know about
+ConfigToadlet.modeAdvanced=Advanced config options
+ConfigToadlet.modeAdvancedTooltip=Config options that only experienced freenet 
users and developers will need to use
 ConfigToadlet.node=node
 ConfigToadlet.node.load=node.load
 ConfigToadlet.node.opennet=node.opennet


Reply via email to