parent
6ce64a9a27
commit
ba5bd65ea3
1
NEWS
1
NEWS
|
@ -4,6 +4,7 @@
|
||||||
Bug fixes
|
Bug fixes
|
||||||
- [web] fixed confusion between owner and active user in ACLs management of Administration module
|
- [web] fixed confusion between owner and active user in ACLs management of Administration module
|
||||||
- [web] fixed JavaScript exception after renaming an address book
|
- [web] fixed JavaScript exception after renaming an address book
|
||||||
|
- [web] fixed Sieve folder encoding support (#3904)
|
||||||
|
|
||||||
3.2.4 (2016-12-01)
|
3.2.4 (2016-12-01)
|
||||||
------------------
|
------------------
|
||||||
|
|
|
@ -67,6 +67,7 @@ typedef enum {
|
||||||
NSString *otherUsersFolderName;
|
NSString *otherUsersFolderName;
|
||||||
NSString *sharedFoldersName;
|
NSString *sharedFoldersName;
|
||||||
NSMutableDictionary *subscribedFolders;
|
NSMutableDictionary *subscribedFolders;
|
||||||
|
BOOL sieveFolderUTF8Encoding;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (SOGoIMAPAclStyle) imapAclStyle;
|
- (SOGoIMAPAclStyle) imapAclStyle;
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
#import <SOGo/NSString+Utilities.h>
|
#import <SOGo/NSString+Utilities.h>
|
||||||
#import <SOGo/SOGoAuthenticator.h>
|
#import <SOGo/SOGoAuthenticator.h>
|
||||||
#import <SOGo/SOGoDomainDefaults.h>
|
#import <SOGo/SOGoDomainDefaults.h>
|
||||||
|
#import <SOGo/SOGoSystemDefaults.h>
|
||||||
#import <SOGo/SOGoUserSettings.h>
|
#import <SOGo/SOGoUserSettings.h>
|
||||||
#import <SOGo/SOGoUserManager.h>
|
#import <SOGo/SOGoUserManager.h>
|
||||||
#import <SOGo/SOGoSieveManager.h>
|
#import <SOGo/SOGoSieveManager.h>
|
||||||
|
@ -62,6 +63,7 @@ static NSString *inboxFolderName = @"INBOX";
|
||||||
{
|
{
|
||||||
if ((self = [super init]))
|
if ((self = [super init]))
|
||||||
{
|
{
|
||||||
|
NSString *sieveFolderEncoding = [[SOGoSystemDefaults sharedSystemDefaults] sieveFolderEncoding];
|
||||||
inboxFolder = nil;
|
inboxFolder = nil;
|
||||||
draftsFolder = nil;
|
draftsFolder = nil;
|
||||||
sentFolder = nil;
|
sentFolder = nil;
|
||||||
|
@ -72,6 +74,7 @@ static NSString *inboxFolderName = @"INBOX";
|
||||||
otherUsersFolderName = nil;
|
otherUsersFolderName = nil;
|
||||||
sharedFoldersName = nil;
|
sharedFoldersName = nil;
|
||||||
subscribedFolders = nil;
|
subscribedFolders = nil;
|
||||||
|
sieveFolderUTF8Encoding = [sieveFolderEncoding isEqualToString: @"UTF-8"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -461,7 +464,7 @@ static NSString *inboxFolderName = @"INBOX";
|
||||||
NSArray *pathComponents;
|
NSArray *pathComponents;
|
||||||
NSMutableArray *folders, *flags;
|
NSMutableArray *folders, *flags;
|
||||||
NSMutableDictionary *currentFolder, *parentFolder, *folder;
|
NSMutableDictionary *currentFolder, *parentFolder, *folder;
|
||||||
NSString *currentFolderName, *currentPath, *fullName, *folderType;
|
NSString *currentFolderName, *currentPath, *sievePath, *fullName, *folderType;
|
||||||
SOGoUserManager *userManager;
|
SOGoUserManager *userManager;
|
||||||
|
|
||||||
BOOL last, isOtherUsersFolder, parentIsOtherUsersFolder, isSubscribed;
|
BOOL last, isOtherUsersFolder, parentIsOtherUsersFolder, isSubscribed;
|
||||||
|
@ -550,6 +553,13 @@ static NSString *inboxFolderName = @"INBOX";
|
||||||
flags, @"flags",
|
flags, @"flags",
|
||||||
[NSNumber numberWithBool: isSubscribed], @"subscribed",
|
[NSNumber numberWithBool: isSubscribed], @"subscribed",
|
||||||
nil];
|
nil];
|
||||||
|
|
||||||
|
if (sieveFolderUTF8Encoding)
|
||||||
|
sievePath = [folderPath stringByDecodingImap4FolderName];
|
||||||
|
else
|
||||||
|
sievePath = folderPath;
|
||||||
|
[folder setObject: [sievePath substringFromIndex: 1] forKey: @"sievePath"];
|
||||||
|
|
||||||
// Either add this new folder to its parent or the list of root folders
|
// Either add this new folder to its parent or the list of root folders
|
||||||
[folders addObject: folder];
|
[folders addObject: folder];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1622,14 +1622,6 @@ static NSArray *reminderValues = nil;
|
||||||
userCanChangePassword];
|
userCanChangePassword];
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Used wox by template
|
|
||||||
//
|
|
||||||
- (NSString *) sieveFolderEncoding
|
|
||||||
{
|
|
||||||
return [[SOGoSystemDefaults sharedSystemDefaults] sieveFolderEncoding];
|
|
||||||
}
|
|
||||||
|
|
||||||
// - (NSString *) localeCode
|
// - (NSString *) localeCode
|
||||||
// {
|
// {
|
||||||
// // WARNING : NSLocaleCode is not defined in <Foundation/NSUserDefaults.h>
|
// // WARNING : NSLocaleCode is not defined in <Foundation/NSUserDefaults.h>
|
||||||
|
|
|
@ -146,7 +146,7 @@
|
||||||
<md-input-container class="md-block" flex="50" ng-if="action.method == 'fileinto'">
|
<md-input-container class="md-block" flex="50" ng-if="action.method == 'fileinto'">
|
||||||
<label><var:string label:value="Mailbox"/></label>
|
<label><var:string label:value="Mailbox"/></label>
|
||||||
<md-select ng-model="action.argument" required="required">
|
<md-select ng-model="action.argument" required="required">
|
||||||
<md-option ng-value="item.path" ng-repeat="item in filterEditor.mailboxes">
|
<md-option ng-value="item.sievePath" ng-repeat="item in filterEditor.mailboxes">
|
||||||
<div ng-class="'sg-child-level-' + item.level">
|
<div ng-class="'sg-child-level-' + item.level">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
var defaultEmailAddresses = '<var:string value="defaultEmailAddresses" const:escapeHTML="NO"/>';
|
var defaultEmailAddresses = '<var:string value="defaultEmailAddresses" const:escapeHTML="NO"/>';
|
||||||
var forwardConstraints = <var:string value="forwardConstraints" const:escapeHTML="NO"/>;
|
var forwardConstraints = <var:string value="forwardConstraints" const:escapeHTML="NO"/>;
|
||||||
var sieveCapabilities = <var:string value="sieveCapabilities" const:escapeHTML="NO"/>;
|
var sieveCapabilities = <var:string value="sieveCapabilities" const:escapeHTML="NO"/>;
|
||||||
var sieveFolderEncoding = <var:string value="sieveFolderEncoding.doubleQuotedString"/>;
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/ng-template" id="preferences.html">
|
<script type="text/ng-template" id="preferences.html">
|
||||||
|
|
|
@ -12,8 +12,7 @@
|
||||||
var vm = this,
|
var vm = this,
|
||||||
sieveCapabilities = $window.sieveCapabilities,
|
sieveCapabilities = $window.sieveCapabilities,
|
||||||
forwardEnabled = $window.forwardEnabled,
|
forwardEnabled = $window.forwardEnabled,
|
||||||
vacationEnabled = $window.vacationEnabled,
|
vacationEnabled = $window.vacationEnabled;
|
||||||
sieveFolderPathAttribute = ($window.sieveFolderEncoding == "UTF-8") ? "name" : "path";
|
|
||||||
|
|
||||||
vm.filter = filter;
|
vm.filter = filter;
|
||||||
vm.mailboxes = mailboxes;
|
vm.mailboxes = mailboxes;
|
||||||
|
@ -51,12 +50,6 @@
|
||||||
//if (vacationEnabled)
|
//if (vacationEnabled)
|
||||||
// vm.methodLabels.vacation = l("Send a vacation message");
|
// vm.methodLabels.vacation = l("Send a vacation message");
|
||||||
|
|
||||||
vm.mailboxes = _.map(mailboxes, function(mailbox) {
|
|
||||||
return { level: mailbox.level,
|
|
||||||
name: mailbox.name,
|
|
||||||
path: mailbox[sieveFolderPathAttribute] };
|
|
||||||
});
|
|
||||||
|
|
||||||
if (sieveCapabilities.indexOf("reject") > -1)
|
if (sieveCapabilities.indexOf("reject") > -1)
|
||||||
vm.methodLabels.reject = l("Send a reject message");
|
vm.methodLabels.reject = l("Send a reject message");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue