parent
9fc22f2689
commit
a9ee261eff
|
@ -1973,6 +1973,16 @@ SOGo webmail interface. The parameter is an array, for example:
|
|||
|
||||
`SOGoMailListViewColumnsOrder = (Flagged, Attachment, Priority, From, Subject, Unread, Date, Size);`
|
||||
|
||||
|D |SOGoExternalAvatarsEnabled
|
||||
|Parameter used to enable fetching of avatars from remote services.
|
||||
|
||||
Defaults to `YES` when unset.
|
||||
|
||||
|U |SOGoGravatarEnabled
|
||||
|Parameter used to activate fetching of avatars from http://gravatar.com/[Gravatar].
|
||||
|
||||
Defaults to `YES` when unset.
|
||||
|
||||
|D |SOGoVacationEnabled
|
||||
|Parameter used to activate the edition from the preferences window of a
|
||||
vacation message.
|
||||
|
|
1
NEWS
1
NEWS
|
@ -3,6 +3,7 @@
|
|||
|
||||
Enhancements
|
||||
- [web] expose all email addresses in autocompletion of message editor (#3443)
|
||||
- [web] Gravatar service can now be disabled (#3600)
|
||||
|
||||
Bug fixes
|
||||
- [web] fixed creation of chip on blur (sgTransformOnBlur directive)
|
||||
|
|
|
@ -54,12 +54,14 @@
|
|||
SOGoFirstWeekOfYear = "January1";
|
||||
SOGoShortDateFormat = "%d-%b-%y";
|
||||
SOGoLongDateFormat = "%A, %B %d, %Y";
|
||||
SOGoExternalAvatarsEnabled = YES;
|
||||
SOGoGravatarEnabled = NO;
|
||||
SOGoAlternateAvatar = "none";
|
||||
|
||||
SOGoIMAPServer = "localhost";
|
||||
SOGoMailDomain = "localhost";
|
||||
SOGoSelectedAddressBook = "collected";
|
||||
SOGoRefreshViewCheck = "manually";
|
||||
SOGoAlternateAvatar = "none";
|
||||
SOGoMailMessageForwarding = "inline";
|
||||
SOGoMailReplyPlacement = "below";
|
||||
SOGoMailSignaturePlacement = "below";
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
- (NSString *) imapFolderSeparator;
|
||||
- (BOOL) imapAclConformsToIMAPExt;
|
||||
- (BOOL) forceExternalLoginWithEmail;
|
||||
- (BOOL) externalAvatarsEnabled;
|
||||
- (BOOL) sieveScriptsEnabled;
|
||||
- (BOOL) forwardEnabled;
|
||||
- (int) forwardConstraints;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SOGoDomainDefaults.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2009-2015 Inverse inc.
|
||||
* Copyright (C) 2009-2016 Inverse inc.
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -191,6 +191,11 @@
|
|||
return [self boolForKey: @"SOGoForceIMAPLoginWithEmail"];
|
||||
}
|
||||
|
||||
- (BOOL) externalAvatarsEnabled
|
||||
{
|
||||
return [self boolForKey: @"SOGoExternalAvatarsEnabled"];
|
||||
}
|
||||
|
||||
- (BOOL) sieveScriptsEnabled
|
||||
{
|
||||
return [self boolForKey: @"SOGoSieveScriptsEnabled"];
|
||||
|
|
|
@ -126,6 +126,7 @@ extern NSString *SOGoWeekStartFirstFullWeek;
|
|||
- (void) setRefreshViewCheck: (NSString *) newValue;
|
||||
- (NSString *) refreshViewCheck;
|
||||
|
||||
- (BOOL) gravatarEnabled;
|
||||
- (void) setAlternateAvatar: (NSString *) newValue;
|
||||
- (NSString *) alternateAvatar;
|
||||
|
||||
|
|
|
@ -514,6 +514,11 @@ NSString *SOGoWeekStartFirstFullWeek = @"FirstFullWeek";
|
|||
return [self stringForKey: @"SOGoRefreshViewCheck"];
|
||||
}
|
||||
|
||||
- (BOOL) gravatarEnabled
|
||||
{
|
||||
return [self boolForKey: @"SOGoGravatarEnabled"];
|
||||
}
|
||||
|
||||
- (void) setAlternateAvatar: (NSString *) newValue
|
||||
{
|
||||
[self setObject: newValue forKey: @"SOGoAlternateAvatar"];
|
||||
|
|
|
@ -365,6 +365,7 @@
|
|||
"TLS" = "TLS";
|
||||
|
||||
/* Avatars */
|
||||
"Use Gravatar" = "Use Gravatar";
|
||||
"Alternate Avatar" = "Alternate Avatar";
|
||||
"none" = "None";
|
||||
"identicon" = "Ident Icon";
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
|
||||
#import <SOGo/NSObject+Utilities.h>
|
||||
#import <SOGo/NSString+Utilities.h>
|
||||
#import <SOGo/SOGoDomainDefaults.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <SOGo/SOGoUserDefaults.h>
|
||||
#import <SOGo/SOGoUserSettings.h>
|
||||
|
@ -73,6 +74,7 @@ static SoProduct *preferencesProduct = nil;
|
|||
{
|
||||
NSMutableDictionary *values, *account;
|
||||
SOGoUserDefaults *defaults;
|
||||
SOGoDomainDefaults *domainDefaults;
|
||||
NSMutableArray *accounts;
|
||||
NSDictionary *categoryLabels;
|
||||
NSDictionary *locale;
|
||||
|
@ -84,6 +86,7 @@ static SoProduct *preferencesProduct = nil;
|
|||
}
|
||||
|
||||
defaults = [[context activeUser] userDefaults];
|
||||
domainDefaults = [[context activeUser] domainDefaults];
|
||||
categoryLabels = nil;
|
||||
|
||||
//
|
||||
|
@ -110,8 +113,18 @@ static SoProduct *preferencesProduct = nil;
|
|||
if (![[defaults source] objectForKey: @"SOGoRefreshViewCheck"])
|
||||
[[defaults source] setObject: [defaults refreshViewCheck] forKey: @"SOGoRefreshViewCheck"];
|
||||
|
||||
if (![[defaults source] objectForKey: @"SOGoAlternateAvatar"])
|
||||
[[defaults source] setObject: [defaults alternateAvatar] forKey: @"SOGoAlternateAvatar"];
|
||||
if ([domainDefaults externalAvatarsEnabled])
|
||||
{
|
||||
if (![[defaults source] objectForKey: @"SOGoGravatarEnabled"])
|
||||
[[defaults source] setObject: [NSNumber numberWithBool: [defaults gravatarEnabled]] forKey: @"SOGoGravatarEnabled"];
|
||||
if (![[defaults source] objectForKey: @"SOGoAlternateAvatar"])
|
||||
[[defaults source] setObject: [defaults alternateAvatar] forKey: @"SOGoAlternateAvatar"];
|
||||
}
|
||||
else
|
||||
{
|
||||
[[defaults source] setObject: [NSNumber numberWithInt: 0] forKey: @"SOGoGravatarEnabled"];
|
||||
[[defaults source] removeObjectForKey: @"SOGoAlternateAvatar"];
|
||||
}
|
||||
|
||||
//
|
||||
// Default Calendar preferences
|
||||
|
|
|
@ -1417,6 +1417,11 @@ static NSArray *reminderValues = nil;
|
|||
return [self labelForKey: item];
|
||||
}
|
||||
|
||||
- (BOOL) externalAvatarsEnabled
|
||||
{
|
||||
return [[user domainDefaults] externalAvatarsEnabled];
|
||||
}
|
||||
|
||||
- (NSArray *) alternateAvatar
|
||||
{
|
||||
// See: https://en.gravatar.com/site/implement/images/
|
||||
|
@ -2157,6 +2162,14 @@ static NSArray *reminderValues = nil;
|
|||
if ([[v objectForKey: @"SOGoLongDateFormat"] isEqualToString: @"default"])
|
||||
[v removeObjectForKey: @"SOGoLongDateFormat"];
|
||||
|
||||
if (![self externalAvatarsEnabled])
|
||||
{
|
||||
[v removeObjectForKey: @"SOGoGravatarEnabled"];
|
||||
[[[user userDefaults] source] removeObjectForKey: @"SOGoGravatarEnabled"];
|
||||
[v removeObjectForKey: @"SOGoAlternateAvatar"];
|
||||
[[[user userDefaults] source] removeObjectForKey: @"SOGoAlternateAvatar"];
|
||||
}
|
||||
|
||||
//
|
||||
// We sanitize mail labels
|
||||
//
|
||||
|
|
|
@ -194,16 +194,28 @@
|
|||
</md-select>
|
||||
</md-input-container>
|
||||
|
||||
<md-input-container>
|
||||
<label><var:string label:value="Alternate Avatar"/></label>
|
||||
<md-select ng-model="app.preferences.defaults.SOGoAlternateAvatar">
|
||||
<var:foreach list="alternateAvatar" item="item">
|
||||
<md-option var:value="item">
|
||||
<var:string value="itemAlternateAvatarText"/>
|
||||
</md-option>
|
||||
</var:foreach>
|
||||
</md-select>
|
||||
</md-input-container>
|
||||
<var:if condition="externalAvatarsEnabled">
|
||||
<div layout="row" layout-align="start start">
|
||||
<md-checkbox flex="20"
|
||||
ng-model="app.preferences.defaults.SOGoGravatarEnabled"
|
||||
ng-true-value="1"
|
||||
ng-false-value="0"
|
||||
label:aria-label="Use Gravatar">
|
||||
<var:string label:value="Use Gravatar"/>
|
||||
</md-checkbox>
|
||||
<md-input-container class="md-flex">
|
||||
<label><var:string label:value="Alternate Avatar"/></label>
|
||||
<md-select ng-model="app.preferences.defaults.SOGoAlternateAvatar"
|
||||
ng-disabled="!app.preferences.defaults.SOGoGravatarEnabled">
|
||||
<var:foreach list="alternateAvatar" item="item">
|
||||
<md-option var:value="item">
|
||||
<var:string value="itemAlternateAvatarText"/>
|
||||
</md-option>
|
||||
</var:foreach>
|
||||
</md-select>
|
||||
</md-input-container>
|
||||
</div>
|
||||
</var:if>
|
||||
</div>
|
||||
</md-content>
|
||||
</md-tab>
|
||||
|
|
|
@ -60,7 +60,8 @@
|
|||
if (email && vm.urlEmail != email) {
|
||||
// Email has changed or doesn't match the current URL (this happens when using md-virtual-repeat)
|
||||
showGenericAvatar();
|
||||
getGravatar(email);
|
||||
if (Preferences.defaults.SOGoGravatarEnabled)
|
||||
getGravatar(email);
|
||||
}
|
||||
else if (!email)
|
||||
showGenericAvatar();
|
||||
|
|
Loading…
Reference in New Issue