Compare commits

...
Author SHA1 Message Date
Quentin Hivert 4cf7d22ddf fix2 2025-07-21 15:42:57 +02:00
Quentin Hivert 8743ec7736 chore(js/css): update generated files 2025-07-17 14:10:53 +00:00
Quentin Hivert da1297a535 fix(event): properly use the right uid to avoid unecessary ldap request 2025-07-17 15:48:50 +02:00
Quentin Hivert 69aa792405 fix2 2025-07-14 20:08:15 +02:00
Quentin Hivert d339462802 fix(contact): forbid to fetch the owner when it is called "nobody" 2025-07-14 19:57:36 +02:00
Hivert Quentin 0c629e5303 fix generated js 2025-01-22 17:01:13 +01:00
Hivert Quentin 223c25fb86 fix(users): don't look up for users when they change language on root page 2024-12-18 16:41:46 +01:00
Hivert Quentin 6a4d03b35f fix(users): try to always use the user domain in the basDN with %d 2024-12-18 15:28:07 +01:00
Hivert Quentin c8b0c3321e fix last commit 2024-12-18 15:28:07 +01:00
Hivert Quentin 405703162e fix(users): when using multi-domains configuration, only request the apopriate usersources. 2024-12-18 15:28:07 +01:00
Hivert Quentin 7ca0a7b5fb fix(users): when using multi-domains configuration, only request the apropriate usersources 2024-12-18 15:28:07 +01:00
smizrahi 0a828a739e fix(mail): Fix assertion when failed to decode base64 mime body mail part 2024-12-18 10:39:27 +01:00
smizrahi 395a01ed52 fix(mail): Fix mail sub folders sorting. Fixes #6058. 2024-12-17 18:27:53 +01:00
smizrahi c05b331ac0 fix(calendar): Fix SOGoDAVCalendarStartTimeLimit parameter. Events are retrieved when initial sync is done. 2024-12-17 16:35:52 +01:00
smizrahi da32b3f86d fix(calendar): Ensure organizers are properly removed from attendee's calendars. Fix issue where organizers were also set as attendees. Removed organizer in attendees list. 2024-12-16 12:21:41 +01:00
Hivert Quentin a09720cf22 chore(js/css): update generated files 2024-12-10 01:00:36 -05:00
smizrahi 0364f7f2a4 fix(mail): Fix issue where unread counter is invalid when whanging folder. Fixes #6064. 2024-12-09 17:40:24 +01:00
Hivert Quentin 00082eb0bc chore(js/css): update generated files 2024-12-03 01:00:40 -05:00
smizrahi 178b1a3a0e feat(core): Check password strength on login (SQL Source). Closes #6025. 2024-12-02 11:08:39 +01:00
Hivert Quentin 9ffa72ee9b chore(js/css): update generated files 2024-11-30 01:00:35 -05:00
Hivert Quentin 169a0c6125 fix(calendar): In some case, the startTime was not properly set 2024-11-29 10:38:38 +01:00
Hivert Quentin c7b0133000 chore(tool): add the possibility to force the sieve script activation 2024-11-27 10:07:58 +01:00
smizrahi 2f9c2cf4da fix(contacts): Fix empty chip in contact group when c_cn is not populated 2024-11-26 09:32:21 +01:00
Hivert Quentin 57db6b5f91 chore(js/css): update generated files 2024-11-26 01:00:36 -05:00
smizrahi f65ab9b43a feat(mail): Add move to icon on the mail view. Closes #6028. 2024-11-25 15:32:34 +01:00
smizrahi 2258d5cd60 feat(mail): Add sort by recipient instead of from in sent folder. Change subject_or_to in sent folder for search instead of subject_or_from. Closes #6030. 2024-11-25 12:01:46 +01:00
smizrahi ea427ea41a feat(mail): Deletion of mail older than x. Closes #6023. Remove also template folder. Change SOGoDisableMailCleaning to SOGoEnableMailCleaning (disabled by default). 2024-11-25 10:23:31 +01:00
Hivert Quentin ce86d14826 chore(tool): add the possibility to force the sieve script activation 2024-11-22 09:08:13 +01:00
Hivert Quentin 7f7c743976 chore(js/css): update generated files 2024-11-21 01:00:36 -05:00
smizrahi 6f86506b28 feat(mail): Deletion of mail older than x. Closes #6023. 2024-11-20 16:50:15 +01:00
Hivert Quentin e44bc1fc91 fix(calendar): if rrule is infinite don't count rdates as last dates 2024-11-20 12:06:48 +01:00
smizrahi c90e2b0501 fix(calendar): Ensure organizers are properly removed from attendee's calendars. Fix issue where organizers were also set as attendees. When an occurrence is deleted, it is now correctly removed from attendee's calendars. 2024-11-18 15:41:14 +01:00
smizrahi cd0324dd49 Add log for _fixDates 2024-11-12 16:21:12 +01:00
smizrahi 581b2c1912 Revert "Revert "fix(calendar): Fix issue where EXDATE removes modified occurence. The behavior is now identical to G Agenda. This fix may reduce the 'missing exception error'.""
This reverts commit ec20ea1b45d35f9d63066baf324fa6726b4e910e.
2024-11-12 16:21:12 +01:00
smizrahi 9a9d968756 Revert "fix(calendar): Fix issue where EXDATE removes modified occurence. The behavior is now identical to G Agenda. This fix may reduce the 'missing exception error'."
This reverts commit 5bab72726a.
2024-11-12 16:21:12 +01:00
Hivert Quentin fe003eeef5 chore(js/css): update generated files 2024-11-07 01:00:36 -05:00
smizrahi a09f4d8f49 fix(mail): Fix ckeditor margin for to make difference between line breaks and paragraph. Fixes #6056. 2024-11-06 17:56:02 +01:00
smizrahi 617c1bbc64 fix(mail): Correct attachment handling when creating emails from templates 2024-11-06 16:48:39 +01:00
smizrahi 5bab72726a fix(calendar): Fix issue where EXDATE removes modified occurence. The behavior is now identical to G Agenda. This fix may reduce the 'missing exception error'. 2024-11-06 09:15:12 +01:00
Hivert Quentin 01863987dd fix(calendar): fix commit f1257088 2024-11-04 10:22:08 +01:00
85 changed files with 1149 additions and 328 deletions

No files matched your search

+7 -3
View File
@@ -1678,6 +1678,9 @@ URL could be set to something like:
See the "EMail reminders" section in this document for more information.
|S |SOGoEnableMailCleaning
|Parameter used to enable cleaning folders and mailbox (remove mail older than X days). Default value is `NO`.
|S |SOGoDisableOrganizerEventCheck
|Parameter used to disable organizer's calendar event check
@@ -3951,7 +3954,7 @@ _Defaults_ stores all parameters that can be found in Preferences panel. So it g
autoreply to many others options.
user-preferences get|set|unset defaults|settings user key [value|-f filename] [-p credentialFile]
user-preferences get|set|unset defaults|settings user key [value|-f filename] [-p credentialFile [-F]]
* First argument is the action *get*, *set* or *unset*
* Second argument is parameter type *settings* or *defaults*
@@ -3959,7 +3962,8 @@ autoreply to many others options.
* Fourth argument *key* is the name of the parameters where to make the action
* If the action is *set*, you should provide either *value* as fifth argument or a file with the value inside with *-f* filename/path
* If the action is *set* or *unset* and the *key* concerns a sieve script (filter, vacation, forward...), you
should provide a credential file, a one-line file that contains "username:password" of an admin account of your imap/sieve server.
should provide a credential file, a one-line file that contains "username:password" of an admin account of your imap/sieve server. If you
want t oforce the sieve script activation add -F after.
As there is a lot of parameters, this documentation will not go into details for each one. To know what are
the key names and their value you should got to your database in table defined by _SOGoProfileURL_ in your sogo.conf.
@@ -3988,7 +3992,7 @@ sogo-tool user-preferences unset defaults user1 Forward -p /etc/sogo/cred
*set* action:
----
sogo-tool user-preferences set defaults user1 Forward '{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}' -p cred
sogo-tool user-preferences set defaults user1 Forward '{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}' -p cred -F
----
or create a json file which contains _{"forwardAddress":["sogo-tests2@sogo.alinto"],"enabled":1,"keepCopy":0}_ then:
----
+4 -2
View File
@@ -374,8 +374,10 @@ static BOOL debugLeaks;
request = [_ctx request];
login = [SOGoUser getDecryptedUsernameIfNeeded: _key request: request];
user = [SOGoUser userWithLogin: login roles: nil];
if([login isEqualToString: @"changeLanguage"])
user = nil;
else
user = [SOGoUser userWithLogin: login roles: nil];
if (user)
userFolder = [$(@"SOGoUserFolder") objectWithName: login
inContainer: self];
+2 -1
View File
@@ -464,7 +464,8 @@ lastPossibleRecurrenceStartDateUsingFirstInstanceCalendarDateRange: (NGCalendarD
}
}
if ([self hasRecurrenceDates])
//If there are recurrence rules and we have no date yet, its means it's infinite and rdates shouldn't be count as last dates.
if ([self hasRecurrenceDates] && !([self hasRecurrenceRules] && !date))
{
NSEnumerator *rDates;
+18 -20
View File
@@ -1130,28 +1130,26 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
delta = [masterEndDate timeIntervalSinceDate: [master startDate]];
recurrenceIdRange = [NGCalendarDateRange calendarDateRangeWithStartDate: recurrenceId
endDate: [recurrenceId dateByAddingYears:0 months:0 days:0 hours:0 minutes:0 seconds: delta]];
if ([dateRange doesIntersectWithDateRange: recurrenceIdRange])
recordIndex = [self _indexOfRecordMatchingDate: recurrenceId inArray: ma];
if ([dateRange doesIntersectWithDateRange: recurrenceIdRange] && recordIndex == -1) {
[self warnWithFormat:
@"missing exception record for recurrence-id %@ (uid %@), ma = %@, dr = %@, rir = %@",
recurrenceId, [component uid], ma, dateRange, recurrenceIdRange];
}
if ([dateRange doesIntersectWithDateRange: recurrenceIdRange] && recordIndex != -1)
{
// The recurrence exception intersects with the date range;
// find the occurence and replace it with the new record
recordIndex = [self _indexOfRecordMatchingDate: recurrenceId inArray: ma];
if (recordIndex > -1)
{
if ([dateRange containsDate: [component startDate]] ||
(endDate && [dateRange containsDate: endDate]))
{
// We must pass nil to :container here in order to avoid re-entrancy issues.
newRecord = [self _fixupRecord: [component quickRecordFromContent: nil container: nil nameInContainer: nil]];
[ma replaceObjectAtIndex: recordIndex withObject: newRecord];
}
else
// The range doesn't cover the exception; remove it from the records
[ma removeObjectAtIndex: recordIndex];
}
else
[self errorWithFormat:
@"missing exception record for recurrence-id %@ (uid %@)",
recurrenceId, [component uid]];
if ([dateRange containsDate: [component startDate]] ||
(endDate && [dateRange containsDate: endDate]))
{
// We must pass nil to :container here in order to avoid re-entrancy issues.
newRecord = [self _fixupRecord: [component quickRecordFromContent: nil container: nil nameInContainer: nil]];
[ma replaceObjectAtIndex: recordIndex withObject: newRecord];
}
else
// The range doesn't cover the exception; remove it from the records
[ma removeObjectAtIndex: recordIndex];
}
else
{
@@ -1762,7 +1760,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
{
NSCalendarDate *now, *rc;
if (davCalendarStartTimeLimit > 0 && ![[context activeUser] isSuperUser])
if ([[context request] isSoWebDAVRequest] && davCalendarStartTimeLimit > 0 && ![[context activeUser] isSuperUser])
{
now = [NSCalendarDate date];
rc = [now addTimeInterval: -davTimeLimitSeconds];
@@ -379,7 +379,7 @@ NSNumber *iCalDistantFutureNumber = nil;
currentAttendee = [attendees nextObject];
while (!isAttendee
&& currentAttendee)
if ([user hasEmail: [currentAttendee rfc822Email]])
if ([user hasEmail: [currentAttendee rfc822Email]] && ![self isOrganizer:[currentAttendee rfc822Email]]) // Exclude organizer if in attendees
isAttendee = YES;
else
currentAttendee = [attendees nextObject];
+2 -3
View File
@@ -993,7 +993,6 @@ static NSString *userAgent = nil;
[self _fileAttachmentsFromPart: [m body] onlyImages: onlyImages];
}
//
//
//
@@ -1022,7 +1021,7 @@ static NSString *userAgent = nil;
addresses = [NSMutableArray array];
[self _addEMailsOfAddresses: [sourceEnvelope from] toArray: addresses];
if ([addresses count])
if ([addresses count] > 0)
[info setObject: [addresses objectAtIndex: 0] forKey: @"from"];
addresses = [NSMutableArray array];
[self _addEMailsOfAddresses: [sourceEnvelope to] toArray: addresses];
@@ -1038,7 +1037,7 @@ static NSString *userAgent = nil;
addresses = [NSMutableArray array];
[self _addEMailsOfAddresses: [sourceEnvelope replyTo] toArray: addresses];
if ([addresses count] > 0)
[info setObject: addresses forKey: @"replyTo"];
[info setObject: [addresses objectAtIndex: 0] forKey: @"replyTo"];
h = [sourceMail mailHeaders];
priority = [h objectForKey: @"x-priority"];
+1
View File
@@ -104,6 +104,7 @@ typedef enum {
- (NSArray *) toManyRelationshipKeysWithNamespaces: (BOOL) withNSs;
- (NSArray *) allFolderPaths: (SOGoMailListingMode) theListingMode;
- (NSArray *) allFolderPaths: (SOGoMailListingMode) theListingMode onlyRoot: (BOOL) onlyRoot;
- (NSArray *) allFoldersMetadata: (SOGoMailListingMode) theListingMode;
- (NSDictionary *) imapFolderGUIDs;
+27 -9
View File
@@ -378,14 +378,21 @@ static NSString *inboxFolderName = @"INBOX";
return folders;
}
//
//
//
- (NSArray *) allFolderPaths: (SOGoMailListingMode) theListingMode
- (NSArray *) allFolderPaths: (SOGoMailListingMode) theListingMode
{
NSMutableArray *folderPaths, *namespaces;
return [self allFolderPaths: theListingMode onlyRoot: NO];
}
//
//
//
- (NSArray *) allFolderPaths: (SOGoMailListingMode) theListingMode onlyRoot: (BOOL) onlyRoot
{
NSMutableArray *folderPaths, *namespaces, *filteredFolders;
NSArray *folders, *mainFolders;
NSString *namespace;
NSString *folder;
NSUInteger slashCount;
BOOL subscribedOnly;
int count, max;
@@ -401,10 +408,10 @@ static NSString *inboxFolderName = @"INBOX";
onlySubscribedFolders: YES];
max = [folders count];
for (count = 0; count < max; count++)
{
[subscribedFolders setObject: [NSNull null]
forKey: [folders objectAtIndex: count]];
}
{
[subscribedFolders setObject: [NSNull null]
forKey: [folders objectAtIndex: count]];
}
[[self imap4Connection] flushFolderHierarchyCache];
}
@@ -418,6 +425,17 @@ static NSString *inboxFolderName = @"INBOX";
nil] stringsWithFormat: @"/%@"];
folders = [[self imap4Connection] allFoldersForURL: [self imap4URL]
onlySubscribedFolders: subscribedOnly];
if (onlyRoot) {
filteredFolders = [[NSMutableArray alloc] init];
for (folder in folders) {
slashCount = [[folder componentsSeparatedByString:@"/"] count] - 1;
if (slashCount <= 1) {
[filteredFolders addObject: folder];
}
}
folders = [NSArray arrayWithArray: filteredFolders];
[filteredFolders release];
}
folderPaths = [folders mutableCopy];
[folderPaths autorelease];
+4 -1
View File
@@ -953,7 +953,10 @@ static BOOL debugSoParts = NO;
body = [NSData data];
currentAttachment = [NSMutableDictionary dictionaryWithDictionary: currentInfo];
[currentAttachment setObject: body forKey: @"body"];
if (body)
[currentAttachment setObject: body forKey: @"body"];
else
[self errorWithFormat: @"Failed add attachement %@, empty body - failed to decode : %@", currentPath, currentInfo];
[attachments addObject: currentAttachment];
}
}
+20 -5
View File
@@ -1429,11 +1429,25 @@ groupObjectClasses: (NSArray *) newGroupObjectClasses
NSMutableArray *contacts;
EOQualifier *qualifier;
unsigned int i;
NSMutableString *s;
NSString *sortAttribute;
BOOL sortReverse;
contacts = [NSMutableArray array];
NSLog(@"fetchContactsMatching: baseDN was %@", _baseDN);
if(theDomain != nil && [theDomain length] > 0)
{
NSLog(@"fetchContactsMatching: the domain is %@", theDomain);
if ([_pristineBaseDN rangeOfString: @"%d"].location != NSNotFound)
{
s = [NSMutableString stringWithString: _pristineBaseDN];
[s replaceOccurrencesOfString: @"%d" withString: theDomain options: 0 range: NSMakeRange(0, [s length])];
ASSIGN(_baseDN, s);
}
}
NSLog(@"fetchContactsMatching: baseDN is now %@", _baseDN);
if ([match length] > 0 || !_listRequiresDot)
{
ldapConnection = [self _ldapConnection];
@@ -2290,8 +2304,7 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection,
NSRange r;
r = [theLogin rangeOfString: @"@"];
if (r.location != NSNotFound &&
[_pristineBaseDN rangeOfString: @"%d"].location != NSNotFound)
if (r.location != NSNotFound && [_pristineBaseDN rangeOfString: @"%d"].location != NSNotFound)
{
s = [NSMutableString stringWithString: _pristineBaseDN];
[s replaceOccurrencesOfString: @"%d" withString: [theLogin substringFromIndex: r.location+1] options: 0 range: NSMakeRange(0, [s length])];
@@ -2364,7 +2377,8 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection,
[pool release];
continue; //user alrady fetch
}
[userLogins addObject: login];
if(login != nil)
[userLogins addObject: login];
user = [SOGoUser userWithLogin: login roles: nil];
if (user)
{
@@ -2397,7 +2411,8 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection,
[pool release];
continue; //user alrady fetch
}
[userLogins addObject: login];
if(login != nil)
[userLogins addObject: login];
user = [SOGoUser userWithLogin: login roles: nil];
if (user)
{
@@ -2469,4 +2484,4 @@ _makeLDAPChanges (NGLdapConnection *ldapConnection,
return rc;
}
@end
@end
+2 -1
View File
@@ -65,7 +65,8 @@
domain: &domain
perr: &perr
expire: &expire
grace: &grace]
grace: &grace
additionalInfo: nil]
&& perr == PolicyNoError);
if (!rc)
+7 -1
View File
@@ -1531,6 +1531,11 @@ static NSArray *childRecordFields = nil;
return valid;
}
- (NSCalendarDate *) _getMaxStartDate
{
return nil;
}
/**
DAV:sync-collection Report
https://datatracker.ietf.org/doc/html/rfc6578#section-3.2
@@ -1559,9 +1564,10 @@ static NSArray *childRecordFields = nil;
propElement = [(NGDOMNodeWithChildren *) documentElement
firstElementWithTag: @"prop" inNamespace: XMLNS_WEBDAV];
properties = [self parseDAVRequestedProperties: propElement];
records = [self syncTokenFieldsWithProperties: properties
matchingSyncToken: syncToken
fromDate: nil
fromDate: [self _getMaxStartDate]
initialLoad: NO];
[self _appendComponentProperties: [properties allKeys]
+2
View File
@@ -142,6 +142,8 @@ NSComparisonResult languageSort(id el1, id el2, void *context);
- (NSString *)urlCreateAccount;
- (BOOL)enableMailCleaning;
@end
#endif /* SOGOSYSTEMDEFAULTS_H */
+5
View File
@@ -933,4 +933,9 @@ NSComparisonResult languageSort(id el1, id el2, void *context)
return [self stringForKey: @"SOGoURLCreateAccount"];
}
- (BOOL) enableMailCleaning
{
return [self boolForKey: @"SOGoEnableMailCleaning"];
}
@end
+102 -76
View File
@@ -145,92 +145,91 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
realUID = nil;
domain = nil;
if ([newLogin isEqualToString: @"anonymous"]
|| [newLogin isEqualToString: @"freebusy"])
if ([newLogin isEqualToString: @"anonymous"] || [newLogin isEqualToString: @"freebusy"])
realUID = newLogin;
else
{
sd = [SOGoSystemDefaults sharedSystemDefaults];
if ([sd enableDomainBasedUID] || [[sd loginDomains] count] > 0)
{
sd = [SOGoSystemDefaults sharedSystemDefaults];
if ([sd enableDomainBasedUID] || [[sd loginDomains] count] > 0)
{
r = [newLogin rangeOfString: @"@" options: NSBackwardsSearch];
if (r.location != NSNotFound)
{
// The domain is probably appended to the username;
// make sure it is defined as a domain in the configuration.
domain = [newLogin substringFromIndex: (r.location + r.length)];
if ([[SOGoUserManager sharedUserManager] isDomainDefined: domain] &&
![sd enableDomainBasedUID])
newLogin = [newLogin substringToIndex: r.location];
r = [newLogin rangeOfString: @"@" options: NSBackwardsSearch];
if (r.location != NSNotFound)
{
// The domain is probably appended to the username;
// make sure it is defined as a domain in the configuration.
domain = [newLogin substringFromIndex: (r.location + r.length)];
if ([[SOGoUserManager sharedUserManager] isDomainDefined: domain] &&
![sd enableDomainBasedUID])
newLogin = [newLogin substringToIndex: r.location];
if (domain != nil && ![sd enableDomainBasedUID])
// Login domains are enabled (SOGoLoginDomains) but not
// domain-based UID (SOGoEnableDomainBasedUID).
// Drop the domain from the login name.
domain = nil;
}
}
newLogin = [newLogin stringByReplacingString: @"%40"
withString: @"@"];
if (b)
realUID = newLogin;
else
{
um = [SOGoUserManager sharedUserManager];
contactInfos = [um contactInfosForUserWithUIDorEmail: newLogin
inDomain: domain];
realUID = [contactInfos objectForKey: @"c_uid"];
if (domain == nil && [sd enableDomainBasedUID])
domain = [contactInfos objectForKey: @"c_domain"];
}
if ([realUID length] && [domain length])
{
// When the user is associated to a domain, the [SOGoUser login]
// method returns the combination login@domain while
// [SOGoUser loginInDomain] only returns the login.
r = [realUID rangeOfString: domain options: NSBackwardsSearch|NSCaseInsensitiveSearch];
// Do NOT strip @domain.com if SOGoEnableDomainBasedUID is enabled since
// the real login most likely is the email address.
if (r.location != NSNotFound && ![sd enableDomainBasedUID])
uid = [realUID substringToIndex: r.location-1];
// If we don't have the domain in the UID but SOGoEnableDomainBasedUID is
// enabled, let's add it internally so so it becomes unique across
// all potential domains.
else if (r.location == NSNotFound && [sd enableDomainBasedUID])
{
uid = [NSString stringWithString: realUID];
realUID = [NSString stringWithFormat: @"%@@%@", realUID, domain];
}
// We found the domain and SOGoEnableDomainBasedUID is enabled,
// we keep realUID.. This would happen for example if the user
// authenticates with foo@bar.com and the UIDFieldName is also foo@bar.com
else if ([sd enableDomainBasedUID])
uid = [NSString stringWithString: realUID];
}
if (domain != nil && ![sd enableDomainBasedUID])
// Login domains are enabled (SOGoLoginDomains) but not
// domain-based UID (SOGoEnableDomainBasedUID).
// Drop the domain from the login name.
domain = nil;
}
}
newLogin = [newLogin stringByReplacingString: @"%40"
withString: @"@"];
if (b)
realUID = newLogin;
else
{
um = [SOGoUserManager sharedUserManager];
contactInfos = [um contactInfosForUserWithUIDorEmail: newLogin
inDomain: domain];
realUID = [contactInfos objectForKey: @"c_uid"];
if (domain == nil && [sd enableDomainBasedUID])
domain = [contactInfos objectForKey: @"c_domain"];
}
if ([realUID length] && [domain length])
{
// When the user is associated to a domain, the [SOGoUser login]
// method returns the combination login@domain while
// [SOGoUser loginInDomain] only returns the login.
r = [realUID rangeOfString: domain options: NSBackwardsSearch|NSCaseInsensitiveSearch];
// Do NOT strip @domain.com if SOGoEnableDomainBasedUID is enabled since
// the real login most likely is the email address.
if (r.location != NSNotFound && ![sd enableDomainBasedUID])
uid = [realUID substringToIndex: r.location-1];
// If we don't have the domain in the UID but SOGoEnableDomainBasedUID is
// enabled, let's add it internally so so it becomes unique across
// all potential domains.
else if (r.location == NSNotFound && [sd enableDomainBasedUID])
{
uid = [NSString stringWithString: realUID];
realUID = [NSString stringWithFormat: @"%@@%@", realUID, domain];
}
// We found the domain and SOGoEnableDomainBasedUID is enabled,
// we keep realUID.. This would happen for example if the user
// authenticates with foo@bar.com and the UIDFieldName is also foo@bar.com
else if ([sd enableDomainBasedUID])
uid = [NSString stringWithString: realUID];
}
}
if ([realUID length])
{
if ((self = [super initWithLogin: realUID roles: newRoles]))
{
if ((self = [super initWithLogin: realUID roles: newRoles]))
{
allEmails = nil;
currentPassword = nil;
cn = nil;
ASSIGN (loginInDomain, (uid ? uid : realUID));
_defaults = nil;
_domainDefaults = nil;
_settings = nil;
mailAccounts = nil;
}
allEmails = nil;
currentPassword = nil;
cn = nil;
ASSIGN (loginInDomain, (uid ? uid : realUID));
_defaults = nil;
_domainDefaults = nil;
_settings = nil;
mailAccounts = nil;
}
}
else
{
[self release];
self = nil;
}
{
[self release];
self = nil;
}
return self;
}
@@ -265,6 +264,33 @@ static const NSString *kEncryptedUserNamePrefix = @"uenc";
- (NSString *) loginInDomain
{
SOGoSystemDefaults *sd;
NSString *_domain, *realLoginInDomain;
NSRange r;
NSLog(@"loginInDomain start: %@", loginInDomain);
sd = [SOGoSystemDefaults sharedSystemDefaults];
if ([sd enableDomainBasedUID] || [[sd loginDomains] count] > 0)
{
NSLog(@"loginInDomain enableDomainBasedUID: %@", self->login);
return self->login;
// r = [loginInDomain rangeOfString: @"@" options: NSBackwardsSearch];
// if (r.location == NSNotFound)
// {
// _domain = [self _fetchFieldForUser: @"c_domain"];
// if (_domain != nil)
// {
// realLoginInDomain = [NSString stringWithFormat: @"%@@%@", loginInDomain, _domain];
// NSLog(@"loginInDomain return: %@", realLoginInDomain):
// return realLoginInDomain;
// }
// else
// {
// NSLog(@"loginInDomain return: %@", [self _fetchFieldForUser: @"c_email"]):
// return [self _fetchFieldForUser: @"c_email"];
// }
// }
}
NSLog(@"loginInDomain return: %@", loginInDomain);
return loginInDomain;
}
+48 -22
View File
@@ -502,6 +502,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
perr: (SOGoPasswordPolicyError *) perr
expire: (int *) expire
grace: (int *) grace
additionalInfo: (NSMutableDictionary **)_additionalInfo
{
NSObject <SOGoSource> *sogoSource;
NSEnumerator *authIDs;
@@ -520,8 +521,11 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
perr: perr
expire: expire
grace: grace];
if (_additionalInfo && *_additionalInfo && [sogoSource userPasswordPolicy] && [[sogoSource userPasswordPolicy] count] > 0) {
[*_additionalInfo setObject:[sogoSource userPasswordPolicy] forKey:@"userPolicies"];
}
}
if (checkOK && *domain == nil)
{
SOGoSystemDefaults *sd = [SOGoSystemDefaults sharedSystemDefaults];
@@ -554,6 +558,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
additionalInfo:(NSMutableDictionary **)_additionalInfo
{
return [self checkLogin: _login
password: _pwd
@@ -561,6 +566,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
perr: _perr
expire: _expire
grace: _grace
additionalInfo: _additionalInfo
useCache: YES];
}
@@ -573,6 +579,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
additionalInfo: (NSMutableDictionary **)_additionalInfo
useCache: (BOOL) useCache
{
NSString *dictPassword, *username, *jsonUser;
@@ -726,7 +733,8 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
domain: _domain
perr: _perr
expire: _expire
grace: _grace])
grace: _grace
additionalInfo: _additionalInfo])
{
checkOK = YES;
if (!currentUser)
@@ -1085,30 +1093,37 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
domain = nil;
infos = nil;
//Try to get the domain from the uid
r = [uid rangeOfString: @"@" options: NSBackwardsSearch];
if (r.location != NSNotFound)
{
// The domain is probably appended to the username;
// make sure it is a defined domain in the configuration.
domain = [uid substringFromIndex: (r.location + r.length)];
if ([self isDomainDefined: domain])
username = [uid substringToIndex: r.location];
else
domain = nil;
}
sd = [SOGoSystemDefaults sharedSystemDefaults];
if ([sd enableDomainBasedUID])
{
r = [uid rangeOfString: @"@" options: NSBackwardsSearch];
if (r.location != NSNotFound)
{
// The domain is probably appended to the username;
// make sure it is a defined domain in the configuration.
domain = [uid substringFromIndex: (r.location + r.length)];
if ([self isDomainDefined: domain])
username = [uid substringToIndex: r.location];
else
domain = nil;
}
if (domain != nil)
infos = [self contactInfosForUserWithUIDorEmail: username
if (domain != nil)
{
if ([sd enableDomainBasedUID])
infos = [self contactInfosForUserWithUIDorEmail: username
inDomain: domain];
}
else
infos = [self contactInfosForUserWithUIDorEmail: uid
inDomain: domain];
}
if (infos == nil)
{
// If the user was not found using the domain or if no domain was detected,
// search using the original uid.
infos = [self contactInfosForUserWithUIDorEmail: uid
inDomain: nil];
}
return infos;
}
@@ -1137,8 +1152,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
if ([currentUser isKindOfClass: NSNullK])
currentUser = nil;
else if (!([currentUser objectForKey: @"emails"]
&& [currentUser objectForKey: @"cn"]))
else if (!([currentUser objectForKey: @"emails"] && [currentUser objectForKey: @"cn"]))
{
// We make sure that we either have no occurence of a cache entry or
// that we have an occurence with only a cached password. In the
@@ -1155,6 +1169,19 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
}
else
newUser = NO;
if(!domain)
{
//No domain provided is there one?
NSRange r;
r = [uid rangeOfString: @"@" options: NSBackwardsSearch];
if (r.location != NSNotFound)
{
domain = [uid substringFromIndex: (r.location + r.length)];
if (![self isDomainDefined: domain])
domain = nil;
}
}
[self _fillContactInfosForUser: currentUser
withUIDorEmail: aUID
inDomain: domain];
@@ -1332,8 +1359,7 @@ static const NSString *kObfuscatedSecondaryEmailKey = @"obfuscatedSecondaryEmail
- (NSArray *) fetchContactsMatching: (NSString *) filter
inDomain: (NSString *) domain
{
return [self
_fetchEntriesInSources: [self addressBookSourceIDsInDomain: domain]
return [self _fetchEntriesInSources: [self addressBookSourceIDsInDomain: domain]
matching: filter
inDomain: domain];
}
+15 -13
View File
@@ -37,20 +37,22 @@
+ (id) sharedSOGoWebAuthenticator;
- (BOOL) checkLogin: (NSString *) _login
password: (NSString *) _pwd
domain: (NSString **) _domain
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace;
- (BOOL)checkLogin:(NSString *)_login
password:(NSString *)_pwd
domain:(NSString **)_domain
perr:(SOGoPasswordPolicyError *)_perr
expire:(int *)_expire
grace:(int *)_grace
additionalInfo:(NSMutableDictionary **)_additionalInfo;
- (BOOL) checkLogin: (NSString *) _login
password: (NSString *) _pwd
domain: (NSString **) _domain
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
useCache: (BOOL) useCache;
- (BOOL)checkLogin:(NSString *)_login
password:(NSString *)_pwd
domain:(NSString **)_domain
perr:(SOGoPasswordPolicyError *)_perr
expire:(int *)_expire
grace:(int *)_grace
additionalInfo:(NSMutableDictionary **)_additionalInfo
useCache:(BOOL)useCache;
- (WOCookie *) cookieWithUsername: (NSString *) username
andPassword: (NSString *) password
+8 -2
View File
@@ -102,7 +102,8 @@
domain: &domain
perr: &perr
expire: &expire
grace: &grace];
grace: &grace
additionalInfo: nil];
}
- (BOOL) checkLogin: (NSString *) _login
@@ -111,6 +112,7 @@
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
additionalInfo: (NSMutableDictionary **)_additionalInfo
{
return [self checkLogin: _login
password: _pwd
@@ -118,6 +120,7 @@
perr: _perr
expire: _expire
grace: _grace
additionalInfo: _additionalInfo
useCache: YES];
}
@@ -127,6 +130,7 @@
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
additionalInfo: (NSMutableDictionary **)_additionalInfo
useCache: (BOOL) _useCache
{
SOGoCASSession *session;
@@ -164,6 +168,7 @@
perr: _perr
expire: _expire
grace: _grace
additionalInfo: _additionalInfo
useCache: _useCache];
//[self logWithFormat: @"Checked login with ppolicy enabled: %d %d %d", *_perr, *_expire, *_grace];
@@ -250,7 +255,8 @@
domain: &domain
perr: &perr
expire: &expire
grace: &grace])
grace: &grace
additionalInfo: nil])
return nil;
if (domain && [login rangeOfString: @"@"].location == NSNotFound)
+77 -25
View File
@@ -245,6 +245,20 @@
return result;
}
- (BOOL) checkLogin: (NSString *) _login
password: (NSString *) _pwd
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
{
return [self checkLogin: _login
password: _pwd
perr: _perr
expire: _perr
grace: _grace
disablepasswordPolicyCheck: NO];
}
//
// SQL sources don't support right now all the password policy
// stuff supported by OpenLDAP (and others). If we want to support
@@ -256,6 +270,7 @@
perr: (SOGoPasswordPolicyError *) _perr
expire: (int *) _expire
grace: (int *) _grace
disablepasswordPolicyCheck: (BOOL) _disablepasswordPolicyCheck
{
EOAdaptorChannel *channel;
EOQualifier *qualifier;
@@ -335,10 +350,69 @@
else
[self errorWithFormat:@"failed to acquire channel for URL: %@",
[_viewURL absoluteString]];
if (YES == rc && !_disablepasswordPolicyCheck) {
[self checkPasswordPolicyWithPassword:_pwd perr: _perr];
}
return rc;
}
/**
* Validates a given password against the configured user password policies.
*
* This method checks if the provided password complies with all defined
* password policies for the user. Each policy is expected to include
* a regular expression (`regex`) that the password must match.
*
* If the password violates any policy, the method sets an appropriate error
* in the `perr` parameter and stops further validation.
*
* @param password the password to validate.
* @param perr will be set to indicate a policy violation, if the password
* does not meet the required standards. Possible values include:
* `PolicyInsufficientPasswordQuality` for insufficient complexity.
* @return YES if the password satisfies all policies, NO otherwise.
*
* @note This method assumes that `_userPasswordPolicy` is an array of dictionaries,
* where each dictionary represents a password policy with at least a "regex" key.
* @warning If a policy does not include a "regex" key, an error will be logged, and
* the method will continue to the next policy.
*/
- (BOOL) checkPasswordPolicyWithPassword: (NSString *)password perr: (SOGoPasswordPolicyError *)perr
{
BOOL isPolicyOk;
NSDictionary *policy;
NSEnumerator *policies;
NSRange match;
NSString *regex;
isPolicyOk = YES;
if ([_userPasswordPolicy count])
{
policies = [_userPasswordPolicy objectEnumerator];
while (isPolicyOk && (policy = [policies nextObject]))
{
regex = [policy objectForKey: @"regex"];
if (regex)
{
match = [password rangeOfString: regex options: NSRegularExpressionSearch];
isPolicyOk = isPolicyOk && match.length > 0;
if (match.length == 0)
{
// [self errorWithFormat: @"Password not conform to policy %@ (%@)", regex, [policy objectForKey: @"label"]];
*perr = PolicyInsufficientPasswordQuality;
}
}
else
[self errorWithFormat: @"Invalid password policy (missing regex): %@", policy];
}
}
return isPolicyOk;
}
/**
* Change a user's password.
* @param login the user's login name.
@@ -357,11 +431,8 @@
BOOL didChange, isOldPwdOk, isPolicyOk;
EOAdaptorChannel *channel;
GCSChannelManager *cm;
NSDictionary *policy;
NSEnumerator *policies;
NSException *ex;
NSRange match;
NSString *sqlstr, *regex;
NSString *sqlstr;
*perr = -1;
isOldPwdOk = NO;
@@ -369,30 +440,11 @@
didChange = NO;
// Verify current password
isOldPwdOk = [self checkLogin:login password:oldPassword perr:perr expire:0 grace:0];
isOldPwdOk = [self checkLogin:login password:oldPassword perr:perr expire:0 grace:0 disablepasswordPolicyCheck: YES];
if (isOldPwdOk || passwordRecovery)
{
if ([_userPasswordPolicy count])
{
policies = [_userPasswordPolicy objectEnumerator];
while (isPolicyOk && (policy = [policies nextObject]))
{
regex = [policy objectForKey: @"regex"];
if (regex)
{
match = [newPassword rangeOfString: regex options: NSRegularExpressionSearch];
isPolicyOk = isPolicyOk && match.length > 0;
if (match.length == 0)
{
// [self errorWithFormat: @"Password not conform to policy %@ (%@)", regex, [policy objectForKey: @"label"]];
*perr = PolicyInsufficientPasswordQuality;
}
}
else
[self errorWithFormat: @"Invalid password policy (missing regex): %@", policy];
}
}
isPolicyOk = [self checkPasswordPolicyWithPassword:newPassword perr: perr];
}
if ((isOldPwdOk || passwordRecovery) && isPolicyOk)
+15 -4
View File
@@ -68,6 +68,7 @@ typedef enum
" -p credentialFile Specify the file containing the sieve admin credentials\n"
" The file should contain a single line:\n"
" username:password\n"
" -F force the activation of the sieve script in case external scripts. Must be the las targument after -p credentialsFile"
" Examples:\n"
" sogo-tool user-preferences get defaults janedoe SOGoLanguage\n"
" sogo-tool user-preferences unset settings janedoe Mail\n"
@@ -144,9 +145,19 @@ typedef enum
account = [folder lookupName: @"0" inContext: localContext acquire: NO];
[account setContext: localContext];
error = [account updateFiltersWithUsername: authname
andPassword: authpwd
forceActivation: NO];
if([[arguments lastObject] isEqualToString: @"-F"])
{
error = [account updateFiltersWithUsername: authname
andPassword: authpwd
forceActivation: YES];
}
else
{
error = [account updateFiltersWithUsername: authname
andPassword: authpwd
forceActivation: NO];
}
if (error)
return NO;
}
@@ -248,7 +259,7 @@ typedef enum
break;
case UserPreferencesSet:
if (max > 4)
if (![arguments containsObject: @"-f"])
{
/* value specified on command line */
value = [sanitizedArguments objectAtIndex: 4];
+1 -2
View File
@@ -114,8 +114,7 @@
if (count < max)
{
max -= count;
toolArguments = [arguments
subarrayWithRange: NSMakeRange (count, max)];
toolArguments = [arguments subarrayWithRange: NSMakeRange (count, max)];
[toolArguments retain];
}
}
@@ -233,3 +233,10 @@
"passwordRecovery_SecretQuestion2" = "What was your first car ?";
"passwordRecovery_SecretQuestion3" = "What is your favorite movie ?";
"passwordRecovery_SecondaryEmail" = "Secondary E-mail";
/* Password */
"POLICY_MIN_LOWERCASE_LETTER" = "Minimum of %{0} lowercase letter";
"POLICY_MIN_UPPERCASE_LETTER" = "Minimum of %{0} uppercase letter";
"POLICY_MIN_DIGIT" = "Minimum of %{0} digit";
"POLICY_MIN_SPECIAL_SYMBOLS" = "Minimum of %{0} special symbols";
"POLICY_MIN_LENGTH" = "Minimum length of %{0} characters";
@@ -233,3 +233,10 @@
"passwordRecovery_SecretQuestion2" = "Quelle était votre première voiture ?";
"passwordRecovery_SecretQuestion3" = "Quel est votre film préféré ?";
"passwordRecovery_SecondaryEmail" = "E-mail secondaire";
/* Password */
"POLICY_MIN_LOWERCASE_LETTER" = "Au moins %{0} lettre(s) minuscule(s)";
"POLICY_MIN_UPPERCASE_LETTER" = "Au moins %{0} lettre(s) majuscule(s)";
"POLICY_MIN_DIGIT" = "Au moins %{0} chiffre(s)";
"POLICY_MIN_SPECIAL_SYMBOLS" = "Au moins %{0} caractère(s) special(aux)";
"POLICY_MIN_LENGTH" = "Longueur d'au moins %{0} caractère(s)";
+18 -10
View File
@@ -78,6 +78,14 @@
NSArray *cats, *newCats, *contactCategories;
ownerLogin = [[self clientObject] ownerInContext: context];
//if ownerLogin == @"nobody", meaning the current folder is not the personnal source of the user (it's the global address book)
//No need to fetch the user "nobody". Beware that if someone is really called nobody...
if([ownerLogin isEqualToString:@"nobody"])
{
cats = [self _languageContactsCategories];
return cats;
}
ud = [[SOGoUser userWithLogin: ownerLogin] userDefaults];
cats = [ud contactsCategories];
if (!cats)
@@ -85,16 +93,16 @@
contactCategories = [card categories];
if (contactCategories)
{
newCats = [cats mergedArrayWithArray: [contactCategories trimmedComponents]];
if ([newCats count] != [cats count])
{
cats = [newCats sortedArrayUsingSelector:
@selector (localizedCaseInsensitiveCompare:)];
[ud setContactsCategories: cats];
[ud synchronize];
}
}
{
newCats = [cats mergedArrayWithArray: [contactCategories trimmedComponents]];
if ([newCats count] != [cats count])
{
cats = [newCats sortedArrayUsingSelector:
@selector (localizedCaseInsensitiveCompare:)];
[ud setContactsCategories: cats];
[ud synchronize];
}
}
return cats;
}
@@ -171,6 +171,7 @@
/* MailListView */
"Sender" = "Sender";
"Subject or Sender" = "Subject or Sender";
"Subject or Recipient" = "Subject or Recipient";
"To or Cc" = "To or Cc";
"Entire Message" = "Entire Message";
"Date" = "Date";
@@ -514,3 +515,18 @@
/* Hotkey to forward to a message */
"hotkey_forward" = "f";
/* Email deletion */
"Clean folder" = "Clean folder";
"Clean mailbox" = "Clean mailbox";
"Delete permanently (do not use trash)" = "Delete permanently (do not use trash)";
"Apply to subfolders" = "Apply to subfolders";
"Delete e-mails older than" = "Delete e-mails older than";
"3 months" = "3 months";
"6 months" = "6 months";
"9 months" = "9 months";
"1 year" = "1 year";
"Custom" = "Custom";
"You are about to permanently delete some messages. Are you sure you want to proceed with this action?" = "You are about to permanently delete some messages. Are you sure you want to proceed with this action?";
"Apply" = "Apply";
"%{0} message(s) deleted" = "%{0} message(s) deleted";
@@ -171,6 +171,7 @@
/* MailListView */
"Sender" = "Expéditeur";
"Subject or Sender" = "Sujet ou expéditeur";
"Subject or Recipient" = "Sujet ou destinataire";
"To or Cc" = "Pour ou Copie à";
"Entire Message" = "Message Complet";
"Date" = "Date";
@@ -514,3 +515,18 @@
/* Hotkey to forward to a message */
"hotkey_forward" = "f";
/* Email deletion */
"Clean folder" = "Nettoyer le dossier";
"Clean mailbox" = "Nettoyer la boite mail";
"Delete permanently (do not use trash)" = "Supprimer définitivement (ne pas utiliser la corbeille)";
"Apply to subfolders" = "Appliquer aux sous-dossiers";
"Delete e-mails older than" = "Supprimer les e-mails plus vieux de";
"3 months" = "3 mois";
"6 months" = "6 mois";
"9 months" = "9 mois";
"1 year" = "1 an";
"Custom" = "Personnalisé";
"You are about to permanently delete some messages. Are you sure you want to proceed with this action?" = "Vous êtes sur le point de supprimer définitivement certains messages. Êtes-vous certain de vouloir effectuer cette action ?";
"Apply" = "Appliquer";
"%{0} message(s) deleted" = "%{0} message(s) supprimés";
+65
View File
@@ -27,6 +27,7 @@
#import <Foundation/NSData.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSAutoreleasePool.h>
#import <NGHttp/NGHttpRequest.h>
@@ -60,11 +61,72 @@
@implementation UIxMailAccountActions
- (NSArray *)sortChildrenRecursively: (NSArray *)children {
NSInteger i, j;
NSMutableArray *sortedArray;
NSArray *unsortedChildren, *sortedChildren;
NSDictionary *child;
NSMutableDictionary *mutableChild;
NSString *name1, *name2;
if (nil == children || 0 == [children count]) {
return children;
}
sortedArray = [NSMutableArray array];
for (child in children) {
unsortedChildren = [child objectForKey:@"children"];
sortedChildren = [self sortChildrenRecursively:unsortedChildren];
mutableChild = [child mutableCopy];
[mutableChild setObject:sortedChildren forKey:@"children"];
[sortedArray addObject:mutableChild];
}
for (i = 0; i < [sortedArray count] - 1; i++) {
for (j = i + 1; j < [sortedArray count]; j++) {
name1 = [[sortedArray objectAtIndex:i] objectForKey:@"name"];
name2 = [[sortedArray objectAtIndex:j] objectForKey:@"name"];
if ([name1 compare:name2 options:NSCaseInsensitiveSearch] == NSOrderedDescending) {
[sortedArray exchangeObjectAtIndex:i withObjectAtIndex:j];
}
}
}
return sortedArray;
}
- (NSDictionary *)sortMailboxesRecursively: (NSDictionary *)data {
NSArray *mailboxes, *mailboxChildren, *sortedMailboxChildren;
NSMutableDictionary *sortedData, *mutableMailbox;
NSMutableArray *sortedMailboxes;
NSDictionary *mailbox;
mailboxes = [data objectForKey:@"mailboxes"];
sortedData = [data mutableCopy];
sortedMailboxes = [NSMutableArray array];
for (mailbox in mailboxes) {
mutableMailbox = [mailbox mutableCopy];
mailboxChildren = [mailbox objectForKey:@"children"];
sortedMailboxChildren = [self sortChildrenRecursively:mailboxChildren];
[mutableMailbox setObject:sortedMailboxChildren forKey:@"children"];
[sortedMailboxes addObject:mutableMailbox];
}
[sortedData setObject:sortedMailboxes forKey:@"mailboxes"];
return sortedData;
}
- (WOResponse *) listMailboxesAction
{
SOGoMailAccount *co;
NSArray *folders;
NSDictionary *data;
NSAutoreleasePool *pool;
co = [self clientObject];
@@ -74,6 +136,9 @@
folders, @"mailboxes",
[co getInboxQuota], @"quotas",
nil];
pool = [[NSAutoreleasePool alloc] init];
data = [self sortMailboxesRecursively: data];
DESTROY(pool);
return [self responseWithStatus: 200
andJSONRepresentation: data];
+2
View File
@@ -132,6 +132,8 @@
drafts = [account draftsFolderInContext: context];
newMail = [drafts newDraft];
[newMail fetchMailForEditing: co];
if ([co isInTemplatesFolder])
[newMail save];
[newMail storeInfo];
accountName = [account nameInContainer];
+125
View File
@@ -21,6 +21,7 @@
#import <Foundation/NSDictionary.h>
#import <Foundation/NSURL.h>
#import <Foundation/NSValue.h>
#import <Foundation/Foundation.h>
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WORequest.h>
@@ -46,6 +47,8 @@
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserSettings.h>
#import <EOControl/EOQualifier.h>
#import "UIxMailFolderActions.h"
@implementation UIxMailFolderActions
@@ -1298,4 +1301,126 @@
return [self _markMessagesAsJunkOrNotJunk: NO];
}
- (BOOL)isDateStringValid: (NSString *)dateString {
NSString *dateRegex = @"^\\d{4}-\\d{2}-\\d{2}$";
NSPredicate *dateTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", dateRegex];
return [dateTest evaluateWithObject:dateString];
}
- (void) cleanFolderWithFolder: (SOGoMailFolder *)folder
withQualifier: (EOQualifier *)qualifier
recursive: (BOOL)isRecursive
withTrashFolder: (BOOL)useTrashFolder
exception: (NSException **)exception
counter: (NSUInteger *)counter {
NSArray *results, *subfolders;
NSUInteger i;
SOGoMailFolder *newFolder;
NSString *folderName;
NSException *e;
results = [folder fetchUIDsMatchingQualifier: qualifier
sortOrdering: @"REVERSE DATE"
threaded: NO];
if (results && [results count] > 0) {
e = [folder deleteUIDs: results
useTrashFolder: &useTrashFolder
inContext: [self context]];
[folder expunge];
[self logWithFormat: @"Removed %d messages in %@ (%@)", [results count], [folder nameInContainer], results];
*counter += [results count];
if (e) {
[self errorWithFormat: @"Error while cleaning mailbox : %@", e];
*exception = e;
}
}
if (isRecursive) {
subfolders = [folder subfolders];
for (i = 0 ; i < [subfolders count] ; i++) {
folderName = [NSString stringWithFormat:@"%@/%@", [folder nameInContainer], [subfolders objectAtIndex: i]];
newFolder = [[SOGoMailFolder alloc] initWithName: folderName inContainer: [folder container]];
[self cleanFolderWithFolder: newFolder
withQualifier: qualifier
recursive: isRecursive
withTrashFolder: useTrashFolder
exception: exception
counter: counter];
[newFolder release];
}
}
}
- (WOResponse *) cleanMailboxAction
{
NSDictionary *jsonRequest, *jsonResponse;
WORequest *request;
NSString *searchString, *folderName;
EOQualifier *searchQualifier;
BOOL isRecursive, useTrashFolder;
NSException *exception;
SOGoMailFolder *folder;
SOGoMailAccount *account;
NSUInteger i, counter;
NSArray *folderNames;
request = [[self context] request];
jsonRequest = [[request contentAsString] objectFromJSONString];
if (![[SOGoSystemDefaults sharedSystemDefaults] enableMailCleaning])
return [self responseWithStatus: 401];
if (![self isDateStringValid: [jsonRequest objectForKey: @"date"]]) {
[self errorWithFormat: @"Error while cleaning mailbox, invalid date : %@", [jsonRequest objectForKey: @"date"]];
return [self responseWithStatus: 502];
}
searchString = [NSString stringWithFormat: @"(NOT (flags = 'deleted') AND (DATE <= (NSCalendarDate)\"%@\"))", [jsonRequest objectForKey: @"date"]];
searchQualifier = [EOQualifier qualifierWithQualifierFormat: searchString];
isRecursive = [[jsonRequest objectForKey: @"applyToSubfolders"] boolValue];
useTrashFolder = ![[jsonRequest objectForKey: @"permanentlyDelete"] boolValue];
counter = 0;
exception = nil;
if ([[self clientObject] isKindOfClass: [SOGoMailFolder class]]) {
folder = [self clientObject];
[self cleanFolderWithFolder: folder
withQualifier: searchQualifier
recursive: isRecursive
withTrashFolder: useTrashFolder
exception: &exception
counter: &counter];
} else if ([[self clientObject] isKindOfClass: [SOGoMailAccount class]]) {
account = [self clientObject];
folderNames = [account allFolderPaths: SOGoMailStandardListing onlyRoot: YES];
for (i = 0 ; i < [folderNames count] ; i ++) {
folderName = [folderNames objectAtIndex: i];
if ([folderName hasPrefix:@"/"]) {
folderName = [folderName substringFromIndex:1];
}
folder = [account folderWithTraversal: folderName andClassName: nil];
// Disable clean for trash folder
if (![folderName isEqualToString: [account trashFolderNameInContext: [self context]]]
&& ![folderName isEqualToString: [account templatesFolderNameInContext: [self context]]])
[self cleanFolderWithFolder: folder
withQualifier: searchQualifier
recursive: isRecursive
withTrashFolder: useTrashFolder
exception: &exception
counter: &counter];
}
[[account imap4Connection] flushMailCaches];
}
if (exception) {
return [self responseWithStatus: 500];
}
jsonResponse = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt: counter]
forKey: @"nbMessageDeleted"];
return [self responseWithStatus: 200 andJSONRepresentation: jsonResponse];
}
@end
+11
View File
@@ -611,6 +611,17 @@
return result;
}
- (BOOL) isCleanMailboxEnabled {
BOOL result;
SOGoSystemDefaults *sd;
sd = [SOGoSystemDefaults sharedSystemDefaults];
result = [sd enableMailCleaning];
return result;
}
@end /* UIxMailMainFrame */
@interface UIxMailFolderTemplate : UIxComponent
+10
View File
@@ -49,6 +49,11 @@
actionClass = "UIxMailFolderActions";
actionName = "expunge";
};
cleanMailbox = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "cleanMailbox";
};
createFolder = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
@@ -417,6 +422,11 @@
protectedBy = "View";
pageName = "UIxMailUserDelegationEditor";
};
cleanMailbox = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "cleanMailbox";
};
addDelegate = {
protectedBy = "View";
actionClass = "UIxMailAccountActions";
+2 -1
View File
@@ -88,6 +88,7 @@ See <a href=\"http://www.sogo.nu/en/support/community.html\">this page</a> for v
"Change your Password" = "Change your Password";
"The password was changed successfully." = "The password was changed successfully.";
"Your password has expired, please enter a new one below" = "Your password has expired, please enter a new one below";
"Your password is too weak. Please choose a stronger password to enhance your security" = "Your password is too weak. Please choose a stronger password to enhance your security";
"Password must not be empty." = "Password must not be empty.";
"The passwords do not match. Please try again." = "The passwords do not match. Please try again.";
"Password Grace Period" = "Password Grace Period";
@@ -130,4 +131,4 @@ See <a href=\"http://www.sogo.nu/en/support/community.html\">this page</a> for v
"Invalid configuration for email password recovery" = "Invalid configuration for email password recovery";
"Password recovery email in error" = "Password recovery email in error";
"Password reset" = "Password reset";
"Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}" = "Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}";
"Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}" = "Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}";
+2 -1
View File
@@ -85,6 +85,7 @@
"Change your Password" = "Changez votre mot de passe";
"The password was changed successfully." = "Votre mot de passe a bien été changé.";
"Your password has expired, please enter a new one below" = "Votre mot de passe est expiré, veuillez entrer un nouveau mot de passe";
"Your password is too weak. Please choose a stronger password to enhance your security" = "Votre mot de passe est trop faible. Veuillez choisir un mot de passe plus sécurisé pour renforcer votre protection";
"Password must not be empty." = "Le mot de passe ne doit pas être vide.";
"The passwords do not match. Please try again." = "Les mots de passe ne sont pas identiques. Essayez de nouveau.";
"Password Grace Period" = "Période de grâce pour le mot de passe";
@@ -127,4 +128,4 @@
"Invalid configuration for email password recovery" = "Configuration invalide pour la récupération de mot de passe par e-mail";
"Password recovery email in error" = "Erreur lors de l'envoi de l'email de récupération";
"Password reset" = "Réinitialisation de mot de passe";
"Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}" = "Bonjour %{0},\nUne demande de changement de mot de passe a été initiée.\n\nSi vous n'êtes pas à l'origine de cet e-mail, n'en tenez pas compte.\n\nSi vous en êtes bien à l'origine, veuillez cliquer sur le lien ci-dessous pour modifier votre mot de passe: %{1}";
"Hi %{0},\nThere was a request to change your password!\n\nIf you did not make this request then please ignore this email.\n\nOtherwise, please click this link to change your password: %{1}" = "Bonjour %{0},\nUne demande de changement de mot de passe a été initiée.\n\nSi vous n'êtes pas à l'origine de cet e-mail, n'en tenez pas compte.\n\nSi vous en êtes bien à l'origine, veuillez cliquer sur le lien ci-dessous pour modifier votre mot de passe: %{1}";
+48 -10
View File
@@ -52,6 +52,7 @@
#import <SOGo/SOGoEmptyAuthenticator.h>
#import <SOGo/SOGoMailer.h>
#import <SOGo/SOGoAdmin.h>
#import <SOGo/SOGoPasswordPolicy.h>
#if defined(MFA_CONFIG)
#include <liboath/oath.h>
@@ -167,14 +168,23 @@ static const NSString *kJwtKey = @"jwt";
//
//
//
- (WOResponse *) _responseWithLDAPPolicyError: (int) error
- (WOResponse *) _responseWithLDAPPolicyError: (int) error additionalInfos: (NSDictionary *) additionalInfos
{
NSDictionary *jsonError;
jsonError = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt: error]
forKey: @"LDAPPasswordPolicyError"];
return [self responseWithStatus: 403
andJSONRepresentation: jsonError];
if (additionalInfos) {
jsonError = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:error], @"LDAPPasswordPolicyError",
additionalInfos, @"additionalInfos",
nil];
} else {
jsonError = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:error], @"LDAPPasswordPolicyError",
nil];
}
return [self responseWithStatus:403
andJSONRepresentation:jsonError];
}
- (void) _checkAutoReloadWebCalendars: (SOGoUser *) loggedInUser
@@ -197,6 +207,27 @@ static const NSString *kJwtKey = @"jwt";
}
}
//
//
//
- (void)translateAdditionalLoginInformations:(NSMutableDictionary **)additionalLoginInformations
{
NSDictionary *policy;
NSMutableDictionary *translations;
if (additionalLoginInformations && *additionalLoginInformations) {
if ([*additionalLoginInformations objectForKey:@"userPolicies"]) {
translations = [[NSMutableDictionary alloc] init];
for (policy in [*additionalLoginInformations objectForKey:@"userPolicies"]) {
[translations setObject:[self commonLabelForKey: [policy objectForKey:@"label"]] forKey: [policy objectForKey:@"label"]];
}
[*additionalLoginInformations setObject:[SOGoPasswordPolicy createPasswordPolicyLabels: [*additionalLoginInformations objectForKey:@"userPolicies"] withTranslations: translations]
forKey:@"userPolicies"];
[translations release];
}
}
}
//
//
//
@@ -210,6 +241,7 @@ static const NSString *kJwtKey = @"jwt";
SOGoUserSettings *us;
SOGoUser *loggedInUser;
NSDictionary *params;
NSMutableDictionary *additionalLoginInformations;
NSString *username, *password, *language, *domain, *remoteHost;
NSArray *supportedLanguages, *creds;
@@ -223,6 +255,7 @@ static const NSString *kJwtKey = @"jwt";
auth = [[WOApplication application] authenticatorInContext: context];
request = [context request];
params = [[request contentAsString] objectFromJSONString];
additionalLoginInformations = [[NSMutableDictionary alloc] init];
username = [params objectForKey: @"userName"];
password = [params objectForKey: @"password"];
@@ -232,9 +265,11 @@ static const NSString *kJwtKey = @"jwt";
/* this will always be set to something more or less useful by
* [WOHttpTransaction applyAdaptorHeadersWithHttpRequest] */
remoteHost = [request headerForKey:@"x-webobjects-remote-host"];
b = [auth checkLogin: username password: password domain: &domain
perr: &err expire: &expire grace: &grace additionalInfo: &additionalLoginInformations useCache: NO];
[self translateAdditionalLoginInformations: &additionalLoginInformations];
if ((b = [auth checkLogin: username password: password domain: &domain
perr: &err expire: &expire grace: &grace useCache: NO])
if (b
&& (err == PolicyNoError)
// no password policy
&& ((expire < 0 && grace < 0) // no password policy or everything is alright
@@ -334,7 +369,7 @@ static const NSString *kJwtKey = @"jwt";
#endif
if ([us objectForKey: @"ForceResetPassword"]) {
response = [self _responseWithLDAPPolicyError: PolicyPasswordExpired];
response = [self _responseWithLDAPPolicyError: PolicyPasswordExpired additionalInfos: additionalLoginInformations];
} else {
[self _checkAutoReloadWebCalendars: loggedInUser];
@@ -377,7 +412,7 @@ static const NSString *kJwtKey = @"jwt";
[self logWithFormat: @"Login from '%@' for user '%@' might not have worked - password policy: %d grace: %d expire: %d bound: %d",
remoteHost, username, err, grace, expire, b];
response = [self _responseWithLDAPPolicyError: err];
response = [self _responseWithLDAPPolicyError: err additionalInfos: additionalLoginInformations];
}
if (rememberLogin)
@@ -385,6 +420,8 @@ static const NSString *kJwtKey = @"jwt";
else
[response addCookie: [self _cookieWithUsername: nil]];
[additionalLoginInformations release];
return response;
}
@@ -808,7 +845,7 @@ static const NSString *kJwtKey = @"jwt";
}
}
else
response = [self _responseWithLDAPPolicyError: error];
response = [self _responseWithLDAPPolicyError: error additionalInfos: nil];
}
return response;
@@ -1072,4 +1109,5 @@ static const NSString *kJwtKey = @"jwt";
urlCreateAccount];
}
@end /* SOGoRootPage */
@@ -274,11 +274,6 @@
"Confirmation" = "Confirmation";
"Change" = "Change";
"Passwords don't match" = "Passwords don't match";
"POLICY_MIN_LOWERCASE_LETTER" = "Minimum of %{0} lowercase letter";
"POLICY_MIN_UPPERCASE_LETTER" = "Minimum of %{0} uppercase letter";
"POLICY_MIN_DIGIT" = "Minimum of %{0} digit";
"POLICY_MIN_SPECIAL_SYMBOLS" = "Minimum of %{0} special symbols";
"POLICY_MIN_LENGTH" = "Minimum length of %{0} characters";
/* Event+task classifications */
@@ -274,11 +274,7 @@
"Confirmation" = "Confirmation";
"Change" = "Changer";
"Passwords don't match" = "Les mots de passe ne correspondent pas";
"POLICY_MIN_LOWERCASE_LETTER" = "Au moins %{0} lettre(s) minuscule(s)";
"POLICY_MIN_UPPERCASE_LETTER" = "Au moins %{0} lettre(s) majuscule(s)";
"POLICY_MIN_DIGIT" = "Au moins %{0} chiffre(s)";
"POLICY_MIN_SPECIAL_SYMBOLS" = "Au moins %{0} caractère(s) special(aux)";
"POLICY_MIN_LENGTH" = "Longueur d'au moins %{0} caractère(s)";
/* Event+task classifications */
+1 -1
View File
@@ -278,7 +278,7 @@ static NSArray *reminderValues = nil;
userSource = [user authenticationSource];
for(policy in [userSource userPasswordPolicy]) {
[translations setObject:[self labelForKey:[policy objectForKey:@"label"]]
[translations setObject:[self commonLabelForKey:[policy objectForKey:@"label"]]
forKey: [policy objectForKey:@"label"]];
}
translatedUserPolicy = [SOGoPasswordPolicy createPasswordPolicyLabels: [userSource userPasswordPolicy]
+1
View File
@@ -350,6 +350,7 @@ static NSArray *tasksFields = nil;
//NSLog(@"***[UIxCalListingActions _fixDates:] %@ = %@ (%i)", aDateField, aDate, daylightOffset);
if (daylightOffset)
{
[self logWithFormat: @"Changing date (aDate '%@'), (startDate '%@'), (daylightOffset %d)", aDate, startDate, daylightOffset];
// If it is the end date and allday, we need to remove the offset
if ([fields[count * 2] isEqualToString: @"endDate"] && [[theRecord objectForKey: @"c_isallday"] boolValue] && daylightOffset > 0)
aDate = [aDate dateByAddingYears: 0 months: 0 days: 0 hours: 0
@@ -495,7 +495,7 @@
</md-autocomplete>
<md-chip-template>
<div class="sg-tile-content">
{{$chip.c_cn}}
{{$chip.c_cn || $chip.email}}
</div>
</md-chip-template>
</md-chips>
@@ -87,11 +87,16 @@
<md-icon label:aria-label="Subject">{{ mailbox.sortedBy('subject') ? 'check' : null }}</md-icon> <var:string label:value="Subject"/>
</md-button>
</md-menu-item>
<md-menu-item>
<md-menu-item ng-if="!mailbox.selectedFolder.isSentFolder">
<md-button ng-click="mailbox.sort('from')">
<md-icon label:aria-label="From">{{ mailbox.sortedBy('from') ? 'check' : null }}</md-icon> <var:string label:value="From"/>
</md-button>
</md-menu-item>
<md-menu-item ng-if="mailbox.selectedFolder.isSentFolder">
<md-button ng-click="mailbox.sort('to')">
<md-icon label:aria-label="To">{{ mailbox.sortedBy('to') ? 'check' : null }}</md-icon> <var:string label:value="To"/>
</md-button>
</md-menu-item>
<md-menu-item>
<md-button ng-click="mailbox.sort('date')">
<md-icon label:aria-label="Date">{{ mailbox.sortedBy('date') ? 'check' : null }}</md-icon> <var:string label:value="Date"/>
@@ -143,7 +148,8 @@
</md-input-container>
<md-input-container flex="25">
<md-select label:aria-label="Search scope">
<md-option value="subject_or_from" selected="selected"><var:string label:value="Subject or Sender"/></md-option>
<md-option value="subject_or_from" selected="selected" ng-if="!mailbox.selectedFolder.isSentFolder"><var:string label:value="Subject or Sender"/></md-option>
<md-option value="subject_or_to" selected="selected" ng-if="mailbox.selectedFolder.isSentFolder"><var:string label:value="Subject or Recipient"/></md-option>
<md-option value="subject"><var:string label:value="Subject"/></md-option>
<md-option value="from"><var:string label:value="Sender"/></md-option>
<md-option value="to_or_cc"><var:string label:value="To or Cc"/></md-option>
@@ -265,7 +271,7 @@
<md-button class="sg-no-wrap"
aria-label="{{folder.$displayName}}"
ng-disabled="::(mailbox.service.selectedFolder.id == folder.id)"
ng-click="mailbox.moveSelectedMessages(folder.id)">
ng-click="mailbox.moveSelectedMessages(folder.id, null)">
<span ng-class="::('sg-child-level-' + folder.level)"
ng-bind="folder.$displayName"><!-- mailbox name --></span>
</md-button>
@@ -632,4 +638,87 @@
</md-dialog-actions>
</md-dialog>
</script>
<!-- Remove old emails -->
<script type="text/ng-template" id="cleanMailbox">
<md-dialog flex="50" flex-sm="80" flex-xs="100">
<!-- Toolbar -->
<md-toolbar>
<div class="md-toolbar-tools">
<md-icon class="material-icons sg-icon-toolbar-bg">delete</md-icon>
<div class="pseudo-input-container md-flex" ng-if="::!dialogCtrl.isMailbox">
<var:string label:value="Clean folder"/>
</div>
<div class="pseudo-input-container md-flex" ng-if="::dialogCtrl.isMailbox">
<var:string label:value="Clean mailbox"/>
</div>
<md-button class="md-icon-button" ng-click="dialogCtrl.closeDialog()">
<md-icon aria-label="Close dialog">close</md-icon>
</md-button>
</div>
</md-toolbar>
<!-- Dialog Content -->
<md-dialog-content class="md-dialog-content">
<div class="md-dialog-content">
<h4>
{{ dialogCtrl.name }}
</h4>
<md-input-container class="md-block">
<md-checkbox ng-model="dialogCtrl.form.permanentlyDelete" label:aria-label="Delete permanently (do not use trash)">
<var:string label:value="Delete permanently (do not use trash)"/>
</md-checkbox>
</md-input-container>
<md-input-container class="md-block">
<md-checkbox ng-model="dialogCtrl.form.applyToSubfolders" label:aria-label="Apply to subfolders">
<var:string label:value="Apply to subfolders"/>
</md-checkbox>
</md-input-container>
<md-input-container class="md-block">
<label><var:string label:value="Delete e-mails older than"/></label>
<md-select ng-model="dialogCtrl.form.filterDuration">
<md-option value="3m"><var:string label:value="3 months"/></md-option>
<md-option value="6m"><var:string label:value="6 months"/></md-option>
<md-option value="9m"><var:string label:value="9 months"/></md-option>
<md-option value="1y"><var:string label:value="1 year"/></md-option>
<md-option value="custom"><var:string label:value="Custom"/></md-option>
</md-select>
</md-input-container>
<md-input-container class="md-block" ng-show="['custom'].indexOf(dialogCtrl.form.filterDuration) != -1">
<label><var:string label:value="Date"/></label>
<md-datepicker class="md-text"
ng-model="dialogCtrl.form.filterDurationDate"
md-hide-icons="calendar"
md-max-date="dialogCtrl.maxDate"
ng-change="dialogCtrl.mainController.changeDate()">
</md-datepicker>
</md-input-container>
<md-input-container class="md-block" ng-show="dialogCtrl.isWarningDisplayed()">
<md-checkbox ng-model="dialogCtrl.form.confirmDelete" label:aria-label="You are about to permanently delete some messages. Are you sure you want to proceed with this action?">
<span class="clean-mailbox-warn"><var:string label:value="You are about to permanently delete some messages. Are you sure you want to proceed with this action?" /></span>
</md-checkbox>
</md-input-container>
</div>
</md-dialog-content>
<!-- Dialog Actions -->
<md-dialog-actions>
<md-button class="md-warn" ng-click="dialogCtrl.closeDialog()">
<var:string label:value="Cancel" />
</md-button>
<div class="sg-progress-linear-bottom"
ng-show="dialogCtrl.isLoading()">
<md-progress-linear class="md-accent"
md-mode="indeterminate"><!-- progress --></md-progress-linear>
</div>
<md-button class="md-primary" ng-disabled="dialogCtrl.isApplyDisabled()" ng-click="dialogCtrl.apply()">
<var:string label:value="Apply" />
</md-button>
</md-dialog-actions>
</md-dialog>
</script>
</container>
@@ -69,6 +69,13 @@
<var:string label:value="New Folder..."/>
</md-button>
</md-menu-item>
<var:if condition="isCleanMailboxEnabled">
<md-menu-item>
<md-button type="button" ng-click="app.showCleanMailboxPanel(null, account)">
<var:string label:value="Clean mailbox"/>...
</md-button>
</md-menu-item>
</var:if>
<md-menu-item ng-show="::account.id == 0">
<md-button
label:aria-label="Search"
@@ -179,6 +186,13 @@
<var:string label:value="Compact"/>
</md-button>
</md-menu-item>
<var:if condition="isCleanMailboxEnabled">
<md-menu-item ng-show="::($menuCtrl.folder.type != 'trash')">
<md-button type="button" ng-click="$menuCtrl.cleanMailbox()">
<var:string label:value="Clean folder"/>...
</md-button>
</md-menu-item>
</var:if>
<md-menu-item ng-show="::$menuCtrl.folder.$isEditable">
<md-button type="button" ng-click="$menuCtrl.confirmDelete()">
<var:string label:value="Delete"/>
@@ -75,6 +75,53 @@
<md-tooltip md-direction="bottom"><var:string label:value="Delete selected message or folder"/></md-tooltip>
<md-icon>delete</md-icon>
</md-button>
<md-menu>
<md-button class="sg-icon-button" label:aria-label="Move To"
ng-click="$mdMenu.open($event)">
<md-tooltip md-direction="bottom"><var:string label:value="Move To"/></md-tooltip>
<md-icon>call_split</md-icon>
</md-button>
<md-menu-content width="4">
<md-menu-item>
<md-menu>
<md-button label:aria-label="Move To" ng-click="$mdMenu.open($event)">
<var:string label:value="Move To"/>
</md-button>
<md-menu-content width="4">
<div ng-repeat="account in ::mailbox.accounts track by account.id">
<md-menu-item>
<md-menu>
<md-button class="md-primary"
aria-label="{{ ::account.name }}"
ng-click="$mdMenu.open($event)"
ng-bind="::account.name"><!-- account name --></md-button>
<md-menu-content class="md-dense" width="4">
<div ng-repeat="folder in
account.$flattenMailboxes({ all: true })
track by folder.path">
<md-menu-item>
<md-button class="sg-no-wrap"
aria-label="{{folder.$displayName}}"
ng-disabled="::(mailbox.service.selectedFolder.id == folder.id)"
ng-click="mailbox.moveSelectedMessages(folder.id, viewer.message)">
<span ng-class="::('sg-child-level-' + folder.level)"
ng-bind="folder.$displayName"><!-- mailbox name --></span>
</md-button>
</md-menu-item>
</div>
</md-menu-content>
</md-menu>
</md-menu-item>
</div>
</md-menu-content>
</md-menu>
</md-menu-item>
</md-menu-content>
</md-menu>
<md-button class="sg-icon-button hide show-gt-md" label:aria-label="'Open in New Mail Window'.asSafeJSString"
ng-hide="::isPopup"
ng-click="viewer.openInPopup()">
+12 -4
View File
@@ -213,17 +213,18 @@
<!-- Password policy: Password is expired / password recovery-->
<div layout="column" layout-align="center center"
ng-switch-when="passwordchange">
<md-icon class="md-accent md-hue-1 sg-icon--large" ng-if="!app.isInPasswordRecoveryMode()">watch_later</md-icon>
<md-icon class="md-accent md-hue-1 sg-icon--large" ng-if="app.isInPasswordRecoveryMode()">vpn_key</md-icon>
<md-icon class="md-accent md-hue-1 sg-icon--large" ng-if="!(app.isInPasswordRecoveryMode() || app.isPasswordExpiredSecurity())">watch_later</md-icon>
<md-icon class="md-accent md-hue-1 sg-icon--large" ng-if="app.isInPasswordRecoveryMode() || app.isPasswordExpiredSecurity()">vpn_key</md-icon>
<div class="md-default-theme md-accent md-hue-1 md-fg md-padding" ng-if="!app.isInPasswordRecoveryMode()">
<var:string label:value="Your password has expired, please enter a new one below"/>
<span ng-if="!app.isPasswordExpiredSecurity()"><var:string label:value="Your password has expired, please enter a new one below"/></span>
<span ng-if="app.isPasswordExpiredSecurity()"><var:string label:value="Your password is too weak. Please choose a stronger password to enhance your security"/></span>
</div>
<div class="md-default-theme md-accent md-hue-1 md-fg md-padding" ng-if="app.isInPasswordRecoveryMode()">
<var:string label:value="Please enter a new password below"/>
</div>
<div flex="100">
<div layout="row" layout-xs="column">
<md-input-container class="md-block" flex="flex" ng-if="!app.isInPasswordRecoveryMode()">
<md-input-container class="md-block" flex="flex" ng-if="!(app.isInPasswordRecoveryMode())">
<label><var:string label:value="Current password"/>
</label>
<input type="password" sg-no-dirty-check="true" ng-model="app.passwords.oldPassword"/>
@@ -232,6 +233,13 @@
<label><var:string label:value="New password"/>
</label>
<input type="password" sg-no-dirty-check="true" ng-model="app.passwords.newPassword"/>
<div class="sg-hint">
<ul class="sg-padded">
<li ng-repeat="item in app.passwordPolicy">
{{ item.label }}
</li>
</ul>
</div>
</md-input-container>
<md-input-container class="md-block" flex="flex">
<label><var:string label:value="Confirmation"/>
+1 -1
View File
@@ -1,2 +1,2 @@
@charset "UTF-8";.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.sg-hide{opacity:0}@-moz-document url-prefix(){[layout-fill]{margin:0;width:100%;min-height:100%;height:100%}}[flex-order]{-webkit-box-ordinal-group:1;-webkit-order:0;order:0}[flex-order="-20"]{-webkit-box-ordinal-group:-19;-webkit-order:-20;order:-20}[flex-order="-19"]{-webkit-box-ordinal-group:-18;-webkit-order:-19;order:-19}[flex-order="-18"]{-webkit-box-ordinal-group:-17;-webkit-order:-18;order:-18}[flex-order="-17"]{-webkit-box-ordinal-group:-16;-webkit-order:-17;order:-17}[flex-order="-16"]{-webkit-box-ordinal-group:-15;-webkit-order:-16;order:-16}[flex-order="-15"]{-webkit-box-ordinal-group:-14;-webkit-order:-15;order:-15}[flex-order="-14"]{-webkit-box-ordinal-group:-13;-webkit-order:-14;order:-14}[flex-order="-13"]{-webkit-box-ordinal-group:-12;-webkit-order:-13;order:-13}[flex-order="-12"]{-webkit-box-ordinal-group:-11;-webkit-order:-12;order:-12}[flex-order="-11"]{-webkit-box-ordinal-group:-10;-webkit-order:-11;order:-11}[flex-order="-10"]{-webkit-box-ordinal-group:-9;-webkit-order:-10;order:-10}[flex-order="-9"]{-webkit-box-ordinal-group:-8;-webkit-order:-9;order:-9}[flex-order="-8"]{-webkit-box-ordinal-group:-7;-webkit-order:-8;order:-8}[flex-order="-7"]{-webkit-box-ordinal-group:-6;-webkit-order:-7;order:-7}[flex-order="-6"]{-webkit-box-ordinal-group:-5;-webkit-order:-6;order:-6}[flex-order="-5"]{-webkit-box-ordinal-group:-4;-webkit-order:-5;order:-5}[flex-order="-4"]{-webkit-box-ordinal-group:-3;-webkit-order:-4;order:-4}[flex-order="-3"]{-webkit-box-ordinal-group:-2;-webkit-order:-3;order:-3}[flex-order="-2"]{-webkit-box-ordinal-group:-1;-webkit-order:-2;order:-2}[flex-order="-1"]{-webkit-box-ordinal-group:0;-webkit-order:-1;order:-1}[flex-order="0"]{-webkit-box-ordinal-group:1;-webkit-order:0;order:0}[flex-order="1"]{-webkit-box-ordinal-group:2;-webkit-order:1;order:1}[flex-order="2"]{-webkit-box-ordinal-group:3;-webkit-order:2;order:2}[flex-order="3"]{-webkit-box-ordinal-group:4;-webkit-order:3;order:3}[flex-order="4"]{-webkit-box-ordinal-group:5;-webkit-order:4;order:4}[flex-order="5"]{-webkit-box-ordinal-group:6;-webkit-order:5;order:5}[flex-order="6"]{-webkit-box-ordinal-group:7;-webkit-order:6;order:6}[flex-order="7"]{-webkit-box-ordinal-group:8;-webkit-order:7;order:7}[flex-order="8"]{-webkit-box-ordinal-group:9;-webkit-order:8;order:8}[flex-order="9"]{-webkit-box-ordinal-group:10;-webkit-order:9;order:9}[flex-order="10"]{-webkit-box-ordinal-group:11;-webkit-order:10;order:10}[flex-order="11"]{-webkit-box-ordinal-group:12;-webkit-order:11;order:11}[flex-order="12"]{-webkit-box-ordinal-group:13;-webkit-order:12;order:12}[flex-order="13"]{-webkit-box-ordinal-group:14;-webkit-order:13;order:13}[flex-order="14"]{-webkit-box-ordinal-group:15;-webkit-order:14;order:14}[flex-order="15"]{-webkit-box-ordinal-group:16;-webkit-order:15;order:15}[flex-order="16"]{-webkit-box-ordinal-group:17;-webkit-order:16;order:16}[flex-order="17"]{-webkit-box-ordinal-group:18;-webkit-order:17;order:17}[flex-order="18"]{-webkit-box-ordinal-group:19;-webkit-order:18;order:18}[flex-order="19"]{-webkit-box-ordinal-group:20;-webkit-order:19;order:19}[flex-order="20"]{-webkit-box-ordinal-group:21;-webkit-order:20;order:20}[flex-offset="0"]{margin-left:0}[flex-offset="5"]{margin-left:5%}[flex-offset="10"]{margin-left:10%}[flex-offset="15"]{margin-left:15%}[flex-offset="20"]{margin-left:20%}[flex-offset="25"]{margin-left:25%}[flex-offset="30"]{margin-left:30%}[flex-offset="35"]{margin-left:35%}[flex-offset="40"]{margin-left:40%}[flex-offset="45"]{margin-left:45%}[flex-offset="50"]{margin-left:50%}[flex-offset="55"]{margin-left:55%}[flex-offset="60"]{margin-left:60%}[flex-offset="65"]{margin-left:65%}[flex-offset="70"]{margin-left:70%}[flex-offset="75"]{margin-left:75%}[flex-offset="80"]{margin-left:80%}[flex-offset="85"]{margin-left:85%}[flex-offset="90"]{margin-left:90%}[flex-offset="95"]{margin-left:95%}[flex-offset="33"]{margin-left:33.3333333333%}[flex-offset="66"]{margin-left:66.6666666667%}[layout-align="start stretch"],[layout-align]{-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch}[layout-align="start center"],[layout-align="start end"],[layout-align="start start"],[layout-align="start stretch"],[layout-align=start]{-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}[layout-align="center center"],[layout-align="center end"],[layout-align="center start"],[layout-align="center stretch"],[layout-align=center]{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}[layout-align="end center"],[layout-align="end end"],[layout-align="end start"],[layout-align="end stretch"],[layout-align=end]{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}[layout-align="spacLine truncated
@charset "UTF-8";.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.sg-hide{opacity:0}@-moz-document url-prefix(){[layout-fill]{margin:0;width:100%;min-height:100%;height:100%}}[flex-order]{-webkit-box-ordinal-group:1;-webkit-order:0;order:0}[flex-order="-20"]{-webkit-box-ordinal-group:-19;-webkit-order:-20;order:-20}[flex-order="-19"]{-webkit-box-ordinal-group:-18;-webkit-order:-19;order:-19}[flex-order="-18"]{-webkit-box-ordinal-group:-17;-webkit-order:-18;order:-18}[flex-order="-17"]{-webkit-box-ordinal-group:-16;-webkit-order:-17;order:-17}[flex-order="-16"]{-webkit-box-ordinal-group:-15;-webkit-order:-16;order:-16}[flex-order="-15"]{-webkit-box-ordinal-group:-14;-webkit-order:-15;order:-15}[flex-order="-14"]{-webkit-box-ordinal-group:-13;-webkit-order:-14;order:-14}[flex-order="-13"]{-webkit-box-ordinal-group:-12;-webkit-order:-13;order:-13}[flex-order="-12"]{-webkit-box-ordinal-group:-11;-webkit-order:-12;order:-12}[flex-order="-11"]{-webkit-box-ordinal-group:-10;-webkit-order:-11;order:-11}[flex-order="-10"]{-webkit-box-ordinal-group:-9;-webkit-order:-10;order:-10}[flex-order="-9"]{-webkit-box-ordinal-group:-8;-webkit-order:-9;order:-9}[flex-order="-8"]{-webkit-box-ordinal-group:-7;-webkit-order:-8;order:-8}[flex-order="-7"]{-webkit-box-ordinal-group:-6;-webkit-order:-7;order:-7}[flex-order="-6"]{-webkit-box-ordinal-group:-5;-webkit-order:-6;order:-6}[flex-order="-5"]{-webkit-box-ordinal-group:-4;-webkit-order:-5;order:-5}[flex-order="-4"]{-webkit-box-ordinal-group:-3;-webkit-order:-4;order:-4}[flex-order="-3"]{-webkit-box-ordinal-group:-2;-webkit-order:-3;order:-3}[flex-order="-2"]{-webkit-box-ordinal-group:-1;-webkit-order:-2;order:-2}[flex-order="-1"]{-webkit-box-ordinal-group:0;-webkit-order:-1;order:-1}[flex-order="0"]{-webkit-box-ordinal-group:1;-webkit-order:0;order:0}[flex-order="1"]{-webkit-box-ordinal-group:2;-webkit-order:1;order:1}[flex-order="2"]{-webkit-box-ordinal-group:3;-webkit-order:2;order:2}[flex-order="3"]{-webkit-box-ordinal-group:4;-webkit-order:3;order:3}[flex-order="4"]{-webkit-box-ordinal-group:5;-webkit-order:4;order:4}[flex-order="5"]{-webkit-box-ordinal-group:6;-webkit-order:5;order:5}[flex-order="6"]{-webkit-box-ordinal-group:7;-webkit-order:6;order:6}[flex-order="7"]{-webkit-box-ordinal-group:8;-webkit-order:7;order:7}[flex-order="8"]{-webkit-box-ordinal-group:9;-webkit-order:8;order:8}[flex-order="9"]{-webkit-box-ordinal-group:10;-webkit-order:9;order:9}[flex-order="10"]{-webkit-box-ordinal-group:11;-webkit-order:10;order:10}[flex-order="11"]{-webkit-box-ordinal-group:12;-webkit-order:11;order:11}[flex-order="12"]{-webkit-box-ordinal-group:13;-webkit-order:12;order:12}[flex-order="13"]{-webkit-box-ordinal-group:14;-webkit-order:13;order:13}[flex-order="14"]{-webkit-box-ordinal-group:15;-webkit-order:14;order:14}[flex-order="15"]{-webkit-box-ordinal-group:16;-webkit-order:15;order:15}[flex-order="16"]{-webkit-box-ordinal-group:17;-webkit-order:16;order:16}[flex-order="17"]{-webkit-box-ordinal-group:18;-webkit-order:17;order:17}[flex-order="18"]{-webkit-box-ordinal-group:19;-webkit-order:18;order:18}[flex-order="19"]{-webkit-box-ordinal-group:20;-webkit-order:19;order:19}[flex-order="20"]{-webkit-box-ordinal-group:21;-webkit-order:20;order:20}[flex-offset="0"]{margin-left:0}[flex-offset="5"]{margin-left:5%}[flex-offset="10"]{margin-left:10%}[flex-offset="15"]{margin-left:15%}[flex-offset="20"]{margin-left:20%}[flex-offset="25"]{margin-left:25%}[flex-offset="30"]{margin-left:30%}[flex-offset="35"]{margin-left:35%}[flex-offset="40"]{margin-left:40%}[flex-offset="45"]{margin-left:45%}[flex-offset="50"]{margin-left:50%}[flex-offset="55"]{margin-left:55%}[flex-offset="60"]{margin-left:60%}[flex-offset="65"]{margin-left:65%}[flex-offset="70"]{margin-left:70%}[flex-offset="75"]{margin-left:75%}[flex-offset="80"]{margin-left:80%}[flex-offset="85"]{margin-left:85%}[flex-offset="90"]{margin-left:90%}[flex-offset="95"]{margin-left:95%}[flex-offset="33"]{margin-left:33.3333333333%}[flex-offset="66"]{margin-left:66.6666666667%}[layout-align="start stretch"],[layout-align]{-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-box-align:stretch;-webkit-align-items:stretch;align-items:stretch}[layout-align="start center"],[layout-align="start end"],[layout-align="start start"],[layout-align="start stretch"],[layout-align=start]{-webkit-box-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start}[layout-align="center center"],[layout-align="center end"],[layout-align="center start"],[layout-align="center stretch"],[layout-align=center]{-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}[layout-align="end center"],[layout-align="end end"],[layout-align="end start"],[layout-align="end stretch"],[layout-align=end]{-webkit-box-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end}[layout-align="spacLine truncated
/*# sourceMappingURL=styles.css.map */
+1 -1
View File
@@ -1 +1 @@
{"version":3,"sources":["css/styles.css"],"names":[],"mappings":"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 truncated
{"version":3,"sources":["css/styles.css"],"names":[],"mappings":"iBAwBwD,UAAW,YAA1C,gBAAZ,WAAb,YAA0C,aACxC,QAAS,eAGX,SACE,QAAS,EAaX,4BACE,cACE,OAAQ,EACR,MAAO,KACP,WAAY,KACZ,OAAQ,MAOZ,aACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,IAC3B,cAAe,IACP,MAAO,IAGjB,mBACE,0BAA2B,GAC3B,cAAe,IACP,MAAO,IAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,EAC3B,cAAe,GACP,MAAO,GAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,EAC3B,cAAe,EACP,MAAO,EAGjB,iBACE,0BAA2B,GAC3B,cAAe,EACP,MAAO,EAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,0BAA2B,GAC3B,cAAe,GACP,MAAO,GAGjB,kBACE,YAAa,EAGf,kBACE,YAAa,GAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,IAGf,mBACE,YAAa,eAGf,mBACE,YAAa,eAIf,+BADA,eAEE,iBAAkB,MAClB,wBAAyB,WACjB,gBAAiB,WACzB,sBAAuB,QACf,cAAe,QACvB,kBAAmB,QACnB,oBAAqB,QACb,YAAa,QAKvB,8BACA,2BAFA,6BAGA,+BAJA,qBAKE,iBAAkB,MAClB,wBAAyB,WACjB,gBAAiB,WAK3B,+BACA,4BAFA,8BAGA,gCAJA,sBAKE,iBAAkB,OAClB,wBAAyB,OACjB,gBAAiB,OAI3B,4BAEA,yBADA,2BAEA,6BAJA,mBAKE,iBAAkB,IAClB,wBAAyB,SACjB,gBAAiB,SAI3B,qCAEA,kCADA,oCAEA,sCAJA,4BAKE,wBAAyB,aACjB,gBAAiB,aAI3B,sCAEA,mCADA,qCAEA,uCAJA,6BAKE,iBAAkB,QAClB,wBAAyB,cACjB,gBAAiB,cAI3B,8BACA,2BAEA,oCADA,qCAHA,6BAKE,kBAAmB,MACnB,oBAAqB,WACb,YAAa,WACrB,sBAAuB,WACf,cAAe,WAIzB,+BACA,4BAEA,qCADA,sCAHA,8BAKE,kBAAmB,OACnB,oBAAqB,OACb,YAAa,OACrB,sBAAuB,OACf,cAAe,OACvB,UAAW,KAIb,iCACA,8BAEA,uCADA,wCAHA,gCAKE,UAAW,KACX,mBAAoB,WACZ,WAAY,WAItB,4BACA,yBAEA,kCADA,mCAHA,2BAKE,kBAAmB,IACnB,oBAAqB,SACb,YAAa,SACrB,sBAAuB,SACf,cAAe,SAIzB,gCACA,6BAEA,sCADA,uCAHA,+BAKE,kBAAmB,QACnB,oBAAqB,QACb,YAAa,QACrB,sBAAuB,QACf,cAAe,QAGzB,OACE,iBAAkB,EAClB,aAAc,EACN,KAAM,EACd,mBAAoB,WACZ,WAAY,WAGtB,YACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,KACV,KAAM,EAAE,EAAE,KAClB,mBAAoB,WACZ,WAAY,WAGtB,eACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,KACV,KAAM,EAAE,EAAE,KAClB,mBAAoB,WACZ,WAAY,WAGtB,YACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,KACV,KAAM,EAAE,EAAE,KAClB,mBAAoB,WACZ,WAAY,WAGtB,YACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,KACV,KAAM,EAAE,EAAE,KAClB,mBAAoB,WACZ,WAAY,WAGtB,WACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,GACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,wBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,GACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,2BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,KACX,WAAY,GACZ,mBAAoB,WACZ,WAAY,WAGtB,yBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,OACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAEtB,yBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,OACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,4BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,KACX,WAAY,OACZ,mBAAoB,WACZ,WAAY,WAEtB,4BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,KACX,WAAY,OACZ,mBAAoB,WACZ,WAAY,WAGtB,wBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,GACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,2BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,KACX,WAAY,GACZ,mBAAoB,WACZ,WAAY,WAGtB,WACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,GACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,wBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,GACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,2BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,GACV,KAAM,EAAE,EAAE,GAClB,UAAW,KACX,WAAY,GACZ,mBAAoB,WACZ,WAAY,WAGtB,yBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,OACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAEtB,yBACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,OACX,WAAY,KACZ,mBAAoB,WACZ,WAAY,WAGtB,4BACE,iBAAkB,EAClB,aAAc,EAAE,EAAE,OACV,KAAM,EAAE,EAAE,OAClB,UAAW,KACX,WAAY,OACZ,mBAAoBLine truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,t){e.state("administration",{abstract:!0,views:{administration:{templateUrl:"administration.html",controller:"AdministrationController",controllerAs:"app"}}}).state("administration.rights",{url:"/rights",views:{module:{templateUrl:"rights.html"}}}).state("administration.rights.edit",{url:"/:userId/:folderId/edit",views:{acl:{templateUrl:"UIxAdministrationAclEditor",controller:"AdministrationAclController",controllerAs:"acl"}},resolve:{stateUser:n,stateFolder:r,stateAcls:o}}).state("administration.theme",{url:"/theme",views:{module:{templateUrl:"UIxThemePreview",controller:"ThemePreviewController",controllerAs:"ctrl"}}}).state("administration.motd",{url:"/motd",views:{module:{templateUrl:"UIxAdministrationMotd",controller:"AdministrationMotdController",controllerAs:"ctrl"}}}),t.rules.otherwise("/rights")}function n(t,n,r){var o=_.find(r.$users,function(e){return e.uid==n.userId});return angular.isUndefined(o)?r.$filter(n.userId).then(function(e){return o=_.find(r.$users,function(e){return e.uid==n.userId}),angular.isUndefined(o)?t.reject("User with ID "+n.userId+" not found"):o.$folders().then(function(){return o})}):o}function r(e,t,n,r,o,i){var s=n(t.folderId),n=_.find(r.$$folders,function(e){return e.name==s}),t=new("Appointment"==n.type?i:o)({id:n.name.split("/").pop(),owner:n.owner,name:n.displayName});return r.selectedFolder=t.id,t}function o(e){return e.$acl.$users(e.owner)}function t(e,t,n,r){e.DebugEnabled||r.defaultErrorHandler(function(){}),n.onError({to:"administration.**"},function(e){"administration"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),r.go({state:"administration.rights"}))})}angular.module("SOGo.AdministrationUI",["ui.router","SOGo.Common","SOGo.Authentication","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.SchedulerUI","sgCkeditor"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],n.$inject=["$q","$stateParams","User"],r.$inject=["$state","$stateParams","decodeUriFilter","stateUser","AddressBook","Calendar"],o.$inject=["stateFolder"],t.$inject=["$window","$log","$transitions","$state"]}(),function(){"use strict";function e(t,e,n,r,o,i,s,a,d){var u=this;function c(e,t){if(t&&t.target.parentNode.classList.contains("md-secondary"))return!1;u.selectedUid==e.uid?u.selectedUid=null:(u.selectedUid=e.uid,u.selectedUser=e,u.selectedUser.$rights())}function m(){e.go("administration.rights").then(function(){delete u.user.selectedFolder,u.user=null})}u.user=o,u.folder=i,u.users=s,u.folderType=angular.isDefined(i.$cards)?"AddressBook":"Calendar",u.selectedUser=null,u.selectedUid=null,u.selectUser=c,u.selectAllRights=function(e){i.$acl.$selectAllRights(e)},u.showRights=function(e){return u.selectedUid==e.uid&&e.rights},u.removeUser=function(e){t(function(){i.$acl.$removeUser(e.uid,i.owner)},500)},u.getTemplate=function(){return angular.isDefined(i.$cards)?"../"+i.owner+"/Contacts/"+i.id+"/UIxContactsUserRightsEditor":"../"+i.owner+"/Calendar/"+i.id+"/UIxCalUserRightsEditor"},u.close=m,u.save=function(){i.$acl.$saveUsersRights(i.owner).then(function(){r.show(r.simple().textContent(l("ACLs saved")).position(a.toastPosition).hideDelay(2e3)),n("xs")&&m()})},u.userToAdd="",u.searchText="",u.userFilter=function(e){return d.$filter(e,i.$acl.users,{dry:!0,uid:u.user.uid})},u.addUser=function(e){e&&i.$acl.$addUser(e,i.owner).then(function(e){u.userToAdd="",u.searchText="",u.selectedUid=null,e&&c(e)})}}e.$inject=["$timeout","$state","$mdMedia","$mdToast","stateUser","stateFolder","stateAcls","sgConstant","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationAclController",e)}(),function(){"use strict";function e(t,e,n,r,o,i,s,a,d){var l=this;angular.element(e.document).find("title").attr("sg-default");this.$onInit=function(){this.service=d,this.selectedUser=null,this.users=d.$users},this.go=function(e){t.go("administration."+e),r(i["gt-md"])||o("left").close()},this.filter=function(e){d.$filter(e)},this.selectUser=function(e){this.selectedUser==this.users[e]?this.selectedUser=null:this.users[e].$folders().then(function(){l.selectedUser=l.users[e]})},this.selectFolder=function(e){t.go("administration.rights.edit",{userId:this.selectedUser.uid,folderId:a(e.name)})}}e.$inject=["$state","$window","$mdToast","$mdMedia","$mdSidenav","sgConstant","Dialog","encodeUriFilter","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationController",e)}(),function(){"use strict";function e(e,t,n,r,o,i,s){var a=this;a.administration=i,a.motd=null,a.save=function(){this.administration.$saveMotd(a.motd).then(function(){r.show(r.simple().textContent(l("Message of the day has been saved")).position(o.toastPosition).hideDelay(3e3))})},a.clear=function(){console.log("HEY"),a.motd=""},a.ckConfig={autoGrow_minHeight:200,removeButtons:"Save,NewPage,Preview,Print,Templates,Cut,Copy,Paste,PasteText,PasteFromWord,Undo,Redo,Find,Replace,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,SelecLine truncated
(()=>{function e(e,t){e.state("administration",{abstract:!0,views:{administration:{templateUrl:"administration.html",controller:"AdministrationController",controllerAs:"app"}}}).state("administration.rights",{url:"/rights",views:{module:{templateUrl:"rights.html"}}}).state("administration.rights.edit",{url:"/:userId/:folderId/edit",views:{acl:{templateUrl:"UIxAdministrationAclEditor",controller:"AdministrationAclController",controllerAs:"acl"}},resolve:{stateUser:r,stateFolder:n,stateAcls:o}}).state("administration.theme",{url:"/theme",views:{module:{templateUrl:"UIxThemePreview",controller:"ThemePreviewController",controllerAs:"ctrl"}}}).state("administration.motd",{url:"/motd",views:{module:{templateUrl:"UIxAdministrationMotd",controller:"AdministrationMotdController",controllerAs:"ctrl"}}}),t.rules.otherwise("/rights")}function r(t,r,n){var o=_.find(n.$users,function(e){return e.uid==r.userId});return angular.isUndefined(o)?n.$filter(r.userId).then(function(e){return o=_.find(n.$users,function(e){return e.uid==r.userId}),angular.isUndefined(o)?t.reject("User with ID "+r.userId+" not found"):o.$folders().then(function(){return o})}):o}function n(e,t,r,n,o,i){var s=r(t.folderId),r=_.find(n.$$folders,function(e){return e.name==s}),t=new("Appointment"==r.type?i:o)({id:r.name.split("/").pop(),owner:r.owner,name:r.displayName});return n.selectedFolder=t.id,t}function o(e){return e.$acl.$users(e.owner)}function t(e,t,r,n){e.DebugEnabled||n.defaultErrorHandler(function(){}),r.onError({to:"administration.**"},function(e){"administration"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),n.go({state:"administration.rights"}))})}angular.module("SOGo.AdministrationUI",["ui.router","SOGo.Common","SOGo.Authentication","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.SchedulerUI","sgCkeditor"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],r.$inject=["$q","$stateParams","User"],n.$inject=["$state","$stateParams","decodeUriFilter","stateUser","AddressBook","Calendar"],o.$inject=["stateFolder"],t.$inject=["$window","$log","$transitions","$state"]})(),(()=>{function e(t,e,r,n,o,i,s,a,d){var u=this;function c(e,t){if(t&&t.target.parentNode.classList.contains("md-secondary"))return!1;u.selectedUid==e.uid?u.selectedUid=null:(u.selectedUid=e.uid,u.selectedUser=e,u.selectedUser.$rights())}function m(){e.go("administration.rights").then(function(){delete u.user.selectedFolder,u.user=null})}u.user=o,u.folder=i,u.users=s,u.folderType=angular.isDefined(i.$cards)?"AddressBook":"Calendar",u.selectedUser=null,u.selectedUid=null,u.selectUser=c,u.selectAllRights=function(e){i.$acl.$selectAllRights(e)},u.showRights=function(e){return u.selectedUid==e.uid&&e.rights},u.removeUser=function(e){t(function(){i.$acl.$removeUser(e.uid,i.owner)},500)},u.getTemplate=function(){return angular.isDefined(i.$cards)?"../"+i.owner+"/Contacts/"+i.id+"/UIxContactsUserRightsEditor":"../"+i.owner+"/Calendar/"+i.id+"/UIxCalUserRightsEditor"},u.close=m,u.save=function(){i.$acl.$saveUsersRights(i.owner).then(function(){n.show(n.simple().textContent(l("ACLs saved")).position(a.toastPosition).hideDelay(2e3)),r("xs")&&m()})},u.userToAdd="",u.searchText="",u.userFilter=function(e){return d.$filter(e,i.$acl.users,{dry:!0,uid:u.user.uid})},u.addUser=function(e){e&&i.$acl.$addUser(e,i.owner).then(function(e){u.userToAdd="",u.searchText="",u.selectedUid=null,e&&c(e)})}}e.$inject=["$timeout","$state","$mdMedia","$mdToast","stateUser","stateFolder","stateAcls","sgConstant","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationAclController",e)})(),(()=>{function e(t,e,r,n,o,i,s,a,d){var l=this;angular.element(e.document).find("title").attr("sg-default");this.$onInit=function(){this.service=d,this.selectedUser=null,this.users=d.$users},this.go=function(e){t.go("administration."+e),n(i["gt-md"])||o("left").close()},this.filter=function(e){d.$filter(e)},this.selectUser=function(e){this.selectedUser==this.users[e]?this.selectedUser=null:this.users[e].$folders().then(function(){l.selectedUser=l.users[e]})},this.selectFolder=function(e){t.go("administration.rights.edit",{userId:this.selectedUser.uid,folderId:a(e.name)})}}e.$inject=["$state","$window","$mdToast","$mdMedia","$mdSidenav","sgConstant","Dialog","encodeUriFilter","User"],angular.module("SOGo.AdministrationUI").controller("AdministrationController",e)})(),(()=>{function e(e,t,r,n,o,i,s){var a=this;a.administration=i,a.motd=null,a.save=function(){this.administration.$saveMotd(a.motd).then(function(){n.show(n.simple().textContent(l("Message of the day has been saved")).position(o.toastPosition).hideDelay(3e3))})},a.clear=function(){console.log("HEY"),a.motd=""},a.ckConfig={autoGrow_minHeight:200,removeButtons:"Save,NewPage,Preview,Print,Templates,Cut,Copy,Paste,PasteText,PasteFromWord,Undo,Redo,Find,Replace,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,Image,HiddenField,CopyFormatting,RemoveFormat,NumberedList,BuLine truncated
//# sourceMappingURL=Administration.js.map
@@ -1 +1 @@
{"version":3,"file":"Administration.js","sources":["Administration/Administration.app.js","Administration/AdministrationAclController.js","Administration/AdministrationController.js","Administration/AdministrationMotdController.js","Administration/ThemePreviewController.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","abstract","views","administration","templateUrl","controller","controllerAs","url","module","acl","resolve","stateUser","stateFolder","stateAcls","rules","otherwise","$q","$stateParams","User","user","_","find","$users","uid","userId","angular","isUndefined","$filter","then","users","reject","$folders","$state","decodeUriFilter","AddressBook","Calendar","folderId","folder","$$folders","name","o","type","id","split","pop","owner","displayName","selectedFolder","$acl","runBlock","$window","$log","$transitions","DebugEnabled","defaultErrorHandler","onError","to","transition","ignored","error","detail","go","config","run","$inject","AdministrationAclController","$timeout","$mdMedia","$mdToast","sgConstant","vm","this","selectUser","$event","target","parentNode","classList","contains","selectedUid","selectedUser","$rights","close","folderType","isDefined","$cards","selectAllRights","$selectAllRights","showRights","rights","removeUser","$removeUser","getTemplate","save","$saveUsersRights","show","simple","textContent","l","position","toastPosition","hideDelay","userToAdd","searchText","userFilter","$query","dry","addUser","data","$addUser","AdministrationController","$mdSidenav","Dialog","encodeUriFilter","element","document","attr","$onInit","service","filter","i","selectFolder","AdministrationMotdController","Administration","Settings","motd","$saveMotd","clear","console","log","ckConfig","autoGrow_minHeight","removeButtons","$getMotd","$mdThemingProvider","registerStyles","join","generateThemesOnDemand","ThemePreviewController","$mdTheming","$mdColors","defaultTheme","THEMES","jsonDefaultTheme","JSON","stringify","undefined","getColor","getThemeColor"],"mappings":"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 truncated
{"version":3,"file":"Administration.js","sources":["Administration/Administration.app.js","Administration/AdministrationAclController.js","Administration/AdministrationController.js","Administration/AdministrationMotdController.js","Administration/ThemePreviewController.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","abstract","views","administration","templateUrl","controller","controllerAs","url","module","acl","resolve","stateUser","stateFolder","stateAcls","rules","otherwise","$q","$stateParams","User","user","_","find","$users","uid","userId","angular","isUndefined","$filter","then","users","reject","$folders","$state","decodeUriFilter","AddressBook","Calendar","folderId","folder","$$folders","name","o","type","id","split","pop","owner","displayName","selectedFolder","$acl","runBlock","$window","$log","$transitions","DebugEnabled","defaultErrorHandler","onError","to","transition","ignored","error","detail","go","config","run","$inject","AdministrationAclController","$timeout","$mdMedia","$mdToast","sgConstant","vm","this","selectUser","$event","target","parentNode","classList","contains","selectedUid","selectedUser","$rights","close","folderType","isDefined","$cards","selectAllRights","$selectAllRights","showRights","rights","removeUser","$removeUser","getTemplate","save","$saveUsersRights","show","simple","textContent","l","position","toastPosition","hideDelay","userToAdd","searchText","userFilter","$query","dry","addUser","data","$addUser","AdministrationController","$mdSidenav","Dialog","encodeUriFilter","element","document","attr","$onInit","service","filter","i","selectFolder","AdministrationMotdController","Administration","Settings","motd","$saveMotd","clear","console","log","ckConfig","autoGrow_minHeight","removeButtons","$getMotd","$mdThemingProvider","registerStyles","join","generateThemesOnDemand","ThemePreviewController","$mdTheming","$mdColors","defaultTheme","THEMES","jsonDefaultTheme","JSON","stringify","undefined","getColor","getThemeColor"],"mappings":"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 truncated
@@ -1,2 +1,2 @@
!function(){"use strict";function a(){}a.$factory=["$q","$timeout","$log","sgSettings","Resource","User",function(t,e,o,n,r,i){return angular.extend(a,{$q:t,$timeout:e,$log:o,$$resource:new r(n.activeUser("folderURL"),n.activeUser()),activeUser:n.activeUser(),$User:i}),new a}],a.prototype.$getMotd=function(){return a.$$resource.fetch("Administration/getMotd").then(function(t){return t})},a.prototype.$saveMotd=function(t){return a.$$resource.save("Administration",{motd:t},{action:"saveMotd"}).then(function(t){return t})};try{angular.module("SOGo.AdministrationUI")}catch(t){angular.module("SOGo.AdministrationUI",["SOGo.Common"])}angular.module("SOGo.AdministrationUI").factory("Administration",a.$factory)}();
(()=>{function a(){}a.$factory=["$q","$timeout","$log","sgSettings","Resource","User",function(t,e,o,n,r,i){return angular.extend(a,{$q:t,$timeout:e,$log:o,$$resource:new r(n.activeUser("folderURL"),n.activeUser()),activeUser:n.activeUser(),$User:i}),new a}],a.prototype.$getMotd=function(){return a.$$resource.fetch("Administration/getMotd").then(function(t){return t})},a.prototype.$saveMotd=function(t){return a.$$resource.save("Administration",{motd:t},{action:"saveMotd"}).then(function(t){return t})};try{angular.module("SOGo.AdministrationUI")}catch(t){angular.module("SOGo.AdministrationUI",["SOGo.Common"])}angular.module("SOGo.AdministrationUI").factory("Administration",a.$factory)})();
//# sourceMappingURL=Administration.services.js.map
@@ -1 +1 @@
{"version":3,"file":"Administration.services.js","sources":["Administration/Administration.service.js"],"names":["Administration","$factory","$q","$timeout","$log","Settings","Resource","User","angular","extend","$$resource","activeUser","$User","prototype","$getMotd","fetch","then","data","$saveMotd","message","save","motd","action","module","e","factory"],"mappings":"AAEA,CAAA,WACE,aAMA,SAASA,KASTA,EAAeC,SAAW,CAAC,KAAM,WAAY,OAAQ,aAAc,WAAY,OAAQ,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAUC,GAUtI,OATAC,QAAQC,OAAOT,EAAgB,CAC7BE,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNM,WAAY,IAAIJ,EAASD,EAASM,WAAW,WAAW,EAAGN,EAASM,WAAW,CAAC,EAChFA,WAAYN,EAASM,WAAW,EAChCC,MAAOL,CACT,CAAC,EAEM,IAAIP,CACb,GAOAA,EAAea,UAAUC,SAAW,WAGlC,OAAOd,EAAeU,WAAWK,MAAM,wBAAwB,EAC5DC,KAAK,SAAUC,GACd,OAAOA,CACT,CAAC,CACL,EAOAjB,EAAea,UAAUK,UAAY,SAAUC,GAG7C,OAAOnB,EAAeU,WAAWU,KAAK,iBAAkB,CAAEC,KAAMF,CAAQ,EAAG,CAAEG,OAAQ,UAAW,CAAC,EAC9FN,KAAK,SAAUC,GACd,OAAOA,CACT,CAAC,CACL,EAGA,IACET,QAAQe,OAAO,uBAAuB,CAIxC,CAFA,MAAMC,GACJhB,QAAQe,OAAO,wBAAyB,CAAC,cAAc,CACzD,CAGAf,QAAQe,OAAO,uBAAuB,EACnCE,QAAQ,iBAAkBzB,EAAeC,QAAQ,CAErD,EAAE"}
{"version":3,"file":"Administration.services.js","sources":["Administration/Administration.service.js"],"names":["Administration","$factory","$q","$timeout","$log","Settings","Resource","User","angular","extend","$$resource","activeUser","$User","prototype","$getMotd","fetch","then","data","$saveMotd","message","save","motd","action","module","e","factory"],"mappings":"CAEA,KAOE,SAASA,KASTA,EAAeC,SAAW,CAAC,KAAM,WAAY,OAAQ,aAAc,WAAY,OAAQ,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAUC,GAUtI,OATAC,QAAQC,OAAOT,EAAgB,CAC7BE,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNM,WAAY,IAAIJ,EAASD,EAASM,WAAW,WAAW,EAAGN,EAASM,WAAW,CAAC,EAChFA,WAAYN,EAASM,WAAW,EAChCC,MAAOL,CACT,CAAC,EAEM,IAAIP,CACb,GAOAA,EAAea,UAAUC,SAAW,WAGlC,OAAOd,EAAeU,WAAWK,MAAM,wBAAwB,EAC5DC,KAAK,SAAUC,GACd,OAAOA,CACT,CAAC,CACL,EAOAjB,EAAea,UAAUK,UAAY,SAAUC,GAG7C,OAAOnB,EAAeU,WAAWU,KAAK,iBAAkB,CAAEC,KAAMF,CAAQ,EAAG,CAAEG,OAAQ,UAAW,CAAC,EAC9FN,KAAK,SAAUC,GACd,OAAOA,CACT,CAAC,CACL,EAGA,IACET,QAAQe,OAAO,uBAAuB,CAIxC,CAFA,MAAMC,GACJhB,QAAQe,OAAO,wBAAyB,CAAC,cAAc,CACzD,CAGAf,QAAQe,OAAO,uBAAuB,EACnCE,QAAQ,iBAAkBzB,EAAeC,QAAQ,CAErD,GAAE"}
+1 -1
View File
@@ -1,2 +1,2 @@
function l(){var n,e,t=arguments[0],o=t,r=arguments;for(labels[t]?o=labels[t]:clabels[t]&&(o=clabels[t]),n=1,e=0;n<r.length;n++,e++)o=o.replace("%{"+e+"}",r[n]);return o=(n=1)<r.length?o.replace(/%((%)|s|d)/g,function(e){var t=null;return e[2]?t=e[2]:(t=r[n],"%d"===e&&(t=parseFloat(t),isNaN(t))&&(t=0),n++),t}):o}function hexToRgb(e){e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function contrast(e){var t=1,e=hexToRgb(e);if(e){for(var n=[e.r/255,e.g/255,e.b/255],o=0;o<n.length;++o)n[o]=n[o]<=.03928?n[o]/12.92:Math.pow((n[o]+.055)/1.055,2.4);t=.2126*n[0]+.7152*n[1]+.0722*n[2]}return.179<t?"black":"white"}function guid(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return(e()+e()+"-"+e()+"-4"+e().substr(0,3)+"-"+e()+"-"+e()+e()+e()).toLowerCase()}!function(){"use strict";function e(e,t,n,o,r,i,s){e.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/),r.definePalette("sogo-green",{50:"eaf5e9",100:"cbe5c8",200:"aad6a5",300:"88c781",400:"66b86a",500:"56b04c",600:"4da143",700:"388e3c",800:"367d2e",900:"225e1b",A100:"fafafa",A200:"69f0ae",A400:"00e676",A700:"00c853",contrastDefaultColor:"dark",contrastLightColors:["300","400","500","600","700","800","900"]}),r.definePalette("sogo-blue",{50:"f0faf9",100:"e1f5f3",200:"ceebe8",300:"bfe0dd",400:"b2d6d3",500:"a1ccc8",600:"8ebfbb",700:"7db3b0",800:"639997",900:"4d8080",A100:"d4f7fa",A200:"c3f5fa",A400:"53e3f0",A700:"00b0c0",contrastDefaultColor:"light",contrastDarkColors:["50","100","200"]});e=r.extendPalette("grey",{1e3:"baa870"});r.definePalette("sogo-grey",e),r.theme("default").primaryPalette("sogo-blue",{default:"900","hue-1":"400","hue-2":"800","hue-3":"A700"}).accentPalette("sogo-green",{default:"500","hue-1":"A100","hue-2":"300","hue-3":"A700"}).backgroundPalette("sogo-grey"),r.registerStyles(["md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent,","md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent md-input-container[md-no-float] .md-input {"," background-color: '{{accent-hue-1}}';"," color: '{{foreground-1}}';","}","md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent md-icon {"," color: '{{foreground-1}}';"," fill: '{{foreground-1}}';","}"].join("")),r.registerStyles([".md-autocomplete-suggestions.md-3-line li p {"," color: '{{foreground-2}}';","}"].join("")),r.registerStyles([".sg-time-selection-indicator.sg-time-selected,",".sg-time-selection-indicator:hover.sg-time-selected,",".sg-time-selection-indicator.md-focus.sg-time-selected {"," background: '{{primary-500}}';","}",".sg-timepicker-open .sg-timepicker-icon {"," color: '{{primary-900}}';","}",".sg-timepicker-time,",".sg-timepicker-open .sg-timepicker-input-container {"," background: '{{background-hue-1}}';","}",".sg-timepicker-input-mask-opaque {"," box-shadow: 0 0 0 9999px '{{background-hue-1}}';","}"].join("")),r.registerStyles(["[ui-view=calendars] .hours {"," color: '{{primary-700}}';","}",".attendees .busy {"," background-color: '{{background-1000}}';","}",".attendees .event {"," background-color: '{{primary-300}}';","}"].join("")),r.registerStyles([".sg-message-thread {"," background-color: '{{primary-100}}';","}",".sg-message-thread-first {"," background-color: '{{primary-200}}';","}"].join("")),window.DebugEnabled||(t.debugEnabled(!1),n.debugInfoEnabled(!1),i.disableWarnings(),s.errorOnUnhandledRejections(!1),r.generateThemesOnDemand(!0)),o.interceptors.push("AuthInterceptor"),o.interceptors.push("ErrorInterceptor")}function a(t,e,n,o,r){var i=e.defer(),s=angular.element('<iframe class="ng-hide" src="'+t.UserFolderURL+'recover"></iframe>');return s.on("load",function(){var e=o.get("$state");2<r.config.attempt?(angular.element(t).off("beforeunload"),t.location.href=t.ApplicationBaseURL+e.href(e.current),i.reject()):n(function(){var e=o.get("$http");r.config.attempt?r.config.attempt++:r.config.attempt=1,e(r.config).then(function(e){i.resolve(e)},function(e){i.reject(e)}).finally(function(){n(s.remove,1e3)})},2e3)}),document.body.appendChild(s[0]),i.promise}function t(n,o,r,i){return{response:function(e){var t;return e&&/^application\/json/.test(e.config.headers.Accept)&&/^[\n\r\t ]*<!DOCTYPE html/.test(e.data)?n.usesCASAuthentication||n.usesSAML2Authentication?a(n,o,r,i,e):(t=i.get("$state"),angular.element(n).off("beforeunload"),t.href(t.current)?n.location.href=n.ApplicationBaseURL+t.href(t.current):n.location.href=n.ApplicationBaseURL,o.reject()):e}}}function n(n,o,r,i,s){return{responseError:function(e){var t;if(/^application\/json/.test(e.config.headers.Accept)){if((o.usesCASAuthentication||o.usesSAML2Authentication)&&(-1==e.status||500==e.status&&-1!==document.cookie.indexOf("cas-location")))return a(o,r,i,s,e);o.usesSAML2Authentication&&401==e.status&&!o.recovered?(t=s.get("$state"),angular.element(o).off("beforeunload"),o.recovered=!0,o.location.href=o.ApplicationBaseURL+t.href(t.current)):e.data&&e.data.quiet||n.$broadcast("http:Error",e)}return r.reject(e)}}}angular.Line truncated
function l(){var n,e,t=arguments[0],o=t,r=arguments;for(labels[t]?o=labels[t]:clabels[t]&&(o=clabels[t]),n=1,e=0;n<r.length;n++,e++)o=o.replace("%{"+e+"}",r[n]);return o=(n=1)<r.length?o.replace(/%((%)|s|d)/g,function(e){var t=null;return e[2]?t=e[2]:(t=r[n],"%d"===e&&(t=parseFloat(t),isNaN(t))&&(t=0),n++),t}):o}function hexToRgb(e){e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function contrast(e){var t=1,e=hexToRgb(e);if(e){for(var n=[e.r/255,e.g/255,e.b/255],o=0;o<n.length;++o)n[o]=n[o]<=.03928?n[o]/12.92:Math.pow((n[o]+.055)/1.055,2.4);t=.2126*n[0]+.7152*n[1]+.0722*n[2]}return.179<t?"black":"white"}function guid(){function e(){return(65536*(1+Math.random())|0).toString(16).substring(1)}return(e()+e()+"-"+e()+"-4"+e().substr(0,3)+"-"+e()+"-"+e()+e()+e()).toLowerCase()}(()=>{function e(e,t,n,o,r,i,s){e.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/),r.definePalette("sogo-green",{50:"eaf5e9",100:"cbe5c8",200:"aad6a5",300:"88c781",400:"66b86a",500:"56b04c",600:"4da143",700:"388e3c",800:"367d2e",900:"225e1b",A100:"fafafa",A200:"69f0ae",A400:"00e676",A700:"00c853",contrastDefaultColor:"dark",contrastLightColors:["300","400","500","600","700","800","900"]}),r.definePalette("sogo-blue",{50:"f0faf9",100:"e1f5f3",200:"ceebe8",300:"bfe0dd",400:"b2d6d3",500:"a1ccc8",600:"8ebfbb",700:"7db3b0",800:"639997",900:"4d8080",A100:"d4f7fa",A200:"c3f5fa",A400:"53e3f0",A700:"00b0c0",contrastDefaultColor:"light",contrastDarkColors:["50","100","200"]});e=r.extendPalette("grey",{1e3:"baa870"});r.definePalette("sogo-grey",e),r.theme("default").primaryPalette("sogo-blue",{default:"900","hue-1":"400","hue-2":"800","hue-3":"A700"}).accentPalette("sogo-green",{default:"500","hue-1":"A100","hue-2":"300","hue-3":"A700"}).backgroundPalette("sogo-grey"),r.registerStyles(["md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent,","md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent md-input-container[md-no-float] .md-input {"," background-color: '{{accent-hue-1}}';"," color: '{{foreground-1}}';","}","md-toolbar.md-hue-1:not(.md-menu-toolbar).md-accent md-icon {"," color: '{{foreground-1}}';"," fill: '{{foreground-1}}';","}"].join("")),r.registerStyles([".md-autocomplete-suggestions.md-3-line li p {"," color: '{{foreground-2}}';","}"].join("")),r.registerStyles([".sg-time-selection-indicator.sg-time-selected,",".sg-time-selection-indicator:hover.sg-time-selected,",".sg-time-selection-indicator.md-focus.sg-time-selected {"," background: '{{primary-500}}';","}",".sg-timepicker-open .sg-timepicker-icon {"," color: '{{primary-900}}';","}",".sg-timepicker-time,",".sg-timepicker-open .sg-timepicker-input-container {"," background: '{{background-hue-1}}';","}",".sg-timepicker-input-mask-opaque {"," box-shadow: 0 0 0 9999px '{{background-hue-1}}';","}"].join("")),r.registerStyles(["[ui-view=calendars] .hours {"," color: '{{primary-700}}';","}",".attendees .busy {"," background-color: '{{background-1000}}';","}",".attendees .event {"," background-color: '{{primary-300}}';","}"].join("")),r.registerStyles([".sg-message-thread {"," background-color: '{{primary-100}}';","}",".sg-message-thread-first {"," background-color: '{{primary-200}}';","}"].join("")),window.DebugEnabled||(t.debugEnabled(!1),n.debugInfoEnabled(!1),i.disableWarnings(),s.errorOnUnhandledRejections(!1),r.generateThemesOnDemand(!0)),o.interceptors.push("AuthInterceptor"),o.interceptors.push("ErrorInterceptor")}function a(t,e,n,o,r){var i=e.defer(),s=angular.element('<iframe class="ng-hide" src="'+t.UserFolderURL+'recover"></iframe>');return s.on("load",function(){var e=o.get("$state");2<r.config.attempt?(angular.element(t).off("beforeunload"),t.location.href=t.ApplicationBaseURL+e.href(e.current),i.reject()):n(function(){var e=o.get("$http");r.config.attempt?r.config.attempt++:r.config.attempt=1,e(r.config).then(function(e){i.resolve(e)},function(e){i.reject(e)}).finally(function(){n(s.remove,1e3)})},2e3)}),document.body.appendChild(s[0]),i.promise}function t(n,o,r,i){return{response:function(e){var t;return e&&/^application\/json/.test(e.config.headers.Accept)&&/^[\n\r\t ]*<!DOCTYPE html/.test(e.data)?n.usesCASAuthentication||n.usesSAML2Authentication?a(n,o,r,i,e):(t=i.get("$state"),angular.element(n).off("beforeunload"),t.href(t.current)?n.location.href=n.ApplicationBaseURL+t.href(t.current):n.location.href=n.ApplicationBaseURL,o.reject()):e}}}function n(n,o,r,i,s){return{responseError:function(e){var t;if(/^application\/json/.test(e.config.headers.Accept)){if((o.usesCASAuthentication||o.usesSAML2Authentication)&&(-1==e.status||500==e.status&&-1!==document.cookie.indexOf("cas-location")))return a(o,r,i,s,e);o.usesSAML2Authentication&&401==e.status&&!o.recovered?(t=s.get("$state"),angular.element(o).off("beforeunload"),o.recovered=!0,o.location.href=o.ApplicationBaseURL+t.href(t.current)):e.data&&e.data.quiet||n.$broadcast("http:Error",e)}return r.reject(e)}}}angular.module("SOGo.CommonLine truncated
//# sourceMappingURL=Common.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Common.js","sources":["Common/utils.js","Common/Common.app.js","Common/mdColors.app.js","Common/cssescape.filter.js","Common/decodeUri.filter.js","Common/encodeUri.filter.js","Common/ensureTarget.filter.js","Common/loc.filter.js","Common/range.filter.js","Common/txt2html.filter.js","Common/AclController.js","Common/navController.js","Common/Acl.service.js","Common/Authentication.service.js","Common/Dialog.service.js","Common/Gravatar.service.js","Common/Resource.service.js","Common/sgFocus.service.js","Common/sgHotkeys.service.js","Common/sgRippleClick.service.js","Common/User.service.js","Common/sgAutogrow.directive.js","Common/sgAvatarImage.directive.js","Common/sgBlockToggle.directive.js","Common/sgCheckmark.directive.js","Common/sgColorPicker.directive.js","Common/sgCompile.directive.js","Common/sgDatepickerReadonlyInput.directive.js","Common/sgDraggable.directive.js","Common/sgDroppable.directive.js","Common/sgEnter.directive.js","Common/sgEscape.directive.js","Common/sgFocus.directive.js","Common/sgFolderStylesheet.directive.js","Common/sgLabels.directive.js","Common/sgNoDirtyCheck.directive.js","Common/sgPlaceholder.directive.js","Common/sgQrCode.directive.js","Common/sgResetOnDisabled.directive.js","Common/sgRippleClick.directive.js","Common/sgSearch.directive.js","Common/sgSelectOnly.directive.js","Common/sgSubscribe.directive.js","Common/sgTimepicker.directive.js","Common/sgToggleGrid.directive.js"],"names":["l","i","j","key","arguments","value","args","labels","clabels","length","replace","m","val","parseFloat","isNaN","hexToRgb","hex","result","exec","r","parseInt","g","b","contrast","color","c","Math","pow","guid","S4","random","toString","substring","substr","toLowerCase","configure","$animateProvider","$logProvider","$compileProvider","$httpProvider","$mdThemingProvider","$mdAriaProvider","$qProvider","classNameFilter","definePalette","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","contrastDefaultColor","contrastLightColors","contrastDarkColors","greyMap","extendPalette","1000","theme","primaryPalette","default","hue-1","hue-2","hue-3","accentPalette","backgroundPalette","registerStyles","join","window","DebugEnabled","debugEnabled","debugInfoEnabled","disableWarnings","errorOnUnhandledRejections","generateThemesOnDemand","interceptors","push","renewTicket","$window","$q","$timeout","$injector","response","deferred","defer","iframe","angular","element","UserFolderURL","on","$state","get","config","attempt","off","location","href","ApplicationBaseURL","current","reject","$http","then","resolve","finally","remove","document","body","appendChild","promise","AuthInterceptor","test","headers","Accept","data","usesCASAuthentication","usesSAML2Authentication","ErrorInterceptor","$rootScope","responseError","rejection","status","cookie","indexOf","recovered","quiet","$broadcast","module","isPopup","classList","contains","baseURL","resourcesURL","ResourcesURL","activeUser","param","settings","login","UserLogin","identification","UserIdentification","email","UserEmail","language","UserLanguage","folderURL","isSuperUser","IsSuperUser","path","calendar","UserCalendarPath","contacts","UserContactsPath","mail","UserMailPath","preferences","UserPreferencesPath","administration","UserAdministrationPath","help","HelpURL","logoff","UserLogoffPath","minimumSearchLength","isNumber","constant","selection","xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl","print","toastPosition","factory","$inject","_$mdThemingProvider","runBlock","$interpolate","$document","$log","buildCssSelectors","selectors","fgDefault","bgDefault","bdrDefault","fgDefaultHue","bgDefaultHue","fgColor","bgColor","bdrColor","fgHue","bgHue","customSheet","style","head","querySelector","createElement","title","createTextNode","sheet","index","cssRules","deleteRule","addRule","fgInterpolate","bgInterpolate","themeName","paletteName","colorArray","hueName","context","palette","hue","insertRule","addBorderRule","bdrInterpolate","colorValue","forEach","_THEMES","_PALETTES","colors","primary","name","hues","run","cssEscape","CSS","escape","filter","decodeUri","decodeURIComponent","encodeUri","encodeURIComponent","ensureTarget","$sce","tree","find","attr","trustAs","html","n","res","txt2html","linkyFilter","text","String","rel","undefined","AclController","$mdDialog","Dialog","usersWithACL","User","folder","vm","this","selectUser","user","$event","target","parentNode","selectedUid","uid","selectedUser","inactive","$rights","users","userToAdd","searchText","folderClassName","isFunction","getClassName","templateName","getElementById","$isAnonymous","userFilter","$query","$filter","$acl","dry","closeModal","$resetUsersRights","hide","saveModal","$saveUsersRights","alert","confirmChange","confirmation","$confirmRights","showing","message","removeUser","$removeUser","addUser","$addUser","toggleAllRights","$toggleAllRights","hasNoRight","$hasNoRight","showRights","controller","navController",Line truncated
{"version":3,"file":"Common.js","sources":["Common/utils.js","Common/Common.app.js","Common/mdColors.app.js","Common/cssescape.filter.js","Common/decodeUri.filter.js","Common/encodeUri.filter.js","Common/ensureTarget.filter.js","Common/loc.filter.js","Common/range.filter.js","Common/txt2html.filter.js","Common/AclController.js","Common/navController.js","Common/Acl.service.js","Common/Authentication.service.js","Common/Dialog.service.js","Common/Gravatar.service.js","Common/Resource.service.js","Common/sgFocus.service.js","Common/sgHotkeys.service.js","Common/sgRippleClick.service.js","Common/User.service.js","Common/sgAutogrow.directive.js","Common/sgAvatarImage.directive.js","Common/sgBlockToggle.directive.js","Common/sgCheckmark.directive.js","Common/sgColorPicker.directive.js","Common/sgCompile.directive.js","Common/sgDatepickerReadonlyInput.directive.js","Common/sgDraggable.directive.js","Common/sgDroppable.directive.js","Common/sgEnter.directive.js","Common/sgEscape.directive.js","Common/sgFocus.directive.js","Common/sgFolderStylesheet.directive.js","Common/sgLabels.directive.js","Common/sgNoDirtyCheck.directive.js","Common/sgPlaceholder.directive.js","Common/sgQrCode.directive.js","Common/sgResetOnDisabled.directive.js","Common/sgRippleClick.directive.js","Common/sgSearch.directive.js","Common/sgSelectOnly.directive.js","Common/sgSubscribe.directive.js","Common/sgTimepicker.directive.js","Common/sgToggleGrid.directive.js"],"names":["l","i","j","key","arguments","value","args","labels","clabels","length","replace","m","val","parseFloat","isNaN","hexToRgb","hex","result","exec","r","parseInt","g","b","contrast","color","c","Math","pow","guid","S4","random","toString","substring","substr","toLowerCase","configure","$animateProvider","$logProvider","$compileProvider","$httpProvider","$mdThemingProvider","$mdAriaProvider","$qProvider","classNameFilter","definePalette","50","100","200","300","400","500","600","700","800","900","A100","A200","A400","A700","contrastDefaultColor","contrastLightColors","contrastDarkColors","greyMap","extendPalette","1000","theme","primaryPalette","default","hue-1","hue-2","hue-3","accentPalette","backgroundPalette","registerStyles","join","window","DebugEnabled","debugEnabled","debugInfoEnabled","disableWarnings","errorOnUnhandledRejections","generateThemesOnDemand","interceptors","push","renewTicket","$window","$q","$timeout","$injector","response","deferred","defer","iframe","angular","element","UserFolderURL","on","$state","get","config","attempt","off","location","href","ApplicationBaseURL","current","reject","$http","then","resolve","finally","remove","document","body","appendChild","promise","AuthInterceptor","test","headers","Accept","data","usesCASAuthentication","usesSAML2Authentication","ErrorInterceptor","$rootScope","responseError","rejection","status","cookie","indexOf","recovered","quiet","$broadcast","module","isPopup","classList","contains","baseURL","resourcesURL","ResourcesURL","activeUser","param","settings","login","UserLogin","identification","UserIdentification","email","UserEmail","language","UserLanguage","folderURL","isSuperUser","IsSuperUser","path","calendar","UserCalendarPath","contacts","UserContactsPath","mail","UserMailPath","preferences","UserPreferencesPath","administration","UserAdministrationPath","help","HelpURL","logoff","UserLogoffPath","minimumSearchLength","isNumber","constant","selection","xs","gt-xs","sm","gt-sm","md","gt-md","lg","gt-lg","xl","print","toastPosition","factory","$inject","_$mdThemingProvider","runBlock","$interpolate","$document","$log","buildCssSelectors","selectors","fgDefault","bgDefault","bdrDefault","fgDefaultHue","bgDefaultHue","fgColor","bgColor","bdrColor","fgHue","bgHue","customSheet","style","head","querySelector","createElement","title","createTextNode","sheet","index","cssRules","deleteRule","addRule","fgInterpolate","bgInterpolate","themeName","paletteName","colorArray","hueName","context","palette","hue","insertRule","addBorderRule","bdrInterpolate","colorValue","forEach","_THEMES","_PALETTES","colors","primary","name","hues","run","cssEscape","CSS","escape","filter","decodeUri","decodeURIComponent","encodeUri","encodeURIComponent","ensureTarget","$sce","tree","find","attr","trustAs","html","n","res","txt2html","linkyFilter","text","String","rel","undefined","AclController","$mdDialog","Dialog","usersWithACL","User","folder","vm","this","selectUser","user","$event","target","parentNode","selectedUid","uid","selectedUser","inactive","$rights","users","userToAdd","searchText","folderClassName","isFunction","getClassName","templateName","getElementById","$isAnonymous","userFilter","$query","$filter","$acl","dry","closeModal","$resetUsersRights","hide","saveModal","$saveUsersRights","alert","confirmChange","confirmation","$confirmRights","showing","message","removeUser","$removeUser","addUser","$addUser","toggleAllRights","$toggleAllRights","hasNoRight","$hasNoRight","showRights","controller","navController",Line truncated
@@ -149,12 +149,20 @@
perr == passwordPolicyConfig.PolicyChangeAfterReset) {
response = {
passwordexpired: 1,
userPolicies: data.additionalInfos.userPolicies,
url: redirectUrl(username, domain)
};
}
else if (perr == passwordPolicyConfig.PolicyChangeAfterReset) {
response = {
passwordexpired: 1,
userPolicies: data.additionalInfos.userPolicies,
url: redirectUrl(username, domain)
};
} else if (perr == passwordPolicyConfig.PolicyInsufficientPasswordQuality) {
response = {
passwordexpired: 2,
userPolicies: data.additionalInfos.userPolicies,
url: redirectUrl(username, domain)
};
}
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,t){e.state("app",{url:"/addressbooks",abstract:!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:o}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:s}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",params:{refs:{array:!0}},views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:r}}).state("app.addressbook.card",{url:"/:cardId",abstract:!0,views:{card:{template:"<ui-view/>"}},resolve:{stateCard:d},onEnter:n,onExit:i}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),t.rules.otherwise({state:"app.addressbook",params:{addressbookId:"personal"}})}function o(e){return e.$findAll(window.contactFolders)}function s(e,t,o,s){s=_.find(s.$findAll(),function(e){return e.id==o.addressbookId});return s?(delete s.selectedCard,s.$reload(),s):e.reject("Addressbook "+o.addressbookId+" not found")}function r(e,t,o){var s="v"+e.contactType,o=new o({pid:e.addressbookId,c_component:s,refs:e.refs});return t.selectedCard=!0,o}function d(t,o,s){return s.$futureAddressBookData.then(function(){var e=_.find(s.$cards,function(e){return e.id==o.cardId});if(e)return e.$reload();t.go("app.addressbook")})}function n(e,t){t.selectedCard=e.cardId}function i(e){delete s.selectedCard}function t(e,t,o,s){e.DebugEnabled||s.defaultErrorHandler(function(){}),o.onError({to:"app.**"},function(e){"app"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),s.go("app.addressbook",{addressbookId:"personal"}))})}angular.module("SOGo.ContactsUI",["ngCookies","ui.router","angularFileUpload","sgCkeditor","SOGo.Common","SOGo.PreferencesUI","SOGo.MailerUI"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],o.$inject=["AddressBook"],s.$inject=["$q","$state","$stateParams","AddressBook"],r.$inject=["$stateParams","stateAddressbook","Card"],d.$inject=["$state","$stateParams","stateAddressbook"],n.$inject=["$stateParams","stateAddressbook"],i.$inject=["stateAddressbook"],t.$inject=["$window","$log","$transitions","$state"]}(),function(){"use strict";function e(n,i,o,a,e,c,u,t,h,r,s,d,f,p,m,$){var g,k=this,C=[],b=angular.element(o.document).find("title").attr("sg-default")||"SOGo";function v(e){var t=k.selectedFolder.$selectedCardIndex();return angular.isDefined(t)?(t--,0<k.selectedFolder.$topIndex&&k.selectedFolder.$topIndex--):(t=k.selectedFolder.$cards.length()-1,k.selectedFolder.$topIndex=k.selectedFolder.getLength()),-1<t&&k.selectCard(k.selectedFolder.$cards[t]),e.preventDefault(),t}function w(e){var t=k.selectedFolder.$selectedCardIndex();return angular.isDefined(t)?(t++,k.selectedFolder.$topIndex<k.selectedFolder.$cards.length&&k.selectedFolder.$topIndex++):t=0,t<k.selectedFolder.$cards.length?k.selectCard(k.selectedFolder.$cards[t]):t=-1,e.preventDefault(),t}function y(e){var t;k.selectedFolder.hasSelectedCard()&&0<=(t=v(e))&&toggleCardSelection(e,k.selectedFolder.$cards[t])}function F(e){var t;k.selectedFolder.hasSelectedCard()&&0<=(t=w(e))&&toggleCardSelection(e,k.selectedFolder.$cards[t])}function A(e,t){var o,s,r=k.selectedFolder,d=!1,n=r.$selectedCards(),i=_.filter(n,function(e){return e.$isCard()});i.length!=n.length&&u.show(u.simple().textContent(l("Lists can't be moved or copied.")).position(f.toastPosition).hideDelay(2e3)),i.length&&("copy"==e?(o=r.$copyCards(i,t),s=l("%{0} card(s) copied",i.length)):(o=r.$moveCards(i,t),s=l("%{0} card(s) moved",i.length),n=_.map(i,"id"),d=r.selectedCard&&0<=n.indexOf(r.selectedCard)),o.then(function(){d&&a.go("app.addressbook"),u.show(u.simple().textContent(s).position(f.toastPosition).hideDelay(2e3))}))}g={c_cn:"Name",c_sn:"Lastname",c_givenname:"Firstname",c_mail:"Email",c_screenname:"Screen Name",c_o:"Organization",c_telephonenumber:"Preferred Phone"},this.$onInit=function(){var t;r.selectedFolder=$,this.service=r,this.selectedFolder=$,this.mode={search:!1,multiple:0},this.allSelected=!1,(t=C).push(p.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:angular.bind(k,k.searchMode)})),t.push(p.createHotkey({key:l("key_create_card"),description:l("Create a new address book card"),callback:angular.bind(k,k.newComponent,"card")})),t.push(p.createHotkey({key:l("key_create_list"),description:l("Create a new list"),callback:angular.bind(k,k.newComponent,"list")})),t.push(p.createHotkey({key:"space",description:l("Toggle item"),callback:angular.bind(k,k.toggleCardSelection)})),t.push(p.createHotkey({keLine truncated
(()=>{function e(e,t){e.state("app",{url:"/addressbooks",abstract:!0,views:{addressbooks:{templateUrl:"UIxContactFoldersView",controller:"AddressBooksController",controllerAs:"app"}},resolve:{stateAddressbooks:o}}).state("app.addressbook",{url:"/:addressbookId",views:{addressbook:{templateUrl:"addressbook",controller:"AddressBookController",controllerAs:"addressbook"}},resolve:{stateAddressbook:s}}).state("app.addressbook.new",{url:"/{contactType:(?:card|list)}/new",params:{refs:{array:!0}},views:{card:{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}},resolve:{stateCard:r}}).state("app.addressbook.card",{url:"/:cardId",abstract:!0,views:{card:{template:"<ui-view/>"}},resolve:{stateCard:d},onEnter:n,onExit:i}).state("app.addressbook.card.view",{url:"/view",views:{"card@app.addressbook":{templateUrl:"UIxContactViewTemplate",controller:"CardController",controllerAs:"editor"}}}).state("app.addressbook.card.editor",{url:"/edit",views:{"card@app.addressbook":{templateUrl:"UIxContactEditorTemplate",controller:"CardController",controllerAs:"editor"}}}),t.rules.otherwise({state:"app.addressbook",params:{addressbookId:"personal"}})}function o(e){return e.$findAll(window.contactFolders)}function s(e,t,o,s){s=_.find(s.$findAll(),function(e){return e.id==o.addressbookId});return s?(delete s.selectedCard,s.$reload(),s):e.reject("Addressbook "+o.addressbookId+" not found")}function r(e,t,o){var s="v"+e.contactType,o=new o({pid:e.addressbookId,c_component:s,refs:e.refs});return t.selectedCard=!0,o}function d(t,o,s){return s.$futureAddressBookData.then(function(){var e=_.find(s.$cards,function(e){return e.id==o.cardId});if(e)return e.$reload();t.go("app.addressbook")})}function n(e,t){t.selectedCard=e.cardId}function i(e){delete s.selectedCard}function t(e,t,o,s){e.DebugEnabled||s.defaultErrorHandler(function(){}),o.onError({to:"app.**"},function(e){"app"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),s.go("app.addressbook",{addressbookId:"personal"}))})}angular.module("SOGo.ContactsUI",["ngCookies","ui.router","angularFileUpload","sgCkeditor","SOGo.Common","SOGo.PreferencesUI","SOGo.MailerUI"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],o.$inject=["AddressBook"],s.$inject=["$q","$state","$stateParams","AddressBook"],r.$inject=["$stateParams","stateAddressbook","Card"],d.$inject=["$state","$stateParams","stateAddressbook"],n.$inject=["$stateParams","stateAddressbook"],i.$inject=["stateAddressbook"],t.$inject=["$window","$log","$transitions","$state"]})(),(()=>{function e(n,i,o,a,e,c,u,t,h,r,s,d,f,p,m,$){var g,k=this,C=[],b=angular.element(o.document).find("title").attr("sg-default")||"SOGo";function v(e){var t=k.selectedFolder.$selectedCardIndex();return angular.isDefined(t)?(t--,0<k.selectedFolder.$topIndex&&k.selectedFolder.$topIndex--):(t=k.selectedFolder.$cards.length()-1,k.selectedFolder.$topIndex=k.selectedFolder.getLength()),-1<t&&k.selectCard(k.selectedFolder.$cards[t]),e.preventDefault(),t}function w(e){var t=k.selectedFolder.$selectedCardIndex();return angular.isDefined(t)?(t++,k.selectedFolder.$topIndex<k.selectedFolder.$cards.length&&k.selectedFolder.$topIndex++):t=0,t<k.selectedFolder.$cards.length?k.selectCard(k.selectedFolder.$cards[t]):t=-1,e.preventDefault(),t}function y(e){var t;k.selectedFolder.hasSelectedCard()&&0<=(t=v(e))&&toggleCardSelection(e,k.selectedFolder.$cards[t])}function F(e){var t;k.selectedFolder.hasSelectedCard()&&0<=(t=w(e))&&toggleCardSelection(e,k.selectedFolder.$cards[t])}function A(e,t){var o,s,r=k.selectedFolder,d=!1,n=r.$selectedCards(),i=_.filter(n,function(e){return e.$isCard()});i.length!=n.length&&u.show(u.simple().textContent(l("Lists can't be moved or copied.")).position(f.toastPosition).hideDelay(2e3)),i.length&&("copy"==e?(o=r.$copyCards(i,t),s=l("%{0} card(s) copied",i.length)):(o=r.$moveCards(i,t),s=l("%{0} card(s) moved",i.length),n=_.map(i,"id"),d=r.selectedCard&&0<=n.indexOf(r.selectedCard)),o.then(function(){d&&a.go("app.addressbook"),u.show(u.simple().textContent(s).position(f.toastPosition).hideDelay(2e3))}))}g={c_cn:"Name",c_sn:"Lastname",c_givenname:"Firstname",c_mail:"Email",c_screenname:"Screen Name",c_o:"Organization",c_telephonenumber:"Preferred Phone"},this.$onInit=function(){var t;r.selectedFolder=$,this.service=r,this.selectedFolder=$,this.mode={search:!1,multiple:0},this.allSelected=!1,(t=C).push(p.createHotkey({key:l("hotkey_search"),description:l("Search"),callback:angular.bind(k,k.searchMode)})),t.push(p.createHotkey({key:l("key_create_card"),description:l("Create a new address book card"),callback:angular.bind(k,k.newComponent,"card")})),t.push(p.createHotkey({key:l("key_create_list"),description:l("Create a new list"),callback:angular.bind(k,k.newComponent,"list")})),t.push(p.createHotkey({key:"space",description:l("Toggle item"),callback:angular.bind(k,k.toggleCardSelection)})),t.push(p.createHotkey({key:"shift+space",description:l("TogglLine truncated
//# sourceMappingURL=Contacts.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","params","refs","array","card","stateCard","stateNewCard","template","onEnter","onEnterCard","onExit","onExitCard","card@app.addressbook","rules","otherwise","addressbookId","AddressBook","$findAll","window","contactFolders","$q","$state","$stateParams","_","find","id","selectedCard","$reload","reject","Card","tag","contactType","pid","c_component","$futureAddressBookData","then","$cards","cardObject","cardId","go","stateMailbox","runBlock","$window","$log","$transitions","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","detail","angular","module","config","run","$inject","AddressBookController","$scope","$timeout","$mdDialog","$mdToast","Account","focus","Dialog","sgConstant","sgHotkeys","sortLabels","vm","this","hotkeys","defaultWindowTitle","element","document","attr","_nextCard","$event","index","selectedFolder","$selectedCardIndex","isDefined","$topIndex","length","getLength","selectCard","preventDefault","_previousCard","_addNextCardToSelection","hasSelectedCard","toggleCardSelection","_addPreviousCardToSelection","_selectedCardsOperation","operation","dstId","promise","success","srcFolder","clearCardView","allCards","$selectedCards","cards","filter","$isCard","show","simple","textContent","l","position","toastPosition","hideDelay","$copyCards","$moveCards","ids","map","indexOf","c_cn","c_sn","c_givenname","c_mail","c_screenname","c_o","c_telephonenumber","$onInit","keys","service","mode","search","multiple","allSelected","push","createHotkey","key","description","callback","bind","searchMode","newComponent","forEach","hotkey","confirmDeleteSelectedCards","registerHotkey","$on","deregisterHotkey","$watch","selectedAddressbookName","title","centerIsClose","navController_centerIsClose","selectedIndex","nextSelectedIndex","i","folder","$selectedCard","selected","shiftKey","$selectedCount","idsMap","Math","min","max","stopPropagation","type","unselectCards","selectedCards","acls","objectEraser","size","confirm","ok","$deleteCards","copySelectedCards","moveSelectedCards","selectAll","sort","field","$query","$filter","sortedBy","ascending","asc","cancelSearch","newMessage","recipients","recipientsField","accounts","account","o","onCompleteDeferred","defer","$getMailboxes","mailboxes","$newMessage","message","editable","parent","body","targetEvent","clickOutsideToClose","escapeToClose","onComplete","scope","locals","stateParent","stateAccount","stateMessage","onCompletePromise","newMessageWithRecipient","recipient","fn","newMessageWithSelectedCards","promises","$isList","expandable","ref","email","$shortFormat","$loaded","STATUS","LOADED","$loadCard","$futureHeadersData","loadedCard","all","uniq","newListWithSelectedCards","$$email","futureHeadersData","$$resource","post","$unwrapHeaders","uniqBy","reference","AddressBooksController","$rootScope","$mdMedia","$mdSidenav","FileUploader","Settings","User","activeUser","saving","confirmDelete","$onDestroy","select","editMode","value","close","newAddressbook","prompt","isEditable","isRemote","owner","UserLogin","$id","$add","catch","noop","edit","originalAddressbook","$omit","revertEditing","save","$rename","data","finally","isSubscription","$delete","status","alert","response","statusText","importCards","CardsImportDialogController","filterByExtension","item","isTextFile","test","join","uploader","ApplicationBaseURL","autoUpload","queueLimit","filters","onSuccessItem","headers","msg","hide","imported","onErrorItem","showLinks","LinksDialogController","urls","when","$reloadAll","showProperties","PropertiesDialogController","srcAddressBook","saveProperties","$save","init","cancel","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","$subscribe","isDroppableFolder","dstFolder","isOwned","objectCreator","dragSelectedCards","CardController","sgSettings","currentFolder","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","showRawSource","emailRE","String","hasCertificate","$certificate","crt","certificate","transformCategory","input","isString","removeAttribute","form","attribute","$setDirty","addOrg","$addOrg","removeCertificate","$removeCertificate","addBirthday","birthday","Date","addScreenName","$addScreenName","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","canAddCustomField","customFields","addCustomField","availableKeys","pullAll","deleteCustomField","addAddress","$addAddress","userFilter","excludedCards","minimumSearchLength","dry","excludeLists","options"Line truncated
{"version":3,"file":"Contacts.js","sources":["Contacts/Contacts.app.js","Contacts/AddressBookController.js","Contacts/AddressBooksController.js","Contacts/CardController.js","Contacts/sgAddress.directive.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","url","abstract","views","addressbooks","templateUrl","controller","controllerAs","resolve","stateAddressbooks","addressbook","stateAddressbook","params","refs","array","card","stateCard","stateNewCard","template","onEnter","onEnterCard","onExit","onExitCard","card@app.addressbook","rules","otherwise","addressbookId","AddressBook","$findAll","window","contactFolders","$q","$state","$stateParams","_","find","id","selectedCard","$reload","reject","Card","tag","contactType","pid","c_component","$futureAddressBookData","then","$cards","cardObject","cardId","go","stateMailbox","runBlock","$window","$log","$transitions","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","detail","angular","module","config","run","$inject","AddressBookController","$scope","$timeout","$mdDialog","$mdToast","Account","focus","Dialog","sgConstant","sgHotkeys","sortLabels","vm","this","hotkeys","defaultWindowTitle","element","document","attr","_nextCard","$event","index","selectedFolder","$selectedCardIndex","isDefined","$topIndex","length","getLength","selectCard","preventDefault","_previousCard","_addNextCardToSelection","hasSelectedCard","toggleCardSelection","_addPreviousCardToSelection","_selectedCardsOperation","operation","dstId","promise","success","srcFolder","clearCardView","allCards","$selectedCards","cards","filter","$isCard","show","simple","textContent","l","position","toastPosition","hideDelay","$copyCards","$moveCards","ids","map","indexOf","c_cn","c_sn","c_givenname","c_mail","c_screenname","c_o","c_telephonenumber","$onInit","keys","service","mode","search","multiple","allSelected","push","createHotkey","key","description","callback","bind","searchMode","newComponent","forEach","hotkey","confirmDeleteSelectedCards","registerHotkey","$on","deregisterHotkey","$watch","selectedAddressbookName","title","centerIsClose","navController_centerIsClose","selectedIndex","nextSelectedIndex","i","folder","$selectedCard","selected","shiftKey","$selectedCount","idsMap","Math","min","max","stopPropagation","type","unselectCards","selectedCards","acls","objectEraser","size","confirm","ok","$deleteCards","copySelectedCards","moveSelectedCards","selectAll","sort","field","$query","$filter","sortedBy","ascending","asc","cancelSearch","newMessage","recipients","recipientsField","accounts","account","o","onCompleteDeferred","defer","$getMailboxes","mailboxes","$newMessage","message","editable","parent","body","targetEvent","clickOutsideToClose","escapeToClose","onComplete","scope","locals","stateParent","stateAccount","stateMessage","onCompletePromise","newMessageWithRecipient","recipient","fn","newMessageWithSelectedCards","promises","$isList","expandable","ref","email","$shortFormat","$loaded","STATUS","LOADED","$loadCard","$futureHeadersData","loadedCard","all","uniq","newListWithSelectedCards","$$email","futureHeadersData","$$resource","post","$unwrapHeaders","uniqBy","reference","AddressBooksController","$rootScope","$mdMedia","$mdSidenav","FileUploader","Settings","User","activeUser","saving","confirmDelete","$onDestroy","select","editMode","value","close","newAddressbook","prompt","isEditable","isRemote","owner","UserLogin","$id","$add","catch","noop","edit","originalAddressbook","$omit","revertEditing","save","$rename","data","finally","isSubscription","$delete","status","alert","response","statusText","importCards","CardsImportDialogController","filterByExtension","item","isTextFile","test","join","uploader","ApplicationBaseURL","autoUpload","queueLimit","filters","onSuccessItem","headers","msg","hide","imported","onErrorItem","showLinks","LinksDialogController","urls","when","$reloadAll","showProperties","PropertiesDialogController","srcAddressBook","saveProperties","$save","init","cancel","share","$acl","$users","usersWithACL","users","subscribeToFolder","addressbookData","$subscribe","isDroppableFolder","dstFolder","isOwned","objectCreator","dragSelectedCards","CardController","sgSettings","currentFolder","allEmailTypes","$EMAIL_TYPES","allTelTypes","$TEL_TYPES","allUrlTypes","$URL_TYPES","allAddressTypes","$ADDRESS_TYPES","categories","userFilterResults","showRawSource","emailRE","String","hasCertificate","$certificate","crt","certificate","transformCategory","input","isString","removeAttribute","form","attribute","$setDirty","addOrg","$addOrg","removeCertificate","$removeCertificate","addBirthday","birthday","Date","addScreenName","$addScreenName","addEmail","$addEmail","addPhone","$addPhone","addUrl","$addUrl","canAddCustomField","customFields","addCustomField","availableKeys","pullAll","deleteCustomField","addAddress","$addAddress","userFilter","excludedCards","minimumSearchLength","dry","excludeLists","options"Line truncated
@@ -1,2 +1,2 @@
!function(){"use strict";function l(e){var t;"function"!=typeof e.then?(this.init(e),this.name&&!this.id?(t=l.$$resource.create("createFolder",this.name),this.$unwrap(t),this.acls={objectEditor:1,objectCreator:1,objectEraser:1}):this.id&&(this.$acl=new l.$$Acl("Contacts/"+this.id))):this.$unwrap(e)}l.$factory=["$q","$timeout","$log","sgSettings","sgAddressBook_PRELOAD","Resource","Card","Acl","Preferences",function(e,t,i,r,s,n,o,a,d){return angular.extend(l,{$q:e,$timeout:t,$log:i,PRELOAD:s,$$resource:new n(r.activeUser("folderURL")+"Contacts",r.activeUser()),$Card:o,$$Acl:a,$Preferences:d,$query:{value:"",sort:"c_cn",asc:1},activeUser:r.activeUser(),$addressbooks:[],$subscriptions:[],$remotes:[],selectedFolder:null,$refreshTimeout:null}),d.settings.Contact.SortingState&&(l.$query.sort=d.settings.Contact.SortingState[0],l.$query.asc=parseInt(d.settings.Contact.SortingState[1])),l}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common","SOGo.PreferencesUI"])}angular.module("SOGo.ContactsUI").constant("sgAddressBook_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("AddressBook",l.$factory),l.$filterAll=function(n,o,e,a){var t={search:n};return n?(angular.isUndefined(o)&&(o=[]),angular.extend(t,e),l.$$resource.fetch(null,"allContactSearch",t).then(function(e){for(var t,i=function(e){return void 0===this.sourceID||void 0===e.sourceid?this.id==e.id:this.id==e.id&&this.sourceID==e.sourceid},r=a?_.filter(e.contacts,function(e){return _.isUndefined(_.find(a,_.bind(i,e)))}):e.contacts,s=o.length-1;0<=s;s--)t=o[s],_.isUndefined(_.find(r,_.bind(i,t)))&&o.splice(s,1);return _.forEach(r,function(e,t){_.isUndefined(_.find(o,_.bind(i,e)))&&(e=new l.$Card(_.mapKeys(e,function(e,t){return t.toLowerCase()}),n),o.splice(t,0,e))}),o})):(o=[],l.$q.when(o))},l.$add=function(t){var e=t.isSubscription?this.$subscriptions:this.$addressbooks,i=_.find(e,function(e){return"personal"==t.id||"personal"!=e.id&&1===e.name.localeCompare(t.name)}),i=i?_.indexOf(_.map(e,"id"),i.id):1;e.splice(i,0,t)},l.$findAll=function(e){var i=this;if(e&&e.length)this.$addressbooks.splice(0,this.$addressbooks.length),this.$subscriptions.splice(0,this.$subscriptions.length),this.$remotes.splice(0,this.$remotes.length),angular.forEach(e,function(e,t){e=new l(e);(e.isRemote?i.$remotes:e.isSubscription?i.$subscriptions:i.$addressbooks).push(e)});else if(angular.isArray(e))return l.$$resource.fetch("addressbooksList").then(function(e){return l.$findAll(e.addressbooks)});return _.union(this.$addressbooks,this.$subscriptions,this.$remotes)},l.$subscribe=function(e,t){var i=this;return l.$$resource.userResource(e).fetch(t,"subscribe").then(function(t){var e=new l(t);return _.isUndefined(_.find(i.$subscriptions,function(e){return e.id==t.id}))&&l.$add(e),e})},l.$reloadAll=function(){var i=this;return l.$$resource.fetch("addressbooksList").then(function(e){_.forEach(e.addressbooks,function(t){var e=t.isRemote?i.$remotes:t.owner!=l.activeUser.login?i.$subscriptions:i.$addressbooks,e=_.find(e,function(e){return e.id==t.id});e&&e.init(t)})})},l.prototype.init=function(e,t){var i=this;this.$$cards||(this.$$cards=[]),this.idsMap={},this.$cards=[],angular.forEach(e,function(e,t){"headers"!=t&&"cards"!=t&&(i[t]=e)}),this.isOwned=l.activeUser.isSuperUser||this.owner==l.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=l.activeUser.login},l.prototype.$id=function(){return this.id?l.$q.when(this.id):this.$futureAddressBookData.then(function(e){return e?e.id:l.$q.reject()})},l.prototype.getLength=function(){return this.$cards.length},l.prototype.getItemAtIndex=function(e){var t;return!this.$isLoading&&0<=e&&e<this.$cards.length&&(t=this.$cards[e],this.$lastVisibleIndex=Math.max(0,e-3),this.$loadCard(t))?t:null},l.prototype.$loadCard=function(e){var t,i,r=e.id,s=this.idsMap[r],n=this.$cards.length,r=!1;if(angular.isUndefined(this.ids)&&e.id)r=!0;else if(angular.isDefined(s)&&s<this.$cards.length&&(e.$loaded!=l.$Card.STATUS.NOT_LOADED&&(r=!0),t=Math.min(s+l.PRELOAD.LOOKAHEAD,n-1),this.$cards[t].$loaded!=l.$Card.STATUS.NOT_LOADED?(e=Math.max(s-l.PRELOAD.LOOKAHEAD,0),this.$cards[e].$loaded!=l.$Card.STATUS.LOADED&&(t=s,s=Math.max(s-l.PRELOAD.SIZE,0))):t=Math.min(s+l.PRELOAD.SIZE,n-1),this.$cards[s].$loaded==l.$Card.STATUS.NOT_LOADED||this.$cards[t].$loaded==l.$Card.STATUS.NOT_LOADED)){for(i=[];s<t&&s<n;s++)this.$cards[s].$loaded!=l.$Card.STATUS.NOT_LOADED?t++:(i.push(this.$cards[s].id),this.$cards[s].$loaded=l.$Card.STATUS.LOADING);l.$log.debug("Loading Ids "+i.join(" ")+" ("+i.length+" cards)"),0<i.length&&(e=l.$$resource.post(this.id,"headers",{ids:i}),this.$unwrapHeaders(e))}return r},l.prototype.hasSelectedCard=function(){return angular.isDefined(this.selectedCard)},l.prototype.isSelectedCard=function(e){return this.hasSelectedCard()&&this.selectedCard==e},l.prototype.$selectedCard=function(){var t=this;return _.find(this.$cards,function(e){return e.id==t.selectedCard})},l.prototype.$selectedCardIndex=function(){return _.indexOfLine truncated
(()=>{function l(e){var t;"function"!=typeof e.then?(this.init(e),this.name&&!this.id?(t=l.$$resource.create("createFolder",this.name),this.$unwrap(t),this.acls={objectEditor:1,objectCreator:1,objectEraser:1}):this.id&&(this.$acl=new l.$$Acl("Contacts/"+this.id))):this.$unwrap(e)}l.$factory=["$q","$timeout","$log","sgSettings","sgAddressBook_PRELOAD","Resource","Card","Acl","Preferences",function(e,t,i,r,s,n,o,a,d){return angular.extend(l,{$q:e,$timeout:t,$log:i,PRELOAD:s,$$resource:new n(r.activeUser("folderURL")+"Contacts",r.activeUser()),$Card:o,$$Acl:a,$Preferences:d,$query:{value:"",sort:"c_cn",asc:1},activeUser:r.activeUser(),$addressbooks:[],$subscriptions:[],$remotes:[],selectedFolder:null,$refreshTimeout:null}),d.settings.Contact.SortingState&&(l.$query.sort=d.settings.Contact.SortingState[0],l.$query.asc=parseInt(d.settings.Contact.SortingState[1])),l}];try{angular.module("SOGo.ContactsUI")}catch(e){angular.module("SOGo.ContactsUI",["SOGo.Common","SOGo.PreferencesUI"])}angular.module("SOGo.ContactsUI").constant("sgAddressBook_PRELOAD",{LOOKAHEAD:50,SIZE:100}).factory("AddressBook",l.$factory),l.$filterAll=function(n,o,e,a){var t={search:n};return n?(angular.isUndefined(o)&&(o=[]),angular.extend(t,e),l.$$resource.fetch(null,"allContactSearch",t).then(function(e){for(var t,i=function(e){return void 0===this.sourceID||void 0===e.sourceid?this.id==e.id:this.id==e.id&&this.sourceID==e.sourceid},r=a?_.filter(e.contacts,function(e){return _.isUndefined(_.find(a,_.bind(i,e)))}):e.contacts,s=o.length-1;0<=s;s--)t=o[s],_.isUndefined(_.find(r,_.bind(i,t)))&&o.splice(s,1);return _.forEach(r,function(e,t){_.isUndefined(_.find(o,_.bind(i,e)))&&(e=new l.$Card(_.mapKeys(e,function(e,t){return t.toLowerCase()}),n),o.splice(t,0,e))}),o})):(o=[],l.$q.when(o))},l.$add=function(t){var e=t.isSubscription?this.$subscriptions:this.$addressbooks,i=_.find(e,function(e){return"personal"==t.id||"personal"!=e.id&&1===e.name.localeCompare(t.name)}),i=i?_.indexOf(_.map(e,"id"),i.id):1;e.splice(i,0,t)},l.$findAll=function(e){var i=this;if(e&&e.length)this.$addressbooks.splice(0,this.$addressbooks.length),this.$subscriptions.splice(0,this.$subscriptions.length),this.$remotes.splice(0,this.$remotes.length),angular.forEach(e,function(e,t){e=new l(e);(e.isRemote?i.$remotes:e.isSubscription?i.$subscriptions:i.$addressbooks).push(e)});else if(angular.isArray(e))return l.$$resource.fetch("addressbooksList").then(function(e){return l.$findAll(e.addressbooks)});return _.union(this.$addressbooks,this.$subscriptions,this.$remotes)},l.$subscribe=function(e,t){var i=this;return l.$$resource.userResource(e).fetch(t,"subscribe").then(function(t){var e=new l(t);return _.isUndefined(_.find(i.$subscriptions,function(e){return e.id==t.id}))&&l.$add(e),e})},l.$reloadAll=function(){var i=this;return l.$$resource.fetch("addressbooksList").then(function(e){_.forEach(e.addressbooks,function(t){var e=t.isRemote?i.$remotes:t.owner!=l.activeUser.login?i.$subscriptions:i.$addressbooks,e=_.find(e,function(e){return e.id==t.id});e&&e.init(t)})})},l.prototype.init=function(e,t){var i=this;this.$$cards||(this.$$cards=[]),this.idsMap={},this.$cards=[],angular.forEach(e,function(e,t){"headers"!=t&&"cards"!=t&&(i[t]=e)}),this.isOwned=l.activeUser.isSuperUser||this.owner==l.activeUser.login,this.isSubscription=!this.isRemote&&this.owner!=l.activeUser.login},l.prototype.$id=function(){return this.id?l.$q.when(this.id):this.$futureAddressBookData.then(function(e){return e?e.id:l.$q.reject()})},l.prototype.getLength=function(){return this.$cards.length},l.prototype.getItemAtIndex=function(e){var t;return!this.$isLoading&&0<=e&&e<this.$cards.length&&(t=this.$cards[e],this.$lastVisibleIndex=Math.max(0,e-3),this.$loadCard(t))?t:null},l.prototype.$loadCard=function(e){var t,i,r=e.id,s=this.idsMap[r],n=this.$cards.length,r=!1;if(angular.isUndefined(this.ids)&&e.id)r=!0;else if(angular.isDefined(s)&&s<this.$cards.length&&(e.$loaded!=l.$Card.STATUS.NOT_LOADED&&(r=!0),t=Math.min(s+l.PRELOAD.LOOKAHEAD,n-1),this.$cards[t].$loaded!=l.$Card.STATUS.NOT_LOADED?(e=Math.max(s-l.PRELOAD.LOOKAHEAD,0),this.$cards[e].$loaded!=l.$Card.STATUS.LOADED&&(t=s,s=Math.max(s-l.PRELOAD.SIZE,0))):t=Math.min(s+l.PRELOAD.SIZE,n-1),this.$cards[s].$loaded==l.$Card.STATUS.NOT_LOADED||this.$cards[t].$loaded==l.$Card.STATUS.NOT_LOADED)){for(i=[];s<t&&s<n;s++)this.$cards[s].$loaded!=l.$Card.STATUS.NOT_LOADED?t++:(i.push(this.$cards[s].id),this.$cards[s].$loaded=l.$Card.STATUS.LOADING);l.$log.debug("Loading Ids "+i.join(" ")+" ("+i.length+" cards)"),0<i.length&&(e=l.$$resource.post(this.id,"headers",{ids:i}),this.$unwrapHeaders(e))}return r},l.prototype.hasSelectedCard=function(){return angular.isDefined(this.selectedCard)},l.prototype.isSelectedCard=function(e){return this.hasSelectedCard()&&this.selectedCard==e},l.prototype.$selectedCard=function(){var t=this;return _.find(this.$cards,function(e){return e.id==t.selectedCard})},l.prototype.$selectedCardIndex=function(){return _.indexOf(_.map(this.$cards,Line truncated
//# sourceMappingURL=Contacts.services.js.map
@@ -1 +1 @@
{"version":3,"file":"Contacts.services.js","sources":["Contacts/AddressBook.service.js","Contacts/Card.service.js"],"names":["AddressBook","futureAddressBookData","newAddressBookData","then","this","init","name","id","$$resource","create","$unwrap","acls","objectEditor","objectCreator","objectEraser","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","AddressBook_PRELOAD","Resource","Card","Acl","Preferences","angular","extend","PRELOAD","activeUser","$Card","$Preferences","$query","value","sort","asc","$addressbooks","$subscriptions","$remotes","selectedFolder","$refreshTimeout","settings","Contact","SortingState","parseInt","module","e","constant","LOOKAHEAD","SIZE","factory","$filterAll","search","cards","options","excludedCards","params","isUndefined","fetch","response","card","compareIds","data","undefined","sourceID","sourceid","results","_","filter","contacts","find","bind","index","length","splice","forEach","mapKeys","key","toLowerCase","when","$add","addressbook","list","isSubscription","sibling","o","localeCompare","i","indexOf","map","$findAll","_this","isRemote","push","isArray","addressbooks","union","$subscribe","uid","path","userResource","addressbookData","$reloadAll","group","owner","login","prototype","$$cards","idsMap","$cards","isOwned","isSuperUser","$id","$futureAddressBookData","reject","getLength","getItemAtIndex","$isLoading","$lastVisibleIndex","Math","max","$loadCard","endIndex","ids","cardId","startIndex","loaded","isDefined","$loaded","STATUS","NOT_LOADED","min","LOADED","LOADING","debug","join","futureHeadersData","post","$unwrapHeaders","hasSelectedCard","selectedCard","isSelectedCard","$selectedCard","$selectedCardIndex","$selectedCards","selected","$selectedCount","count","$startRefreshTimeout","cancel","f","refreshViewCheck","defaults","SOGoRefreshViewCheck","$reload","timeInterval","$filter","query","dry","partial","addressbookId","futureData","fields","idFieldIndex","headers","invokeMap","pid","oldIndex","findIndex","removedCards","zipObject","$rename","$save","$delete","promise","d","defer","remove","resolve","$_deleteCards","forEachRight","selectedIndex","$deleteCards","uids","$copyCards","folder","$moveCards","save","$omit","exportCards","selectedOnly","type","filename","selectedCards","download","open","downloadProvisioningProfile","realOwnerId","urls","cardDavURL","ownerPaths","substring","split","resource","$topIndex","reduce","cardObject","isError","isObject","deferred","$futureHeadersData","j","cardHeaders","futureCardData","newCardData","newguid","isNew","$TEL_TYPES","$EMAIL_TYPES","$URL_TYPES","$ADDRESS_TYPES","Card_STATUS","encodeUriFilter","encodeUri","SOGoContactsCategories","$categories","SOGoAlternateAvatar","$alternateAvatar","DELAYED_LOADING","DELAYED_MS","$find","$unwrapCollection","filterCategories","re","RegExp","category","collection","$futureCardData","refs","categories","c_screenname","container","$$fullname","$fullname","$$email","$preferredEmail","$$image","image","avatar","no_404","hasphoto","photoURL","isgroup","c_component","$avatarIcon","$isList","orgs","org","notes","note","email","emails","reference","birthday","isString","dlp","$mdDateLocaleProvider","parseDate","$birthday","formatDate","c_name","empty","$path","$members","members","$isGroup","expandable","member","action","ref","ignoreDuplicate","$shadowData","attribute","export","toHtmlEntities","string","html","replace","s","charCodeAt","names","fn","c_cn","c_givenname","nickname","c_sn","contactinfo","$description","description","title","role","concat","test","c_mail","$shortFormat","fullname","$isCard","condition","SOGoLDAPGroupExpansionEnabled","$addOrg","includes","$addEmail","$addScreenName","screenName","$addPhone","phones","$addUrl","url","$addAddress","postoffice","street","street2","locality","region","country","postalcode","addresses","$addMember","$certificate","hasCertificate","$$certificate","$removeCertificate","immediate","explode","$reset","deep","copy","format","toString","desc"],"mappings":"AAEA,CAAA,WACE,aAOA,SAASA,EAAYC,GAEnB,IAIQC,EAJkC,YAAtC,OAAOD,EAAsBE,MAC/BC,KAAKC,KAAKJ,CAAqB,EAC3BG,KAAKE,MAAQ,CAACF,KAAKG,IAEjBL,EAAqBF,EAAYQ,WAAWC,OAAO,eAAgBL,KAAKE,IAAI,EAChFF,KAAKM,QAAQR,CAAkB,EAC/BE,KAAKO,KAAO,CAACC,aAAgB,EAAGC,cAAiB,EAAGC,aAAgB,CAAC,GAE9DV,KAAKG,KACZH,KAAKW,KAAO,IAAIf,EAAYgB,MAAM,YAAcZ,KAAKG,EAAE,IAKzDH,KAAKM,QAAQT,CAAqB,CAEtC,CAOAD,EAAYiB,SAAW,CAAC,KAAM,WAAY,OAAQ,aAAc,wBAAyB,WAAY,OAAQ,MAAO,cAAe,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAqBC,EAAUC,EAAMC,EAAKC,GAwBlN,OAvBAC,QAAQC,OAAO5B,EAAa,CAC1BkB,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNS,QAASP,EACTd,WAAY,IAAIe,EAASF,EAASS,WAAW,WAAW,EAAI,WAAYT,EAASS,WAAW,CAAC,EAC7FC,MAAOP,EACPR,MAAOS,EACPO,aAAcN,EACdO,OAAQ,CAACC,MAAO,GAAIC,KAAM,OAAQC,IAAK,CAAC,EACxCN,WAAYT,EAASS,WAAW,EAChCO,cAAe,GACfC,eAAgB,GAChBC,SAAU,GACVC,eAAgB,KAChBC,gBAAiB,IACnB,CAAC,EAEGf,EAAYgB,SAASC,QAAQC,eAC/B5C,EAAYiC,OAAOE,KAAOT,EAAYgB,SAASC,QAAQC,aAAa,GACpE5C,EAAYiC,OAAOG,IAAMS,SAASnB,EAAYgB,SAASC,QAAQC,aAAa,EAAE,GAGzE5C,CACT,GAMA,IACE2B,QAAQmB,OAAO,iBLine truncated
{"version":3,"file":"Contacts.services.js","sources":["Contacts/AddressBook.service.js","Contacts/Card.service.js"],"names":["AddressBook","futureAddressBookData","newAddressBookData","then","this","init","name","id","$$resource","create","$unwrap","acls","objectEditor","objectCreator","objectEraser","$acl","$$Acl","$factory","$q","$timeout","$log","Settings","AddressBook_PRELOAD","Resource","Card","Acl","Preferences","angular","extend","PRELOAD","activeUser","$Card","$Preferences","$query","value","sort","asc","$addressbooks","$subscriptions","$remotes","selectedFolder","$refreshTimeout","settings","Contact","SortingState","parseInt","module","e","constant","LOOKAHEAD","SIZE","factory","$filterAll","search","cards","options","excludedCards","params","isUndefined","fetch","response","card","compareIds","data","undefined","sourceID","sourceid","results","_","filter","contacts","find","bind","index","length","splice","forEach","mapKeys","key","toLowerCase","when","$add","addressbook","list","isSubscription","sibling","o","localeCompare","i","indexOf","map","$findAll","_this","isRemote","push","isArray","addressbooks","union","$subscribe","uid","path","userResource","addressbookData","$reloadAll","group","owner","login","prototype","$$cards","idsMap","$cards","isOwned","isSuperUser","$id","$futureAddressBookData","reject","getLength","getItemAtIndex","$isLoading","$lastVisibleIndex","Math","max","$loadCard","endIndex","ids","cardId","startIndex","loaded","isDefined","$loaded","STATUS","NOT_LOADED","min","LOADED","LOADING","debug","join","futureHeadersData","post","$unwrapHeaders","hasSelectedCard","selectedCard","isSelectedCard","$selectedCard","$selectedCardIndex","$selectedCards","selected","$selectedCount","count","$startRefreshTimeout","cancel","f","refreshViewCheck","defaults","SOGoRefreshViewCheck","$reload","timeInterval","$filter","query","dry","partial","addressbookId","futureData","fields","idFieldIndex","headers","invokeMap","pid","oldIndex","findIndex","removedCards","zipObject","$rename","$save","$delete","promise","d","defer","remove","resolve","$_deleteCards","forEachRight","selectedIndex","$deleteCards","uids","$copyCards","folder","$moveCards","save","$omit","exportCards","selectedOnly","type","filename","selectedCards","download","open","downloadProvisioningProfile","realOwnerId","urls","cardDavURL","ownerPaths","substring","split","resource","$topIndex","reduce","cardObject","isError","isObject","deferred","$futureHeadersData","j","cardHeaders","futureCardData","newCardData","newguid","isNew","$TEL_TYPES","$EMAIL_TYPES","$URL_TYPES","$ADDRESS_TYPES","Card_STATUS","encodeUriFilter","encodeUri","SOGoContactsCategories","$categories","SOGoAlternateAvatar","$alternateAvatar","DELAYED_LOADING","DELAYED_MS","$find","$unwrapCollection","filterCategories","re","RegExp","category","collection","$futureCardData","refs","categories","c_screenname","container","$$fullname","$fullname","$$email","$preferredEmail","$$image","image","avatar","no_404","hasphoto","photoURL","isgroup","c_component","$avatarIcon","$isList","orgs","org","notes","note","email","emails","reference","birthday","isString","dlp","$mdDateLocaleProvider","parseDate","$birthday","formatDate","c_name","empty","$path","$members","members","$isGroup","expandable","member","action","ref","ignoreDuplicate","$shadowData","attribute","export","toHtmlEntities","string","html","replace","s","charCodeAt","names","fn","c_cn","c_givenname","nickname","c_sn","contactinfo","$description","description","title","role","concat","test","c_mail","$shortFormat","fullname","$isCard","condition","SOGoLDAPGroupExpansionEnabled","$addOrg","includes","$addEmail","$addScreenName","screenName","$addPhone","phones","$addUrl","url","$addAddress","postoffice","street","street2","locality","region","country","postalcode","addresses","$addMember","$certificate","hasCertificate","$$certificate","$removeCertificate","immediate","explode","$reset","deep","copy","format","toString","desc"],"mappings":"CAEA,KAQE,SAASA,EAAYC,GAEnB,IAIQC,EAJkC,YAAtC,OAAOD,EAAsBE,MAC/BC,KAAKC,KAAKJ,CAAqB,EAC3BG,KAAKE,MAAQ,CAACF,KAAKG,IAEjBL,EAAqBF,EAAYQ,WAAWC,OAAO,eAAgBL,KAAKE,IAAI,EAChFF,KAAKM,QAAQR,CAAkB,EAC/BE,KAAKO,KAAO,CAACC,aAAgB,EAAGC,cAAiB,EAAGC,aAAgB,CAAC,GAE9DV,KAAKG,KACZH,KAAKW,KAAO,IAAIf,EAAYgB,MAAM,YAAcZ,KAAKG,EAAE,IAKzDH,KAAKM,QAAQT,CAAqB,CAEtC,CAOAD,EAAYiB,SAAW,CAAC,KAAM,WAAY,OAAQ,aAAc,wBAAyB,WAAY,OAAQ,MAAO,cAAe,SAASC,EAAIC,EAAUC,EAAMC,EAAUC,EAAqBC,EAAUC,EAAMC,EAAKC,GAwBlN,OAvBAC,QAAQC,OAAO5B,EAAa,CAC1BkB,GAAIA,EACJC,SAAUA,EACVC,KAAMA,EACNS,QAASP,EACTd,WAAY,IAAIe,EAASF,EAASS,WAAW,WAAW,EAAI,WAAYT,EAASS,WAAW,CAAC,EAC7FC,MAAOP,EACPR,MAAOS,EACPO,aAAcN,EACdO,OAAQ,CAACC,MAAO,GAAIC,KAAM,OAAQC,IAAK,CAAC,EACxCN,WAAYT,EAASS,WAAW,EAChCO,cAAe,GACfC,eAAgB,GAChBC,SAAU,GACVC,eAAgB,KAChBC,gBAAiB,IACnB,CAAC,EAEGf,EAAYgB,SAASC,QAAQC,eAC/B5C,EAAYiC,OAAOE,KAAOT,EAAYgB,SAASC,QAAQC,aAAa,GACpE5C,EAAYiC,OAAOG,IAAMS,SAASnB,EAAYgB,SAASC,QAAQC,aAAa,EAAE,GAGzE5C,CACT,GAMA,IACE2B,QAAQmB,OAAO,iBAAiB,CAIlCLine truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,t){e.state("mail",{url:"/Mail",abstract:!0,views:{message:{template:"<ui-view/>"}},resolve:{stateAccounts:o}}).state("mail.account",{url:"/:accountId",abstract:!0,template:'<ui-view id="account"/>',resolve:{stateAccount:n}}).state("mail.account.mailbox",{url:"/:mailboxId",abstract:!0,template:'<ui-view id="mailbox"/>',resolve:{stateMailbox:r}}).state("mail.account.newMessage",{url:"/new",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}},resolve:{stateMessage:a}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{"message@":{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:l}}).state("mail.account.mailbox.messageRaw",{url:"/:messageId/viewRaw",views:{"message@":{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:i}}).state("mail.account.mailbox.message.edit",{url:"/edit",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}},resolve:{stateContent:s}}).state("mail.account.mailbox.message.action",{url:"/{actionName:(?:compose|reply|replyall|forward)}",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}}}),t.otherwise("/Mail/0/new")}function o(e,t,o){var n=[];return e&&e.opener&&e.opener.mailAccounts?(e=o.$findAll(e.opener.mailAccounts),t.when(e)):o.$findAll().then(function(e){return angular.forEach(e,function(t,e){var o=t.$getMailboxes();n.push(0===e?o.then(function(e){return t}):t)}),t.all(n)})}function n(e,t,o,n,r){var a=null;return(a=(a=t.opener&&"$mailboxController"in t.opener&&"account"in t.opener.$mailboxController&&t.opener.$mailboxController.account.id==o.accountId?new n(t.opener.$mailboxController.account.$omit(!0)):a)||_.find(r,function(e){return e.id==o.accountId}))?e.when(a):e.reject("Account "+o.accountId+" doesn't exist")}function r(e,t,o,n,r,a,l){var i,s=null,c=a(n.mailboxId);return t.opener&&"$mailboxController"in t.opener&&"selectedFolder"in t.opener.$mailboxController&&"account"in t.opener.$mailboxController&&t.opener.$mailboxController.account.id==r.id&&t.opener.$mailboxController.selectedFolder.path==c&&(s=new l(r,t.opener.$mailboxController.selectedFolder.$omit(!0))),i=function(e){var t=_.find(e,function(e){return e.path==c});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=i(e.children))}),t},(s?e.when(s):r.$getMailboxes().then(function(e){e=i(e);return new l(r,e)})).then(function(e){return e.$topIndex=0,e.selectFolder(),e},function(){return e.reject("Mailbox "+c+" doesn't exist")})}function a(e,t){var o,e=e.search();return e&&(o=_.find(_.keys(e),function(e){return/^mailto:/i.test(e)})),t.$newMessage({mailto:o})}function l(e,t,o,n,r,a){var l;return window&&window.opener&&window.opener.$messageController&&window.opener.$messageController.message.uid==parseInt(o.messageId)?(l=new a(r.$account.id,r,window.opener.$messageController.message.$omit({privateAttributes:!0})),t.when(l)):(t={uid:o.messageId.toString()},(l=new a(r.$account.id,r,t)).$reload())}function i(e,t,o,n){t={uid:t.messageId.toString()};return new n(o.$account.id,o,t).$reload({useCache:!1,raw:!0})}function s(e){return e.$editableContent()}function t(l,e,i){e.$on("$stateChangeError",function(e,t,o,n,r,a){i.error(a),l.close()}),e.$on("$routeChangeError",function(e,t,o,n){i.error(e,t,o,n)})}function c(e,t,o,n,r,a){var l=o.defer();n.show({hasBackdrop:!1,disableParentScroll:!1,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",onComplete:function(e,t){return l.resolve(t)},locals:{stateParent:t,stateAccount:r,stateMessage:a,onCompletePromise:function(){return l.promise}}}).finally(function(){e.close()})}angular.module("SOGo.MailerUI",["ngCookies","ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.ContactsUI","SOGo.SchedulerUI","ngAnimate","SOGo.PreferencesUI"]).config(e).run(t).controller("MessageEditorControllerPopup",c),e.$inject=["$stateProvider","$urlRouterProvider"],o.$inject=["$window","$q","Account"],n.$inject=["$q","$window","$stateParams","Account","stateAccounts"],r.$inject=["$q","$window","$state","$stateParams","stateAccount","decodeUriFilter","Mailbox"],a.$inject=["$urlService","stateAccount"],l.$inject=["encodeUriFilter","$q","$stateParams","$state","stateMailbox","Message"],i.$inject=["encodeUriFilter","$stateParams","stateMailbox","Message"],s.$inject=["stateMessage"],t.$inject=["$window","$rootScope","$log"],c.$inject=["$window","$scope","$q","$mdDialog","stateAccount","stateMessage"]}();
(()=>{function e(e,t){e.state("mail",{url:"/Mail",abstract:!0,views:{message:{template:"<ui-view/>"}},resolve:{stateAccounts:o}}).state("mail.account",{url:"/:accountId",abstract:!0,template:'<ui-view id="account"/>',resolve:{stateAccount:n}}).state("mail.account.mailbox",{url:"/:mailboxId",abstract:!0,template:'<ui-view id="mailbox"/>',resolve:{stateMailbox:r}}).state("mail.account.newMessage",{url:"/new",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}},resolve:{stateMessage:a}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{"message@":{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:l}}).state("mail.account.mailbox.messageRaw",{url:"/:messageId/viewRaw",views:{"message@":{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMessage:i}}).state("mail.account.mailbox.message.edit",{url:"/edit",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}},resolve:{stateContent:s}}).state("mail.account.mailbox.message.action",{url:"/{actionName:(?:compose|reply|replyall|forward)}",views:{"message@":{template:"<ui-view/>",controller:"MessageEditorControllerPopup"}}}),t.otherwise("/Mail/0/new")}function o(e,t,o){var n=[];return e&&e.opener&&e.opener.mailAccounts?(e=o.$findAll(e.opener.mailAccounts),t.when(e)):o.$findAll().then(function(e){return angular.forEach(e,function(t,e){var o=t.$getMailboxes();n.push(0===e?o.then(function(e){return t}):t)}),t.all(n)})}function n(e,t,o,n,r){var a=null;return(a=(a=t.opener&&"$mailboxController"in t.opener&&"account"in t.opener.$mailboxController&&t.opener.$mailboxController.account.id==o.accountId?new n(t.opener.$mailboxController.account.$omit(!0)):a)||_.find(r,function(e){return e.id==o.accountId}))?e.when(a):e.reject("Account "+o.accountId+" doesn't exist")}function r(e,t,o,n,r,a,l){var i,s=null,c=a(n.mailboxId);return t.opener&&"$mailboxController"in t.opener&&"selectedFolder"in t.opener.$mailboxController&&"account"in t.opener.$mailboxController&&t.opener.$mailboxController.account.id==r.id&&t.opener.$mailboxController.selectedFolder.path==c&&(s=new l(r,t.opener.$mailboxController.selectedFolder.$omit(!0))),i=function(e){var t=_.find(e,function(e){return e.path==c});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=i(e.children))}),t},(s?e.when(s):r.$getMailboxes().then(function(e){e=i(e);return new l(r,e)})).then(function(e){return e.$topIndex=0,e.selectFolder(),e},function(){return e.reject("Mailbox "+c+" doesn't exist")})}function a(e,t){var o,e=e.search();return e&&(o=_.find(_.keys(e),function(e){return/^mailto:/i.test(e)})),t.$newMessage({mailto:o})}function l(e,t,o,n,r,a){var l;return window&&window.opener&&window.opener.$messageController&&window.opener.$messageController.message.uid==parseInt(o.messageId)?(l=new a(r.$account.id,r,window.opener.$messageController.message.$omit({privateAttributes:!0})),t.when(l)):(t={uid:o.messageId.toString()},(l=new a(r.$account.id,r,t)).$reload())}function i(e,t,o,n){t={uid:t.messageId.toString()};return new n(o.$account.id,o,t).$reload({useCache:!1,raw:!0})}function s(e){return e.$editableContent()}function t(l,e,i){e.$on("$stateChangeError",function(e,t,o,n,r,a){i.error(a),l.close()}),e.$on("$routeChangeError",function(e,t,o,n){i.error(e,t,o,n)})}function c(e,t,o,n,r,a){var l=o.defer();n.show({hasBackdrop:!1,disableParentScroll:!1,clickOutsideToClose:!1,escapeToClose:!1,templateUrl:"UIxMailEditor",controller:"MessageEditorController",controllerAs:"editor",onComplete:function(e,t){return l.resolve(t)},locals:{stateParent:t,stateAccount:r,stateMessage:a,onCompletePromise:function(){return l.promise}}}).finally(function(){e.close()})}angular.module("SOGo.MailerUI",["ngCookies","ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.ContactsUI","SOGo.SchedulerUI","ngAnimate","SOGo.PreferencesUI"]).config(e).run(t).controller("MessageEditorControllerPopup",c),e.$inject=["$stateProvider","$urlRouterProvider"],o.$inject=["$window","$q","Account"],n.$inject=["$q","$window","$stateParams","Account","stateAccounts"],r.$inject=["$q","$window","$state","$stateParams","stateAccount","decodeUriFilter","Mailbox"],a.$inject=["$urlService","stateAccount"],l.$inject=["encodeUriFilter","$q","$stateParams","$state","stateMailbox","Message"],i.$inject=["encodeUriFilter","$stateParams","stateMailbox","Message"],s.$inject=["stateMessage"],t.$inject=["$window","$rootScope","$log"],c.$inject=["$window","$scope","$q","$mdDialog","stateAccount","stateMessage"]})();
//# sourceMappingURL=Mailer.app.popup.js.map
@@ -1 +1 @@
{"version":3,"file":"Mailer.app.popup.js","sources":["Mailer/Mailer.popup.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","message","template","resolve","stateAccounts","stateAccount","stateMailbox","message@","controller","stateMessage","stateNewMessage","templateUrl","controllerAs","stateMessageRaw","stateContent","otherwise","$window","$q","Account","promises","opener","mailAccounts","accounts","$findAll","when","then","angular","forEach","account","i","mailboxes","$getMailboxes","push","objects","all","$stateParams","$mailboxController","id","accountId","$omit","_","find","reject","$state","decodeUriFilter","Mailbox","_find","mailbox","mailboxId","selectedFolder","path","o","children","length","data","$topIndex","selectFolder","$urlService","mailto","params","search","keys","k","test","$newMessage","encodeUriFilter","Message","window","$messageController","uid","parseInt","messageId","$account","privateAttributes","toString","$reload","useCache","raw","$editableContent","runBlock","$rootScope","$log","$on","event","toState","toParams","fromState","fromParams","error","close","current","previous","rejection","MessageEditorControllerPopup","$scope","$mdDialog","onCompleteDeferred","defer","show","hasBackdrop","disableParentScroll","clickOutsideToClose","escapeToClose","onComplete","scope","element","locals","stateParent","onCompletePromise","promise","finally","module","config","run","$inject"],"mappings":"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 truncated
{"version":3,"file":"Mailer.app.popup.js","sources":["Mailer/Mailer.popup.js"],"names":["configure","$stateProvider","$urlRouterProvider","state","url","abstract","views","message","template","resolve","stateAccounts","stateAccount","stateMailbox","message@","controller","stateMessage","stateNewMessage","templateUrl","controllerAs","stateMessageRaw","stateContent","otherwise","$window","$q","Account","promises","opener","mailAccounts","accounts","$findAll","when","then","angular","forEach","account","i","mailboxes","$getMailboxes","push","objects","all","$stateParams","$mailboxController","id","accountId","$omit","_","find","reject","$state","decodeUriFilter","Mailbox","_find","mailbox","mailboxId","selectedFolder","path","o","children","length","data","$topIndex","selectFolder","$urlService","mailto","params","search","keys","k","test","$newMessage","encodeUriFilter","Message","window","$messageController","uid","parseInt","messageId","$account","privateAttributes","toString","$reload","useCache","raw","$editableContent","runBlock","$rootScope","$log","$on","event","toState","toParams","fromState","fromParams","error","close","current","previous","rejection","MessageEditorControllerPopup","$scope","$mdDialog","onCompleteDeferred","defer","show","hasBackdrop","disableParentScroll","clickOutsideToClose","escapeToClose","onComplete","scope","element","locals","stateParent","onCompletePromise","promise","finally","module","config","run","$inject"],"mappings":"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 truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,t){if(e.state("mail",{url:"/Mail",views:{mailboxes:{templateUrl:"UIxMailMainFrame",controller:"MailboxesController",controllerAs:"app"}},resolve:{stateAccounts:a}}).state("mail.account",{url:"/:accountId",abstract:!0,views:{mailbox:{template:"<ui-view/>"}},resolve:{stateAccount:o}}).state("mail.account.virtualMailbox",{url:"/virtual",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:l}}).state("mail.account.virtualMailbox.message",{url:"/:mailboxId/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMailbox:n,stateMessages:i,stateMessage:c},onEnter:u,onExit:d}).state("mail.account.inbox",{url:"/inbox",onEnter:r}).state("mail.account.mailbox",{url:"/:mailboxId",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:s,stateMessages:i}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},params:{reload:{value:!1}},onEnter:u,onExit:d,resolve:{stateMessage:c}}),t.rules.otherwise("/Mail/0/inbox"),navigator&&navigator.registerProtocolHandler){e=window.location.origin+window.ApplicationBaseURL+"UIxMailPopupView#!/Mail/0/new?%s";try{navigator.registerProtocolHandler("mailto",e,"SOGo")}catch(e){}}}function a(e,t,a){var a=a.$findAll(e.mailAccounts),o=[];return angular.forEach(a,function(t,e){var a=t.$getMailboxes();o.push(0===e?a.then(function(e){return t}):t)}),t.all(o)}function o(t,e){return _.find(e,function(e){return e.id==t.accountId})}function s(e,t,a,o,r){var i,l=o(o(t.mailboxId)),n=function(e){var t=_.find(e,function(e){return e.path==l});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t};return r.selectedFolder&&!r.$virtualMode&&(r.selectedFolder.$isLoading=!0),a.$getMailboxes().then(function(e){if(i=n(e))return i.$topIndex=0,i.selectFolder(),i;$state.go("mail.account",{accountId:s.$account.id})})}function r(t,a,o){return t.injector().getAsync("stateAccount").then(function(e){return 0<e.$mailboxes.length?t.router.stateService.target("mail.account.mailbox",{accountId:e.id,mailboxId:a(e.$mailboxes[0].path)}):(o.selectedFolder=!1,t.router.stateService.target("mail"))})}function i(e,t,a,o){return a.$virtualMode?[]:o?(o.$unselectMessages(),o.$filter().catch(function(){return e.reject("Mailbox not found")})):e.reject("Mailbox doesn't exist")}function l(e,t){return t.$virtualMode?t.selectedFolder:e.reject("No virtual mailbox defined")}function n(e,t,a,o){var r=a(a(o.mailboxId));return t.$virtualMode?(t.selectedFolder.resetSelectedMessage(),_.find(t.selectedFolder.$mailboxes,function(e){return e.path==r})):e.reject("No virtual mailbox defined for message")}function c(e,t,a,o,r,i){var l=_.find(r.$messages,function(e){return e.uid==parseInt(a.messageId)});if(l&&l.$reload)return l.$reload({useCache:!a.reload,nocache:a.reload});o.go("mail.account.mailbox",{accountId:r.$account.id,mailboxId:t(r.path)})}function u(e,t){t.$selectedMessage=parseInt(e.messageId)}function d(e){delete e.$selectedMessage}function t(e,t,a,o,r){e.DebugEnabled||o.defaultErrorHandler(function(){}),t.onError({to:"mail.**"},function(e){("mail"!=e.to().name&&!e.ignored()&&e.error().message.indexOf("superseded")<0||"mail.account.virtualMailbox"===e.to().name||"mail.account.virtualMailbox.message"===e.to().name)&&(a.error("transition error to "+e.to().name+": "+e.error().detail),r.selectedFolder=!1,o.go("mail"))})}angular.module("SOGo.MailerUI",["ngCookies","ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.ContactsUI","SOGo.SchedulerUI","ngAnimate","SOGo.PreferencesUI"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],a.$inject=["$window","$q","Account"],o.$inject=["$stateParams","stateAccounts"],s.$inject=["$q","$stateParams","stateAccount","decodeUriFilter","Mailbox"],r.$inject=["$transition$","encodeUriFilter","Mailbox"],i.$inject=["$q","$state","Mailbox","stateMailbox"],l.$inject=["$q","Mailbox"],n.$inject=["$q","Mailbox","decodeUriFilter","$stateParams"],c.$inject=["Mailbox","encodeUriFilter","$stateParams","$state","stateMailbox","stateMessages"],u.$inject=["$stateParams","stateMailbox"],d.$inject=["stateMailbox"],t.$inject=["$window","$transitions","$log","$state","Mailbox"]}();
(()=>{function e(e,t){if(e.state("mail",{url:"/Mail",views:{mailboxes:{templateUrl:"UIxMailMainFrame",controller:"MailboxesController",controllerAs:"app"}},resolve:{stateAccounts:a}}).state("mail.account",{url:"/:accountId",abstract:!0,views:{mailbox:{template:"<ui-view/>"}},resolve:{stateAccount:o}}).state("mail.account.virtualMailbox",{url:"/virtual",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:l}}).state("mail.account.virtualMailbox.message",{url:"/:mailboxId/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},resolve:{stateMailbox:n,stateMessages:i,stateMessage:c},onEnter:u,onExit:d}).state("mail.account.inbox",{url:"/inbox",onEnter:r}).state("mail.account.mailbox",{url:"/:mailboxId",views:{"mailbox@mail":{templateUrl:"UIxMailFolderTemplate",controller:"MailboxController",controllerAs:"mailbox"}},resolve:{stateMailbox:s,stateMessages:i}}).state("mail.account.mailbox.message",{url:"/:messageId",views:{message:{templateUrl:"UIxMailViewTemplate",controller:"MessageController",controllerAs:"viewer"}},params:{reload:{value:!1}},onEnter:u,onExit:d,resolve:{stateMessage:c}}),t.rules.otherwise("/Mail/0/inbox"),navigator&&navigator.registerProtocolHandler){e=window.location.origin+window.ApplicationBaseURL+"UIxMailPopupView#!/Mail/0/new?%s";try{navigator.registerProtocolHandler("mailto",e,"SOGo")}catch(e){}}}function a(e,t,a){var a=a.$findAll(e.mailAccounts),o=[];return angular.forEach(a,function(t,e){var a=t.$getMailboxes();o.push(0===e?a.then(function(e){return t}):t)}),t.all(o)}function o(t,e){return _.find(e,function(e){return e.id==t.accountId})}function s(e,t,a,o,r){var i,l=o(o(t.mailboxId)),n=function(e){var t=_.find(e,function(e){return e.path==l});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t};return r.selectedFolder&&!r.$virtualMode&&(r.selectedFolder.$isLoading=!0),a.$getMailboxes().then(function(e){if(i=n(e))return i.$topIndex=0,i.selectFolder(),i;$state.go("mail.account",{accountId:s.$account.id})})}function r(t,a,o){return t.injector().getAsync("stateAccount").then(function(e){return 0<e.$mailboxes.length?t.router.stateService.target("mail.account.mailbox",{accountId:e.id,mailboxId:a(e.$mailboxes[0].path)}):(o.selectedFolder=!1,t.router.stateService.target("mail"))})}function i(e,t,a,o){return a.$virtualMode?[]:o?(o.$unselectMessages(),o.$filter().catch(function(){return e.reject("Mailbox not found")})):e.reject("Mailbox doesn't exist")}function l(e,t){return t.$virtualMode?t.selectedFolder:e.reject("No virtual mailbox defined")}function n(e,t,a,o){var r=a(a(o.mailboxId));return t.$virtualMode?(t.selectedFolder.resetSelectedMessage(),_.find(t.selectedFolder.$mailboxes,function(e){return e.path==r})):e.reject("No virtual mailbox defined for message")}function c(e,t,a,o,r,i){var l=_.find(r.$messages,function(e){return e.uid==parseInt(a.messageId)});if(l&&l.$reload)return l.$reload({useCache:!a.reload,nocache:a.reload});o.go("mail.account.mailbox",{accountId:r.$account.id,mailboxId:t(r.path)})}function u(e,t){t.$selectedMessage=parseInt(e.messageId)}function d(e){delete e.$selectedMessage}function t(e,t,a,o,r){e.DebugEnabled||o.defaultErrorHandler(function(){}),t.onError({to:"mail.**"},function(e){("mail"!=e.to().name&&!e.ignored()&&e.error().message.indexOf("superseded")<0||"mail.account.virtualMailbox"===e.to().name||"mail.account.virtualMailbox.message"===e.to().name)&&(a.error("transition error to "+e.to().name+": "+e.error().detail),r.selectedFolder=!1,o.go("mail"))})}angular.module("SOGo.MailerUI",["ngCookies","ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.ContactsUI","SOGo.SchedulerUI","ngAnimate","SOGo.PreferencesUI"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],a.$inject=["$window","$q","Account"],o.$inject=["$stateParams","stateAccounts"],s.$inject=["$q","$stateParams","stateAccount","decodeUriFilter","Mailbox"],r.$inject=["$transition$","encodeUriFilter","Mailbox"],i.$inject=["$q","$state","Mailbox","stateMailbox"],l.$inject=["$q","Mailbox"],n.$inject=["$q","Mailbox","decodeUriFilter","$stateParams"],c.$inject=["Mailbox","encodeUriFilter","$stateParams","$state","stateMailbox","stateMessages"],u.$inject=["$stateParams","stateMailbox"],d.$inject=["stateMailbox"],t.$inject=["$window","$transitions","$log","$state","Mailbox"]})();
//# sourceMappingURL=Mailer.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Mailer.js","sources":["Mailer/Mailer.app.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","url","views","mailboxes","templateUrl","controller","controllerAs","resolve","stateAccounts","abstract","mailbox","template","stateAccount","mailbox@mail","stateMailbox","stateVirtualMailbox","message","stateVirtualMailboxOfMessage","stateMessages","stateMessage","onEnter","onEnterMessage","onExit","onExitMessage","onEnterInbox","params","reload","value","rules","otherwise","navigator","registerProtocolHandler","mailtoURL","window","location","origin","ApplicationBaseURL","e","$window","$q","Account","accounts","$findAll","mailAccounts","promises","angular","forEach","account","i","$getMailboxes","push","then","objects","all","$stateParams","_","find","id","accountId","decodeUriFilter","Mailbox","mailboxId","_find","o","path","children","length","selectedFolder","$virtualMode","$isLoading","$topIndex","selectFolder","$state","go","$account","$transition","encodeUriFilter","injector","getAsync","$mailboxes","router","stateService","target","$unselectMessages","$filter","catch","reject","resetSelectedMessage","mailboxObject","$messages","messageObject","uid","parseInt","messageId","$reload","useCache","nocache","$selectedMessage","runBlock","$transitions","$log","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","indexOf","detail","module","config","run","$inject"],"mappings":"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 truncated
{"version":3,"file":"Mailer.js","sources":["Mailer/Mailer.app.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","url","views","mailboxes","templateUrl","controller","controllerAs","resolve","stateAccounts","abstract","mailbox","template","stateAccount","mailbox@mail","stateMailbox","stateVirtualMailbox","message","stateVirtualMailboxOfMessage","stateMessages","stateMessage","onEnter","onEnterMessage","onExit","onExitMessage","onEnterInbox","params","reload","value","rules","otherwise","navigator","registerProtocolHandler","mailtoURL","window","location","origin","ApplicationBaseURL","e","$window","$q","Account","accounts","$findAll","mailAccounts","promises","angular","forEach","account","i","$getMailboxes","push","then","objects","all","$stateParams","_","find","id","accountId","decodeUriFilter","Mailbox","mailboxId","_find","o","path","children","length","selectedFolder","$virtualMode","$isLoading","$topIndex","selectFolder","$state","go","$account","$transition","encodeUriFilter","injector","getAsync","$mailboxes","router","stateService","target","$unselectMessages","$filter","catch","reject","resetSelectedMessage","mailboxObject","$messages","messageObject","uid","parseInt","messageId","$reload","useCache","nocache","$selectedMessage","runBlock","$transitions","$log","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","indexOf","detail","module","config","run","$inject"],"mappings":"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 truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function c(e){var t=this;"function"!=typeof e.then&&(angular.extend(this,e),_.forEach(this.identities,function(e){var t;e.fullName&&e.email?e.full=e.fullName+" <"+e.email+">":e.email?e.full="<"+e.email+">":e.full="",e.signature&&(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim())}),this.$mailboxes)&&c.$Mailbox.$unwrapCollection(this,c.$q.when({mailboxes:this.$mailboxes})).then(function(e){t.$mailboxes=e})}c.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(e,t,s,n,i,a,o,r){return angular.extend(c,{$q:e,$timeout:t,$log:s,$$resource:new i(n.activeUser("folderURL")+"Mail",n.activeUser()),$Preferences:a,$Mailbox:o,$Message:r}),c}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",c.$factory),c.$findAll=function(e){return e?c.$unwrapCollection(e):c.$accounts?c.$q.when(c.$accounts):c.$$resource.fetch("","mailAccounts").then(function(e){return c.$unwrapCollection(e)})},c.$unwrapCollection=function(e){var s=[];return angular.forEach(e,function(e,t){e.id=t,s[t]=new c(e)}),c.$accounts=s},c.refreshUnseenCount=function(e){var t,s=1===c.$Preferences.defaults.SOGoMailFetchAllUnseenCountFolders,n=c.$Preferences.defaults.SOGoRefreshViewCheck;if(s)t=[];else{if(!e)throw Error("SOGoMailFetchAllUnseenCountFolders is disabled and no folders list provided");t=e}_.forEach(c.$accounts,function(e){s?_.forEach(e.$$flattenMailboxes,function(e){t.push(e.id)}):(_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)}))}),c.$$resource.post("","unseenCount",{mailboxes:t}).then(function(t){_.forEach(c.$accounts,function(e){_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(t[e.id])&&(e.unseenCount=t[e.id])})})}),n&&"manually"!=n&&(c.$refreshUnseenCount&&c.$timeout.cancel(c.$refreshUnseenCount),c.$refreshUnseenCount=c.$timeout(angular.bind(this,c.refreshUnseenCount,e),1e3*n.timeInterval()))},c.prototype.getLength=function(){return this.$expanded?this.$flattenMailboxes().length:0},c.prototype.getItemAtIndex=function(e){var t=this.$flattenMailboxes();return 0<=e&&e<t.length?t[e]:null},c.prototype.$getMailboxes=function(e){var a=this,t=e&&e.reload;return this.$mailboxes&&!t?c.$q.when(this.$mailboxes):(!t&&this.$futureMailboxesData||(this.$futureMailboxesData=c.$Mailbox.$find(this,e).then(function(e){function s(e){_.forEach(e,function(e){var t=_.find(n,["id",e.id]);t&&(e.unseenCount=t.unseenCount),e.children&&0<e.children.length&&s(e.children)})}var n=a.$flattenMailboxes({all:!0});a.$mailboxes=e,a.$expanded=!1;s(a.$mailboxes);function t(e){_.forEach(e,function(e){e.$expanded=0<=i.indexOf("/"+e.id),e.children&&0<e.children.length&&t(e.children)})}var i;if(c.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(c.$Preferences.settings.Mail.ExpandedFolders))try{i=angular.fromJson(c.$Preferences.settings.Mail.ExpandedFolders)}catch(e){c.$log.warn("Can't parse list of expanded folders. String was: "+c.$Preferences.settings.Mail.ExpandedFolders),i=[]}else i=c.$Preferences.settings.Mail.ExpandedFolders;a.$expanded=0<=i.indexOf("/"+a.id),0<i.length&&t(a.$mailboxes)}return c.$accounts&&(a.$expanded|=1==c.$accounts.length),a.$flattenMailboxes({reload:!0}),a.$mailboxes})),this.$futureMailboxesData)},c.prototype.$flattenMailboxes=function(t){function s(e){_.forEach(e,function(e){n.push(e),(t&&t.all||e.$expanded)&&e.children&&0<e.children.length&&s(e.children)})}var n=[],i=[];return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(s(this.$mailboxes),t&&t.all||(this.$$flattenMailboxes=n,t&&t.saveState&&(_.forEach(c.$accounts,function(e){e.$expanded&&i.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},i)}),c.$$resource.post(null,"saveFoldersState",i)))):n=this.$$flattenMailboxes,n},c.prototype.$getMailboxByType=function(s){function n(e){var t=_.find(e,function(e){return e.type==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}return n(this.$mailboxes)},c.prototype.$getMailboxByPath=function(s){function n(e){var t=_.find(e,function(e){return e.path==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}var e;if(null==(e=n(this.$mailboxes)))throw Error("No mailbox found matching path "+s);return e},c.prototype.$newMailbox=function(e,t){var s=this;return c.$$resource.post(e.toString(),"createFolder",{name:t}).then(function(){s.$getMailboxes({reload:!0})})},c.prototype.getTextSignature=function(e){var t;return e.signature?(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim()):e.textSignature="",e.textSignature},c.prototype.$hasCertificate=function(){return this.security&&this.security.hasCLine truncated
(()=>{function c(e){var t=this;"function"!=typeof e.then&&(angular.extend(this,e),_.forEach(this.identities,function(e){var t;e.fullName&&e.email?e.full=e.fullName+" <"+e.email+">":e.email?e.full="<"+e.email+">":e.full="",e.signature&&(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim())}),this.$mailboxes)&&c.$Mailbox.$unwrapCollection(this,c.$q.when({mailboxes:this.$mailboxes})).then(function(e){t.$mailboxes=e})}c.$factory=["$q","$timeout","$log","sgSettings","Resource","Preferences","Mailbox","Message",function(e,t,s,n,i,a,o,r){return angular.extend(c,{$q:e,$timeout:t,$log:s,$$resource:new i(n.activeUser("folderURL")+"Mail",n.activeUser()),$Preferences:a,$Mailbox:o,$Message:r}),c}];try{angular.module("SOGo.MailerUI")}catch(e){angular.module("SOGo.MailerUI",["SOGo.Common"])}angular.module("SOGo.MailerUI").factory("Account",c.$factory),c.$findAll=function(e){return e?c.$unwrapCollection(e):c.$accounts?c.$q.when(c.$accounts):c.$$resource.fetch("","mailAccounts").then(function(e){return c.$unwrapCollection(e)})},c.$unwrapCollection=function(e){var s=[];return angular.forEach(e,function(e,t){e.id=t,s[t]=new c(e)}),c.$accounts=s},c.refreshUnseenCount=function(e){var t,s=1===c.$Preferences.defaults.SOGoMailFetchAllUnseenCountFolders,n=c.$Preferences.defaults.SOGoRefreshViewCheck;if(s)t=[];else{if(!e)throw Error("SOGoMailFetchAllUnseenCountFolders is disabled and no folders list provided");t=e}_.forEach(c.$accounts,function(e){s?_.forEach(e.$$flattenMailboxes,function(e){t.push(e.id)}):(_.includes(t,e.id+"/folderINBOX")||t.push(e.id+"/folderINBOX"),_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(e.unseenCount)&&!_.includes(t,e.id)&&t.push(e.id)}))}),c.$$resource.post("","unseenCount",{mailboxes:t}).then(function(t){_.forEach(c.$accounts,function(e){_.forEach(e.$$flattenMailboxes,function(e){angular.isDefined(t[e.id])&&(e.unseenCount=t[e.id])})})}),n&&"manually"!=n&&(c.$refreshUnseenCount&&c.$timeout.cancel(c.$refreshUnseenCount),c.$refreshUnseenCount=c.$timeout(angular.bind(this,c.refreshUnseenCount,e),1e3*n.timeInterval()))},c.prototype.getLength=function(){return this.$expanded?this.$flattenMailboxes().length:0},c.prototype.getItemAtIndex=function(e){var t=this.$flattenMailboxes();return 0<=e&&e<t.length?t[e]:null},c.prototype.$getMailboxes=function(e){var a=this,t=e&&e.reload;return this.$mailboxes&&!t?c.$q.when(this.$mailboxes):(!t&&this.$futureMailboxesData||(this.$futureMailboxesData=c.$Mailbox.$find(this,e).then(function(e){function s(e){_.forEach(e,function(e){var t=_.find(n,["id",e.id]);t&&(e.unseenCount=t.unseenCount),e.children&&0<e.children.length&&s(e.children)})}var n=a.$flattenMailboxes({all:!0});a.$mailboxes=e,a.$expanded=!1;s(a.$mailboxes);function t(e){_.forEach(e,function(e){e.$expanded=0<=i.indexOf("/"+e.id),e.children&&0<e.children.length&&t(e.children)})}var i;if(c.$Preferences.settings.Mail.ExpandedFolders){if(angular.isString(c.$Preferences.settings.Mail.ExpandedFolders))try{i=angular.fromJson(c.$Preferences.settings.Mail.ExpandedFolders)}catch(e){c.$log.warn("Can't parse list of expanded folders. String was: "+c.$Preferences.settings.Mail.ExpandedFolders),i=[]}else i=c.$Preferences.settings.Mail.ExpandedFolders;a.$expanded=0<=i.indexOf("/"+a.id),0<i.length&&t(a.$mailboxes)}return c.$accounts&&(a.$expanded|=1==c.$accounts.length),a.$flattenMailboxes({reload:!0}),a.$mailboxes})),this.$futureMailboxesData)},c.prototype.$flattenMailboxes=function(t){function s(e){_.forEach(e,function(e){n.push(e),(t&&t.all||e.$expanded)&&e.children&&0<e.children.length&&s(e.children)})}var n=[],i=[];return!this.$$flattenMailboxes||t&&(t.reload||t.all)?(s(this.$mailboxes),t&&t.all||(this.$$flattenMailboxes=n,t&&t.saveState&&(_.forEach(c.$accounts,function(e){e.$expanded&&i.push("/"+e.id),_.reduce(e.$$flattenMailboxes,function(e,t){return t.$expanded&&e.push("/"+t.id),e},i)}),c.$$resource.post(null,"saveFoldersState",i)))):n=this.$$flattenMailboxes,n},c.prototype.$getMailboxByType=function(s){function n(e){var t=_.find(e,function(e){return e.type==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}return n(this.$mailboxes)},c.prototype.$getMailboxByPath=function(s){function n(e){var t=_.find(e,function(e){return e.path==s});return t||angular.forEach(e,function(e){!t&&e.children&&0<e.children.length&&(t=n(e.children))}),t}var e;if(null==(e=n(this.$mailboxes)))throw Error("No mailbox found matching path "+s);return e},c.prototype.$newMailbox=function(e,t){var s=this;return c.$$resource.post(e.toString(),"createFolder",{name:t}).then(function(){s.$getMailboxes({reload:!0})})},c.prototype.getTextSignature=function(e){var t;return e.signature?(t=angular.element("<div>"+e.signature+"</div>"),e.textSignature=_.map(t.contents(),"textContent").join(" ").trim()):e.textSignature="",e.textSignature},c.prototype.$hasCertificate=function(){return this.security&&this.security.hasCertificate},c.protoLine truncated
//# sourceMappingURL=Mailer.services.js.map
@@ -1 +1 @@
{"version":3,"file":"Mailer.services.js","sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js","Mailer/sgImageGallery.service.js","Mailer/VirtualMailbox.service.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgAccountSection.directive.js","Mailer/sgIMIP.directive.js","Mailer/sgMailboxListItem.directive.js","Mailer/sgMessageListItem.directive.js","Mailer/sgMessageListItemMain.directive.js","Mailer/sgZoomableImage.directive.js"],"names":["Account","futureAccountData","_this","this","then","angular","extend","_","forEach","identities","identity","element","fullName","email","full","signature","textSignature","map","contents","join","trim","$mailboxes","$Mailbox","$unwrapCollection","$q","when","mailboxes","collection","$factory","$timeout","$log","Settings","Resource","Preferences","Mailbox","Message","$$resource","activeUser","$Preferences","$Message","module","e","factory","$findAll","data","$accounts","fetch","o","i","id","refreshUnseenCount","folders","unseenCountFolders","fetchAllUnseenCountFolders","defaults","SOGoMailFetchAllUnseenCountFolders","refreshViewCheck","SOGoRefreshViewCheck","Error","account","$$flattenMailboxes","mailbox","push","includes","isDefined","unseenCount","post","$refreshUnseenCount","cancel","bind","timeInterval","prototype","getLength","$expanded","$flattenMailboxes","length","getItemAtIndex","index","expandedMailboxes","$getMailboxes","options","reload","$futureMailboxesData","$find","_visitForUnseencount","previousMailbox","find","previousMailboxes","children","all","_visitForExpanded","expandedFolders","indexOf","settings","Mail","ExpandedFolders","isString","fromJson","warn","_visit","allMailboxes","saveState","reduce","$getMailboxByType","type","_find","$getMailboxByPath","path","$newMailbox","name","toString","getTextSignature","$hasCertificate","security","hasCertificate","$certificate","$$certificate","reject","$removeCertificate","updateQuota","percent","description","maxQuota","Math","round","usedSpace","l","formatted","maxMessages","messagesCount","$quota","$newMessage","debug","JSON","stringify","undefined","accountId","mailboxPath","message","$absolutePath","asDraft","accountDefaults","AuxiliaryMailAccounts","alwaysSign","sign","alwaysEncrypt","encrypt","editable","isNew","mailto","isObject","$parseMailto","$addDelegate","user","deferred","defer","param","uid","delegates","resolve","users","status","promise","$removeDelegate","splice","$omit","deep","defaultIdentity","value","key","copy","isReadOnly","pick","isDefault","forceDefaultIdentity","futureMailboxData","$account","init","newMailboxData","create","$unwrap","$rootScope","Acl","PRELOAD","BATCH_DELETE_LIMIT","$$Acl","$query","sort","asc","selectedFolder","$refreshTimeout","$virtualMode","$virtualPath","$searchMode","SortingState","parseInt","constant","LOOKAHEAD","SIZE","createMailboxes","level","isSentFolder","isDraftsFolder","quotas","split","component","asCSSIdentifier","isUndefined","uidsMap","headers","$isLoading","$messages","$visibleMessages","$selectedMessages","$highlightWords","$id","$acl","threaded","$collapsedThreads","threadsCollapsed","$displayName","$isEditable","isEditable","$isSpecial","$icon","$isNoInferiors","isNoInferiors","$shadowData","selectFolder","setSearchMode","searchMode","$lastVisibleIndex","max","$loadMessage","selectedMessages","updateCache","filter","selected","selectedCount","$unselectMessages","isSelectedMessage","messageId","$selectedMessage","selectedMessage","$selectedMessageIndex","hasSelectedMessage","$filter","sortingAttributes","filters","action","labels","searchBy","searchInput","word","cleanedWord","toLowerCase","match","secondFilter","$flaggedOnly","$unseenOnly","$syncToken","syncToken","unseenOnly","flaggedOnly","keys","$filteredLabels","k","f","endIndex","uids","startIndex","loaded","subject","min","loading","futureHeadersData","$unwrapHeaders","flags","isNoSelect","isWritable","getClassName","base","$rename","findParent","parent","parentMailbox","$save","_updateChildren","child","replace","pathRE","oldPath","sibling","localeCompare","RegExp","$compact","$canFolderAs","$setFolderAs","$empty","capitalize","substring","$markAsRead","isread","getLabels","$labels","filteredByLabel","$flagMessages","messages","operation","msgUIDs","forwardMessages","saveSelectedMessages","selectedUIDs","download","exportFolder","filename","open","$delete","$_deleteMessages","firstIndex","forEachRight","selectedIndex","findIndex","updateVisibleMessages","$deleteMessages","batchSize","_deleteMessages","start","end","currentUids","slice","$markOrUnMarkMessagesAsJunk","method","$copyMessages","folder","$moveMessages","$move","parentPath","finally","save","response","error","$reset","Object","assign","childrenArray","collapsedThread","msg","first","collapsed","$broadcast","$futureMailboxData","headersFields","msgObject","hasNewMessages","$topIndex","deleted","jLine truncated
{"version":3,"file":"Mailer.services.js","sources":["Mailer/Account.service.js","Mailer/Mailbox.service.js","Mailer/Message.service.js","Mailer/sgImageGallery.service.js","Mailer/VirtualMailbox.service.js","Mailer/MailboxController.js","Mailer/MailboxesController.js","Mailer/MessageController.js","Mailer/MessageEditorController.js","Mailer/sgAccountSection.directive.js","Mailer/sgIMIP.directive.js","Mailer/sgMailboxListItem.directive.js","Mailer/sgMessageListItem.directive.js","Mailer/sgMessageListItemMain.directive.js","Mailer/sgZoomableImage.directive.js"],"names":["Account","futureAccountData","_this","this","then","angular","extend","_","forEach","identities","identity","element","fullName","email","full","signature","textSignature","map","contents","join","trim","$mailboxes","$Mailbox","$unwrapCollection","$q","when","mailboxes","collection","$factory","$timeout","$log","Settings","Resource","Preferences","Mailbox","Message","$$resource","activeUser","$Preferences","$Message","module","e","factory","$findAll","data","$accounts","fetch","o","i","id","refreshUnseenCount","folders","unseenCountFolders","fetchAllUnseenCountFolders","defaults","SOGoMailFetchAllUnseenCountFolders","refreshViewCheck","SOGoRefreshViewCheck","Error","account","$$flattenMailboxes","mailbox","push","includes","isDefined","unseenCount","post","$refreshUnseenCount","cancel","bind","timeInterval","prototype","getLength","$expanded","$flattenMailboxes","length","getItemAtIndex","index","expandedMailboxes","$getMailboxes","options","reload","$futureMailboxesData","$find","_visitForUnseencount","previousMailbox","find","previousMailboxes","children","all","_visitForExpanded","expandedFolders","indexOf","settings","Mail","ExpandedFolders","isString","fromJson","warn","_visit","allMailboxes","saveState","reduce","$getMailboxByType","type","_find","$getMailboxByPath","path","$newMailbox","name","toString","getTextSignature","$hasCertificate","security","hasCertificate","$certificate","$$certificate","reject","$removeCertificate","updateQuota","percent","description","maxQuota","Math","round","usedSpace","l","formatted","maxMessages","messagesCount","$quota","$newMessage","debug","JSON","stringify","undefined","accountId","mailboxPath","message","$absolutePath","asDraft","accountDefaults","AuxiliaryMailAccounts","alwaysSign","sign","alwaysEncrypt","encrypt","editable","isNew","mailto","isObject","$parseMailto","$addDelegate","user","deferred","defer","param","uid","delegates","resolve","users","status","promise","$removeDelegate","splice","$omit","deep","defaultIdentity","value","key","copy","isReadOnly","pick","isDefault","forceDefaultIdentity","futureMailboxData","$account","init","newMailboxData","create","$unwrap","$rootScope","Acl","PRELOAD","BATCH_DELETE_LIMIT","$$Acl","$query","sort","asc","selectedFolder","$refreshTimeout","$virtualMode","$virtualPath","$searchMode","SortingState","parseInt","constant","LOOKAHEAD","SIZE","createMailboxes","level","isSentFolder","isDraftsFolder","quotas","split","component","asCSSIdentifier","isUndefined","uidsMap","headers","$isLoading","$messages","$visibleMessages","$selectedMessages","$highlightWords","$id","$acl","threaded","$collapsedThreads","threadsCollapsed","$displayName","$isEditable","isEditable","$isSpecial","$icon","$isNoInferiors","isNoInferiors","$shadowData","selectFolder","setSearchMode","searchMode","$lastVisibleIndex","max","$loadMessage","selectedMessages","updateCache","filter","selected","selectedCount","$unselectMessages","isSelectedMessage","messageId","$selectedMessage","selectedMessage","$selectedMessageIndex","hasSelectedMessage","$filter","sortingAttributes","filters","action","labels","searchBy","searchInput","word","cleanedWord","toLowerCase","match","secondFilter","$flaggedOnly","$unseenOnly","$syncToken","syncToken","unseenOnly","flaggedOnly","keys","$filteredLabels","k","f","endIndex","uids","startIndex","loaded","subject","min","loading","futureHeadersData","$unwrapHeaders","flags","isNoSelect","isWritable","getClassName","base","$rename","findParent","parent","parentMailbox","$save","_updateChildren","child","replace","pathRE","oldPath","sibling","localeCompare","RegExp","$compact","$canFolderAs","$setFolderAs","$empty","capitalize","substring","$markAsRead","isread","getLabels","$labels","filteredByLabel","$flagMessages","messages","operation","msgUIDs","forwardMessages","saveSelectedMessages","selectedUIDs","download","exportFolder","filename","open","$delete","$_deleteMessages","firstIndex","forEachRight","selectedIndex","findIndex","updateVisibleMessages","$deleteMessages","batchSize","_deleteMessages","start","end","currentUids","slice","$markOrUnMarkMessagesAsJunk","method","$copyMessages","folder","$moveMessages","$move","parentPath","finally","save","response","error","$reset","Object","assign","childrenArray","collapsedThread","msg","first","collapsed","$broadcast","$futureMailboxData","headersFields","msgObject","hasNewMessages","$topIndex","deleted","jLine truncated
@@ -405,6 +405,7 @@
this.$highlightWords = [];
filters.forEach(filter => {
if ("subject_or_from" == filter.searchBy
|| "subject_or_to" == filter.searchBy
|| "contains" == filter.searchBy
|| "body" == filter.searchBy
|| "from" == filter.searchBy
@@ -1043,6 +1044,7 @@
this.account = account;
if (options && options.unseenCount) {
this.unseenCount = options.unseenCount;
delete options["unseenCount"];
}
if (options && options.filter) {
this.$messages = [];
@@ -1312,4 +1314,21 @@
Mailbox.prototype.getHighlightWords = function () {
return this.$highlightWords;
};
/**
* @function cleanMailbox
* @memberof Mailbox.prototype
* @desc Cleans up the mailbox by applying the specified parameters.
* This can include operations such as moving emails to trash,
* filtering emails based on a duration, and applying actions to subfolders.
* @param {Object} parameters - An object containing the parameters for cleaning the mailbox.
* @param {boolean} [parameters.applyToSubfolders=false] - Whether to apply the cleaning operation to subfolders.
* @param {boolean} [parameters.moveToTrash=false] - Whether to move the emails to the trash folder.
* @param {string|null} [parameters.filterDuration=null] - A duration filter (e.g., "3m", "6m") to select emails older than the specified duration.
* @returns {Promise} A promise that resolves when the cleaning operation is completed, or rejects with an error if the operation fails.
*/
Mailbox.prototype.cleanMailbox = function (parameters) {
return parameters.folders.length > 0 ? Mailbox.$$resource.post(this.id.split("/")[0], 'cleanMailbox', parameters) : Mailbox.$$resource.post(this.id, 'cleanMailbox', parameters);
};
})();
@@ -589,9 +589,12 @@
});
};
this.moveSelectedMessages = function(dstFolder) {
this.moveSelectedMessages = function(dstFolder, message) {
var moveSelectedMessage = vm.selectedFolder.hasSelectedMessage();
var selectedMessages = vm.selectedFolder.selectedMessages();
if (message) {
selectedMessages.push(message);
}
var count = vm.selectedFolder.selectedCount();
if (_.size(selectedMessages) > 0)
vm.selectedFolder.$moveMessages(selectedMessages, '/' + dstFolder).then(function(index) {
@@ -53,6 +53,10 @@
$rootScope.$on('resetMailAdvancedSearchPanel', function () {
vm.reset();
});
$rootScope.$on('showCleanMailboxPanel', function (e, d) {
vm.showCleanMailboxPanel(d.folder, d.account);
});
};
@@ -447,6 +451,128 @@
});
};
this.showCleanMailboxPanel = function (folder, account) {
// Close sidenav on small devices
if (!$mdMedia(sgConstant['gt-md']))
$mdSidenav('left').close();
$mdDialog.show({
template: document.getElementById('cleanMailbox').innerHTML,
parent: angular.element(document.body),
controller: function () {
var dialogCtrl = this;
this.$onInit = function () {
this.mainController = vm;
this.folder = folder;
this.isMailbox = (folder ? false : true);
this.name = folder ? folder.$displayName : account.name;
this.loading = false;
this.date = null;
this.form = {
filterDuration: "3m",
permanentlyDelete: false,
confirmDelete: false,
filterDurationDate: null
};
var today = new Date();
var maxDate = new Date(today);
maxDate.setMonth(today.getMonth() - 3);
this.maxDate = maxDate;
};
dialogCtrl.closeDialog = function () {
$mdDialog.hide();
};
dialogCtrl.isLoading = function () {
return this.loading;
}
dialogCtrl.isWarningDisplayed = function () {
return (this.form && this.form.permanentlyDelete);
}
dialogCtrl.isApplyDisabled = function () {
return !(!this.loading
&& (!this.form.permanentlyDelete || (this.form.permanentlyDelete && this.form.confirmDelete))
&& (this.form.filterDuration != 'custom' || (this.form.filterDuration == 'custom' && this.form.filterDurationDate))
);
}
dialogCtrl.apply = function () {
var folders = [];
var i;
if (account) {
for (i = 0; i < account.$mailboxes.length ; i++) {
folders.push(account.$mailboxes[i].id);
}
this.folder = account.$mailboxes[0];
}
var date = '';
var durationMonth = 12;
var date = new Date();
switch (this.form.filterDuration) {
case '3m':
durationMonth = 3;
date.setMonth(date.getMonth() - durationMonth);
break;
case '6m':
durationMonth = 6;
date.setMonth(date.getMonth() - durationMonth);
break;
case '9m':
durationMonth = 9;
date.setMonth(date.getMonth() - durationMonth);
break;
case '1y':
durationMonth = 12;
date.setMonth(date.getMonth() - durationMonth);
break;
case 'custom':
date = this.form.filterDurationDate;
break;
}
var year = date.getFullYear();
var month = String(date.getMonth() + 1).padStart(2, '0');
var day = String(date.getDate()).padStart(2, '0');
this.date = `${year}-${month}-${day}`;
this.folder.cleanMailbox({
'applyToSubfolders': (this.form && this.form.applyToSubfolders) ? this.form.applyToSubfolders : false,
'permanentlyDelete': (this.form && this.form.permanentlyDelete) ? this.form.permanentlyDelete : false,
'date': this.date,
'folders': folders
}).then(function (data) {
dialogCtrl.loading = true;
Mailbox.selectedFolder.$filter({
"sort": "date",
"asc": false,
"match": "OR"
}).then(function () {
$state.go('mail.account.mailbox', { accountId: vm.accounts[0].id, mailboxId: encodeUriFilter(Mailbox.selectedFolder.path) });
dialogCtrl.loading = false;
$mdDialog.hide();
$mdToast.show(
$mdToast.simple()
.textContent(l('%{0} message(s) deleted', data.nbMessageDeleted))
.position(sgConstant.toastPosition)
.hideDelay(2000));
});
}).catch(function () {
dialogCtrl.loading = false;
$mdDialog.hide();
});
};
},
controllerAs: 'dialogCtrl',
clickOutsideToClose: false,
escapeToClose: false,
});
};
this.delegate = function(account) {
$mdDialog.show({
templateUrl: account.id + '/delegation', // UI/Templates/MailerUI/UIxMailUserDelegation.wox
@@ -271,6 +271,14 @@
});
};
this.cleanMailbox = function () {
// Close sidenav on small devices
if (!$mdMedia(sgConstant['gt-md']))
$mdSidenav('left').close();
$rootScope.$broadcast('showCleanMailboxPanel', {folder: this.folder, account: null}); // Show remove old emails panel (broadcast event to MailboxesController)
};
this.emptyJunkFolder = function() {
return this.emptyFolder(l('Junk folder emptied'));
};
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";angular.module("SOGo.MainUI",["SOGo.Common","SOGo.Authentication"]);function e(e,o,s,r,a,n,i,t){var d=this;this.$onInit=function(){this.creds={username:o.cookieUsername,password:null,domain:null,rememberLogin:angular.isDefined(o.cookieUsername)&&0<o.cookieUsername.length},/\blanguage=/.test(o.location.search)&&(this.creds.language=o.language),this.loginState=!1,this.verificationCodePattern="\\d{6}",this.passwords={newPassword:null,newPasswordConfirmation:null,oldPassword:null,visible:!1},this.passwordRecovery={passwordRecoveryEnabled:!1,passwordRecoveryQuestionKey:null,passwordRecoveryQuestion:null,passwordRecoveryMode:null,passwordRecoveryQuestionAnswer:null,passwordRecoveryToken:null,passwordRecoveryLinkTimer:null,passwordRecoverySecondaryEmailText:null,passwordRecoveryMailDomain:null,showLoader:!1},this.showLogin=!1,s(function(){d.showLogin=!0;var e=window.location.search;let o=new URLSearchParams(e).get("token");0<window.location.pathname.indexOf("passwordRecoveryEmail")&&o?3===(e=(o=o.replace(/\//g,"")).split(".")).length&&(d.passwordRecovery.passwordRecoveryToken=o,e=JSON.parse(atob(e[1])),d.creds.username=e.username,d.creds.domain=e.domain,d.passwordRecovery.passwordRecoveryToken=o,d.passwordRecovery.passwordRecoveryMode="SecondaryEmail",d.passwordRecovery.passwordRecoveryEnabled=!0,d.loginState="passwordchange",d.showLogin=!1,t("loginContent")):d.retrievePasswordRecoveryEnabled(),0<document.querySelectorAll("*:autofill").length&&document.querySelectorAll("*:autofill").forEach(e=>{e.parentElement.classList.add("md-input-has-value")})},100)},this.login=function(){return d.loginState="authenticating",n.login(d.creds).then(function(e){e.totpmissingkey?(d.loginState="totpcode",i("totpcode")):e.totpdisabled?(d.loginState="totpdisabled",d.cn=e.cn,d.url=e.url):(d.loginState="logged",d.cn=e.cn,d.url=e.url,s(function(){d.continueLogin()},1e3))},function(e){var o,s;d.loginState="error",e.error?d.errorMessage=e.error:0<e.grace?(d.loginState="passwordwillexpire",d.cn=e.cn,d.url=e.url,d.errorMessage=l("You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog.",e.grace)):0<e.expire?(s=86400<e.expire?(o=Math.round(e.expire/86400),l("days")):3600<e.expire?(o=Math.round(e.expire/3600),l("hours")):60<e.expire?(o=Math.round(e.expire/60),l("minutes")):(o=e.expire,l("seconds")),d.loginState="passwordwillexpire",d.cn=e.cn,d.url=e.url,d.errorMessage=l("Your password is going to expire in %{0} %{1}.",o,s)):e.passwordexpired&&(d.loginState="passwordchange",d.url=e.url)}),!1},this.restoreLogin=function(){d.showLogin=!1,"SecretQuestion"===d.passwordRecovery.passwordRecoveryMode?(t("loginContent"),d.passwordRecoveryInfo()):(delete d.creds.verificationCode,d.passwordRecoveryAbort())},this.continueLogin=function(){o.location.href===d.url?o.location.reload(!0):o.location.href=d.url},this.showAbout=function(e){function o(e){this.closeDialog=function(){e.hide()}}a.show({targetEvent:e,templateUrl:"aboutBox.html",controller:o,controllerAs:"about"}),o.$inject=["$mdDialog"]},this.changeLanguage=function(e){o.location.href=ApplicationBaseURL+"login?language="+this.creds.language},this.hello=function(e){return!1},this.canChangePassword=function(e){return this.passwords.newPasswordConfirmation&&this.passwords.newPasswordConfirmation.length&&this.passwords.newPassword!=this.passwords.newPasswordConfirmation?(e.newPasswordConfirmation.$setValidity("newPasswordMismatch",!1),!1):(e.newPasswordConfirmation.$setValidity("newPasswordMismatch",!0),!!(this.passwords.newPassword&&0<this.passwords.newPassword.length&&this.passwords.newPasswordConfirmation&&this.passwords.newPasswordConfirmation.length&&this.passwords.newPassword==this.passwords.newPasswordConfirmation&&(this.isInPasswordRecoveryMode()||!this.loginState&&this.passwords.oldPassword&&0<this.passwords.oldPassword.length||"passwordchange"==this.loginState&&this.passwords.oldPassword&&0<this.passwords.oldPassword.length)))},this.changePassword=function(){n.changePassword(this.creds.username,this.creds.domain,this.passwords.newPassword,this.passwords.oldPassword,this.passwordRecovery.passwordRecoveryToken).then(function(e){d.loginState="message",d.url=e.url,d.errorMessage=l("The password was changed successfully.")},function(e){d.loginState="error",d.errorMessage=e})},this.passwordRecoveryInfo=function(){d.loginState="passwordrecovery",d.passwordRecovery.showLoader=!0,n.passwordRecovery(this.creds.username,this.creds.domain).then(function(e){d.passwordRecovery.passwordRecoveryMode=e.mode,"SecretQuestion"===e.mode?(d.passwordRecovery.passwordRecoveryQuestion=e.secretQuestionLabel,d.passwordRecovery.passwordRecoveryQuestionKey=e.secretQuestion):"SecondaryEmail"===e.mode?d.passwordRecovery.passwordRecoverySecondaryEmailText=l("A link will be sent to %{0}",e.obfuscatedRecoveryEmail):"Disabled"===e.mode&&(d.loginState="error",d.errorMessage=l("No password recovery method has been defined for this user")),d.passwoLine truncated
(()=>{function e(e,s,o,r,a,i,n,t,d,c){var w=this;this.$onInit=function(){this.creds={username:s.cookieUsername,password:null,domain:null,rememberLogin:angular.isDefined(s.cookieUsername)&&0<s.cookieUsername.length},/\blanguage=/.test(s.location.search)&&(this.creds.language=s.language),this.loginState=!1,this.verificationCodePattern="\\d{6}",this.passwords={newPassword:null,newPasswordConfirmation:null,oldPassword:null,visible:!1},this.passwordRecovery={passwordRecoveryEnabled:!1,passwordRecoveryQuestionKey:null,passwordRecoveryQuestion:null,passwordRecoveryMode:null,passwordRecoveryQuestionAnswer:null,passwordRecoveryToken:null,passwordRecoveryLinkTimer:null,passwordRecoverySecondaryEmailText:null,passwordRecoveryMailDomain:null,showLoader:!1},this.showLogin=!1,o(function(){w.showLogin=!0;var e=window.location.search;let s=new URLSearchParams(e).get("token");0<window.location.pathname.indexOf("passwordRecoveryEmail")&&s?3===(e=(s=s.replace(/\//g,"")).split(".")).length&&(w.passwordRecovery.passwordRecoveryToken=s,e=JSON.parse(atob(e[1])),w.creds.username=e.username,w.creds.domain=e.domain,w.passwordRecovery.passwordRecoveryToken=s,w.passwordRecovery.passwordRecoveryMode="SecondaryEmail",w.passwordRecovery.passwordRecoveryEnabled=!0,w.loginState="passwordchange",t("loginContent")):w.retrievePasswordRecoveryEnabled(),0<document.querySelectorAll("*:autofill").length&&document.querySelectorAll("*:autofill").forEach(e=>{e.parentElement.classList.add("md-input-has-value")})},100)},this.login=function(){return w.loginState="authenticating",i.login(w.creds).then(function(e){e.totpmissingkey?(w.loginState="totpcode",n("totpcode")):e.totpdisabled?(w.loginState="totpdisabled",w.cn=e.cn,w.url=e.url):(w.loginState="logged",w.cn=e.cn,w.url=e.url,o(function(){w.continueLogin()},1e3))},function(e){var s,o;w.loginState="error",e.error?w.errorMessage=e.error:0<e.grace?(w.loginState="passwordwillexpire",w.cn=e.cn,w.url=e.url,w.passwordPolicy=e.userPolicies||[],w.errorMessage=l("You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog.",e.grace)):0<e.expire?(o=86400<e.expire?(s=Math.round(e.expire/86400),l("days")):3600<e.expire?(s=Math.round(e.expire/3600),l("hours")):60<e.expire?(s=Math.round(e.expire/60),l("minutes")):(s=e.expire,l("seconds")),w.loginState="passwordwillexpire",w.cn=e.cn,w.url=e.url,w.errorMessage=l("Your password is going to expire in %{0} %{1}.",s,o)):(e.passwordexpired&&2==e.passwordexpired||e.passwordexpired)&&(w.loginState="passwordchange",w.passwordPolicy=e.userPolicies||[],w.url=e.url,w.passwordexpired=e.passwordexpired)}),!1},this.restoreLogin=function(){"SecretQuestion"===w.passwordRecovery.passwordRecoveryMode?t("loginContent"):delete w.creds.verificationCode,w.passwordRecoveryAbort()},this.continueLogin=function(){s.location.href===w.url?s.location.reload(!0):s.location.href=w.url},this.showAbout=function(e){function s(e){this.closeDialog=function(){e.hide()}}a.show({targetEvent:e,templateUrl:"aboutBox.html",controller:s,controllerAs:"about"}),s.$inject=["$mdDialog"]},this.changeLanguage=function(e){s.location.href=ApplicationBaseURL+"changeLanguage?language="+this.creds.language},this.canChangePassword=function(e){return this.passwords.newPasswordConfirmation&&this.passwords.newPasswordConfirmation.length&&this.passwords.newPassword!=this.passwords.newPasswordConfirmation?(e.newPasswordConfirmation.$setValidity("newPasswordMismatch",!1),!1):(e.newPasswordConfirmation.$setValidity("newPasswordMismatch",!0),!!(this.passwords.newPassword&&0<this.passwords.newPassword.length&&this.passwords.newPasswordConfirmation&&this.passwords.newPasswordConfirmation.length&&this.passwords.newPassword==this.passwords.newPasswordConfirmation&&(this.isInPasswordRecoveryMode()||!this.loginState&&this.passwords.oldPassword&&0<this.passwords.oldPassword.length||"passwordchange"==this.loginState&&this.passwords.oldPassword&&0<this.passwords.oldPassword.length)))},this.changePassword=function(){i.changePassword(this.creds.username,this.creds.domain,this.passwords.newPassword,this.passwords.oldPassword,this.passwordRecovery.passwordRecoveryToken).then(function(e){w.loginState="message",w.url=e.url,w.errorMessage=l("The password was changed successfully.")},function(e){c.show(c.simple().textContent(e).position(d.toastPosition).hideDelay(2e3))})},this.passwordRecoveryInfo=function(){w.loginState="passwordrecovery",w.passwordRecovery.showLoader=!0,i.passwordRecovery(this.creds.username,this.creds.domain).then(function(e){w.passwordRecovery.passwordRecoveryMode=e.mode,"SecretQuestion"===e.mode?(w.passwordRecovery.passwordRecoveryQuestion=e.secretQuestionLabel,w.passwordRecovery.passwordRecoveryQuestionKey=e.secretQuestion):"SecondaryEmail"===e.mode?w.passwordRecovery.passwordRecoverySecondaryEmailText=l("A link will be sent to %{0}",e.obfuscatedRecoveryEmail):"Disabled"===e.mode&&(w.loginState="error",w.errorMessage=l("No password recovery method has been defined forLine truncated
//# sourceMappingURL=Main.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Main.js","sources":["Main/Main.app.js"],"names":["angular","module","LoginController","$scope","$window","$timeout","Dialog","$mdDialog","Authentication","focus","rippleDo","vm","this","$onInit","creds","username","cookieUsername","password","domain","rememberLogin","isDefined","length","test","location","search","language","loginState","verificationCodePattern","passwords","newPassword","newPasswordConfirmation","oldPassword","visible","passwordRecovery","passwordRecoveryEnabled","passwordRecoveryQuestionKey","passwordRecoveryQuestion","passwordRecoveryMode","passwordRecoveryQuestionAnswer","passwordRecoveryToken","passwordRecoveryLinkTimer","passwordRecoverySecondaryEmailText","passwordRecoveryMailDomain","showLoader","showLogin","queryString","window","let","token","URLSearchParams","get","pathname","indexOf","tokenArray","replace","split","info","JSON","parse","atob","retrievePasswordRecoveryEnabled","document","querySelectorAll","forEach","el","parentElement","classList","add","login","then","data","totpmissingkey","totpdisabled","cn","url","continueLogin","msg","value","string","error","errorMessage","grace","l","expire","Math","round","passwordexpired","restoreLogin","passwordRecoveryInfo","verificationCode","passwordRecoveryAbort","href","reload","showAbout","$event","AboutDialogController","closeDialog","hide","show","targetEvent","templateUrl","controller","controllerAs","$inject","changeLanguage","ApplicationBaseURL","hello","form","canChangePassword","$setValidity","isInPasswordRecoveryMode","changePassword","mode","secretQuestionLabel","secretQuestion","obfuscatedRecoveryEmail","passwordRecoveryEmail","passwordRecoveryCheck","usernameChanged","clearTimeout","setTimeout","mailDomain","changePasswordVisibility","field","getElementById","type","innerHTML"],"mappings":"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 truncated
{"version":3,"file":"Main.js","sources":["Main/Main.app.js"],"names":["LoginController","$scope","$window","$timeout","Dialog","$mdDialog","Authentication","focus","rippleDo","sgConstant","$mdToast","vm","this","$onInit","creds","username","cookieUsername","password","domain","rememberLogin","angular","isDefined","length","test","location","search","language","loginState","verificationCodePattern","passwords","newPassword","newPasswordConfirmation","oldPassword","visible","passwordRecovery","passwordRecoveryEnabled","passwordRecoveryQuestionKey","passwordRecoveryQuestion","passwordRecoveryMode","passwordRecoveryQuestionAnswer","passwordRecoveryToken","passwordRecoveryLinkTimer","passwordRecoverySecondaryEmailText","passwordRecoveryMailDomain","showLoader","showLogin","queryString","window","let","token","URLSearchParams","get","pathname","indexOf","tokenArray","replace","split","info","JSON","parse","atob","retrievePasswordRecoveryEnabled","document","querySelectorAll","forEach","el","parentElement","classList","add","login","then","data","totpmissingkey","totpdisabled","cn","url","continueLogin","msg","value","string","error","errorMessage","grace","passwordPolicy","userPolicies","l","expire","Math","round","passwordexpired","restoreLogin","verificationCode","passwordRecoveryAbort","href","reload","showAbout","$event","AboutDialogController","closeDialog","hide","show","targetEvent","templateUrl","controller","controllerAs","$inject","changeLanguage","ApplicationBaseURL","canChangePassword","form","$setValidity","isInPasswordRecoveryMode","changePassword","simple","textContent","position","toastPosition","hideDelay","passwordRecoveryInfo","mode","secretQuestionLabel","secretQuestion","obfuscatedRecoveryEmail","passwordRecoveryEmail","passwordRecoveryCheck","isPasswordExpiredSecurity","usernameChanged","clearTimeout","setTimeout","mailDomain","changePasswordVisibility","field","getElementById","type","innerHTML","module"],"mappings":"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 truncated
+72 -62
View File
@@ -1,6 +1,6 @@
/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* JavaScript for MainUI (SOGoRootPage) */
(function() {
(function () {
'use strict';
angular.module('SOGo.MainUI', ['SOGo.Common', 'SOGo.Authentication']);
@@ -9,8 +9,8 @@
/**
* @ngInject
*/
LoginController.$inject = ['$scope', '$window', '$timeout', 'Dialog', '$mdDialog', 'Authentication', 'sgFocus', 'sgRippleClick'];
function LoginController($scope, $window, $timeout, Dialog, $mdDialog, Authentication, focus, rippleDo) {
LoginController.$inject = ['$scope', '$window', '$timeout', 'Dialog', '$mdDialog', 'Authentication', 'sgFocus', 'sgRippleClick', 'sgConstant', '$mdToast'];
function LoginController($scope, $window, $timeout, Dialog, $mdDialog, Authentication, focus, rippleDo, sgConstant, $mdToast) {
var vm = this;
this.$onInit = function () {
@@ -69,10 +69,9 @@
vm.passwordRecovery.passwordRecoveryEnabled = true;
vm.loginState = 'passwordchange';
vm.showLogin = false;
rippleDo('loginContent');
}
} else {
vm.retrievePasswordRecoveryEnabled();
}
@@ -83,14 +82,14 @@
el.parentElement.classList.add("md-input-has-value");
});
}
}, 100);
}, 100);
};
this.login = function() {
this.login = function () {
vm.loginState = 'authenticating';
Authentication.login(vm.creds)
.then(function(data) {
.then(function (data) {
if (data.totpmissingkey) {
vm.loginState = 'totpcode';
@@ -107,11 +106,11 @@
vm.url = data.url;
// Let the user see the succesfull message before reloading the page
$timeout(function() {
$timeout(function () {
vm.continueLogin();
}, 1000);
}
}, function(msg) {
}, function (msg) {
vm.loginState = 'error';
if (msg.error) {
@@ -122,21 +121,22 @@
vm.loginState = 'passwordwillexpire';
vm.cn = msg.cn;
vm.url = msg.url;
vm.passwordPolicy = msg.userPolicies ? msg.userPolicies : [];
vm.errorMessage = l('You have %{0} logins remaining before your account is locked. Please change your password in the preference dialog.', msg.grace);
}
else if (msg.expire > 0) {
// Password will soon expire
var value, string;
if (msg.expire > 86400) {
value = Math.round(msg.expire/86400);
value = Math.round(msg.expire / 86400);
string = l("days");
}
else if (msg.expire > 3600) {
value = Math.round(msg.expire/3600);
value = Math.round(msg.expire / 3600);
string = l("hours");
}
else if (msg.expire > 60) {
value = Math.round(msg.expire/60);
value = Math.round(msg.expire / 60);
string = l("minutes");
}
else {
@@ -148,34 +148,40 @@
vm.url = msg.url;
vm.errorMessage = l('Your password is going to expire in %{0} %{1}.', value, string);
}
else if (msg.passwordexpired) {
else if (msg.passwordexpired && msg.passwordexpired == 2) {
vm.loginState = 'passwordchange';
vm.passwordPolicy = msg.userPolicies ? msg.userPolicies : [];
vm.url = msg.url;
vm.passwordexpired = msg.passwordexpired;
} else if (msg.passwordexpired) {
vm.loginState = 'passwordchange';
vm.passwordPolicy = msg.userPolicies ? msg.userPolicies : [];
vm.url = msg.url;
vm.passwordexpired = msg.passwordexpired;
}
});
return false;
};
this.restoreLogin = function() {
vm.showLogin = false;
this.restoreLogin = function () {
if ('SecretQuestion' === vm.passwordRecovery.passwordRecoveryMode) {
rippleDo('loginContent');
vm.passwordRecoveryInfo();
vm.passwordRecoveryAbort();
} else {
delete vm.creds.verificationCode;
vm.passwordRecoveryAbort();
}
};
this.continueLogin = function() {
this.continueLogin = function () {
if ($window.location.href === vm.url)
$window.location.reload(true);
else
$window.location.href = vm.url;
};
this.showAbout = function($event) {
this.showAbout = function ($event) {
$mdDialog.show({
targetEvent: $event,
templateUrl: 'aboutBox.html',
@@ -184,24 +190,20 @@
});
AboutDialogController.$inject = ['$mdDialog'];
function AboutDialogController($mdDialog) {
this.closeDialog = function() {
this.closeDialog = function () {
$mdDialog.hide();
};
}
};
this.changeLanguage = function($event) {
this.changeLanguage = function ($event) {
// Reload page
$window.location.href = ApplicationBaseURL + 'login?language=' + this.creds.language;
$window.location.href = ApplicationBaseURL + 'changeLanguage?language=' + this.creds.language;
};
this.hello = function (form) {
return !true;
}
this.canChangePassword = function(form) {
this.canChangePassword = function (form) {
if (this.passwords.newPasswordConfirmation && this.passwords.newPasswordConfirmation.length &&
this.passwords.newPassword != this.passwords.newPasswordConfirmation) {
this.passwords.newPassword != this.passwords.newPasswordConfirmation) {
form.newPasswordConfirmation.$setValidity('newPasswordMismatch', false);
return false;
}
@@ -209,25 +211,29 @@
form.newPasswordConfirmation.$setValidity('newPasswordMismatch', true);
}
if (this.passwords.newPassword && this.passwords.newPassword.length > 0 &&
this.passwords.newPasswordConfirmation && this.passwords.newPasswordConfirmation.length &&
this.passwords.newPassword == this.passwords.newPasswordConfirmation &&
((this.isInPasswordRecoveryMode()) ||
(!this.loginState && this.passwords.oldPassword && this.passwords.oldPassword.length > 0) ||
this.passwords.newPasswordConfirmation && this.passwords.newPasswordConfirmation.length &&
this.passwords.newPassword == this.passwords.newPasswordConfirmation &&
((this.isInPasswordRecoveryMode()) ||
(!this.loginState && this.passwords.oldPassword && this.passwords.oldPassword.length > 0) ||
('passwordchange' == this.loginState && this.passwords.oldPassword && this.passwords.oldPassword.length > 0)
))
))
return true;
return false;
};
this.changePassword = function() {
Authentication.changePassword(this.creds.username, this.creds.domain, this.passwords.newPassword, this.passwords.oldPassword, this.passwordRecovery.passwordRecoveryToken).then(function(data) {
this.changePassword = function () {
Authentication.changePassword(this.creds.username, this.creds.domain, this.passwords.newPassword, this.passwords.oldPassword, this.passwordRecovery.passwordRecoveryToken).then(function (data) {
vm.loginState = 'message';
vm.url = data.url;
vm.errorMessage = l('The password was changed successfully.');
}, function(msg) {
vm.loginState = 'error';
vm.errorMessage = msg;
}, function (msg) {
$mdToast.show(
$mdToast.simple()
.textContent(msg)
.position(sgConstant.toastPosition)
.hideDelay(2000)
);
});
};
@@ -260,38 +266,42 @@
, this.passwordRecovery.passwordRecoveryMailDomain).then(function () {
vm.loginState = 'sendrecoverymail';
vm.passwordRecovery.showLoader = false;
}, function (msg) {
vm.loginState = 'error';
vm.errorMessage = msg;
}, function (msg) {
vm.loginState = 'error';
vm.errorMessage = msg;
vm.passwordRecovery.showLoader = false;
});
});
};
this.passwordRecoveryCheck = function () {
vm.passwordRecovery.showLoader = true;
Authentication.passwordRecoveryCheck(this.creds.username, this.creds.domain
, this.passwordRecovery.passwordRecoveryMode
, this.passwordRecovery.passwordRecoveryQuestionKey
, this.passwordRecovery.passwordRecoveryQuestionAnswer
, this.passwordRecovery.passwordRecoveryMailDomain).then(function (token) {
if ("SecretQuestion" == vm.passwordRecovery.passwordRecoveryMode) {
vm.passwordRecovery.passwordRecoveryToken = token;
vm.loginState = 'passwordchange';
} else if ("SecondaryEmail" == vm.passwordRecovery.passwordRecoveryMode) {
vm.loginState = 'sendrecoverymail';
}
vm.passwordRecovery.showLoader = false;
}, function (msg) {
vm.loginState = 'error';
vm.errorMessage = msg;
vm.passwordRecovery.showLoader = false;
});
, this.passwordRecovery.passwordRecoveryMode
, this.passwordRecovery.passwordRecoveryQuestionKey
, this.passwordRecovery.passwordRecoveryQuestionAnswer
, this.passwordRecovery.passwordRecoveryMailDomain).then(function (token) {
if ("SecretQuestion" == vm.passwordRecovery.passwordRecoveryMode) {
vm.passwordRecovery.passwordRecoveryToken = token;
vm.loginState = 'passwordchange';
} else if ("SecondaryEmail" == vm.passwordRecovery.passwordRecoveryMode) {
vm.loginState = 'sendrecoverymail';
}
vm.passwordRecovery.showLoader = false;
}, function (msg) {
vm.loginState = 'error';
vm.errorMessage = msg;
vm.passwordRecovery.showLoader = false;
});
};
this.isPasswordExpiredSecurity = function () {
return (this.passwordexpired && 2 === this.passwordexpired);
};
this.isInPasswordRecoveryMode = function () {
return (("SecretQuestion" == this.passwordRecovery.passwordRecoveryMode ||
"SecondaryEmail" == this.passwordRecovery.passwordRecoveryMode) &&
this.passwordRecovery.passwordRecoveryToken) ? true : false;
return (("SecretQuestion" == this.passwordRecovery.passwordRecoveryMode) ||
("SecondaryEmail" == this.passwordRecovery.passwordRecoveryMode &&
this.passwordRecovery.passwordRecoveryToken)) ? true : false;
};
this.passwordRecoveryAbort = function () {
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,t){e.state("preferences",{abstract:!0,views:{preferences:{templateUrl:"preferences.html",controller:"PreferencesController",controllerAs:"app"}}}).state("preferences.general",{url:"/general",views:{module:{templateUrl:"generalPreferences.html"}}}).state("preferences.calendars",{url:"/calendars",views:{module:{templateUrl:"calendarsPreferences.html"}}}).state("preferences.addressbooks",{url:"/addressbooks",views:{module:{templateUrl:"addressbooksPreferences.html"}}}).state("preferences.mailer",{url:"/mailer",views:{module:{templateUrl:"mailerPreferences.html"}}}),t.rules.otherwise("/general")}function t(e,t,i,s){e.DebugEnabled||s.defaultErrorHandler(function(){}),i.onError({to:"preferences.**"},function(e){"preferences"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),s.go({state:"preferences"}))})}angular.module("SOGo.PreferencesUI",["ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.MailerUI","SOGo.ContactsUI","SOGo.Authentication","as.sortable"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],t.$inject=["$window","$log","$transitions","$state"]}(),function(){"use strict";function e(a,e,t,i,r,s,n,o,c,d,f){var u=this,h=e.usesCASAuthentication||e.usesSAML2Authentication;function p(){u.account.security&&u.account.security.hasCertificate&&u.account.$certificate().then(function(e){u.certificate=e},function(){delete u.account.security.hasCertificate})}function m(e){e=0<e.type.indexOf("pkcs12")||/\.(p12|pfx)$/.test(e.name);return u.form.certificateFilename.$setValidity("fileformat",e),e}this.defaultPort=143,this.smtpDefaultPort=25,this.defaults=n,this.account=o,this.maxSize=f,this.accountId=c,this.hostnameRE=h&&0<c?/^(?!(127\.0\.0\.1|localhost(?:\.localdomain)?)$)/:/./,this.emailRE=String.emailRE,this.addressesSearchText="",this.ckConfig={autoGrow_minHeight:70,toolbar:{items:["bold","italic","|","fontColor","fontFamily","fontSize","|","link","|","specialCharacters","imageUpload","|","sourceEditing","htmlEmbed"],shouldNotGroupWhenFull:!0},language:n.ckLocaleCode},this.account.encryption?"ssl"==this.account.encryption&&(this.defaultPort=993):this.account.encryption="none",this.account.smtpEncryption?this.smtpDefaultPort=465:this.account.smtpEncryption="none",p(),this.uploader=new i({url:[s.activeUser("folderURL")+"Mail",c,"importCertificate"].join("/"),autoUpload:!1,queueLimit:1,filters:[{name:m,fn:m}],onAfterAddingFile:function(e){u.certificateFilename=e.file.name},onSuccessItem:function(e,t,i,s){this.clearQueue(),a(function(){_.assign(u.account,{security:{hasCertificate:!0},$$certificate:t})}),p()},onErrorItem:function(e,t,i,s){r.alert(l("Error"),l("An error occurred while importing the certificate. Verify your password."))}}),this.hasIdentities=function(){return 0<_.filter(this.account.identities,this.isEditableIdentity).length},this.isEditableIdentity=function(e){return!e.isReadOnly},this.selectIdentity=function(e){this.selectedIdentity==e?this.selectedIdentity=null:this.selectedIdentity=e},this.hasDefaultIdentity=function(){return 0<=_.findIndex(this.account.identities,function(e){return!!e.isDefault})},this.setDefaultIdentity=function(e,i){return _.forEach(this.account.identities,function(e,t){t==i?e.isDefault=!e.isDefault:delete e.isDefault}),e.stopPropagation(),!1},this.canRemoveIdentity=function(e){return e==this.selectedIdentity&&this.hasIdentities()},this.removeIdentity=function(e){this.account.identities.splice(e,1),this.selectedIdentity=null},this.addIdentity=function(){var e=_.findIndex(this.account.identities,{isReadOnly:1}),t={};e<0&&(e=this.account.identities.length),this.customFromIsReadonly()&&(t.fullName=this.account.identities[0].fullName),this.account.identities.splice(Math.max(e,0),0,t),this.selectedIdentity=e},this.showCkEditor=function(e){return this.selectedIdentity==e&&"html"==this.defaults.SOGoMailComposeMessageType},this.filterEmailAddresses=function(t){return _.filter(e.defaultEmailAddresses,function(e){return 0<=e.toLowerCase().indexOf(t.toLowerCase())})},this.customFromIsReadonly=function(){return!(0<c||d)},this.importCertificate=function(){this.uploader.queue[0].formData=[{password:this.certificatePassword}],this.uploader.uploadItem(0)},this.onBeforeUploadCertificate=function(e){this.form=e,this.uploader.clearQueue()},this.removeCertificate=function(){this.account.$removeCertificate()},this.cancel=function(){t.cancel()},this.save=function(){JSON.stringify(this.account).length>this.maxSize?r.alert(l("Error"),l("Data too big. Please contact technical support.")):t.hide()}}e.$inject=["$timeout","$window","$mdDialog","FileUploader","Dialog","sgSettings","defaults","account","accountId","mailCustomFromEnabled","maxSize"],angular.module("SOGo.PreferencesUI").controller("AccountDialogController",e)}(),function(){"use strict";function e(e,t,i,s,a,r,n,o,c){var d=t.sieveCapabilities,f=t.forwardEnabled,u=t.notificationEnabled;t.vacationEnabled;this.filter=a,this.mailboxes=r,thLine truncated
(()=>{function e(e,t){e.state("preferences",{abstract:!0,views:{preferences:{templateUrl:"preferences.html",controller:"PreferencesController",controllerAs:"app"}}}).state("preferences.general",{url:"/general",views:{module:{templateUrl:"generalPreferences.html"}}}).state("preferences.calendars",{url:"/calendars",views:{module:{templateUrl:"calendarsPreferences.html"}}}).state("preferences.addressbooks",{url:"/addressbooks",views:{module:{templateUrl:"addressbooksPreferences.html"}}}).state("preferences.mailer",{url:"/mailer",views:{module:{templateUrl:"mailerPreferences.html"}}}),t.rules.otherwise("/general")}function t(e,t,i,s){e.DebugEnabled||s.defaultErrorHandler(function(){}),i.onError({to:"preferences.**"},function(e){"preferences"==e.to().name||e.ignored()||(t.error("transition error to "+e.to().name+": "+e.error().detail),s.go({state:"preferences"}))})}angular.module("SOGo.PreferencesUI",["ui.router","sgCkeditor","angularFileUpload","SOGo.Common","SOGo.MailerUI","SOGo.ContactsUI","SOGo.Authentication","as.sortable"]).config(e).run(t),e.$inject=["$stateProvider","$urlServiceProvider"],t.$inject=["$window","$log","$transitions","$state"]})(),(()=>{function e(a,e,t,i,r,s,n,o,c,d,f){var u=this,h=e.usesCASAuthentication||e.usesSAML2Authentication;function p(){u.account.security&&u.account.security.hasCertificate&&u.account.$certificate().then(function(e){u.certificate=e},function(){delete u.account.security.hasCertificate})}function m(e){e=0<e.type.indexOf("pkcs12")||/\.(p12|pfx)$/.test(e.name);return u.form.certificateFilename.$setValidity("fileformat",e),e}this.defaultPort=143,this.smtpDefaultPort=25,this.defaults=n,this.account=o,this.maxSize=f,this.accountId=c,this.hostnameRE=h&&0<c?/^(?!(127\.0\.0\.1|localhost(?:\.localdomain)?)$)/:/./,this.emailRE=String.emailRE,this.addressesSearchText="",this.ckConfig={autoGrow_minHeight:70,toolbar:{items:["bold","italic","|","fontColor","fontFamily","fontSize","|","link","|","specialCharacters","imageUpload","|","sourceEditing","htmlEmbed"],shouldNotGroupWhenFull:!0},language:n.ckLocaleCode},this.account.encryption?"ssl"==this.account.encryption&&(this.defaultPort=993):this.account.encryption="none",this.account.smtpEncryption?this.smtpDefaultPort=465:this.account.smtpEncryption="none",p(),this.uploader=new i({url:[s.activeUser("folderURL")+"Mail",c,"importCertificate"].join("/"),autoUpload:!1,queueLimit:1,filters:[{name:m,fn:m}],onAfterAddingFile:function(e){u.certificateFilename=e.file.name},onSuccessItem:function(e,t,i,s){this.clearQueue(),a(function(){_.assign(u.account,{security:{hasCertificate:!0},$$certificate:t})}),p()},onErrorItem:function(e,t,i,s){r.alert(l("Error"),l("An error occurred while importing the certificate. Verify your password."))}}),this.hasIdentities=function(){return 0<_.filter(this.account.identities,this.isEditableIdentity).length},this.isEditableIdentity=function(e){return!e.isReadOnly},this.selectIdentity=function(e){this.selectedIdentity==e?this.selectedIdentity=null:this.selectedIdentity=e},this.hasDefaultIdentity=function(){return 0<=_.findIndex(this.account.identities,function(e){return!!e.isDefault})},this.setDefaultIdentity=function(e,i){return _.forEach(this.account.identities,function(e,t){t==i?e.isDefault=!e.isDefault:delete e.isDefault}),e.stopPropagation(),!1},this.canRemoveIdentity=function(e){return e==this.selectedIdentity&&this.hasIdentities()},this.removeIdentity=function(e){this.account.identities.splice(e,1),this.selectedIdentity=null},this.addIdentity=function(){var e=_.findIndex(this.account.identities,{isReadOnly:1}),t={};e<0&&(e=this.account.identities.length),this.customFromIsReadonly()&&(t.fullName=this.account.identities[0].fullName),this.account.identities.splice(Math.max(e,0),0,t),this.selectedIdentity=e},this.showCkEditor=function(e){return this.selectedIdentity==e&&"html"==this.defaults.SOGoMailComposeMessageType},this.filterEmailAddresses=function(t){return _.filter(e.defaultEmailAddresses,function(e){return 0<=e.toLowerCase().indexOf(t.toLowerCase())})},this.customFromIsReadonly=function(){return!(0<c||d)},this.importCertificate=function(){this.uploader.queue[0].formData=[{password:this.certificatePassword}],this.uploader.uploadItem(0)},this.onBeforeUploadCertificate=function(e){this.form=e,this.uploader.clearQueue()},this.removeCertificate=function(){this.account.$removeCertificate()},this.cancel=function(){t.cancel()},this.save=function(){JSON.stringify(this.account).length>this.maxSize?r.alert(l("Error"),l("Data too big. Please contact technical support.")):t.hide()}}e.$inject=["$timeout","$window","$mdDialog","FileUploader","Dialog","sgSettings","defaults","account","accountId","mailCustomFromEnabled","maxSize"],angular.module("SOGo.PreferencesUI").controller("AccountDialogController",e)})(),(()=>{function e(e,t,i,s,a,r,n,o,c){var d=t.sieveCapabilities,f=t.forwardEnabled,t=t.notificationEnabled;this.filter=a,this.mailboxes=r,this.labels=n,this.fieldLabels={subject:l("Subject"),from:l("From"),to:l(Line truncated
//# sourceMappingURL=Preferences.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Preferences.js","sources":["Preferences/Preferences.app.js","Preferences/AccountDialogController.js","Preferences/FiltersDialogController.js","Preferences/PreferencesController.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","abstract","views","preferences","templateUrl","controller","controllerAs","url","module","rules","otherwise","runBlock","$window","$log","$transitions","$state","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","detail","go","angular","config","run","$inject","AccountDialogController","$timeout","$mdDialog","FileUploader","Dialog","Settings","defaults","account","accountId","mailCustomFromEnabled","maxSize","vm","this","usesSSO","usesCASAuthentication","usesSAML2Authentication","_loadCertificate","security","hasCertificate","$certificate","then","crt","certificate","filterByExtension","item","isP12File","type","indexOf","test","form","certificateFilename","$setValidity","defaultPort","smtpDefaultPort","hostnameRE","emailRE","String","addressesSearchText","ckConfig","autoGrow_minHeight","toolbar","items","shouldNotGroupWhenFull","language","ckLocaleCode","encryption","smtpEncryption","uploader","activeUser","join","autoUpload","queueLimit","filters","fn","onAfterAddingFile","file","onSuccessItem","response","status","headers","clearQueue","_","assign","$$certificate","onErrorItem","alert","l","hasIdentities","filter","identities","isEditableIdentity","length","identity","isReadOnly","selectIdentity","index","selectedIdentity","hasDefaultIdentity","findIndex","isDefault","setDefaultIdentity","$event","$index","forEach","i","stopPropagation","canRemoveIdentity","removeIdentity","splice","addIdentity","firstReadonlyIndex","customFromIsReadonly","fullName","Math","max","showCkEditor","SOGoMailComposeMessageType","filterEmailAddresses","$query","defaultEmailAddresses","address","toLowerCase","importCertificate","queue","formData","password","certificatePassword","uploadItem","onBeforeUploadCertificate","removeCertificate","$removeCertificate","cancel","save","JSON","stringify","hide","FiltersDialogController","$scope","mailboxes","labels","validateForwardAddress","Preferences","sieveCapabilities","forwardEnabled","notificationEnabled","vacationEnabled","fieldLabels","subject","from","cc","to_or_cc","size","header","body","methodLabels","discard","keep","stop","redirect","notify","reject","fileinto","addflag","methods","intersection","keys","numberOperatorLabels","under","over","textOperatorLabels","is","is_not","contains","contains_not","matches","matches_not","regex","regex_not","hasRulesAndActions","requirements","actions","match","push","every","a","invalid","method","action","argument","err","message","addMailFilterRule","event","field","operator","removeMailFilterRule","addMailFilterAction","removeMailFilterAction","PreferencesController","$q","$mdMedia","$mdSidenav","$mdToast","sgSettings","focus","User","Account","Authentication","AddressBook","Date","beginOfDay","_loadAllMailboxes","mail","id","$getMailboxes","allMailboxes","$flattenMailboxes","all","domain","domains","forwardConstraints","defaultAddresses","adr","split","Error","forwardConstraintsDomains","$onInit","passwords","newPassword","newPasswordConfirmation","oldPassword","timeZonesList","timeZonesSearchText","autocomplete","forward","notification","mailLabelKeyRE","RegExp","emailSeparatorKeys","Notification","notificationMessage","notificationTranslated","SOGoMailAutoMarkAsReadMode","mailAutoMarkAsReadDelay","SOGoMailAutoMarkAsReadDelay","SOGoAlternateAvatar","$alternateAvatar","sieveVariablesCapability","hasActiveExternalSieveScripts","updateVacationDates","$valid","close","onLanguageChange","confirm","ok","quick","location","reload","onDesktopNotificationsChange","SOGoDesktopNotifications","authorizeNotifications","resetContactsCategories","SOGoContactsCategories","defaultContactsCategories","slice","$setDirty","resetCalendarCategories","SOGoCalendarCategories","defaultCalendarCategories","SOGoCalendarCategoriesColorsValues","values","addCalendarCategory","resetCalendarCategoryValidity","removeCalendarCategory","addContactCategory","removeContactCategory","onMailAutoMarkAsReadDelay","addMailAccount","ev","AuxiliaryMailAccounts","isNew","email","receipts","receiptAction","receiptNonRecipientAction","receiptOutsideDomainAction","receiptAnyAction","show","targetEvent","locals","CDefaultsSize","isArray","settings","Mail","ExpandedFolders","$omit","editMailAccount","data","cloneDeep","catch","noop","removeMailAccount","resetMailLabelValidity","addMailLabel","guid","SOGoMailLabelsColorsKeys","SOGoMailLabelsColorsValues","removeMailLabel","addMailFilter","active","SOGoMailLabelsColors","SOGoSieveFilters","editMailFilter","copy","removeMailFilter","onFiltersOrderChanged","_onFiltersOrderChanged","difference","Vacation","autoReplyEmailAddresses","addDefaultEmailAddresses","v","isDefined","union","userFilter","search","excludedUsers","minimumSearLine truncated
{"version":3,"file":"Preferences.js","sources":["Preferences/Preferences.app.js","Preferences/AccountDialogController.js","Preferences/FiltersDialogController.js","Preferences/PreferencesController.js"],"names":["configure","$stateProvider","$urlServiceProvider","state","abstract","views","preferences","templateUrl","controller","controllerAs","url","module","rules","otherwise","runBlock","$window","$log","$transitions","$state","DebugEnabled","defaultErrorHandler","onError","to","transition","name","ignored","error","detail","go","angular","config","run","$inject","AccountDialogController","$timeout","$mdDialog","FileUploader","Dialog","Settings","defaults","account","accountId","mailCustomFromEnabled","maxSize","vm","this","usesSSO","usesCASAuthentication","usesSAML2Authentication","_loadCertificate","security","hasCertificate","$certificate","then","crt","certificate","filterByExtension","item","isP12File","type","indexOf","test","form","certificateFilename","$setValidity","defaultPort","smtpDefaultPort","hostnameRE","emailRE","String","addressesSearchText","ckConfig","autoGrow_minHeight","toolbar","items","shouldNotGroupWhenFull","language","ckLocaleCode","encryption","smtpEncryption","uploader","activeUser","join","autoUpload","queueLimit","filters","fn","onAfterAddingFile","file","onSuccessItem","response","status","headers","clearQueue","_","assign","$$certificate","onErrorItem","alert","l","hasIdentities","filter","identities","isEditableIdentity","length","identity","isReadOnly","selectIdentity","index","selectedIdentity","hasDefaultIdentity","findIndex","isDefault","setDefaultIdentity","$event","$index","forEach","i","stopPropagation","canRemoveIdentity","removeIdentity","splice","addIdentity","firstReadonlyIndex","customFromIsReadonly","fullName","Math","max","showCkEditor","SOGoMailComposeMessageType","filterEmailAddresses","$query","defaultEmailAddresses","address","toLowerCase","importCertificate","queue","formData","password","certificatePassword","uploadItem","onBeforeUploadCertificate","removeCertificate","$removeCertificate","cancel","save","JSON","stringify","hide","FiltersDialogController","$scope","mailboxes","labels","validateForwardAddress","Preferences","sieveCapabilities","forwardEnabled","notificationEnabled","fieldLabels","subject","from","cc","to_or_cc","size","header","body","methodLabels","discard","keep","stop","redirect","notify","reject","fileinto","addflag","methods","intersection","keys","numberOperatorLabels","under","over","textOperatorLabels","is","is_not","contains","contains_not","matches","matches_not","regex","regex_not","hasRulesAndActions","requirements","actions","match","push","every","a","invalid","method","action","argument","err","message","addMailFilterRule","event","field","operator","removeMailFilterRule","addMailFilterAction","removeMailFilterAction","PreferencesController","$q","$mdMedia","$mdSidenav","$mdToast","sgSettings","focus","User","Account","Authentication","AddressBook","Date","beginOfDay","_loadAllMailboxes","mail","id","$getMailboxes","allMailboxes","$flattenMailboxes","all","domain","domains","forwardConstraints","defaultAddresses","adr","split","Error","forwardConstraintsDomains","$onInit","passwords","newPassword","newPasswordConfirmation","oldPassword","timeZonesList","timeZonesSearchText","autocomplete","forward","notification","mailLabelKeyRE","RegExp","emailSeparatorKeys","Notification","notificationMessage","notificationTranslated","SOGoMailAutoMarkAsReadMode","mailAutoMarkAsReadDelay","SOGoMailAutoMarkAsReadDelay","SOGoAlternateAvatar","$alternateAvatar","sieveVariablesCapability","hasActiveExternalSieveScripts","updateVacationDates","$valid","close","onLanguageChange","confirm","ok","quick","location","reload","onDesktopNotificationsChange","SOGoDesktopNotifications","authorizeNotifications","resetContactsCategories","SOGoContactsCategories","defaultContactsCategories","slice","$setDirty","resetCalendarCategories","SOGoCalendarCategories","defaultCalendarCategories","SOGoCalendarCategoriesColorsValues","values","addCalendarCategory","resetCalendarCategoryValidity","removeCalendarCategory","addContactCategory","removeContactCategory","onMailAutoMarkAsReadDelay","addMailAccount","ev","AuxiliaryMailAccounts","isNew","email","receipts","receiptAction","receiptNonRecipientAction","receiptOutsideDomainAction","receiptAnyAction","show","targetEvent","locals","CDefaultsSize","isArray","settings","Mail","ExpandedFolders","$omit","editMailAccount","data","cloneDeep","catch","noop","removeMailAccount","resetMailLabelValidity","addMailLabel","guid","SOGoMailLabelsColorsKeys","SOGoMailLabelsColorsValues","removeMailLabel","addMailFilter","active","SOGoMailLabelsColors","SOGoSieveFilters","editMailFilter","copy","removeMailFilter","onFiltersOrderChanged","_onFiltersOrderChanged","difference","Vacation","autoReplyEmailAddresses","addDefaultEmailAddresses","v","isDefined","union","userFilter","search","excludedUsers","minimumSearchLength","$filterLine truncated
@@ -1,2 +1,2 @@
!function(){"use strict";function p(){var e,t,a,o,i=this;if(this.nextAlarm=null,this.nextInboxPoll=null,this.currentToast=p.$q.when(!0),this.lastUid=null,this.notifications={},this.defaults={},this.settings={Mail:{}},e=p.$document[0].getElementById("UserDefaults")){try{t=angular.fromJson(e.textContent||e.innerHTML)}catch(e){p.$log.error("Can't parse user's defaults: "+e.message),t={}}if(t.SOGoMailLabelsColorsKeys=[],t.SOGoMailLabelsColorsValues=[],_.forEach(t.SOGoMailLabelsColors,function(e,a){t.SOGoMailLabelsColorsKeys.push(a),t.SOGoMailLabelsColorsValues.push(e),"$"==a.charAt(0)&&(Object.defineProperty(t.SOGoMailLabelsColors,"_"+a,Object.getOwnPropertyDescriptor(t.SOGoMailLabelsColors,a)),delete t.SOGoMailLabelsColors[a])}),_.forEach(t.SOGoSieveFilters,function(e){_.forEach(e.actions,function(e){"addflag"==e.method&&"$"==e.argument.charAt(0)&&(e.argument="_"+e.argument)})}),t.SOGoRememberLastModule&&(t.SOGoLoginModule="Last"),t.SOGoMailAutoMarkAsReadDelay=parseInt(t.SOGoMailAutoMarkAsReadDelay)||0,t.SOGoMailAutoMarkAsReadEnabled=0<=t.SOGoMailAutoMarkAsReadDelay,0<t.SOGoMailAutoMarkAsReadDelay?t.SOGoMailAutoMarkAsReadMode="delay":t.SOGoMailAutoMarkAsReadMode="immediate",t.SOGoMailAutoSave=parseInt(t.SOGoMailAutoSave)||0,t.SOGoMailComposeWindowEnabled=angular.isDefined(t.SOGoMailComposeWindow),t.SOGoMailComposeFontSizeEnabled=0<parseInt(t.SOGoMailComposeFontSize),window.CKEDITOR&&t.SOGoMailComposeFontSizeEnabled&&(window.CKEDITOR.config.fontSize_defaultLabel=t.SOGoMailComposeFontSize,window.CKEDITOR.addCss(".cke_editable { font-size: "+t.SOGoMailComposeFontSize+"px; }")),_.forEach(t.AuxiliaryMailAccounts,function(e){isNaN(parseInt(e.port))&&(e.port=null)}),t.Vacation?(t.Vacation.startDate&&(t.Vacation.startDate=new Date(1e3*parseInt(t.Vacation.startDate))),t.Vacation.endDate&&(t.Vacation.endDate=new Date(1e3*parseInt(t.Vacation.endDate))),t.Vacation.startTime&&(a=t.Vacation.startTime.split(":"),t.Vacation.startTime=new Date,t.Vacation.startTime.setHours(parseInt(a[0]),parseInt(a[1]))),t.Vacation.endTime&&(a=t.Vacation.endTime.split(":"),t.Vacation.endTime=new Date,t.Vacation.endTime.setHours(parseInt(a[0]),parseInt(a[1]))),t.Vacation.autoReplyEmailAddresses&&angular.isString(t.Vacation.autoReplyEmailAddresses)&&t.Vacation.autoReplyEmailAddresses.length&&(t.Vacation.autoReplyEmailAddresses=t.Vacation.autoReplyEmailAddresses.split(/, */))):t.Vacation={},angular.isUndefined(t.Vacation.days)&&(t.Vacation.days=[]),(angular.isUndefined(t.Vacation.autoReplyEmailAddresses)||0==t.Vacation.autoReplyEmailAddresses.length)&&angular.isDefined(window.defaultEmailAddresses)&&(t.Vacation.autoReplyEmailAddresses=window.defaultEmailAddresses.slice()),angular.isUndefined(t.Vacation.daysBetweenResponse)&&(t.Vacation.daysBetweenResponse=7),!angular.isUndefined(t.Vacation.startDate)&&t.Vacation.startDate||(t.Vacation.startDateEnabled=0,t.Vacation.startDate=new Date,t.Vacation.startDate=t.Vacation.startDate.beginOfDay(),t.Vacation.startDate.addDays(1)),!angular.isUndefined(t.Vacation.endDate)&&t.Vacation.endDate||(t.Vacation.endDateEnabled=0,t.Vacation.endDate=new Date(t.Vacation.startDate.getTime()),t.Vacation.endDate.addDays(1)),!angular.isUndefined(t.Vacation.startTime)&&t.Vacation.startTime||(t.Vacation.startTimeEnabled=0,t.Vacation.startTime=new Date,t.Vacation.startTime.setHours(parseInt(t.SOGoDayEndTime)),t.Vacation.startTime.setMinutes(0)),!angular.isUndefined(t.Vacation.endTime)&&t.Vacation.endTime||(t.Vacation.endTimeEnabled=0,t.Vacation.endTime=new Date,t.Vacation.endTime.setHours(parseInt(t.SOGoDayStartTime)),t.Vacation.endTime.setMinutes(0)),t.Forward&&(angular.isString(t.Forward.forwardAddress)?t.Forward.forwardAddress=t.Forward.forwardAddress.split(/, */):angular.isArray(t.Forward.forwardAddress)||(t.Forward.forwardAddress=[])),t.Notification&&(angular.isString(t.Notification.notificationAddress)?t.Notification.notificationAddress=t.Notification.notificationAddress.split(/, */):angular.isArray(t.Notification.notificationAddress)||(t.Notification.notificationAddress=[])),angular.isUndefined(t.SOGoCalendarCategories)&&(t.SOGoCalendarCategories=[]),t.SOGoCalendarCategoriesColorsValues=[],_.forEach(t.SOGoCalendarCategories,function(e){t.SOGoCalendarCategoriesColorsValues.push(t.SOGoCalendarCategoriesColors[e])}),angular.isUndefined(t.SOGoContactsCategories)?t.SOGoContactsCategories=[]:t.SOGoContactsCategories=_.compact(t.SOGoContactsCategories),t.emailSeparatorKeys=[9,13,186,188],t.LocaleCode)switch(t.ckLocaleCode=t.LocaleCode.replace("_","-").toLowerCase(),t.LocaleCode){case"it":t.emailSeparatorKeys=[9,13,188];break;case"ru":t.emailSeparatorKeys=[9,13];break;case"sr_ME":case"sr_RS":t.ckLocaleCode="sr-latn"}angular.extend(i.defaults,t),i.$mdDateLocaleProvider=p.$mdDateLocaleProvider,angular.extend(i.$mdDateLocaleProvider,t.locale),angular.extend(i.$mdDateLocaleProvider,{firstDayOfWeek:t.SOGoFirstDayOfWeek,firstWeekOfYear:t.SOGoFirstWeekOfYear}),i.$mdDateLocaleProvider.firstDayOfWeek=parseInt(t.SOGoFirstDayOfWeek),i.$mLine truncated
(()=>{function p(){var e,t,a,o,i=this;if(this.nextAlarm=null,this.nextInboxPoll=null,this.currentToast=p.$q.when(!0),this.lastUid=null,this.notifications={},this.defaults={},this.settings={Mail:{}},e=p.$document[0].getElementById("UserDefaults")){try{t=angular.fromJson(e.textContent||e.innerHTML)}catch(e){p.$log.error("Can't parse user's defaults: "+e.message),t={}}if(t.SOGoMailLabelsColorsKeys=[],t.SOGoMailLabelsColorsValues=[],_.forEach(t.SOGoMailLabelsColors,function(e,a){t.SOGoMailLabelsColorsKeys.push(a),t.SOGoMailLabelsColorsValues.push(e),"$"==a.charAt(0)&&(Object.defineProperty(t.SOGoMailLabelsColors,"_"+a,Object.getOwnPropertyDescriptor(t.SOGoMailLabelsColors,a)),delete t.SOGoMailLabelsColors[a])}),_.forEach(t.SOGoSieveFilters,function(e){_.forEach(e.actions,function(e){"addflag"==e.method&&"$"==e.argument.charAt(0)&&(e.argument="_"+e.argument)})}),t.SOGoRememberLastModule&&(t.SOGoLoginModule="Last"),t.SOGoMailAutoMarkAsReadDelay=parseInt(t.SOGoMailAutoMarkAsReadDelay)||0,t.SOGoMailAutoMarkAsReadEnabled=0<=t.SOGoMailAutoMarkAsReadDelay,0<t.SOGoMailAutoMarkAsReadDelay?t.SOGoMailAutoMarkAsReadMode="delay":t.SOGoMailAutoMarkAsReadMode="immediate",t.SOGoMailAutoSave=parseInt(t.SOGoMailAutoSave)||0,t.SOGoMailComposeWindowEnabled=angular.isDefined(t.SOGoMailComposeWindow),t.SOGoMailComposeFontSizeEnabled=0<parseInt(t.SOGoMailComposeFontSize),window.CKEDITOR&&t.SOGoMailComposeFontSizeEnabled&&(window.CKEDITOR.config.fontSize_defaultLabel=t.SOGoMailComposeFontSize,window.CKEDITOR.addCss(".cke_editable { font-size: "+t.SOGoMailComposeFontSize+"px; }")),_.forEach(t.AuxiliaryMailAccounts,function(e){isNaN(parseInt(e.port))&&(e.port=null)}),t.Vacation?(t.Vacation.startDate&&(t.Vacation.startDate=new Date(1e3*parseInt(t.Vacation.startDate))),t.Vacation.endDate&&(t.Vacation.endDate=new Date(1e3*parseInt(t.Vacation.endDate))),t.Vacation.startTime&&(a=t.Vacation.startTime.split(":"),t.Vacation.startTime=new Date,t.Vacation.startTime.setHours(parseInt(a[0]),parseInt(a[1]))),t.Vacation.endTime&&(a=t.Vacation.endTime.split(":"),t.Vacation.endTime=new Date,t.Vacation.endTime.setHours(parseInt(a[0]),parseInt(a[1]))),t.Vacation.autoReplyEmailAddresses&&angular.isString(t.Vacation.autoReplyEmailAddresses)&&t.Vacation.autoReplyEmailAddresses.length&&(t.Vacation.autoReplyEmailAddresses=t.Vacation.autoReplyEmailAddresses.split(/, */))):t.Vacation={},angular.isUndefined(t.Vacation.days)&&(t.Vacation.days=[]),(angular.isUndefined(t.Vacation.autoReplyEmailAddresses)||0==t.Vacation.autoReplyEmailAddresses.length)&&angular.isDefined(window.defaultEmailAddresses)&&(t.Vacation.autoReplyEmailAddresses=window.defaultEmailAddresses.slice()),angular.isUndefined(t.Vacation.daysBetweenResponse)&&(t.Vacation.daysBetweenResponse=7),!angular.isUndefined(t.Vacation.startDate)&&t.Vacation.startDate||(t.Vacation.startDateEnabled=0,t.Vacation.startDate=new Date,t.Vacation.startDate=t.Vacation.startDate.beginOfDay(),t.Vacation.startDate.addDays(1)),!angular.isUndefined(t.Vacation.endDate)&&t.Vacation.endDate||(t.Vacation.endDateEnabled=0,t.Vacation.endDate=new Date(t.Vacation.startDate.getTime()),t.Vacation.endDate.addDays(1)),!angular.isUndefined(t.Vacation.startTime)&&t.Vacation.startTime||(t.Vacation.startTimeEnabled=0,t.Vacation.startTime=new Date,t.Vacation.startTime.setHours(parseInt(t.SOGoDayEndTime)),t.Vacation.startTime.setMinutes(0)),!angular.isUndefined(t.Vacation.endTime)&&t.Vacation.endTime||(t.Vacation.endTimeEnabled=0,t.Vacation.endTime=new Date,t.Vacation.endTime.setHours(parseInt(t.SOGoDayStartTime)),t.Vacation.endTime.setMinutes(0)),t.Forward&&(angular.isString(t.Forward.forwardAddress)?t.Forward.forwardAddress=t.Forward.forwardAddress.split(/, */):angular.isArray(t.Forward.forwardAddress)||(t.Forward.forwardAddress=[])),t.Notification&&(angular.isString(t.Notification.notificationAddress)?t.Notification.notificationAddress=t.Notification.notificationAddress.split(/, */):angular.isArray(t.Notification.notificationAddress)||(t.Notification.notificationAddress=[])),angular.isUndefined(t.SOGoCalendarCategories)&&(t.SOGoCalendarCategories=[]),t.SOGoCalendarCategoriesColorsValues=[],_.forEach(t.SOGoCalendarCategories,function(e){t.SOGoCalendarCategoriesColorsValues.push(t.SOGoCalendarCategoriesColors[e])}),angular.isUndefined(t.SOGoContactsCategories)?t.SOGoContactsCategories=[]:t.SOGoContactsCategories=_.compact(t.SOGoContactsCategories),t.emailSeparatorKeys=[9,13,186,188],t.LocaleCode)switch(t.ckLocaleCode=t.LocaleCode.replace("_","-").toLowerCase(),t.LocaleCode){case"it":t.emailSeparatorKeys=[9,13,188];break;case"ru":t.emailSeparatorKeys=[9,13];break;case"sr_ME":case"sr_RS":t.ckLocaleCode="sr-latn"}angular.extend(i.defaults,t),i.$mdDateLocaleProvider=p.$mdDateLocaleProvider,angular.extend(i.$mdDateLocaleProvider,t.locale),angular.extend(i.$mdDateLocaleProvider,{firstDayOfWeek:t.SOGoFirstDayOfWeek,firstWeekOfYear:t.SOGoFirstWeekOfYear}),i.$mdDateLocaleProvider.firstDayOfWeek=parseInt(t.SOGoFirstDayOfWeek),i.$mdDateLocaleProviderLine truncated
//# sourceMappingURL=Preferences.services.js.map
@@ -1 +1 @@
{"version":3,"file":"Preferences.services.js","sources":["Preferences/Preferences.service.js"],"names":["Preferences","settingsElement","data","time","reloadPromises","_this","this","nextAlarm","nextInboxPoll","currentToast","$q","when","lastUid","notifications","defaults","settings","Mail","defaultsElement","$document","getElementById","angular","fromJson","textContent","innerHTML","e","$log","error","message","SOGoMailLabelsColorsKeys","SOGoMailLabelsColorsValues","_","forEach","SOGoMailLabelsColors","value","key","push","charAt","Object","defineProperty","getOwnPropertyDescriptor","SOGoSieveFilters","filter","actions","action","method","argument","SOGoRememberLastModule","SOGoLoginModule","SOGoMailAutoMarkAsReadDelay","parseInt","SOGoMailAutoMarkAsReadEnabled","SOGoMailAutoMarkAsReadMode","SOGoMailAutoSave","SOGoMailComposeWindowEnabled","isDefined","SOGoMailComposeWindow","SOGoMailComposeFontSizeEnabled","SOGoMailComposeFontSize","window","CKEDITOR","config","fontSize_defaultLabel","addCss","AuxiliaryMailAccounts","mailAccount","isNaN","port","Vacation","startDate","Date","endDate","startTime","split","setHours","endTime","autoReplyEmailAddresses","isString","length","isUndefined","days","defaultEmailAddresses","slice","daysBetweenResponse","startDateEnabled","beginOfDay","addDays","endDateEnabled","getTime","startTimeEnabled","SOGoDayEndTime","setMinutes","endTimeEnabled","SOGoDayStartTime","Forward","forwardAddress","isArray","Notification","notificationAddress","SOGoCalendarCategories","SOGoCalendarCategoriesColorsValues","SOGoCalendarCategoriesColors","SOGoContactsCategories","compact","emailSeparatorKeys","LocaleCode","ckLocaleCode","replace","toLowerCase","extend","$mdDateLocaleProvider","locale","firstDayOfWeek","SOGoFirstDayOfWeek","firstWeekOfYear","SOGoFirstWeekOfYear","weekNumberFormatter","weekNumber","l","msgCalendar","msgOpenCalendar","parseDate","dateString","SOGoShortDateFormat","NaN","formatDate","date","format","$dateFormat","parseTime","timeString","SOGoTimeFormat","formatTime","isDateComplete","trim","test","Calendar","ReloadWebCalendars","AutoReloadedWebCalendars","map","autoReload","id","calendarId","deferred","defer","$$resource","quietFetch","finally","resolve","promise","all","then","save","$omit","$rootScope","$emit","PreventInvitationsWhitelist","match","exec","user","$User","uid","cn","c_email","$$image","avatar","no_404","$factory","$window","$timeout","$state","$mdToast","sgConstant","Settings","Gravatar","Resource","User","$toast","$gravatar","activeUser","$resourcesURL","resourcesURL","$sgConstant","module","factory","prototype","ready","warn","email","size","options","alternate_avatar","SOGoAlternateAvatar","url","SOGoGravatarEnabled","join","dstObject","dstAttr","hasActiveExternalSieveScripts","response","status","supportsNotifications","isItemSecretQuestion","SOGoPasswordRecoveryMode","isItemSecondaryEmail","authorizeNotifications","requestPermission","permission","createNotification","title","params","pick","tag","lang","dir","onclick","onClick","close","viewInboxMessage","get","go","accountId","mailboxId","messageId","location","path","pollInbox","toastController","scope","body","hide","sortingAttributes","sort","asc","noHeaders","dry","filters","searchBy","searchInput","cancel","inboxSyncToken","syncToken","$inject","post","debug","headers","uidHeaderIndex","indexOf","isReadHeaderIndex","fromHeaderIndex","subjectHeaderIndex","showToast","show","locals","i","toast","SOGoDesktopNotifications","href","name","icon","bind","template","position","toastPosition","hideDelay","controller","refreshViewCheck","SOGoRefreshViewCheck","timeInterval","getAlarms","now","browserTime","Math","floor","fetch","delay","f","alarms","a","b","x","next","pop","utc","alarmTime","showAlarm","today","day","asDate","period","AlarmController","summary","reminder","snooze","localizedStartDate","localizedEndDate","isAllDay","localizedStartTime","localizedEndTime","view","getDayString","$save","deep","preferences","whitelist","copy","substring","account","identities","identity","isReadOnly","$shortFormat"],"mappings":"AAEA,CAAA,WAEE,aAMA,SAASA,IACP,IAAmCC,EAAiBC,EAAMC,EAqPhDC,EArPNC,EAAQC,KAYZ,GAVAA,KAAKC,UAAY,KACjBD,KAAKE,cAAgB,KACrBF,KAAKG,aAAeT,EAAYU,GAAGC,KAAK,CAAA,CAAI,EAC5CL,KAAKM,QAAU,KACfN,KAAKO,cAAgB,GAErBP,KAAKQ,SAAW,GAChBR,KAAKS,SAAW,CAACC,KAAM,EAAE,EAEzBC,EAAkBjB,EAAYkB,UAAU,GAAGC,eAAe,cAAc,EACnD,CACnB,IACEjB,EAAOkB,QAAQC,SAASJ,EAAgBK,aAAeL,EAAgBM,SAAS,CAIlF,CAHE,MAAOC,GACPxB,EAAYyB,KAAKC,MAAM,gCAAkCF,EAAEG,OAAO,EAClEzB,EAAO,EACT,CAqJA,GAlJAA,EAAK0B,yBAA2B,GAChC1B,EAAK2B,2BAA6B,GAClCC,EAAEC,QAAQ7B,EAAK8B,qBAAsB,SAAUC,EAAOC,GACpDhC,EAAK0B,yBAAyBO,KAAKD,CAAG,EACtChC,EAAK2B,2BAA2BM,KAAKF,CAAK,EACrB,KAAjBC,EAAIE,OAAO,CAAC,IACdC,OAAOC,eAAepC,EAAK8B,qBAAsB,IAAME,EACjCG,OAAOE,yBAAyBrC,EAAK8B,qBAAsBE,CAAG,CAAC,EACrF,OAAOhC,EAAK8B,qBAAqBE,GAErC,CAAC,EAEDJ,EAAEC,QAAQ7B,EAAKsC,iBAAkB,SAASC,GACxCX,EAAEC,QAAQU,EAAOC,QAAS,SAASC,GACZ,WAAjBA,EAAOC,QACsB,KAA7BD,EAAOE,SAAST,OAAO,CAAC,IAC1BO,EAAOE,SAAW,ILine truncated
{"version":3,"file":"Preferences.services.js","sources":["Preferences/Preferences.service.js"],"names":["Preferences","settingsElement","data","time","reloadPromises","_this","this","nextAlarm","nextInboxPoll","currentToast","$q","when","lastUid","notifications","defaults","settings","Mail","defaultsElement","$document","getElementById","angular","fromJson","textContent","innerHTML","e","$log","error","message","SOGoMailLabelsColorsKeys","SOGoMailLabelsColorsValues","_","forEach","SOGoMailLabelsColors","value","key","push","charAt","Object","defineProperty","getOwnPropertyDescriptor","SOGoSieveFilters","filter","actions","action","method","argument","SOGoRememberLastModule","SOGoLoginModule","SOGoMailAutoMarkAsReadDelay","parseInt","SOGoMailAutoMarkAsReadEnabled","SOGoMailAutoMarkAsReadMode","SOGoMailAutoSave","SOGoMailComposeWindowEnabled","isDefined","SOGoMailComposeWindow","SOGoMailComposeFontSizeEnabled","SOGoMailComposeFontSize","window","CKEDITOR","config","fontSize_defaultLabel","addCss","AuxiliaryMailAccounts","mailAccount","isNaN","port","Vacation","startDate","Date","endDate","startTime","split","setHours","endTime","autoReplyEmailAddresses","isString","length","isUndefined","days","defaultEmailAddresses","slice","daysBetweenResponse","startDateEnabled","beginOfDay","addDays","endDateEnabled","getTime","startTimeEnabled","SOGoDayEndTime","setMinutes","endTimeEnabled","SOGoDayStartTime","Forward","forwardAddress","isArray","Notification","notificationAddress","SOGoCalendarCategories","SOGoCalendarCategoriesColorsValues","SOGoCalendarCategoriesColors","SOGoContactsCategories","compact","emailSeparatorKeys","LocaleCode","ckLocaleCode","replace","toLowerCase","extend","$mdDateLocaleProvider","locale","firstDayOfWeek","SOGoFirstDayOfWeek","firstWeekOfYear","SOGoFirstWeekOfYear","weekNumberFormatter","weekNumber","l","msgCalendar","msgOpenCalendar","parseDate","dateString","SOGoShortDateFormat","NaN","formatDate","date","format","$dateFormat","parseTime","timeString","SOGoTimeFormat","formatTime","isDateComplete","trim","test","Calendar","ReloadWebCalendars","AutoReloadedWebCalendars","map","autoReload","id","calendarId","deferred","defer","$$resource","quietFetch","finally","resolve","promise","all","then","save","$omit","$rootScope","$emit","PreventInvitationsWhitelist","match","exec","user","$User","uid","cn","c_email","$$image","avatar","no_404","$factory","$window","$timeout","$state","$mdToast","sgConstant","Settings","Gravatar","Resource","User","$toast","$gravatar","activeUser","$resourcesURL","resourcesURL","$sgConstant","module","factory","prototype","ready","warn","email","size","options","alternate_avatar","SOGoAlternateAvatar","url","SOGoGravatarEnabled","join","dstObject","dstAttr","hasActiveExternalSieveScripts","response","status","supportsNotifications","isItemSecretQuestion","SOGoPasswordRecoveryMode","isItemSecondaryEmail","authorizeNotifications","requestPermission","permission","createNotification","title","params","pick","tag","lang","dir","onclick","onClick","close","viewInboxMessage","get","go","accountId","mailboxId","messageId","location","path","pollInbox","toastController","scope","body","hide","sortingAttributes","sort","asc","noHeaders","dry","filters","searchBy","searchInput","cancel","inboxSyncToken","syncToken","$inject","post","debug","headers","uidHeaderIndex","indexOf","isReadHeaderIndex","fromHeaderIndex","subjectHeaderIndex","showToast","show","locals","i","toast","SOGoDesktopNotifications","href","name","icon","bind","template","position","toastPosition","hideDelay","controller","refreshViewCheck","SOGoRefreshViewCheck","timeInterval","getAlarms","now","browserTime","Math","floor","fetch","delay","f","alarms","a","b","x","next","pop","utc","alarmTime","showAlarm","today","day","asDate","period","AlarmController","summary","reminder","snooze","localizedStartDate","localizedEndDate","isAllDay","localizedStartTime","localizedEndTime","view","getDayString","$save","deep","preferences","whitelist","copy","substring","account","identities","identity","isReadOnly","$shortFormat"],"mappings":"CAEA,KAQE,SAASA,IACP,IAAmCC,EAAiBC,EAAMC,EAqPhDC,EArPNC,EAAQC,KAYZ,GAVAA,KAAKC,UAAY,KACjBD,KAAKE,cAAgB,KACrBF,KAAKG,aAAeT,EAAYU,GAAGC,KAAK,CAAA,CAAI,EAC5CL,KAAKM,QAAU,KACfN,KAAKO,cAAgB,GAErBP,KAAKQ,SAAW,GAChBR,KAAKS,SAAW,CAACC,KAAM,EAAE,EAEzBC,EAAkBjB,EAAYkB,UAAU,GAAGC,eAAe,cAAc,EACnD,CACnB,IACEjB,EAAOkB,QAAQC,SAASJ,EAAgBK,aAAeL,EAAgBM,SAAS,CAIlF,CAHE,MAAOC,GACPxB,EAAYyB,KAAKC,MAAM,gCAAkCF,EAAEG,OAAO,EAClEzB,EAAO,EACT,CAqJA,GAlJAA,EAAK0B,yBAA2B,GAChC1B,EAAK2B,2BAA6B,GAClCC,EAAEC,QAAQ7B,EAAK8B,qBAAsB,SAAUC,EAAOC,GACpDhC,EAAK0B,yBAAyBO,KAAKD,CAAG,EACtChC,EAAK2B,2BAA2BM,KAAKF,CAAK,EACrB,KAAjBC,EAAIE,OAAO,CAAC,IACdC,OAAOC,eAAepC,EAAK8B,qBAAsB,IAAME,EACjCG,OAAOE,yBAAyBrC,EAAK8B,qBAAsBE,CAAG,CAAC,EACrF,OAAOhC,EAAK8B,qBAAqBE,GAErC,CAAC,EAEDJ,EAAEC,QAAQ7B,EAAKsC,iBAAkB,SAASC,GACxCX,EAAEC,QAAQU,EAAOC,QAAS,SAASC,GACZ,WAAjBA,EAAOC,QACsB,KAA7BD,EAAOE,SAAST,OAAO,CAAC,IAC1BO,EAAOE,SAAW,IAAMF,EAAOELine truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(){"use strict";function e(e,a,n){e.state("calendars",{url:"/calendar",views:{calendars:{templateUrl:"UIxCalMainView",controller:"CalendarsController",controllerAs:"app"}},resolve:{stateCalendars:r}}).state("calendars.view",{url:"/{view:(?:day|week|month|multicolumnday)}/{day:[0-9]{8}}",views:{calendarView:{templateUrl:function(e){return e.view+"view?day="+e.day+"&currentday="+String((new Date).getFullYear())+String((new Date).getMonth()+1).padStart(2,"0")+String((new Date).getDate()).padStart(2,"0")},controller:"CalendarController",controllerAs:"calendar"}},resolve:{stateEventsBlocks:t}}),a.rules.when("/calendar/day",function(){return"/calendar/day/"+(new Date).getDayString()}),a.rules.when("/calendar/multicolumnday",function(){return"/calendar/multicolumnday/"+(new Date).getDayString()}),a.rules.when("/calendar/week",function(){return"/calendar/week/"+(new Date).getDayString()}),a.rules.when("/calendar/month",function(){return"/calendar/month/"+(new Date).getDayString()}),a.rules.otherwise("/calendar/week")}function r(e){return e.$calendars||e.$findAll(window.calendarsData)}function t(e,a,n){return a.$eventsBlocksForView(e.view,e.day.asDate()).then(function(e){return _.forEach(e,function(e){e.id&&(e.calendar=new n({id:e.id,name:e.calendarName}))}),e})}function a(e,a,n,r,t,l){if(e.DebugEnabled||t.defaultErrorHandler(function(){}),n.onError({to:"calendars.**"},function(e){"calendars"==e.to().name||e.ignored()||(a.error("transition error to "+e.to().name+": "+e.error().detail),t.go({state:"calendars"}))}),0===r.url().length){var e="/calendar/",n=/(.+)view/.exec(l.settings.Calendar.View),o=(e+=n?n[1]:"week",new Date);if(l.defaults.SOGoCalendarWeekdays)for(var i=["SU","MO","TU","WE","TH","FR","SA"],d=i[o.getDay()];l.defaults.SOGoCalendarWeekdays.indexOf(d)<0;)o.addDays(1),d=i[o.getDay()];e+="/"+o.getDayString(),r.replace().url(e)}}angular.module("SOGo.SchedulerUI",["ngCookies","ui.router","angularFileUpload","sgCkeditor","SOGo.Common","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.MailerUI","as.sortable"]).config(e).run(a),e.$inject=["$stateProvider","$urlServiceProvider","$mdThemingProvider"],r.$inject=["Calendar"],t.$inject=["$stateParams","Component","Calendar"],a.$inject=["$window","$log","$transitions","$location","$state","Preferences"]}();
(()=>{function e(e,a,n){e.state("calendars",{url:"/calendar",views:{calendars:{templateUrl:"UIxCalMainView",controller:"CalendarsController",controllerAs:"app"}},resolve:{stateCalendars:r}}).state("calendars.view",{url:"/{view:(?:day|week|month|multicolumnday)}/{day:[0-9]{8}}",views:{calendarView:{templateUrl:function(e){return e.view+"view?day="+e.day+"&currentday="+String((new Date).getFullYear())+String((new Date).getMonth()+1).padStart(2,"0")+String((new Date).getDate()).padStart(2,"0")},controller:"CalendarController",controllerAs:"calendar"}},resolve:{stateEventsBlocks:t}}),a.rules.when("/calendar/day",function(){return"/calendar/day/"+(new Date).getDayString()}),a.rules.when("/calendar/multicolumnday",function(){return"/calendar/multicolumnday/"+(new Date).getDayString()}),a.rules.when("/calendar/week",function(){return"/calendar/week/"+(new Date).getDayString()}),a.rules.when("/calendar/month",function(){return"/calendar/month/"+(new Date).getDayString()}),a.rules.otherwise("/calendar/week")}function r(e){return e.$calendars||e.$findAll(window.calendarsData)}function t(e,a,n){return a.$eventsBlocksForView(e.view,e.day.asDate()).then(function(e){return _.forEach(e,function(e){e.id&&(e.calendar=new n({id:e.id,name:e.calendarName}))}),e})}function a(e,a,n,r,t,l){if(e.DebugEnabled||t.defaultErrorHandler(function(){}),n.onError({to:"calendars.**"},function(e){"calendars"==e.to().name||e.ignored()||(a.error("transition error to "+e.to().name+": "+e.error().detail),t.go({state:"calendars"}))}),0===r.url().length){var e="/calendar/",n=/(.+)view/.exec(l.settings.Calendar.View),o=(e+=n?n[1]:"week",new Date);if(l.defaults.SOGoCalendarWeekdays)for(var d=["SU","MO","TU","WE","TH","FR","SA"],i=d[o.getDay()];l.defaults.SOGoCalendarWeekdays.indexOf(i)<0;)o.addDays(1),i=d[o.getDay()];e+="/"+o.getDayString(),r.replace().url(e)}}angular.module("SOGo.SchedulerUI",["ngCookies","ui.router","angularFileUpload","sgCkeditor","SOGo.Common","SOGo.PreferencesUI","SOGo.ContactsUI","SOGo.MailerUI","as.sortable"]).config(e).run(a),e.$inject=["$stateProvider","$urlServiceProvider","$mdThemingProvider"],r.$inject=["Calendar"],t.$inject=["$stateParams","Component","Calendar"],a.$inject=["$window","$log","$transitions","$location","$state","Preferences"]})();
//# sourceMappingURL=Scheduler.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"Scheduler.js","sources":["Scheduler/Scheduler.app.js"],"names":["configure","$stateProvider","$urlServiceProvider","$mdThemingProvider","state","url","views","calendars","templateUrl","controller","controllerAs","resolve","stateCalendars","calendarView","$stateParams","view","day","String","Date","getFullYear","getMonth","padStart","getDate","stateEventsBlocks","rules","when","getDayString","otherwise","Calendar","$calendars","$findAll","window","calendarsData","Component","$eventsBlocksForView","asDate","then","_","forEach","id","calendar","name","calendarName","runBlock","$window","$log","$transitions","$location","$state","Preferences","DebugEnabled","defaultErrorHandler","onError","to","transition","ignored","error","detail","go","length","exec","settings","View","now","defaults","SOGoCalendarWeekdays","weekDays","weekDay","getDay","indexOf","addDays","replace","angular","module","config","run","$inject"],"mappings":"AAGA,CAAA,WACE,aAUA,SAASA,EAAUC,EAAgBC,EAAqBC,GACtDF,EACGG,MAAM,YAAa,CAClBC,IAAK,YACLC,MAAO,CACLC,UAAW,CACTC,YAAa,iBACbC,WAAY,sBACZC,aAAc,KAChB,CACF,EACAC,QAAS,CACPC,eAAgBA,CAClB,CACF,CAAC,EACAR,MAAM,iBAAkB,CACvBC,IAAK,2DAGLC,MAAO,CACLO,aAAc,CACZL,YAAa,SAAUM,GAKrB,OAAOA,EAAaC,KAAO,YAAcD,EAAaE,IAAM,eAAiBC,QAAO,IAAKC,MAAQC,YAAY,CAAC,EAAIF,QAAQ,IAAKC,MAAQE,SAAS,EAAI,CAAE,EAAEC,SAAS,EAAG,GAAG,EAAIJ,QAAQ,IAAKC,MAAQI,QAAS,CAAC,EAAED,SAAS,EAAG,GAAG,CAC7N,EACAZ,WAAY,qBACZC,aAAc,UAChB,CACF,EACAC,QAAS,CACPY,kBAAmBA,CACrB,CACF,CAAC,EAEHrB,EAAoBsB,MAAMC,KAAK,gBAAiB,WAG9C,MAAO,kBADG,IAAIP,MACgBQ,aAAa,CAC7C,CAAC,EACDxB,EAAoBsB,MAAMC,KAAK,2BAA4B,WAGzD,MAAO,6BADG,IAAIP,MAC2BQ,aAAa,CACxD,CAAC,EACDxB,EAAoBsB,MAAMC,KAAK,iBAAkB,WAG/C,MAAO,mBADG,IAAIP,MACiBQ,aAAa,CAC9C,CAAC,EACDxB,EAAoBsB,MAAMC,KAAK,kBAAmB,WAGhD,MAAO,oBADG,IAAIP,MACkBQ,aAAa,CAC/C,CAAC,EAIDxB,EAAoBsB,MAAMG,UAAU,gBAAgB,CACtD,CAMA,SAASf,EAAegB,GACtB,OAAOA,EAASC,YAAcD,EAASE,SAASC,OAAOC,aAAa,CACtE,CAMA,SAAST,EAAkBT,EAAcmB,EAAWL,GAElD,OAAOK,EAAUC,qBAAqBpB,EAAaC,KAAMD,EAAaE,IAAImB,OAAO,CAAC,EAC/EC,KAAK,SAAU9B,GAQd,OAPA+B,EAAEC,QAAQhC,EAAO,SAAUS,GACrBA,EAAKwB,KAGPxB,EAAKyB,SAAW,IAAIZ,EAAS,CAAEW,GAAIxB,EAAKwB,GAAIE,KAAM1B,EAAK2B,YAAa,CAAC,EAEzE,CAAC,EACMpC,CACT,CAAC,CACL,CAMA,SAASqC,EAASC,EAASC,EAAMC,EAAcC,EAAWC,EAAQC,GAYhE,GAXKL,EAAQM,cACXF,EAAOG,oBAAoB,YAE1B,EACHL,EAAaM,QAAQ,CAAEC,GAAI,cAAe,EAAG,SAAUC,GACzB,aAAxBA,EAAWD,GAAG,EAAEZ,MACjBa,EAAWC,QAAQ,IACpBV,EAAKW,MAAM,uBAAyBF,EAAWD,GAAG,EAAEZ,KAAO,KAAOa,EAAWE,MAAM,EAAEC,MAAM,EAC3FT,EAAOU,GAAG,CAAEtD,MAAO,WAAY,CAAC,EAEpC,CAAC,EAC8B,IAA3B2C,EAAU1C,IAAI,EAAEsD,OAAc,CAEhC,IAAItD,EAAM,aACRU,EAAO,WAAW6C,KAAKX,EAAYY,SAASjC,SAASkC,IAAI,EAMvDC,GAJF1D,GADEU,EACKA,EAAK,GAEL,OAEC,IAAIG,MACd,GAAI+B,EAAYe,SAASC,qBAGvB,IAFA,IAAIC,EAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChDC,EAAUD,EAASH,EAAIK,OAAO,GAC3BnB,EAAYe,SAASC,qBAAqBI,QAAQF,CAAO,EAAI,GAClEJ,EAAIO,QAAQ,CAAC,EACbH,EAAUD,EAASH,EAAIK,OAAO,GAGlC/D,GAAO,IAAM0D,EAAIrC,aAAa,EAC9BqB,EAAUwB,QAAQ,EAAElE,IAAIA,CAAG,CAC7B,CACF,CAvIAmE,QAAQC,OAAO,mBAAoB,CAAC,YAAa,YAAa,oBAAqB,aAAc,cAAe,qBAAsB,kBAAmB,gBAAiB,cAAc,EACrLC,OAAO1E,CAAS,EAChB2E,IAAIhC,CAAQ,EAKf3C,EAAU4E,QAAU,CAAC,iBAAkB,sBAAuB,sBAmE9DhE,EAAegE,QAAU,CAAC,YAQ1BrD,EAAkBqD,QAAU,CAAC,eAAgB,YAAa,YAmB1DjC,EAASiC,QAAU,CAAC,UAAW,OAAQ,eAAgB,YAAa,SAAU,cAoC/E,EAAE"}
{"version":3,"file":"Scheduler.js","sources":["Scheduler/Scheduler.app.js"],"names":["configure","$stateProvider","$urlServiceProvider","$mdThemingProvider","state","url","views","calendars","templateUrl","controller","controllerAs","resolve","stateCalendars","calendarView","$stateParams","view","day","String","Date","getFullYear","getMonth","padStart","getDate","stateEventsBlocks","rules","when","getDayString","otherwise","Calendar","$calendars","$findAll","window","calendarsData","Component","$eventsBlocksForView","asDate","then","_","forEach","id","calendar","name","calendarName","runBlock","$window","$log","$transitions","$location","$state","Preferences","DebugEnabled","defaultErrorHandler","onError","to","transition","ignored","error","detail","go","length","exec","settings","View","now","defaults","SOGoCalendarWeekdays","weekDays","weekDay","getDay","indexOf","addDays","replace","angular","module","config","run","$inject"],"mappings":"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"}
@@ -1,2 +1,2 @@
!function(){"use strict";function d(e){this.component=e,this.component.attendees&&_.forEach(this.component.attendees,function(e){e.image=d.$gravatar(e.email,32)}),this.workDaysOnly=!0,this.slotStartTimeLimit=new Date,this.slotStartTimeLimit.setMinutes(0),this.slotStartTimeLimit.setHours(d.dayStartHour),this.slotEndTimeLimit=new Date,this.slotEndTimeLimit.setMinutes(0),this.slotEndTimeLimit.setHours(d.dayEndHour),this.$days=[],this.$futureFreebusyData={},this.updateFreeBusyCoverage(),this.updateFreeBusy(),0==this.$days.length&&this.getDays()}d.$factory=["$q","$timeout","$log","sgSettings","Attendees_ROLES","Preferences","User","Card","Gravatar","Resource",function(e,t,n,i,a,o,r,s,c,l){return angular.extend(d,{$q:e,$timeout:t,$log:n,$settings:i,$User:r,$Preferences:o,$Card:s,$gravatar:c,$$resource:new l(i.activeUser("folderURL")+"Calendar",i.activeUser()),ROLES:a}),d.dayStartHour=parseInt(o.defaults.SOGoDayStartTime.split(":")[0]),d.dayEndHour=parseInt(o.defaults.SOGoDayEndTime.split(":")[0]),d}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").constant("Attendees_ROLES",{REQ_PARTICIPANT:"req-participant",OPT_PARTICIPANT:"opt-participant",NON_PARTICIPANT:"non-participant",CHAIR:"chair"}).factory("Attendees",d.$factory),d.timeToQuarters=function(e){return 4*e.getHours()+Math.ceil(e.getMinutes()/15)},d.prototype.getLength=function(){return this.component.attendees?this.component.attendees.length:0},d.prototype.initOrganizer=function(e){var t=this,e=e&&e.isSubscription?d.$User.$filter(e.owner).then(function(e){e=e[0];t.component.organizer={uid:e.uid,name:e.cn,email:e.c_email}}):(this.component.organizer||(this.component.organizer={uid:d.$settings.activeUser("login"),name:d.$settings.activeUser("identification"),email:d.$settings.activeUser("email")}),d.$q.when());e.then(function(){t.updateFreeBusyAttendee(t.component.organizer)})},d.prototype.add=function(e,t){var n,i,a=this,o=d.$q.when();return e&&((!this.component.attendees||t&&t.organizerCalendar)&&this.initOrganizer(t?t.organizerCalendar:null),e.$isList({expandable:!0})?o=(i=d.$Card.$find(e.container,e.c_name)).$id().then(function(e){_.forEach(i.refs,function(e){n={name:e.c_cn,email:e.$preferredEmail(t?t.partial:null),role:d.ROLES.REQ_PARTICIPANT,partstat:"needs-action",uid:e.c_uid,$avatarIcon:"person"},_.find(a.component.attendees,function(e){return e.email==n.email})||(n.image=d.$gravatar(n.email,32),a.component.attendees?a.component.attendees.push(n):a.component.attendees=[n],a.updateFreeBusyAttendee(n))})}):(n={uid:e.c_uid,domain:e.c_domain,isMSExchange:e.ismsexchange,isGroup:e.$isList(),isExpandableGroup:!1,isResource:e.isresource,name:e.c_cn,email:e.$$email,role:d.ROLES.REQ_PARTICIPANT,partstat:"needs-action",$avatarIcon:e.$avatarIcon},_.find(this.attendees,function(e){return e.email==n.email})||(e.$isList()&&d.$Preferences.defaults.SOGoLDAPGroupExpansionEnabled&&(o=e.$members().then(function(e){n.members=e,n.isExpandableGroup=!0})),n.image=d.$gravatar(n.email,32),this.component.attendees?_.findIndex(this.component.attendees,{email:n.email})<0&&this.component.attendees.push(n):this.component.attendees=[n],this.updateFreeBusyAttendee(n)))),o},d.prototype.nextRole=function(t){var e=_.values(d.ROLES),n=_.findIndex(e,function(e){return t.role===e});t.role=e[++n%4]},d.prototype.hasAttendee=function(e){var t=_.find(this.component.attendees,function(t){return _.find(e.emails,function(e){return e.value==t.email})});return angular.isDefined(t)},d.prototype.remove=function(t){var e=_.findIndex(this.component.attendees,function(e){return e.email==t.email});-1<e&&this.component.attendees.splice(e,1),delete this.$futureFreebusyData[t.uid]},d.prototype.updateFreeBusyCoverage=function(){var o,r,s,e,c={};this.component.start&&this.component.end&&(o=new Date(this.component.start.getTime()),r=new Date(this.component.end.getTime()),this.component.isAllDay?(o.setHours(d.dayStartHour),o.setMinutes(0),r.setHours(d.dayEndHour),r.setMinutes(0),s=e=0):(s=parseInt(o.getMinutes()/15+.5),e=parseInt(r.getMinutes()/15+.5)),o.setMinutes(15*s),r.setMinutes(15*e),_.forEach(o.beginOfDay().daysUpTo(r.beginOfDay()),function(e,t){var n,i=(e=e<o?new Date(o.getTime()):e).getDate(),a=e.getDayString();if(a===o.getDayString())for(n=e.getHours().toString(),c[a]={},c[a][n]=[];0<s;)c[a][n].push(0),s--;else e=e.beginOfDay(),c[a]={};for(;e.getTime()<r.getTime()&&e.getDate()==i;)n=e.getHours().toString(),angular.isUndefined(c[a][n])&&(c[a][n]=[]),c[a][n].push(1),e.addMinutes(15)}),this.freebusy=c)},d.prototype.coversFreeBusy=function(e,t,n){return this.freebusy&&angular.isDefined(this.freebusy[e])&&angular.isDefined(this.freebusy[e][t])&&1==this.freebusy[e][t][n]},d.prototype.getDays=function(e){var t,n,i,a=this;return e?(t=e,(n=new Date(e.getTime())).addMinutes(this.component.delta)):(t=this.component.start,n=this.component.end),(0===this.$days.length||_.findIndex(this.$days,["getDayString",t.getDayString()])<0||_Line truncated
(()=>{function d(e){this.component=e,this.component.attendees&&_.forEach(this.component.attendees,function(e){e.image=d.$gravatar(e.email,32)}),this.workDaysOnly=!0,this.slotStartTimeLimit=new Date,this.slotStartTimeLimit.setMinutes(0),this.slotStartTimeLimit.setHours(d.dayStartHour),this.slotEndTimeLimit=new Date,this.slotEndTimeLimit.setMinutes(0),this.slotEndTimeLimit.setHours(d.dayEndHour),this.$days=[],this.$futureFreebusyData={},this.updateFreeBusyCoverage(),this.updateFreeBusy(),0==this.$days.length&&this.getDays()}d.$factory=["$q","$timeout","$log","sgSettings","Attendees_ROLES","Preferences","User","Card","Gravatar","Resource",function(e,t,n,i,a,o,r,s,c,l){return angular.extend(d,{$q:e,$timeout:t,$log:n,$settings:i,$User:r,$Preferences:o,$Card:s,$gravatar:c,$$resource:new l(i.activeUser("folderURL")+"Calendar",i.activeUser()),ROLES:a}),d.dayStartHour=parseInt(o.defaults.SOGoDayStartTime.split(":")[0]),d.dayEndHour=parseInt(o.defaults.SOGoDayEndTime.split(":")[0]),d}];try{angular.module("SOGo.SchedulerUI")}catch(e){angular.module("SOGo.SchedulerUI",["SOGo.Common"])}angular.module("SOGo.SchedulerUI").constant("Attendees_ROLES",{REQ_PARTICIPANT:"req-participant",OPT_PARTICIPANT:"opt-participant",NON_PARTICIPANT:"non-participant",CHAIR:"chair"}).factory("Attendees",d.$factory),d.timeToQuarters=function(e){return 4*e.getHours()+Math.ceil(e.getMinutes()/15)},d.prototype.getLength=function(){return this.component.attendees?this.component.attendees.length:0},d.prototype.initOrganizer=function(e){var t=this,e=e&&e.isSubscription?d.$User.$filter(e.owner).then(function(e){e=e[0];t.component.organizer={uid:e.uid,name:e.cn,email:e.c_email}}):(this.component.organizer||(this.component.organizer={uid:d.$settings.activeUser("login"),name:d.$settings.activeUser("identification"),email:d.$settings.activeUser("email")}),d.$q.when());e.then(function(){t.updateFreeBusyAttendee(t.component.organizer)})},d.prototype.add=function(e,t){var n,i,a=this,o=d.$q.when();return e&&((!this.component.attendees||t&&t.organizerCalendar)&&this.initOrganizer(t?t.organizerCalendar:null),e.$isList({expandable:!0})?o=(i=d.$Card.$find(e.container,e.c_name)).$id().then(function(e){_.forEach(i.refs,function(e){n={name:e.c_cn,email:e.$preferredEmail(t?t.partial:null),role:d.ROLES.REQ_PARTICIPANT,partstat:"needs-action",uid:e.c_uid,$avatarIcon:"person"},_.find(a.component.attendees,function(e){return e.email==n.email})||(n.image=d.$gravatar(n.email,32),a.component.attendees?a.component.attendees.push(n):a.component.attendees=[n],a.updateFreeBusyAttendee(n))})}):(n={uid:e.c_uid,domain:e.c_domain,isMSExchange:e.ismsexchange,isGroup:e.$isList(),isExpandableGroup:!1,isResource:e.isresource,name:e.c_cn,email:e.$$email,role:d.ROLES.REQ_PARTICIPANT,partstat:"needs-action",$avatarIcon:e.$avatarIcon},_.find(this.attendees,function(e){return e.email==n.email})||(e.$isList()&&d.$Preferences.defaults.SOGoLDAPGroupExpansionEnabled&&(o=e.$members().then(function(e){n.members=e,n.isExpandableGroup=!0})),n.image=d.$gravatar(n.email,32),this.component.attendees?_.findIndex(this.component.attendees,{email:n.email})<0&&this.component.attendees.push(n):this.component.attendees=[n],this.updateFreeBusyAttendee(n)))),o},d.prototype.nextRole=function(t){var e=_.values(d.ROLES),n=_.findIndex(e,function(e){return t.role===e});t.role=e[++n%4]},d.prototype.hasAttendee=function(e){var t=_.find(this.component.attendees,function(t){return _.find(e.emails,function(e){return e.value==t.email})});return angular.isDefined(t)},d.prototype.remove=function(t){var e=_.findIndex(this.component.attendees,function(e){return e.email==t.email});-1<e&&this.component.attendees.splice(e,1),delete this.$futureFreebusyData[t.uid]},d.prototype.updateFreeBusyCoverage=function(){var o,r,s,e,c={};this.component.start&&this.component.end&&(o=new Date(this.component.start.getTime()),r=new Date(this.component.end.getTime()),this.component.isAllDay?(o.setHours(d.dayStartHour),o.setMinutes(0),r.setHours(d.dayEndHour),r.setMinutes(0),s=e=0):(s=parseInt(o.getMinutes()/15+.5),e=parseInt(r.getMinutes()/15+.5)),o.setMinutes(15*s),r.setMinutes(15*e),_.forEach(o.beginOfDay().daysUpTo(r.beginOfDay()),function(e,t){var n,i=(e=e<o?new Date(o.getTime()):e).getDate(),a=e.getDayString();if(a===o.getDayString())for(n=e.getHours().toString(),c[a]={},c[a][n]=[];0<s;)c[a][n].push(0),s--;else e=e.beginOfDay(),c[a]={};for(;e.getTime()<r.getTime()&&e.getDate()==i;)n=e.getHours().toString(),angular.isUndefined(c[a][n])&&(c[a][n]=[]),c[a][n].push(1),e.addMinutes(15)}),this.freebusy=c)},d.prototype.coversFreeBusy=function(e,t,n){return this.freebusy&&angular.isDefined(this.freebusy[e])&&angular.isDefined(this.freebusy[e][t])&&1==this.freebusy[e][t][n]},d.prototype.getDays=function(e){var t,n,i,a=this;return e?(t=e,(n=new Date(e.getTime())).addMinutes(this.component.delta)):(t=this.component.start,n=this.component.end),(0===this.$days.length||_.findIndex(this.$days,["getDayString",t.getDayString()])<0||_.findIndex(this.$daLine truncated
//# sourceMappingURL=Scheduler.services.js.map
@@ -1 +1 @@
{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Attendees.service.js","Scheduler/Calendar.service.js","Scheduler/Component.service.js","Scheduler/CalendarController.js","Scheduler/CalendarListController.js","Scheduler/CalendarsController.js","Scheduler/ComponentController.js","Scheduler/sgCalendarDay.directive.js","Scheduler/sgCalendarDayBlock.directive.js","Scheduler/sgCalendarDayTable.directive.js","Scheduler/sgCalendarGhost.directive.js","Scheduler/sgCalendarListEvent.directive.js","Scheduler/sgCalendarListItem.directive.js","Scheduler/sgCalendarMonthDay.directive.js","Scheduler/sgCalendarMonthEvent.directive.js","Scheduler/sgCalendarPrintStylesheet.directive.js","Scheduler/sgCalendarScrollView.directive.js","Scheduler/sgCategoryStylesheet.directive.js","Scheduler/sgDraggableCalendarBlock.directive.js","Scheduler/sgFreebusy.directive.js","Scheduler/sgFreebusyDay.directive.js","Scheduler/sgNowLine.directive.js"],"names":["Attendees","component","this","attendees","_","forEach","attendee","image","$gravatar","email","workDaysOnly","slotStartTimeLimit","Date","setMinutes","setHours","dayStartHour","slotEndTimeLimit","dayEndHour","$days","$futureFreebusyData","updateFreeBusyCoverage","updateFreeBusy","length","getDays","$factory","$q","$timeout","$log","Settings","ROLES","Preferences","User","Card","Gravatar","Resource","angular","extend","$settings","$User","$Preferences","$Card","$$resource","activeUser","parseInt","defaults","SOGoDayStartTime","split","SOGoDayEndTime","module","e","constant","REQ_PARTICIPANT","OPT_PARTICIPANT","NON_PARTICIPANT","CHAIR","factory","timeToQuarters","dateTime","getHours","Math","ceil","getMinutes","prototype","getLength","initOrganizer","calendar","_this","promise","isSubscription","$filter","owner","then","results","organizer","uid","name","cn","c_email","when","updateFreeBusyAttendee","add","card","options","list","organizerCalendar","$isList","expandable","$find","container","c_name","$id","listId","refs","ref","c_cn","$preferredEmail","partial","role","partstat","c_uid","$avatarIcon","find","o","push","domain","c_domain","isMSExchange","ismsexchange","isGroup","isExpandableGroup","isResource","isresource","$$email","SOGoLDAPGroupExpansionEnabled","$members","members","findIndex","nextRole","roles","values","index","hasAttendee","emails","value","isDefined","remove","currentAttendee","splice","roundedStart","roundedEnd","startQuarter","endQuarter","freebusy","start","end","getTime","isAllDay","beginOfDay","daysUpTo","date","hourKey","currentDay","getDate","dayKey","getDayString","toString","isUndefined","addMinutes","coversFreeBusy","day","hour","quarter","refDate","sd","ed","formatFcn","delta","addDays","$mdDateLocaleProvider","formatDate","$dateFormat","SOGoLongDateFormat","stringWithSeparator","promises","filter","all","resource","days","params","sday","map","eday","userResource","intersection","keys","fetch","data","i","forwardFindDate","currentStart","foundDate","maxOffset","endLimit","duration","offset","firstStep","floor","currentEntries","indexOf","startLimit","foundTime","testDuration","setTime","forwardAdjustCurrentStart","getDay","backwardFindDate","lastIndexOf","testOffset","debug","backwardAdjustCurrentStart","findSlot","direction","findDate","adjustCurrentStart","clone","setSeconds","step","catch","err","mergeFreebusy","startDay","j","attendeeEntries","flatMap","count","reject","l","Calendar","futureCalendarData","init","id","newCalendarData","create","$unwrap","Component","Acl","$Component","$$Acl","$view","EventDragDayLength","EventDragHorizontalOffset","ConflictHTTPErrorCode","$defaultCalendar","SOGoDefaultCalendar","$findAll","active","$add","isWebCalendar","$webcalendars","$subscriptions","$calendars","sibling","localeCompare","settings","FoldersOrder","saveFoldersOrder","$reloadAll","writable","contextId","calendars","union","isOwned","acls","objectCreator","calendarData","group","login","$get","$getIndex","$subscribe","path","$addWebCalendar","url","d","defer","urls","webCalendarURL","post","isEditable","isRemote","JSON","stringify","undefined","resolve","response","status","reloadWebCalendars","$error","statusText","$deleteComponents","components","pid","uids","saveFoldersActivation","ids","request","folders","color","$acl","isSuperUser","$shadowData","$omit","$futureCalendarData","getClassName","base","$rename","$save","$delete","$reset","key","save","setCredentials","username","password","export","realOwnerId","type","filename","webDavICSURL","ownerPaths","substring","join","open","downloadProvisioningProfile","$setActivation","$getComponent","componentId","recurrenceId","isError","isObject","copy","futureComponentData","newComponentData","newguid","isNew","$rootScope","Component_STATUS","STATUS","$Attendees","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","$refreshTimeout","$ghost","EventsFilterState","TasksFilterState","EventsSortingState","TasksSortingState","show_completed","ShowCompletedLine truncated
{"version":3,"file":"Scheduler.services.js","sources":["Scheduler/Attendees.service.js","Scheduler/Calendar.service.js","Scheduler/Component.service.js","Scheduler/CalendarController.js","Scheduler/CalendarListController.js","Scheduler/CalendarsController.js","Scheduler/ComponentController.js","Scheduler/sgCalendarDay.directive.js","Scheduler/sgCalendarDayBlock.directive.js","Scheduler/sgCalendarDayTable.directive.js","Scheduler/sgCalendarGhost.directive.js","Scheduler/sgCalendarListEvent.directive.js","Scheduler/sgCalendarListItem.directive.js","Scheduler/sgCalendarMonthDay.directive.js","Scheduler/sgCalendarMonthEvent.directive.js","Scheduler/sgCalendarPrintStylesheet.directive.js","Scheduler/sgCalendarScrollView.directive.js","Scheduler/sgCategoryStylesheet.directive.js","Scheduler/sgDraggableCalendarBlock.directive.js","Scheduler/sgFreebusy.directive.js","Scheduler/sgFreebusyDay.directive.js","Scheduler/sgNowLine.directive.js"],"names":["Attendees","component","this","attendees","_","forEach","attendee","image","$gravatar","email","workDaysOnly","slotStartTimeLimit","Date","setMinutes","setHours","dayStartHour","slotEndTimeLimit","dayEndHour","$days","$futureFreebusyData","updateFreeBusyCoverage","updateFreeBusy","length","getDays","$factory","$q","$timeout","$log","Settings","ROLES","Preferences","User","Card","Gravatar","Resource","angular","extend","$settings","$User","$Preferences","$Card","$$resource","activeUser","parseInt","defaults","SOGoDayStartTime","split","SOGoDayEndTime","module","e","constant","REQ_PARTICIPANT","OPT_PARTICIPANT","NON_PARTICIPANT","CHAIR","factory","timeToQuarters","dateTime","getHours","Math","ceil","getMinutes","prototype","getLength","initOrganizer","calendar","_this","promise","isSubscription","$filter","owner","then","results","organizer","uid","name","cn","c_email","when","updateFreeBusyAttendee","add","card","options","list","organizerCalendar","$isList","expandable","$find","container","c_name","$id","listId","refs","ref","c_cn","$preferredEmail","partial","role","partstat","c_uid","$avatarIcon","find","o","push","domain","c_domain","isMSExchange","ismsexchange","isGroup","isExpandableGroup","isResource","isresource","$$email","SOGoLDAPGroupExpansionEnabled","$members","members","findIndex","nextRole","roles","values","index","hasAttendee","emails","value","isDefined","remove","currentAttendee","splice","roundedStart","roundedEnd","startQuarter","endQuarter","freebusy","start","end","getTime","isAllDay","beginOfDay","daysUpTo","date","hourKey","currentDay","getDate","dayKey","getDayString","toString","isUndefined","addMinutes","coversFreeBusy","day","hour","quarter","refDate","sd","ed","formatFcn","delta","addDays","$mdDateLocaleProvider","formatDate","$dateFormat","SOGoLongDateFormat","stringWithSeparator","promises","filter","all","resource","days","params","sday","map","eday","userResource","intersection","keys","fetch","data","i","forwardFindDate","currentStart","foundDate","maxOffset","endLimit","duration","offset","firstStep","floor","currentEntries","indexOf","startLimit","foundTime","testDuration","setTime","forwardAdjustCurrentStart","getDay","backwardFindDate","lastIndexOf","testOffset","debug","backwardAdjustCurrentStart","findSlot","direction","findDate","adjustCurrentStart","clone","setSeconds","step","catch","err","mergeFreebusy","startDay","j","attendeeEntries","flatMap","count","reject","l","Calendar","futureCalendarData","init","id","newCalendarData","create","$unwrap","Component","Acl","$Component","$$Acl","$view","EventDragDayLength","EventDragHorizontalOffset","ConflictHTTPErrorCode","$defaultCalendar","SOGoDefaultCalendar","$findAll","active","$add","isWebCalendar","$webcalendars","$subscriptions","$calendars","sibling","localeCompare","settings","FoldersOrder","saveFoldersOrder","$reloadAll","writable","contextId","calendars","union","isOwned","acls","objectCreator","calendarData","group","login","$get","$getIndex","$subscribe","path","$addWebCalendar","url","d","defer","urls","webCalendarURL","post","isEditable","isRemote","JSON","stringify","undefined","resolve","response","status","reloadWebCalendars","$error","statusText","$deleteComponents","components","pid","uids","saveFoldersActivation","ids","request","folders","color","$acl","isSuperUser","$shadowData","$omit","$futureCalendarData","getClassName","base","$rename","$save","$delete","$reset","key","save","setCredentials","username","password","export","realOwnerId","type","filename","webDavICSURL","ownerPaths","substring","join","open","downloadProvisioningProfile","$setActivation","$getComponent","componentId","recurrenceId","isError","isObject","copy","futureComponentData","newComponentData","newguid","isNew","$rootScope","Component_STATUS","STATUS","$Attendees","timeFormat","$query","search","$queryEvents","sort","asc","filterpopup","$queryTasks","$refreshTimeout","$ghost","EventsFilterState","TasksFilterState","EventsSortingState","TasksSortingState","show_completed","ShowCompletedLine truncated
@@ -543,6 +543,7 @@
this.adjustEndTime();
this.changeAlarmRelation(form);
this.addAttendee(this.searchText).then(function () {
vm.adjustStartTime();
if (form.$valid) {
vm.component.$save(options)
.then(function(data) {
@@ -525,7 +525,7 @@
this.currentEventCoordinates.dayNumber += deltaDays;
}
$log.debug('event coordinates ' + JSON.stringify(this.currentEventCoordinates));
//$log.debug('event coordinates ' + JSON.stringify(this.currentEventCoordinates));
$rootScope.$emit('calendar:drag');
},
+1 -1
View File
@@ -1,2 +1,2 @@
!function(e,t){"function"==typeof define&&define.amd?define([],t):"undefined"!=typeof exports?t():(t(),e.FileSaver={})}(this,function(){"use strict";var s="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function c(e,t,a){var i=new XMLHttpRequest;i.open("GET",e),i.responseType="blob",i.onload=function(){l(i.response,t,a)},i.onerror=function(){console.error("could not download file")},i.send()}function n(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&t.status<=299}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(a)}}var d=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=s.saveAs||("object"!=typeof window||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!d?function(e,t,a){var i=s.URL||s.webkitURL,l=document.createElement("a");t=t||e.name||"download",l.download=t,l.rel="noopener","string"==typeof e?(l.href=e,l.origin!==location.origin?n(l.href)?c(e,t,a):r(l,l.target="_blank"):r(l)):(l.href=i.createObjectURL(e),setTimeout(function(){i.revokeObjectURL(l.href)},4e4),setTimeout(function(){r(l)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,a){var i;t=t||e.name||"download","string"==typeof e?n(e)?c(e,t,a):((i=document.createElement("a")).href=e,i.target="_blank",setTimeout(function(){r(i)})):navigator.msSaveOrOpenBlob((e=e,void 0===(a=a)?a={autoBom:!1}:"object"!=typeof a&&(console.warn("Deprecated: Expected third argument to be a object"),a={autoBom:!a}),a.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e),t)}:function(e,t,a,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof e)return c(e,t,a);var l,n,r,t="application/octet-stream"===e.type,a=/constructor/i.test(s.HTMLElement)||s.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent);(o||t&&a||d)&&"undefined"!=typeof FileReader?((l=new FileReader).onloadend=function(){var e=l.result,e=o?e:e.replace(/^data:[^;]*;/,"data:attachment/file;");i?i.location.href=e:location=e,i=null},l.readAsDataURL(e)):(n=s.URL||s.webkitURL,r=n.createObjectURL(e),i?i.location=r:location.href=r,i=null,setTimeout(function(){n.revokeObjectURL(r)},4e4))});s.saveAs=l.saveAs=l,"undefined"!=typeof module&&(module.exports=l)}),function(e){e=e.af=e.af||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 van %1","Align center":"Belyn in die middel","Align left":"Belyn links","Align right":"Belyn regs","Block quote":"Verwysingsaanhaling",Bold:"Vet","Bold text":"",Cancel:"Kanselleer",Clear:"","Close contextual balloons, dropdowns, and dialogs":"",Code:"Bronkode","Content editing keystrokes":"","Execute the currently focused button":"","Insert code block":"Voeg bronkodeblok in",Italic:"Kursief","Italic text":"",Justify:"Belyn beide kante","Move focus between form fields (inputs, buttons, etc.)":"","Move focus to the toolbar, navigate between toolbars":"","Move out of an inline code style":"","Navigate through the toolbar":"","Open the accessibility help dialog":"","Plain text":"Gewone skrif","Remove color":"Verwyder kleur","Remove Format":"Verwyder formatering","Restore default":"Herstel verstek",Save:"Stoor","Show more items":"Wys meer items",Strikethrough:"Deurstreep","Strikethrough text":"",Subscript:"Onderskrif",Superscript:"Boskrif","Text alignment":"Teksbelyning","Text alignment toolbar":"Teksbelyning nutsbank","These keyboard shortcuts allow for quick access to content editing features.":"","Toggle caption off":"","Toggle caption on":"",Underline:"Onderstreep","Underline text":"","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"","User interface and content navigation keystrokes":""}),e.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),function(e){e=e.ar=e.ar||{};e.dictionary=Object.assign(e.dictionary||{},{"(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","%0 of %1":"%0 من %1",Accept:"قبول","Accessibility help":"تعليمات إمكانية الوصول","Align cell text to the bottom":"قم بمحاذاة نص الخلية للاسفل","Align cell text to the center":"قم بمحاذاة نص الخلية إلى المركز","Align cell text to the left":"قم بمحاذاة نص الخلية إلى اليسار","Align cell text to the middle":"قم بمحاذاة نص الخلية إلى المنتصف","Align cell text to the right":"قم بمحاذاة نص الخلية إلى اليمين","Align cell text to the top":"قم بمحاذاة نص الخلية إلى الأعلى","Align Line truncated
((e,t)=>{"function"==typeof define&&define.amd?define([],t):"undefined"!=typeof exports?t():(t(),e.FileSaver={})})(this,function(){var s="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function c(e,t,a){var i=new XMLHttpRequest;i.open("GET",e),i.responseType="blob",i.onload=function(){l(i.response,t,a)},i.onerror=function(){console.error("could not download file")},i.send()}function n(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&t.status<=299}function r(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(e){var a=document.createEvent("MouseEvents");a.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(a)}}var d=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),l=s.saveAs||("object"!=typeof window||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!d?function(e,t,a){var i=s.URL||s.webkitURL,l=document.createElement("a");t=t||e.name||"download",l.download=t,l.rel="noopener","string"==typeof e?(l.href=e,l.origin!==location.origin?n(l.href)?c(e,t,a):r(l,l.target="_blank"):r(l)):(l.href=i.createObjectURL(e),setTimeout(function(){i.revokeObjectURL(l.href)},4e4),setTimeout(function(){r(l)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,a){var i;t=t||e.name||"download","string"==typeof e?n(e)?c(e,t,a):((i=document.createElement("a")).href=e,i.target="_blank",setTimeout(function(){r(i)})):navigator.msSaveOrOpenBlob((e=e,void 0===(a=a)?a={autoBom:!1}:"object"!=typeof a&&(console.warn("Deprecated: Expected third argument to be a object"),a={autoBom:!a}),a.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e),t)}:function(e,t,a,i){if((i=i||open("","_blank"))&&(i.document.title=i.document.body.innerText="downloading..."),"string"==typeof e)return c(e,t,a);var l,n,r,t="application/octet-stream"===e.type,a=/constructor/i.test(s.HTMLElement)||s.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent);(o||t&&a||d)&&"undefined"!=typeof FileReader?((l=new FileReader).onloadend=function(){var e=l.result,e=o?e:e.replace(/^data:[^;]*;/,"data:attachment/file;");i?i.location.href=e:location=e,i=null},l.readAsDataURL(e)):(n=s.URL||s.webkitURL,r=n.createObjectURL(e),i?i.location=r:location.href=r,i=null,setTimeout(function(){n.revokeObjectURL(r)},4e4))});s.saveAs=l.saveAs=l,"undefined"!=typeof module&&(module.exports=l)}),(e=>{(e=e.af=e.af||{}).dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 van %1","Align center":"Belyn in die middel","Align left":"Belyn links","Align right":"Belyn regs","Block quote":"Verwysingsaanhaling",Bold:"Vet","Bold text":"",Cancel:"Kanselleer",Clear:"","Close contextual balloons, dropdowns, and dialogs":"",Code:"Bronkode","Content editing keystrokes":"","Execute the currently focused button":"","Insert code block":"Voeg bronkodeblok in",Italic:"Kursief","Italic text":"",Justify:"Belyn beide kante","Move focus between form fields (inputs, buttons, etc.)":"","Move focus to the toolbar, navigate between toolbars":"","Move out of an inline code style":"","Navigate through the toolbar":"","Open the accessibility help dialog":"","Plain text":"Gewone skrif","Remove color":"Verwyder kleur","Remove Format":"Verwyder formatering","Restore default":"Herstel verstek",Save:"Stoor","Show more items":"Wys meer items",Strikethrough:"Deurstreep","Strikethrough text":"",Subscript:"Onderskrif",Superscript:"Boskrif","Text alignment":"Teksbelyning","Text alignment toolbar":"Teksbelyning nutsbank","These keyboard shortcuts allow for quick access to content editing features.":"","Toggle caption off":"","Toggle caption on":"",Underline:"Onderstreep","Underline text":"","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"","User interface and content navigation keystrokes":""}),e.getPluralForm=function(e){return 1!=e}})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})),(e=>{(e=e.ar=e.ar||{}).dictionary=Object.assign(e.dictionary||{},{"(may require <kbd>Fn</kbd>)":"(قد يتطلب <kbd>مفتاح Fn</kbd>)","%0 of %1":"%0 من %1",Accept:"قبول","Accessibility help":"تعليمات إمكانية الوصول","Align cell text to the bottom":"قم بمحاذاة نص الخلية للاسفل","Align cell text to the center":"قم بمحاذاة نص الخلية إلى المركز","Align cell text to the left":"قم بمحاذاة نص الخلية إلى اليسار","Align cell text to the middle":"قم بمحاذاة نص الخلية إلى المنتصف","Align cell text to the right":"قم بمحاذاة نص الخلية إلى اليمين","Align cell text to the top":"قم بمحاذاة نص الخلية إلى الأعلى","Align center":"محاذاة في الLine truncated
//# sourceMappingURL=FileSaver.min.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"FileSaver.min.js","sources":["../../node_modules/file-saver/dist/FileSaver.js","ckeditor/build/translations/af.js","ckeditor/build/translations/ar.js","ckeditor/build/translations/ast.js","ckeditor/build/translations/az.js","ckeditor/build/translations/bg.js","ckeditor/build/translations/bn.js","ckeditor/build/translations/bs.js","ckeditor/build/translations/ca.js","ckeditor/build/translations/cs.js","ckeditor/build/translations/da.js","ckeditor/build/translations/de-ch.js","ckeditor/build/translations/de.js","ckeditor/build/translations/el.js","ckeditor/build/translations/en-au.js","ckeditor/build/translations/en-gb.js","ckeditor/build/translations/eo.js","ckeditor/build/translations/es-co.js","ckeditor/build/translations/es.js","ckeditor/build/translations/et.js","ckeditor/build/translations/eu.js","ckeditor/build/translations/fa.js","ckeditor/build/translations/fi.js","ckeditor/build/translations/fr.js","ckeditor/build/translations/gl.js","ckeditor/build/translations/gu.js","ckeditor/build/translations/he.js","ckeditor/build/translations/hi.js","ckeditor/build/translations/hr.js","ckeditor/build/translations/hu.js","ckeditor/build/translations/hy.js","ckeditor/build/translations/id.js","ckeditor/build/translations/it.js","ckeditor/build/translations/ja.js","ckeditor/build/translations/jv.js","ckeditor/build/translations/kk.js","ckeditor/build/translations/km.js","ckeditor/build/translations/kn.js","ckeditor/build/translations/ko.js","ckeditor/build/translations/ku.js","ckeditor/build/translations/lt.js","ckeditor/build/translations/lv.js","ckeditor/build/translations/ms.js","ckeditor/build/translations/nb.js","ckeditor/build/translations/ne.js","ckeditor/build/translations/nl.js","ckeditor/build/translations/no.js","ckeditor/build/translations/oc.js","ckeditor/build/translations/pl.js","ckeditor/build/translations/pt-br.js","ckeditor/build/translations/pt.js","ckeditor/build/translations/ro.js","ckeditor/build/translations/ru.js","ckeditor/build/translations/si.js","ckeditor/build/translations/sk.js","ckeditor/build/translations/sl.js","ckeditor/build/translations/sq.js","ckeditor/build/translations/sr-latn.js","ckeditor/build/translations/sr.js","ckeditor/build/translations/sv.js","ckeditor/build/translations/th.js","ckeditor/build/translations/tk.js","ckeditor/build/translations/tr.js","ckeditor/build/translations/tt.js","ckeditor/build/translations/ug.js","ckeditor/build/translations/uk.js","ckeditor/build/translations/ur.js","ckeditor/build/translations/uz.js","ckeditor/build/translations/vi.js","ckeditor/build/translations/zh-cn.js","ckeditor/build/translations/zh.js"],"names":["global","factory","define","amd","exports","FileSaver","this","_global","window","self","download","url","name","opts","xhr","XMLHttpRequest","open","responseType","onload","saveAs","response","onerror","console","error","send","corsEnabled","e","status","click","node","dispatchEvent","MouseEvent","evt","document","createEvent","initMouseEvent","isMacOSWebView","navigator","test","userAgent","HTMLAnchorElement","prototype","blob","URL","webkitURL","a","createElement","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","autoBom","warn","type","Blob","String","fromCharCode","popup","title","body","innerText","reader","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","onloadend","result","replace","readAsDataURL","module","t","dictionary","Object","assign","%0 of %1","Align center","Align left","Align right","Block quote","Bold","Bold text","Cancel","Clear","Close contextual balloons, dropdowns, and dialogs","Code","Content editing keystrokes","Execute the currently focused button","Insert code block","Italic","Italic text","Justify","Move focus between form fields (inputs, buttons, etc.)","Move focus to the toolbar, navigate between toolbars","Move out of an inline code style","Navigate through the toolbar","Open the accessibility help dialog","Plain text","Remove color","Remove Format","Restore default","Save","Show more items","Strikethrough","Strikethrough text","Subscript","Superscript","Text alignment","Text alignment toolbar","These keyboard shortcuts allow for quick access to content editing features.","Toggle caption off","Toggle caption on","Underline","Underline text","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.","User interface and content navigation keystrokes","getPluralForm","CKEDITOR_TRANSLATIONS","(may require <kbd>Fn</kbd>)","Accept","Accessibility help","Align cell text to the bottom","Align cell text to the center","Align cell text to the left","Align cell text to the middle","Align cell text to the right","Align cell text to the top","Align table to the left","Align table to the right","Alignment","All","Almost equal to","Angle","Approximately equal to","Aquamarine","Arrows","Asterisk operator","Austral sign","back with leftwards arrow above","Background","BelowLine truncated
{"version":3,"file":"FileSaver.min.js","sources":["../../node_modules/file-saver/dist/FileSaver.js","ckeditor/build/translations/af.js","ckeditor/build/translations/ar.js","ckeditor/build/translations/ast.js","ckeditor/build/translations/az.js","ckeditor/build/translations/bg.js","ckeditor/build/translations/bn.js","ckeditor/build/translations/bs.js","ckeditor/build/translations/ca.js","ckeditor/build/translations/cs.js","ckeditor/build/translations/da.js","ckeditor/build/translations/de-ch.js","ckeditor/build/translations/de.js","ckeditor/build/translations/el.js","ckeditor/build/translations/en-au.js","ckeditor/build/translations/en-gb.js","ckeditor/build/translations/eo.js","ckeditor/build/translations/es-co.js","ckeditor/build/translations/es.js","ckeditor/build/translations/et.js","ckeditor/build/translations/eu.js","ckeditor/build/translations/fa.js","ckeditor/build/translations/fi.js","ckeditor/build/translations/fr.js","ckeditor/build/translations/gl.js","ckeditor/build/translations/gu.js","ckeditor/build/translations/he.js","ckeditor/build/translations/hi.js","ckeditor/build/translations/hr.js","ckeditor/build/translations/hu.js","ckeditor/build/translations/hy.js","ckeditor/build/translations/id.js","ckeditor/build/translations/it.js","ckeditor/build/translations/ja.js","ckeditor/build/translations/jv.js","ckeditor/build/translations/kk.js","ckeditor/build/translations/km.js","ckeditor/build/translations/kn.js","ckeditor/build/translations/ko.js","ckeditor/build/translations/ku.js","ckeditor/build/translations/lt.js","ckeditor/build/translations/lv.js","ckeditor/build/translations/ms.js","ckeditor/build/translations/nb.js","ckeditor/build/translations/ne.js","ckeditor/build/translations/nl.js","ckeditor/build/translations/no.js","ckeditor/build/translations/oc.js","ckeditor/build/translations/pl.js","ckeditor/build/translations/pt-br.js","ckeditor/build/translations/pt.js","ckeditor/build/translations/ro.js","ckeditor/build/translations/ru.js","ckeditor/build/translations/si.js","ckeditor/build/translations/sk.js","ckeditor/build/translations/sl.js","ckeditor/build/translations/sq.js","ckeditor/build/translations/sr-latn.js","ckeditor/build/translations/sr.js","ckeditor/build/translations/sv.js","ckeditor/build/translations/th.js","ckeditor/build/translations/tk.js","ckeditor/build/translations/tr.js","ckeditor/build/translations/tt.js","ckeditor/build/translations/ug.js","ckeditor/build/translations/uk.js","ckeditor/build/translations/ur.js","ckeditor/build/translations/uz.js","ckeditor/build/translations/vi.js","ckeditor/build/translations/zh-cn.js","ckeditor/build/translations/zh.js"],"names":["global","factory","define","amd","exports","FileSaver","this","_global","window","self","download","url","name","opts","xhr","XMLHttpRequest","open","responseType","onload","saveAs","response","onerror","console","error","send","corsEnabled","e","status","click","node","dispatchEvent","MouseEvent","evt","document","createEvent","initMouseEvent","isMacOSWebView","navigator","test","userAgent","HTMLAnchorElement","prototype","blob","URL","webkitURL","a","createElement","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","autoBom","warn","type","Blob","String","fromCharCode","popup","title","body","innerText","reader","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","onloadend","result","replace","readAsDataURL","module","t","dictionary","Object","assign","%0 of %1","Align center","Align left","Align right","Block quote","Bold","Bold text","Cancel","Clear","Close contextual balloons, dropdowns, and dialogs","Code","Content editing keystrokes","Execute the currently focused button","Insert code block","Italic","Italic text","Justify","Move focus between form fields (inputs, buttons, etc.)","Move focus to the toolbar, navigate between toolbars","Move out of an inline code style","Navigate through the toolbar","Open the accessibility help dialog","Plain text","Remove color","Remove Format","Restore default","Save","Show more items","Strikethrough","Strikethrough text","Subscript","Superscript","Text alignment","Text alignment toolbar","These keyboard shortcuts allow for quick access to content editing features.","Toggle caption off","Toggle caption on","Underline","Underline text","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.","User interface and content navigation keystrokes","getPluralForm","CKEDITOR_TRANSLATIONS","(may require <kbd>Fn</kbd>)","Accept","Accessibility help","Align cell text to the bottom","Align cell text to the center","Align cell text to the left","Align cell text to the middle","Align cell text to the right","Align cell text to the top","Align table to the left","Align table to the right","Alignment","All","Almost equal to","Angle","Approximately equal to","Aquamarine","Arrows","Asterisk operator","Austral sign","back with leftwards arrow above","Background","BelowLine truncated
+1 -1
View File
@@ -1,2 +1,2 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["angular-file-upload"]=t():e["angular-file-upload"]=t()}(this,function(){return n=[function(e,t,o){"use strict";var n=y(o(1)),r=y(o(2)),i=y(o(3)),s=y(o(4)),a=y(o(5)),l=y(o(6)),p=y(o(7)),u=y(o(8)),c=y(o(9)),f=y(o(10)),d=y(o(11)),h=y(o(12)),o=y(o(13));function y(e){return e&&e.__esModule?e:{default:e}}angular.module(n.default.name,[]).value("fileUploaderOptions",r.default).factory("FileUploader",i.default).factory("FileLikeObject",s.default).factory("FileItem",a.default).factory("FileDirective",l.default).factory("FileSelect",p.default).factory("FileDrop",c.default).factory("FileOver",f.default).factory("Pipeline",u.default).directive("nvFileSelect",d.default).directive("nvFileDrop",h.default).directive("nvFileOver",o.default).run(["FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","Pipeline",function(e,t,o,n,r,i,s,a){e.FileLikeObject=t,e.FileItem=o,e.FileDirective=n,e.FileSelect=r,e.FileDrop=i,e.FileOver=s,e.Pipeline=a}])},function(e,t){e.exports={name:"angularFileUpload"}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={url:"/",alias:"file",headers:{},queue:[],progress:0,autoUpload:!1,removeAfterUpload:!1,method:"POST",filters:[],formData:[],queueLimit:Number.MAX_VALUE,withCredentials:!1,disableMultipart:!1}},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var f=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){var o=t,n=[],r=!0,t=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!o||n.length!==o);r=!0);}catch(e){t=!0,i=e}finally{try{!r&&a.return&&a.return()}finally{if(t)throw i}}return n}throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=(t.default=n,o(1));(o=t)&&o.__esModule;var t=angular,l=t.bind,d=t.copy,h=t.extend,y=t.forEach,m=t.isObject,v=t.isNumber,_=t.isDefined,g=t.isArray,b=t.isUndefined,F=t.element;function n(o,e,n,t,r,p,u,c){var i=t.File,s=t.FormData,t=(a.prototype.addToQueue=function(e,o,t){var r=this,i=this.isArrayLikeObject(e)?Array.prototype.slice.call(e):[e],s=this._getFilters(t),n=this.queue.length,a=[],l=function(){r.queue.length!==n&&(r._onAfterAddingAll(a),r.progress=r._getTotalProgress()),r._render(),r.autoUpload&&r.uploadAll()};(function n(){var e=i.shift();if(b(e))return l();var e=r.isFile(e)?e:new p(e),t=r._convertFiltersToPipes(s),t=new c(t);t.onThrown=function(e){var t=e.pipe.originalFilter,e=f(e.args,2),o=e[0],e=e[1];r._onWhenAddingFileFailed(o,t,e),n()},t.onSuccessful=function(e,t){e=new u(r,e,t);a.push(e),r.queue.push(e),r._onAfterAddingFile(e),n()},t.exec(e,o)})()},a.prototype.removeFromQueue=function(e){var e=this.getIndexOfItem(e),t=this.queue[e];t.isUploading&&t.cancel(),this.queue.splice(e,1),t._destroy(),this.progress=this._getTotalProgress()},a.prototype.clearQueue=function(){for(;this.queue.length;)this.queue[0].remove();this.progress=0},a.prototype.uploadItem=function(e){var e=this.getIndexOfItem(e),e=this.queue[e],t=this.isHTML5?"_xhrTransport":"_iframeTransport";e._prepareToUploading(),this.isUploading||(this._onBeforeUploadItem(e),e.isCancel)||(e.isUploading=!0,this.isUploading=!0,this[t](e),this._render())},a.prototype.cancelItem=function(e){var t,o=this,e=this.getIndexOfItem(e),n=this.queue[e],e=this.isHTML5?"_xhr":"_form";n&&(n.isCancel=!0,n.isUploading?n[e].abort():(t=[void 0,0,{}],r(function(){o._onCancelItem.apply(o,[n].concat(t)),o._onCompleteItem.apply(o,[n].concat(t))})))},a.prototype.uploadAll=function(){var e=this.getNotUploadedItems().filter(function(e){return!e.isUploading});e.length&&(y(e,function(e){return e._prepareToUploading()}),e[0].upload())},a.prototype.cancelAll=function(){var e=this.getNotUploadedItems();y(e,function(e){return e.cancel()})},a.prototype.isFile=function(e){return this.constructor.isFile(e)},a.prototype.isFileLikeObject=function(e){return this.constructor.isFileLikeObject(e)},a.prototype.isArrayLikeObject=function(e){return this.constructor.isArrayLikeObject(e)},a.prototype.getIndexOfItem=function(e){return v(e)?e:this.queue.indexOf(e)},a.prototype.getNotUploadedItems=function(){return this.queue.filter(function(e){return!e.isUploaded})},a.prototype.getReadyItems=function(){return this.queue.filter(function(e){return e.isReady&&!e.isUploading}).sort(function(e,t){return e.index-t.index})},a.prototype.destroy=function(){var t=this;y(this._directives,function(e){y(t._directives[e],function(e){e.destroy()})})},a.prototype.onAfterAddingAll=function(e){},a.prototype.onAfterAddingFile=function(e){},a.prototype.onWhenAddingFileFailed=function(e,t,o){},a.prototype.onBeforeUploadItem=function(e){},a.prototype.onProgressItem=function(e,t){},a.prototype.onProgressAll=function(e){},a.prototype.onSuccessItem=function(e,t,o,n){},a.prototype.onErrorItem=function(e,t,o,n){},a.pLine truncated
((e,t)=>{"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["angular-file-upload"]=t():e["angular-file-upload"]=t()})(this,function(){return n=[function(e,t,o){var n=y(o(1)),r=y(o(2)),i=y(o(3)),s=y(o(4)),a=y(o(5)),l=y(o(6)),p=y(o(7)),u=y(o(8)),c=y(o(9)),f=y(o(10)),d=y(o(11)),h=y(o(12)),o=y(o(13));function y(e){return e&&e.__esModule?e:{default:e}}angular.module(n.default.name,[]).value("fileUploaderOptions",r.default).factory("FileUploader",i.default).factory("FileLikeObject",s.default).factory("FileItem",a.default).factory("FileDirective",l.default).factory("FileSelect",p.default).factory("FileDrop",c.default).factory("FileOver",f.default).factory("Pipeline",u.default).directive("nvFileSelect",d.default).directive("nvFileDrop",h.default).directive("nvFileOver",o.default).run(["FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","Pipeline",function(e,t,o,n,r,i,s,a){e.FileLikeObject=t,e.FileItem=o,e.FileDirective=n,e.FileSelect=r,e.FileDrop=i,e.FileOver=s,e.Pipeline=a}])},function(e,t){e.exports={name:"angularFileUpload"}},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={url:"/",alias:"file",headers:{},queue:[],progress:0,autoUpload:!1,removeAfterUpload:!1,method:"POST",filters:[],formData:[],queueLimit:Number.MAX_VALUE,withCredentials:!1,disableMultipart:!1}},function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0});var f=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){var o=t,n=[],r=!0,t=!1,i=void 0;try{for(var s,a=e[Symbol.iterator]();!(r=(s=a.next()).done)&&(n.push(s.value),!o||n.length!==o);r=!0);}catch(e){t=!0,i=e}finally{try{!r&&a.return&&a.return()}finally{if(t)throw i}}return n}throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=(t.default=n,o(1));(o=t)&&o.__esModule;var t=angular,l=t.bind,d=t.copy,h=t.extend,y=t.forEach,m=t.isObject,v=t.isNumber,_=t.isDefined,g=t.isArray,b=t.isUndefined,F=t.element;function n(o,e,n,t,r,p,u,c){var i=t.File,s=t.FormData,t=(a.prototype.addToQueue=function(e,o,t){var r=this,i=this.isArrayLikeObject(e)?Array.prototype.slice.call(e):[e],s=this._getFilters(t),n=this.queue.length,a=[],l=function(){r.queue.length!==n&&(r._onAfterAddingAll(a),r.progress=r._getTotalProgress()),r._render(),r.autoUpload&&r.uploadAll()};(function n(){var e=i.shift();if(b(e))return l();var e=r.isFile(e)?e:new p(e),t=r._convertFiltersToPipes(s),t=new c(t);t.onThrown=function(e){var t=e.pipe.originalFilter,e=f(e.args,2),o=e[0];r._onWhenAddingFileFailed(o,t,e[1]),n()},t.onSuccessful=function(e,t){e=new u(r,e,t);a.push(e),r.queue.push(e),r._onAfterAddingFile(e),n()},t.exec(e,o)})()},a.prototype.removeFromQueue=function(e){var e=this.getIndexOfItem(e),t=this.queue[e];t.isUploading&&t.cancel(),this.queue.splice(e,1),t._destroy(),this.progress=this._getTotalProgress()},a.prototype.clearQueue=function(){for(;this.queue.length;)this.queue[0].remove();this.progress=0},a.prototype.uploadItem=function(e){var e=this.getIndexOfItem(e),e=this.queue[e],t=this.isHTML5?"_xhrTransport":"_iframeTransport";e._prepareToUploading(),this.isUploading||(this._onBeforeUploadItem(e),e.isCancel)||(e.isUploading=!0,this.isUploading=!0,this[t](e),this._render())},a.prototype.cancelItem=function(e){var t,o=this,e=this.getIndexOfItem(e),n=this.queue[e],e=this.isHTML5?"_xhr":"_form";n&&(n.isCancel=!0,n.isUploading?n[e].abort():(t=[void 0,0,{}],r(function(){o._onCancelItem.apply(o,[n].concat(t)),o._onCompleteItem.apply(o,[n].concat(t))})))},a.prototype.uploadAll=function(){var e=this.getNotUploadedItems().filter(function(e){return!e.isUploading});e.length&&(y(e,function(e){return e._prepareToUploading()}),e[0].upload())},a.prototype.cancelAll=function(){var e=this.getNotUploadedItems();y(e,function(e){return e.cancel()})},a.prototype.isFile=function(e){return this.constructor.isFile(e)},a.prototype.isFileLikeObject=function(e){return this.constructor.isFileLikeObject(e)},a.prototype.isArrayLikeObject=function(e){return this.constructor.isArrayLikeObject(e)},a.prototype.getIndexOfItem=function(e){return v(e)?e:this.queue.indexOf(e)},a.prototype.getNotUploadedItems=function(){return this.queue.filter(function(e){return!e.isUploaded})},a.prototype.getReadyItems=function(){return this.queue.filter(function(e){return e.isReady&&!e.isUploading}).sort(function(e,t){return e.index-t.index})},a.prototype.destroy=function(){var t=this;y(this._directives,function(e){y(t._directives[e],function(e){e.destroy()})})},a.prototype.onAfterAddingAll=function(e){},a.prototype.onAfterAddingFile=function(e){},a.prototype.onWhenAddingFileFailed=function(e,t,o){},a.prototype.onBeforeUploadItem=function(e){},a.prototype.onProgressItem=function(e,t){},a.prototype.onProgressAll=function(e){},a.prototype.onSuccessItem=function(e,t,o,n){},a.prototype.onErrorItem=function(e,t,o,n){},a.prototype.onCancelItem=function(e,t,o,n){},a.protLine truncated
//# sourceMappingURL=angular-file-upload.min.js.map
@@ -1 +1 @@
{"version":3,"file":"angular-file-upload.min.js","sources":["../../node_modules/angular-file-upload/dist/angular-file-upload.js","../Common/angular-file-upload.trump.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","_config2","_interopRequireDefault","_options2","_FileUploader2","_FileLikeObject2","_FileItem2","_FileDirective2","_FileSelect2","_Pipeline2","_FileDrop2","_FileOver2","_FileSelect4","_FileDrop4","_FileOver4","obj","__esModule","default","angular","name","value","directive","run","FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","Pipeline","Object","defineProperty","url","alias","headers","queue","progress","autoUpload","removeAfterUpload","method","filters","formData","queueLimit","Number","MAX_VALUE","withCredentials","disableMultipart","_slicedToArray","arr","i","Array","isArray","Symbol","iterator","sliceIterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","length","err","TypeError","_config","__identity","_angular","bind","copy","extend","forEach","isObject","isNumber","isDefined","isUndefined","element","fileUploaderOptions","$rootScope","$http","$window","$timeout","File","FormData","prototype","addToQueue","files","options","_this","incomingQueue","isArrayLikeObject","slice","call","arrayOfFilters","_getFilters","count","addedFileItems","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","something","shift","fileLikeObject","isFile","pipes","_convertFiltersToPipes","pipeline","onThrown","originalFilter","pipe","_err$args","args","_onWhenAddingFileFailed","onSuccessful","fileItem","_onAfterAddingFile","exec","removeFromQueue","index","getIndexOfItem","item","isUploading","cancel","splice","_destroy","clearQueue","remove","uploadItem","transport","isHTML5","_prepareToUploading","_onBeforeUploadItem","isCancel","cancelItem","dummy","_this2","prop","abort","_onCancelItem","apply","concat","_onCompleteItem","items","getNotUploadedItems","filter","upload","cancelAll","constructor","isFileLikeObject","indexOf","isUploaded","getReadyItems","isReady","sort","item1","item2","destroy","_this3","_directives","key","object","onAfterAddingAll","fileItems","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","response","status","onErrorItem","onCancelItem","onCompleteItem","onTimeoutItem","onCompleteAll","uploaded","ratio","notUploaded","Math","round","names","match","_this4","map","fn","isAsync","$$phase","$apply","_folderFilter","size","type","_queueLimitFilter","_isSuccessCode","_transformResponse","headersGetter","_headersGetter","defaults","transformResponse","transformFn","_parseHeaders","parsed","split","line","trim","toLowerCase","val","parsedHeaders","_xhrTransport","sendable","_this5","xhr","_xhr","XMLHttpRequest","_file","append","file","onprogress","event","lengthComputable","loaded","total","_onProgressItem","onload","getAllResponseHeaders","gist","onerror","_onErrorItem","onabort","ontimeout","e","_onTimeoutItem","open","timeout","setRequestHeader","send","_iframeTransport","_this6","form","iframe","Date","now","input","_input","timer","isTimedOut","_form","replaceWith","element_","action","target","enctype","encoding","html","contentDocument","body","innerHTML","clearTimeout","_onSuccessItem","unbind","after","setTimeout","submit","_onBeforeUpload","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","nextItem","_onTimeout","inherit","source","create","super_","settings","_nextIndex","select","drop","over","unshift","$inject","fileOrInput","fakePathOrObject","isElement","isString","_createFromFakePath","path","lastModifiedDate","lastIndexOf","_createFromObject","$compile","uploader","message","code","onBeforeUpload","onProgress","onSuccess","onError","onCancel","onComplete","onTimeout","isSuccess","isError","_replaceNode","clone","scope","css","some","isInput","_saveLinks","events","_FileDirective","subClass","superClass","extendedOptions","$destroy","change","self","ReferenceError","removeAttr","enumerable","writable","configurable","setPrototypeOf","__proto__","getOptions","getFilters","isEmptyAfterSelection","attr","onChange","_toConsumableArray","arr2","from","$q","deferred","onFulfilled","onRejected","Error","defer","promise","then","Boolean","_len","arguments","_key","instance","Constructor","dragover","dragleave","onDrop","transfer","_getTransfer","_preventAndStop","_removeOverClass","onDragOver","_haveFiles","types","dropEffect","_addOverClass","onDragLeave","currentTarget","dataTransfer","originalEvent","preventDefault","stopPropagation","contains","addOverClass","removeOverClass","overClass","addClass","getOverClass","removeClass","$parse","link","attributes","$eval","installedModules","m","c","p","moduleId","id","FileUploaderDecorator","$delegate","$cookies","token","get","X-XSRF-TOKEN","FileDropDecorator","onDragLeaveTimer","that","decorator"],"mappings":"AAKA,CAAA,SAA2CA,EALine truncated
{"version":3,"file":"angular-file-upload.min.js","sources":["../../node_modules/angular-file-upload/dist/angular-file-upload.js","../Common/angular-file-upload.trump.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","_config2","_interopRequireDefault","_options2","_FileUploader2","_FileLikeObject2","_FileItem2","_FileDirective2","_FileSelect2","_Pipeline2","_FileDrop2","_FileOver2","_FileSelect4","_FileDrop4","_FileOver4","obj","__esModule","default","angular","name","value","directive","run","FileUploader","FileLikeObject","FileItem","FileDirective","FileSelect","FileDrop","FileOver","Pipeline","Object","defineProperty","url","alias","headers","queue","progress","autoUpload","removeAfterUpload","method","filters","formData","queueLimit","Number","MAX_VALUE","withCredentials","disableMultipart","_slicedToArray","arr","i","Array","isArray","Symbol","iterator","sliceIterator","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","length","err","TypeError","_config","__identity","_angular","bind","copy","extend","forEach","isObject","isNumber","isDefined","isUndefined","element","fileUploaderOptions","$rootScope","$http","$window","$timeout","File","FormData","prototype","addToQueue","files","options","_this","incomingQueue","isArrayLikeObject","slice","call","arrayOfFilters","_getFilters","count","addedFileItems","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","something","shift","fileLikeObject","isFile","pipes","_convertFiltersToPipes","pipeline","onThrown","originalFilter","pipe","_err$args","args","_onWhenAddingFileFailed","onSuccessful","fileItem","_onAfterAddingFile","exec","removeFromQueue","index","getIndexOfItem","item","isUploading","cancel","splice","_destroy","clearQueue","remove","uploadItem","transport","isHTML5","_prepareToUploading","_onBeforeUploadItem","isCancel","cancelItem","dummy","_this2","prop","abort","_onCancelItem","apply","concat","_onCompleteItem","items","getNotUploadedItems","filter","upload","cancelAll","constructor","isFileLikeObject","indexOf","isUploaded","getReadyItems","isReady","sort","item1","item2","destroy","_this3","_directives","key","object","onAfterAddingAll","fileItems","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","response","status","onErrorItem","onCancelItem","onCompleteItem","onTimeoutItem","onCompleteAll","uploaded","ratio","notUploaded","Math","round","names","match","_this4","map","fn","isAsync","$$phase","$apply","_folderFilter","size","type","_queueLimitFilter","_isSuccessCode","_transformResponse","headersGetter","_headersGetter","defaults","transformResponse","transformFn","_parseHeaders","parsed","split","line","trim","toLowerCase","val","parsedHeaders","_xhrTransport","sendable","_this5","xhr","_xhr","XMLHttpRequest","_file","append","file","onprogress","event","lengthComputable","loaded","total","_onProgressItem","onload","getAllResponseHeaders","gist","onerror","_onErrorItem","onabort","ontimeout","e","_onTimeoutItem","open","timeout","setRequestHeader","send","_iframeTransport","_this6","form","iframe","Date","now","input","_input","timer","isTimedOut","_form","replaceWith","element_","action","target","enctype","encoding","html","contentDocument","body","innerHTML","clearTimeout","_onSuccessItem","unbind","after","setTimeout","submit","_onBeforeUpload","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","nextItem","_onTimeout","inherit","source","create","super_","settings","_nextIndex","select","drop","over","unshift","$inject","fileOrInput","fakePathOrObject","isElement","isString","_createFromFakePath","path","lastModifiedDate","lastIndexOf","_createFromObject","$compile","uploader","message","code","onBeforeUpload","onProgress","onSuccess","onError","onCancel","onComplete","onTimeout","isSuccess","isError","_replaceNode","clone","scope","css","some","isInput","_saveLinks","events","_FileDirective","subClass","superClass","extendedOptions","$destroy","change","self","ReferenceError","removeAttr","enumerable","writable","configurable","setPrototypeOf","__proto__","getOptions","getFilters","isEmptyAfterSelection","attr","onChange","_toConsumableArray","arr2","from","$q","deferred","onFulfilled","onRejected","Error","defer","promise","then","Boolean","_len","arguments","_key","instance","Constructor","dragover","dragleave","onDrop","transfer","_getTransfer","_preventAndStop","_removeOverClass","onDragOver","_haveFiles","types","dropEffect","_addOverClass","onDragLeave","currentTarget","dataTransfer","originalEvent","preventDefault","stopPropagation","contains","addOverClass","removeOverClass","overClass","addClass","getOverClass","removeClass","$parse","link","attributes","$eval","installedModules","m","c","p","moduleId","id","FileUploaderDecorator","$delegate","$cookies","token","get","X-XSRF-TOKEN","FileDropDecorator","onDragLeaveTimer","that","decorator"],"mappings":"CAKA,CAA2CA,EAAMC,KLine truncated
@@ -18,6 +18,8 @@ $sg-login-width: grid-step(5);
.sg-logo {
// Center image
margin: auto;
margin-top: 60px;
margin-bottom: 60px;
img {
height: 100%;
width: grid-step(5);
@@ -452,6 +452,10 @@ md-dialog md-dialog-actions.sg-mail-editor-attachments {
.sogo-raw-html-embed .raw-html-embed__preview-placeholder {
display: none !important;
}
.ck-content p {
margin: revert;
}
}
// Search highlight
@@ -527,4 +531,10 @@ mark {
cursor: pointer;
padding-left: 10px;
padding-right: 10px;
}
/* Clean mailbox */
.clean-mailbox-warn {
color: #f44336;
}