Thanks for the report. Here's the two line fix:
Code:
Differences ...
==== /ZimbraWebClient/WebRoot/js/zimbraMail/share/view/ZmLogin.js#11 (ktext) ====
387,389d386
< var unameField = document.getElementById("uname");
< var pwordField = document.getElementById("pass");
<
404c401
<
---
>
415a413,415
> var unameField = document.getElementById("uname");
> var pwordField = document.getElementById("pass");
> Depending on whether you have the entire source downloaded or not, you'll want make this fix in one of two ways..
1) Edit the production file (no deployment necessary)
2) Edit the source file and redeploy ZimbraWebClient
Here are detailed instructions on editing the production file:
- Locate where you've installed zimbra mail (most likely under tomcat/webapps/zimbra/js)
- Open ZmLogin.js (this should be in the root js folder, along w/ Ajax_all.js, ZimbraMail_all.js, etc)
- Make the fixes as described above (or read below for more info)
- Delete the now old ZmLogin.js.jgz
- Gzip ZmLogin.js (and rename to ZmLogin.js.jgz if necessary)
- Clear your cache on your browser (if using IE) and hit refresh
-----------------
Here are detailed instructions on editing the source file:
- Open ZimbraWebClient/ZimbraWebClient/WebRoot/js/zimbraMail/share/view/ZmLogin.js in your favorite editor
- Move lines 387 and 388 to after line 415
So basically, the two methods you've edited should end up looking like this:
Code:
ZmLogin.submitAuthRequest =
function(uname, pword) {
try {
var soapDoc = AjxSoapDoc.create("AuthRequest", "urn:zimbraAccount");
} catch (ex) {
if (AjxEnv.isIE && (ex.code == AjxException.INTERNAL_ERROR))
ZmLogin.setErrorMessage(ZmMsg.errorNoActiveX);
return;
}
var el = soapDoc.set("account", uname);
el.setAttribute("by", "name");
soapDoc.set("password", pword);
var command = new ZmCsfeCommand();
var respCallback = new AjxCallback(null, ZmLogin._handleResponseSubmitAuthRequest, [uname, pword]);
command.invoke({soapDoc: soapDoc, noAuthToken: true, noSession: true, asyncMode: true, callback: respCallback});
}
ZmLogin._handleResponseSubmitAuthRequest =
function(args) {
var uname = args[0];
var pword = args[1];
var result = args[2];
var response;
try {
response = result.getResponse();
} catch (ex) {
DBG.dumpObj(ex);
if (ex.code == ZmCsfeException.ACCT_AUTH_FAILED || ex.code == ZmCsfeException.NO_SUCH_ACCOUNT) {
ZmLogin.setErrorMessage(ZmMsg.loginError);
} else if (ex.code == ZmCsfeException.SOAP_ERROR || ex.code == ZmCsfeException.NETWORK_ERROR) {
var msg = ZmMsg.errorNetwork + "\n\n" + ZmMsg.errorTryAgain + " " + ZmMsg.errorContact;
ZmLogin.setErrorMessage(msg);
} else if (ex.code == ZmCsfeException.ACCT_CHANGE_PASSWORD) {
var unameField = document.getElementById("uname");
var pwordField = document.getElementById("pass");
// disable username and password fields
unameField.disabled = pwordField.disabled = true;
ZmLogin.showChangePass(ex);
} else {
var msg = ZmMsg.errorApplication + "\n\n" + ZmMsg.errorTryAgain + " " + ZmMsg.errorContact;
ZmLogin.setErrorMessage(msg + " (" + ex.code + ")");
}
return;
}
var resp = response.Body.AuthResponse;
ZmLogin._authToken = resp.authToken;
ZmLogin._authTokenLifetime = resp.lifetime;
var mailServer = resp.refer;
var pcChecked = document.getElementById("publicComputer").checked;
ZmLogin.handleSuccess(ZmLogin._authToken, ZmLogin._authTokenLifetime, mailServer, uname, pword, !pcChecked);
ZmLogin._authToken = ZmLogin._authTokenLifetime = null;
};
Dont forget to redeploy the web client (using Ant)
- Open up a console or in windows, the command prompt.
- Change to folder *zimbra_src_install*/ZimbraWebClient
- type "ant prod-deploy" (w/o quotes)
The prod-deply target will do all the right things to deploy the web client into production.