merge of '3041774927e7490f413c502580f789b26a0e693d'

and 'adf196d027f81b081e5999a384d4c9faaea58f27'

Monotone-Parent: 3041774927e7490f413c502580f789b26a0e693d
Monotone-Parent: adf196d027f81b081e5999a384d4c9faaea58f27
Monotone-Revision: 0194b10e82c289d4b0daf68bd644381fc3f912c7

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-09-03T15:49:51
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau 2010-09-03 15:49:51 +00:00
commit 77e019bd05
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> 2010-09-02 Francis Lachapelle <flachapelle@inverse.ca>
* UI/WebServerResources/generic.js (openMailTo): replaced calls to * UI/WebServerResources/generic.js (openMailTo): replaced calls to

View file

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

View file

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

View file

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

View file

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

View file

@ -23,7 +23,6 @@ var logConsole;
var logWindow = null; var logWindow = null;
var queryParameters; var queryParameters;
var recoveryRequest = null;
var menus = new Array(); var menus = new Array();
var search = {}; var search = {};
@ -208,7 +207,7 @@ function openMailComposeWindow(url, wId) {
function openMailTo(senderMailTo) { function openMailTo(senderMailTo) {
var addresses = senderMailTo.split(","); var addresses = senderMailTo.split(",");
var sanitizedAddresses = new Array(); var sanitizedAddresses = new Array();
var subject = extractSubject(senderMailTo); var subject = extractSubject(senderMailTo);
for (var i = 0; i < addresses.length; i++) { for (var i = 0; i < addresses.length; i++) {
var sanitizedAddress = sanitizeMailTo(addresses[i]); var sanitizedAddress = sanitizeMailTo(addresses[i]);
if (sanitizedAddress.length > 0) if (sanitizedAddress.length > 0)
@ -246,18 +245,38 @@ function createHTTPClient() {
return new XMLHttpRequest(); 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) { function onAjaxRequestStateChange(http) {
try { try {
if (http.readyState == 4) { if (http.readyState == 4) {
if (http.status == 0 && usesCASAuthentication) { if (http.status == 0 && usesCASAuthentication) {
activeAjaxRequests--; activeAjaxRequests--;
checkAjaxRequestsState(); checkAjaxRequestsState();
recoveryRequest = http; createCASRecoveryIFrame(http);
var urlstr = ApplicationBaseURL;
if (!urlstr.endsWith('/'))
urlstr += '/';
urlstr += ("../../recover");
window.open(urlstr, "_blank");
} }
else if (activeAjaxRequests > 0) { else if (activeAjaxRequests > 0) {
if (!http.aborted) 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 */ /* taken from Lightning */
function getContrastingTextColor(bgColor) { function getContrastingTextColor(bgColor) {
var calcColor = bgColor.substring(1); var calcColor = bgColor.substring(1);
@ -1694,7 +1703,7 @@ AIM = {
frame: function(c) { frame: function(c) {
var d = new Element ('div'); var d = new Element ('div');
var n = d.identify (); 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>'; + n + '" name="' + n + '" onload="AIM.loaded(\'' + n + '\')"></iframe>';
document.body.appendChild(d); document.body.appendChild(d);
var i = $(n); // TODO: useful? var i = $(n); // TODO: useful?