mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-08-21 06:33:18 +00:00
Merge branch 'master' of https://github.com/inverse-inc/sogo
This commit is contained in:
@@ -66,3 +66,9 @@ ProxyPass /SOGo http://127.0.0.1:20000/SOGo retry=0
|
||||
Allow from all
|
||||
</Proxy>
|
||||
|
||||
# For apple autoconfiguration
|
||||
<IfModule rewrite_module>
|
||||
RewriteEngine On
|
||||
RewriteRule ^/.well-known/caldav/?$ /SOGo/dav [R=301]
|
||||
</IfModule>
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ Bug fixes
|
||||
- fixed position of red line of current time
|
||||
- disabled verbose logging of smtp sessions by default
|
||||
- fixed high CPU usage when there are no available child processes
|
||||
- fixed crash in dav f/b lookups when using SQL addressbooks (#2418)
|
||||
- fixed memory consumption issues when doing dav lookups with huge result set
|
||||
|
||||
2.0.7 (2013-07-19)
|
||||
------------------
|
||||
|
||||
@@ -294,7 +294,9 @@
|
||||
contact = [contacts lastObject];
|
||||
email = [contact valueForKey: @"c_email"];
|
||||
source = [contact objectForKey: @"source"];
|
||||
if ([email length] && [source MSExchangeHostname])
|
||||
if ([email length]
|
||||
&& [source conformsToProtocol: @protocol (SOGoDNSource)]
|
||||
&& [source MSExchangeHostname])
|
||||
{
|
||||
exchangeFreeBusy = [[MSExchangeFreeBusy alloc] init];
|
||||
[exchangeFreeBusy autorelease];
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
*/
|
||||
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSAutoreleasePool.h>
|
||||
#import <Foundation/NSDictionary.h>
|
||||
#import <Foundation/NSEnumerator.h>
|
||||
|
||||
@@ -65,7 +66,7 @@
|
||||
@"<D:href>"];
|
||||
[r appendContentString: baseURL];
|
||||
if (![baseURL hasSuffix: @"/"])
|
||||
[r appendContentString: @"/"];
|
||||
[r appendContentString: @"/"];
|
||||
[r appendContentString: name];
|
||||
[r appendContentString: @"</D:href>"
|
||||
@"<D:propstat>"
|
||||
@@ -89,9 +90,10 @@
|
||||
|
||||
- (void) _appendComponentsMatchingFilters: (NSArray *) filters
|
||||
toResponse: (WOResponse *) response
|
||||
context: (id) localContext
|
||||
context: (id) localContext
|
||||
{
|
||||
unsigned int count, max;
|
||||
unsigned int count,i , max;
|
||||
NSAutoreleasePool *pool;
|
||||
NSDictionary *currentFilter, *contact;
|
||||
NSEnumerator *contacts;
|
||||
NSString *baseURL, *domain;
|
||||
@@ -103,16 +105,27 @@
|
||||
for (count = 0; count < max; count++)
|
||||
{
|
||||
currentFilter = [filters objectAtIndex: count];
|
||||
contacts = [[(id<SOGoContactFolder>)self lookupContactsWithFilter: [[currentFilter allValues] lastObject]
|
||||
onCriteria: @"name_or_address"
|
||||
sortBy: @"c_givenname"
|
||||
ordering: NSOrderedDescending
|
||||
inDomain: domain]
|
||||
objectEnumerator];
|
||||
|
||||
contacts =
|
||||
[[(id<SOGoContactFolder>)self lookupContactsWithFilter: [[currentFilter allValues] lastObject]
|
||||
onCriteria: @"name_or_address"
|
||||
sortBy: @"c_givenname"
|
||||
ordering: NSOrderedDescending
|
||||
inDomain: domain] objectEnumerator];
|
||||
|
||||
pool = [[NSAutoreleasePool alloc] init];
|
||||
i = 0;
|
||||
while ((contact = [contacts nextObject]))
|
||||
[self _appendObject: contact withBaseURL: baseURL
|
||||
toREPORTResponse: response];
|
||||
{
|
||||
[self _appendObject: contact withBaseURL: baseURL
|
||||
toREPORTResponse: response];
|
||||
if (i % 10 == 0)
|
||||
{
|
||||
RELEASE(pool);
|
||||
pool = [[NSAutoreleasePool alloc] init];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
RELEASE(pool);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,10 +136,10 @@
|
||||
newString = [theString lowercaseString];
|
||||
|
||||
return ([newString isEqualToString: @"sn"]
|
||||
|| [newString isEqualToString: @"givenname"]
|
||||
|| [newString isEqualToString: @"email"]
|
||||
|| [newString isEqualToString: @"mail"]
|
||||
|| [newString isEqualToString: @"telephonenumber"]);
|
||||
|| [newString isEqualToString: @"givenname"]
|
||||
|| [newString isEqualToString: @"email"]
|
||||
|| [newString isEqualToString: @"mail"]
|
||||
|| [newString isEqualToString: @"telephonenumber"]);
|
||||
}
|
||||
|
||||
- (NSDictionary *) _parseContactFilter: (id <DOMElement>) filterElement
|
||||
@@ -145,12 +158,12 @@
|
||||
ranges = [filterElement getElementsByTagName: @"text-match"];
|
||||
|
||||
if ([(NSArray *) ranges count]
|
||||
&& [(NSArray *) [[ranges objectAtIndex: 0] childNodes] count])
|
||||
{
|
||||
filterData = [NSMutableDictionary dictionary];
|
||||
[filterData setObject: [(NGDOMNode *)[ranges objectAtIndex: 0] textValue]
|
||||
forKey: [filterElement attribute: @"name"]];
|
||||
}
|
||||
&& [(NSArray *) [[ranges objectAtIndex: 0] childNodes] count])
|
||||
{
|
||||
filterData = [NSMutableDictionary dictionary];
|
||||
[filterData setObject: [(NGDOMNode *)[ranges objectAtIndex: 0] textValue]
|
||||
forKey: [filterElement attribute: @"name"]];
|
||||
}
|
||||
}
|
||||
|
||||
return filterData;
|
||||
@@ -166,7 +179,7 @@
|
||||
filters = [NSMutableArray array];
|
||||
|
||||
children = [(NSArray *)[parentNode getElementsByTagName: @"prop-filter"]
|
||||
objectEnumerator];
|
||||
objectEnumerator];
|
||||
while ((node = [children nextObject]))
|
||||
{
|
||||
filter = [self _parseContactFilter: node];
|
||||
@@ -193,7 +206,7 @@
|
||||
|
||||
[self _appendComponentsMatchingFilters: filters
|
||||
toResponse: r
|
||||
context: queryContext];
|
||||
context: queryContext];
|
||||
[r appendContentString: @"</D:multistatus>"];
|
||||
|
||||
return r;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
className="UIxPageFrame"
|
||||
title="title"
|
||||
const:jsFiles="SOGoAutoCompletion.js"
|
||||
const:userDefaultsKeys="SOGoMailDisplayRemoteInlineImages"
|
||||
const:popup="YES">
|
||||
<script type="text/javascript">
|
||||
var messageName = '<var:string value="clientObject.relativeImap4Name"/>';
|
||||
|
||||
@@ -192,7 +192,7 @@ function onComponentEditorLoad(event) {
|
||||
initializeClassificationMenu();
|
||||
var list = $("calendarList");
|
||||
if (list) {
|
||||
list.on("change", onChangeCalendar, false);
|
||||
list.on("change", onChangeCalendar);
|
||||
list.fire("mousedown");
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ function initPopupMailer(event) {
|
||||
configureLoadImagesButton();
|
||||
configureSignatureFlagImage();
|
||||
|
||||
if (UserDefaults["SOGoMailDisplayRemoteInlineImages"] == 'always')
|
||||
loadRemoteImages();
|
||||
|
||||
window.messageUID = mailboxName + "/" + messageName;
|
||||
|
||||
handleReturnReceipt();
|
||||
|
||||
@@ -115,7 +115,7 @@ function prototypeIfyFilters() {
|
||||
function _setupEvents() {
|
||||
var widgets = [ "timezone", "shortDateFormat", "longDateFormat",
|
||||
"timeFormat", "weekStartDay", "dayStartTime", "dayEndTime",
|
||||
"firstWeek", "messageCheck", "sortByThreads",
|
||||
"firstWeek", "messageCheck", "sortByThreads", "displayRemoteInlineImages",
|
||||
"subscribedFoldersOnly", "language", "defaultCalendar",
|
||||
"enableVacation" ];
|
||||
for (var i = 0; i < widgets.length; i++) {
|
||||
|
||||
Reference in New Issue
Block a user