See ChangeLog
Monotone-Parent: 5016da15e7302739b395754fe5a9d170409343ae Monotone-Revision: f6a0b62965278336b461dac36045bfae5fc07f0a Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-08-12T17:56:18maint-2.0.2
parent
a6df60d4d8
commit
89d3d4b413
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
||||||
|
2010-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* UI/WebServerResources/generic.js: (onAjaxRequestStateChange):
|
||||||
|
when using CAS authentication and when the return code is 0 and
|
||||||
|
when the request status is 4, chances are that the initial ajax
|
||||||
|
request failed due to the expiration of the CAS ticket entry in
|
||||||
|
memcached. In FF 3.5 and above, a bug prevents the initial cookie
|
||||||
|
from being given back to the reauthentication redirect from an
|
||||||
|
AJAX request. Therefore we open a window that will do this for us
|
||||||
|
and will close one the authentication has succeeded again.
|
||||||
|
|
||||||
|
* UI/MainUI/SOGoRootPage.m (-revoverAction): new fake action that
|
||||||
|
perform the CAS redirection and then trigger the respawn of the
|
||||||
|
initial request.
|
||||||
|
|
||||||
|
* UI/Common/UIxPageFrame.m (-usesCASAuthentication): new accessor
|
||||||
|
used for recovery of redirected requests.
|
||||||
|
|
||||||
2010-08-11 Francis Lachapelle <flachapelle@inverse.ca>
|
2010-08-11 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/WebServerResources/MailerUI.js (refreshMessage): if the
|
* UI/WebServerResources/MailerUI.js (refreshMessage): if the
|
||||||
|
|
1
NEWS
1
NEWS
|
@ -4,6 +4,7 @@
|
||||||
- added Polish translation
|
- added Polish translation
|
||||||
- added crypt support to SQL sources
|
- added crypt support to SQL sources
|
||||||
- updated Ukrainian translation
|
- updated Ukrainian translation
|
||||||
|
- added the caldav-auto-schedule capability
|
||||||
|
|
||||||
1.3-20100721 (1.3.0)
|
1.3-20100721 (1.3.0)
|
||||||
--------------------
|
--------------------
|
||||||
|
|
|
@ -400,6 +400,15 @@
|
||||||
&& [user isSuperUser]);
|
&& [user isSuperUser]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL) usesCASAuthentication
|
||||||
|
{
|
||||||
|
SOGoSystemDefaults *sd;
|
||||||
|
|
||||||
|
sd = [SOGoSystemDefaults sharedSystemDefaults];
|
||||||
|
|
||||||
|
return [[sd authenticationType] isEqualToString: @"cas"];
|
||||||
|
}
|
||||||
|
|
||||||
- (NSString *) userIdentification
|
- (NSString *) userIdentification
|
||||||
{
|
{
|
||||||
/* The "identification" term is used in the human sense here. */
|
/* The "identification" term is used in the human sense here. */
|
||||||
|
|
|
@ -435,4 +435,9 @@
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (id) recoverAction
|
||||||
|
{
|
||||||
|
return [self jsCloseWithRefreshMethod: @"recoverRequest();"];
|
||||||
|
}
|
||||||
|
|
||||||
@end /* SOGoRootPage */
|
@end /* SOGoRootPage */
|
||||||
|
|
|
@ -106,10 +106,15 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
methods = {
|
methods = {
|
||||||
view = {
|
view = {
|
||||||
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";
|
||||||
|
|
|
@ -122,6 +122,12 @@
|
||||||
<var:if condition="isSuperUser" const:negate="YES"
|
<var:if condition="isSuperUser" const:negate="YES"
|
||||||
>var IsSuperUser = false;
|
>var IsSuperUser = false;
|
||||||
</var:if>
|
</var:if>
|
||||||
|
<var:if condition="usesCASAuthentication"
|
||||||
|
>var usesCASAuthentication = true;
|
||||||
|
</var:if>
|
||||||
|
<var:if condition="usesCASAuthentication" const:negate="YES"
|
||||||
|
>var usesCASAuthentication = false;
|
||||||
|
</var:if>
|
||||||
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
|
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
|
||||||
const:negate="YES"
|
const:negate="YES"
|
||||||
>var UserFolderURL = '<var:string value="userFolderPath" const:escapeHTML="NO"/>';
|
>var UserFolderURL = '<var:string value="userFolderPath" const:escapeHTML="NO"/>';
|
||||||
|
|
|
@ -27,6 +27,7 @@ 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 = {};
|
||||||
|
@ -246,15 +247,26 @@ function createHTTPClient() {
|
||||||
|
|
||||||
function onAjaxRequestStateChange(http) {
|
function onAjaxRequestStateChange(http) {
|
||||||
try {
|
try {
|
||||||
if (http.readyState == 4
|
if (http.readyState == 4) {
|
||||||
&& activeAjaxRequests > 0) {
|
if (http.status == 0 && usesCASAuthentication) {
|
||||||
if (!http.aborted)
|
activeAjaxRequests--;
|
||||||
http.callback(http);
|
checkAjaxRequestsState();
|
||||||
activeAjaxRequests--;
|
recoveryRequest = http;
|
||||||
checkAjaxRequestsState();
|
var urlstr = ApplicationBaseURL;
|
||||||
http.onreadystatechange = Prototype.emptyFunction;
|
if (!urlstr.endsWith('/'))
|
||||||
http.callback = Prototype.emptyFunction;
|
urlstr += '/';
|
||||||
http.callbackData = null;
|
urlstr += ("../../recover");
|
||||||
|
window.open(urlstr, "_blank");
|
||||||
|
}
|
||||||
|
else if (activeAjaxRequests > 0) {
|
||||||
|
if (!http.aborted)
|
||||||
|
http.callback(http);
|
||||||
|
activeAjaxRequests--;
|
||||||
|
checkAjaxRequestsState();
|
||||||
|
http.onreadystatechange = Prototype.emptyFunction;
|
||||||
|
http.callback = Prototype.emptyFunction;
|
||||||
|
http.callbackData = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(e) {
|
catch(e) {
|
||||||
|
@ -276,6 +288,16 @@ 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);
|
||||||
|
@ -299,9 +321,10 @@ function triggerAjaxRequest(url, callback, userdata, content, headers) {
|
||||||
|
|
||||||
http.open("POST", url, true);
|
http.open("POST", url, true);
|
||||||
http.url = url;
|
http.url = url;
|
||||||
|
http.paramHeaders = headers;
|
||||||
http.callback = callback;
|
http.callback = callback;
|
||||||
http.callbackData = userdata;
|
http.callbackData = userdata;
|
||||||
http.onreadystatechange = function() { onAjaxRequestStateChange(http);};
|
http.onreadystatechange = function() { onAjaxRequestStateChange(http); };
|
||||||
// = function() {
|
// = function() {
|
||||||
// // log ("state changed (" + http.readyState + "): " + url);
|
// // log ("state changed (" + http.readyState + "): " + url);
|
||||||
// };
|
// };
|
||||||
|
|
Loading…
Reference in New Issue