Monotone-Parent: 4b7f399fbc3a148bb537b71896b85b75569d5f5f

Monotone-Revision: adf196d027f81b081e5999a384d4c9faaea58f27

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-09-02T22:03:50
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-09-02 22:03:50 +00:00
parent 8b1b45dab9
commit a798b6b876
6 changed files with 54 additions and 29 deletions

View File

@ -1,3 +1,17 @@
2010-09-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* UI/WebServerResources/generic.js: (recoverRequest): removed
obsolete function.
(onAjaxRequestStateChange): when a recovery request is required,
we now use the new "createCASRecoveryIFrame" function and the
"onCASRecoverIFrameLoaded" to handle the request.
* UI/MainUI/SOGoUserHomePage.m (-recoverAction): new method,
returning a simple text-based response with HTTP code 200,
ensuring that the CAS authentication process has succeeded.
* UI/MainUI/SOGoRootPage.m (-recoverAction): removed method.
2010-09-02 Francis Lachapelle <flachapelle@inverse.ca>
* UI/WebServerResources/generic.js (openMailTo): replaced calls to

View File

@ -435,9 +435,4 @@
return response;
}
- (id) recoverAction
{
return [self jsCloseWithRefreshMethod: @"recoverRequest();"];
}
@end /* SOGoRootPage */

View File

@ -399,4 +399,10 @@
return result;
}
- (id) recoverAction
{
return [self responseWithStatus: 200
andString: @"Full recovery in place."];
}
@end

View File

@ -110,11 +110,6 @@
protectedBy = "<public>";
pageName = "SOGoRootPage";
};
recover = {
protectedBy = "View";
pageName = "SOGoRootPage";
actionName = "recover";
};
index = {
protectedBy = "<public>";
pageName = "SOGoRootPage";
@ -163,6 +158,11 @@
protectedBy = "<public>";
pageName = "SOGoUserHomePage";
};
recover = {
protectedBy = "View";
pageName = "SOGoUserHomePage";
actionName = "recover";
};
logoff = {
protectedBy = "<public>";
pageName = "SOGoUserHomePage";

View File

@ -843,6 +843,7 @@ DIV.tabsContainer > DIV.tabs > DIV.tab
right: 5px;
overflow: hidden; }
IFRAME.hidden,
DIV.tab
{ display: none; }

View File

@ -23,7 +23,6 @@ var logConsole;
var logWindow = null;
var queryParameters;
var recoveryRequest = null;
var menus = new Array();
var search = {};
@ -208,7 +207,7 @@ function openMailComposeWindow(url, wId) {
function openMailTo(senderMailTo) {
var addresses = senderMailTo.split(",");
var sanitizedAddresses = new Array();
var subject = extractSubject(senderMailTo);
var subject = extractSubject(senderMailTo);
for (var i = 0; i < addresses.length; i++) {
var sanitizedAddress = sanitizeMailTo(addresses[i]);
if (sanitizedAddress.length > 0)
@ -246,18 +245,38 @@ function createHTTPClient() {
return new XMLHttpRequest();
}
function createCASRecoveryIFrame(http) {
var urlstr = UserFolderURL;
if (!urlstr.endsWith('/'))
urlstr += '/';
urlstr += "recover";
var newIFrame = createElement("iframe", null, "hidden",
{ src: urlstr });
newIFrame.request = http;
newIFrame.observe("load", onCASRecoverIFrameLoaded);
document.body.appendChild(newIFrame);
}
function onCASRecoverIFrameLoaded(event) {
if (this.request) {
var request = this.request;
triggerAjaxRequest(request.url,
request.callback,
request.callbackData,
request.paramHeaders);
this.request = null;
}
this.parentNode.removeChild(this);
}
function onAjaxRequestStateChange(http) {
try {
if (http.readyState == 4) {
if (http.status == 0 && usesCASAuthentication) {
activeAjaxRequests--;
checkAjaxRequestsState();
recoveryRequest = http;
var urlstr = ApplicationBaseURL;
if (!urlstr.endsWith('/'))
urlstr += '/';
urlstr += ("../../recover");
window.open(urlstr, "_blank");
createCASRecoveryIFrame(http);
}
else if (activeAjaxRequests > 0) {
if (!http.aborted)
@ -289,16 +308,6 @@ function onAjaxRequestStateChange(http) {
}
}
function recoverRequest() {
if (recoveryRequest) {
triggerAjaxRequest(recoveryRequest.url,
recoveryRequest.callback,
recoveryRequest.callbackData,
recoveryRequest.paramHeaders);
recoveryRequest = null;
}
}
/* taken from Lightning */
function getContrastingTextColor(bgColor) {
var calcColor = bgColor.substring(1);
@ -1694,7 +1703,7 @@ AIM = {
frame: function(c) {
var d = new Element ('div');
var n = d.identify ();
d.innerHTML = '<iframe style="display:none" src="about:blank" id="'
d.innerHTML = '<iframe class="hidden" src="about:blank" id="'
+ n + '" name="' + n + '" onload="AIM.loaded(\'' + n + '\')"></iframe>';
document.body.appendChild(d);
var i = $(n); // TODO: useful?