commit dbab2d6402690f2083f113a6f39c42b4b4c40575
Author: Kathy Brade <brade(a)torproject.org>
Date: Tue Apr 30 09:39:56 2013 -0400
Disable Username/Password when SOCKS4 is chosen.
---
src/chrome/content/network-settings-overlay.xul | 8 +++--
src/chrome/content/network-settings.js | 43 ++++++++++++++++++++++-
2 files changed, 47 insertions(+), 4 deletions(-)
diff --git a/src/chrome/content/network-settings-overlay.xul b/src/chrome/content/network-settings-overlay.xul
index 0061d5f..64dc366 100644
--- a/src/chrome/content/network-settings-overlay.xul
+++ b/src/chrome/content/network-settings-overlay.xul
@@ -29,13 +29,15 @@
</hbox>
</row>
<row align="center">
- <label value="&torsettings.useProxy.username;"
+ <label id="proxyUsernameLabel"
+ value="&torsettings.useProxy.username;"
control="proxyUsername" style="text-align:right" />
<hbox align="center">
<textbox id="proxyUsername" size="14" flex="1"
placeholder="&torsettings.optional;" />
<separator orient="vertical" />
- <label value="&torsettings.useProxy.password;"
+ <label id="proxyPasswordLabel"
+ value="&torsettings.useProxy.password;"
control="proxyPassword"/>
<textbox id="proxyPassword" size="14" type="password"
placeholder="&torsettings.optional;" />
@@ -45,7 +47,7 @@
<label value="&torsettings.useProxy.type;" control="proxyType"
style="text-align:right" />
<hbox align="center">
- <menulist id="proxyType">
+ <menulist id="proxyType" oncommand="onProxyTypeChange()">
<menupopup id="proxyType_menuPopup">
<menuitem label="&torsettings.useProxy.type.socks4;"
value="SOCKS4"/>
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index 0af6d90..ce35a12 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -311,6 +311,38 @@ function setButtonAttr(aID, aAttr, aValue)
}
+function enableTextBox(aID, aEnable)
+{
+ if (!aID)
+ return;
+
+ var textbox = document.getElementById(aID);
+ if (textbox)
+ {
+ var label = document.getElementById(aID + "Label");
+ if (aEnable)
+ {
+ if (label)
+ label.removeAttribute("disabled");
+
+ textbox.removeAttribute("disabled");
+ var s = textbox.getAttribute("origPlaceholder");
+ if (s)
+ textbox.setAttribute("placeholder", s);
+ }
+ else
+ {
+ if (label)
+ label.setAttribute("disabled", true);
+
+ textbox.setAttribute("disabled", true);
+ textbox.setAttribute("origPlaceholder", textbox.placeholder);
+ textbox.removeAttribute("placeholder");
+ }
+ }
+}
+
+
function overrideButtonLabel(aID, aLabelKey)
{
var btn = document.documentElement.getButton(aID);
@@ -337,6 +369,15 @@ function restoreButtonLabel(aID)
}
+function onProxyTypeChange()
+{
+ var proxyType = getElemValue(kProxyTypeMenulist, null);
+ var mayHaveCredentials = (proxyType != "SOCKS4");
+ enableTextBox(kProxyUsername, mayHaveCredentials);
+ enableTextBox(kProxyPassword, mayHaveCredentials);
+}
+
+
function onCancel()
{
if (gRestoreAfterHelpPanelID) // Is help open?
@@ -423,7 +464,6 @@ function initProxySettings()
{
proxyType = "SOCKS4";
proxyAddrPort = reply.retVal;
- // TODO: disable user and password fields.
}
else
{
@@ -474,6 +514,7 @@ function initProxySettings()
setYesNoRadioValue(kWizardProxyRadioGroup, haveProxy);
setElemValue(kUseProxyCheckbox, haveProxy);
setElemValue(kProxyTypeMenulist, proxyType);
+ onProxyTypeChange();
var proxyAddr, proxyPort;
if (proxyAddrPort)