Compare commits

...
431 Commits
Author SHA1 Message Date
Francis Lachapelle 277c6e901e Update ChangeLog 2016-12-01 12:02:23 -05:00
Francis Lachapelle 2c24901803 (js/css) Update generated files 2016-12-01 12:01:50 -05:00
Francis Lachapelle 8f90aa96fe (css,js) Update md to v1.1.1-master-b8357dc 2016-12-01 12:00:00 -05:00
Francis Lachapelle ee5b60c544 Preparation for release 3.2.4 2016-12-01 11:59:16 -05:00
Francis Lachapelle d2b94eba09 (js) Fix detection of session expiration 2016-12-01 11:56:07 -05:00
Francis Lachapelle c9467e1ce3 Validate custom subject for vacation auto-reply 2016-12-01 11:21:59 -05:00
Francis Lachapelle b4e9b7b60c (css) Fix sidenav background color of Preferences 2016-12-01 11:14:38 -05:00
Francis Lachapelle 66710f1b17 (i18n) Update translations 2016-12-01 11:07:28 -05:00
Francis Lachapelle a61ea24cdb (obj-c) Indentation 2016-12-01 10:28:26 -05:00
Francis Lachapelle 3e448d2c2c New sogo-tool cleanup user feature (cont'd) 2016-12-01 10:27:22 -05:00
Ludovic Marcotte 9aa00d049d Updated NEWS 2016-12-01 09:42:03 -05:00
Ludovic Marcotte fdea54f5e7 (fix) properly escape all GAL responses (fixes #3923) 2016-12-01 09:40:24 -05:00
InverseBot 3c098ceca5 (js/css) Update generated files 2016-12-01 01:18:40 -05:00
Francis Lachapelle f7dd835f92 Fix mail attribute when importing an LDIF file
Fixes #3878
2016-11-30 16:06:09 -05:00
Francis Lachapelle 7705c11cf7 New sogo-tool cleanup user feature 2016-11-30 15:32:29 -05:00
Francis Lachapelle 52cdb71d1f Add sort by start date for the tasks list
Fixes #3840
2016-11-30 12:13:48 -05:00
Francis Lachapelle a1746cd386 (css) Fix display of tabs with oversized content 2016-11-30 12:09:11 -05:00
InverseBot cd08ab81f1 (js/css) Update generated files 2016-11-30 02:47:47 -05:00
Francis Lachapelle d293fe79ed Add handling of BYSETPOS for BYDAY in repeat rule 2016-11-29 17:47:14 -05:00
Francis Lachapelle 6f732ba535 Fix MSExchangeFreeBusySOAPRequest.wod 2016-11-29 16:14:42 -05:00
Francis Lachapelle b27c868271 Fix freebusy data fetching of MS Exchange contacts 2016-11-29 15:48:15 -05:00
InverseBot e0b0a1d783 (js/css) Update generated files 2016-11-29 03:13:53 -05:00
Francis Lachapelle e059a6043e (js) Fix possible cross-origin exception
When SOGo is launched from an external link, either using a different
"target" or using window.open(), the Mail composer could throw a
JavaScript exception when trying to save or send a message that would
completely stop the operation.

Fixes #3900
2016-11-28 15:36:03 -05:00
Francis Lachapelle e253f5735d (js) Don't test pristine state of Message composer 2016-11-28 11:45:09 -05:00
Francis Lachapelle 328d67ec3a Improve sort validation in Contacts module 2016-11-28 10:33:38 -05:00
Francis Lachapelle c3376a4ddf Fix some compilation warnings 2016-11-28 10:14:23 -05:00
Francis Lachapelle 220fb3d607 (js) Update alarms after dragging an event 2016-11-28 09:37:31 -05:00
InverseBot fb873fcae9 (js/css) Update generated files 2016-11-26 02:52:49 -05:00
Ludovic Marcotte d2e03386d2 (fix) use GMT + adjust bias when querying Exchange's FB info 2016-11-25 15:14:24 -05:00
Francis Lachapelle 35a3a8ef1d Update ChangeLog 2016-11-25 10:57:26 -05:00
Francis Lachapelle 309846c894 (js/css) Update generated files 2016-11-25 10:52:36 -05:00
Francis Lachapelle f84d0e5f30 Preparation for release 3.2.3 2016-11-25 10:45:07 -05:00
InverseBot 9bb22bd67a (js/css) Update generated files 2016-11-25 02:43:18 -05:00
Francis Lachapelle dc7cb6792a (js) Improve alarms dialog
Fixes #3909
2016-11-24 19:14:02 -05:00
Ludovic Marcotte a76f8dca04 Updated NEWS 2016-11-24 16:07:47 -05:00
Ludovic Marcotte 06e92bbde5 Updated NEWS 2016-11-24 15:54:34 -05:00
Ludovic Marcotte 022c4bac98 (fix) wrong check for delete permission 2016-11-24 15:49:10 -05:00
Ludovic Marcotte 0e82802082 (fix) also filter out recurrence-id 2016-11-24 15:43:37 -05:00
Francis Lachapelle 0a4fa9aada (css) Update default theme 2016-11-24 15:09:59 -05:00
Ludovic Marcotte 71ca4a7b47 (fix) don't check Dovecot conditions if we're using IMAP annotations 2016-11-24 11:39:05 -05:00
Francis Lachapelle 2878665af4 Merge pull request #227 from andryyy/patch-5
Update SOGoACLGermanModificationAdvisory.wox
2016-11-24 06:34:27 -05:00
Francis Lachapelle 9f5a6707bb Merge pull request #226 from andryyy/patch-4
Update SOGoACLGermanRemovalAdvisory.wox
2016-11-24 06:33:52 -05:00
InverseBot 0e07844108 (js/css) Update generated files 2016-11-24 03:11:27 -05:00
André Peters 7c9d8b19b9 Update SOGoACLGermanModificationAdvisory.wox
Fix umlauts in messages like "... Zugang zu seinem Order "Persönlicher Kalender".
2016-11-24 08:50:43 +01:00
André Peters 1f9ef6fea7 Update SOGoACLGermanRemovalAdvisory.wox
Fix umlauts in messages like "... Zugang zu seinem Order "Persönlicher Kalender".
2016-11-24 08:50:42 +01:00
Ludovic Marcotte 836fdb1722 (feat) added photo support for LDAP-based address books 2016-11-23 16:30:41 -05:00
Francis Lachapelle cb960fae02 Restore attributes of base64-encoded img tags
Fixes #3814
2016-11-23 14:57:24 -05:00
Francis Lachapelle b8df16cd8c Improve SOGoDefaults.plist to avoid warning 2016-11-23 14:52:10 -05:00
Francis Lachapelle 84e591cdb9 (js) Update CKEditor to version 4.6.0 2016-11-23 13:57:49 -05:00
Francis Lachapelle daf3898674 Update ChangeLog 2016-11-23 11:34:37 -05:00
Francis Lachapelle 1d7af945da (js/css) Update generated files 2016-11-23 11:30:05 -05:00
Francis Lachapelle 5223fa9171 Preparation for release 3.2.2 2016-11-23 11:26:46 -05:00
Francis Lachapelle 3137e4cdbb Respect mailbox administration rights of user 2016-11-23 11:16:13 -05:00
Francis Lachapelle 85f842fbaf (i18n) Update translations 2016-11-23 10:01:15 -05:00
Francis Lachapelle 33e8169955 Formatting of SOGoDefaults.plist 2016-11-23 09:13:52 -05:00
InverseBot 3bbc625564 (js/css) Update generated files 2016-11-23 02:19:41 -05:00
Francis Lachapelle 8f805c97d9 (doc) Modification to counter bug with asciidoctor 2016-11-22 14:42:20 -05:00
Francis Lachapelle 5211e339fb (js,html) Use md-switch in Calendars list 2016-11-22 09:57:39 -05:00
Francis Lachapelle badab13cec (css) Improve folder subscription dialog 2016-11-22 09:56:55 -05:00
InverseBot 79a493b1ae (js/css) Update generated files 2016-11-22 02:03:25 -05:00
Francis Lachapelle 99b00254c5 (js) Persistent state of center list in Calendars
Fixes #3861
2016-11-21 16:24:54 -05:00
Francis Lachapelle 909b18bddf (js) More precaution in mail composer 2016-11-21 14:02:16 -05:00
InverseBot ac94c21e2a (js/css) Update generated files 2016-11-21 10:55:17 -05:00
Ludovic Marcotte f7c4486370 (feat) relaxed permission requirements for subscription synchronizations (fixes #3118 and #3180) 2016-11-21 10:46:13 -05:00
Francis Lachapelle 961b2226f0 (js) Disable submit button while saving a contact 2016-11-21 10:43:45 -05:00
Francis Lachapelle d032945bb4 Code cleanup in UIxMailFolderActions.m 2016-11-21 10:43:45 -05:00
Ludovic Marcotte b34f38f7fc (feat) added content "touching" capability (for developers) 2016-11-21 09:57:58 -05:00
Francis Lachapelle a09e6dee06 Merge pull request #225 from andryyy/patch-3
Disable auto-correct on iOS for username
2016-11-20 16:45:41 -05:00
André Peters 56c9f9d288 Disable auto-correct on iOS for username 2016-11-20 11:16:29 +01:00
InverseBot b425632318 (js/css) Update generated files 2016-11-18 01:22:20 -05:00
Francis Lachapelle ceb626638e (js) Improve tooltips of calendars list (sidenav) 2016-11-17 15:52:21 -05:00
Francis Lachapelle 40fc4bd231 (js) Improve sgAvatarImage (cont'd) 2016-11-17 15:47:06 -05:00
Francis Lachapelle 2f69c018be (css,js) Update md to v1.1.1-master-d774b76 2016-11-17 15:42:14 -05:00
Francis Lachapelle de209f5b95 (css) Fix display of top toolbar on Safari for iOS 2016-11-17 14:48:45 -05:00
InverseBot 9e6825e741 (js/css) Update generated files 2016-11-17 12:39:05 -05:00
Francis Lachapelle 0705f8f365 (html) Can't export a calendar subscription 2016-11-17 12:09:57 -05:00
Francis Lachapelle baf1d44548 Fix support for SOGoSieveFolderEncoding defaults
Fixed the following bugs in the mail filter editor:

1. Sieve folder encoding not respecting the SOGoSieveFolderEncoding
system defaults;
2. Conditions are still displayed when rule affects all messages;
3. Missing custom mail labels to "flag with" action.
2016-11-17 09:41:15 -05:00
InverseBot 5f70555975 (js/css) Update generated files 2016-11-17 01:12:02 -05:00
Ludovic Marcotte e4213c0077 Updated NEWS 2016-11-15 14:24:03 -05:00
Ludovic Marcotte bf42f225cb (fix) fixed broken string initializations (fixes #3899) 2016-11-15 14:18:57 -05:00
Francis Lachapelle 8ad0432e89 (i18n) Add missing string on login page 2016-11-15 10:09:17 -05:00
InverseBot 5b119f73b6 (js/css) Update generated files 2016-11-15 01:20:01 -05:00
Francis Lachapelle efbf0cc5a5 Fix required rights to move a calendar component
Fixes #3889
2016-11-14 17:26:28 -05:00
InverseBot 8436b0c9af (js/css) Update generated files 2016-11-12 01:21:26 -05:00
Francis Lachapelle 3bbd61cfd2 (js) Improve sgAvatarImage 2016-11-11 16:46:55 -05:00
Francis Lachapelle 0a75f5c4f7 Use md-colors in Administration module 2016-11-11 15:44:41 -05:00
Ludovic Marcotte 5df85fa31a (fix) fixed method usage 2016-11-11 09:48:38 -05:00
Ludovic Marcotte c9e9bb19d8 (fix) fix EAS download of attachments on iOS 10 2016-11-11 08:33:50 -05:00
InverseBot 3558eb1964 (js/css) Update generated files 2016-11-11 01:17:46 -05:00
Francis Lachapelle 6e48734504 Allow to hide center column on large screens 2016-11-10 16:04:29 -05:00
Ludovic Marcotte 5b02685d2b (feat) added sha256-crypt and sha512-crypt support 2016-11-10 10:53:07 -05:00
Francis Lachapelle c42507dbe4 (js) Add basic range selection with shift key 2016-11-10 10:42:23 -05:00
Francis Lachapelle 5961117208 (js) Fix uploading same attachment after removal
Fixes #3876
2016-11-10 10:21:33 -05:00
Francis Lachapelle a78621add4 (css,html) Improve display of mailboxes list
(cont'd)
2016-11-10 09:42:28 -05:00
InverseBot 8be2b0d254 (js/css) Update generated files 2016-11-10 01:21:45 -05:00
Francis Lachapelle bafb082abf (js) Improve sg-ripple-click directive 2016-11-09 16:26:31 -05:00
Francis Lachapelle bc10e0983a Fix Sieve activation with vacation start date
Fixes #3885
2016-11-09 16:25:16 -05:00
Francis Lachapelle 839384f77e (js) Zoomable custom avatar in card view 2016-11-09 11:22:17 -05:00
Francis Lachapelle fecbd49541 (js) Fix creation of note on existing card
Fixes #3886
2016-11-09 10:37:28 -05:00
Francis Lachapelle c596bacccb (css,html) Improve display of mailboxes list 2016-11-09 10:18:12 -05:00
InverseBot 7f2dabc30c (js/css) Update generated files 2016-11-09 01:17:32 -05:00
Francis Lachapelle c98ebb5f44 Update time zones to version 2016i 2016-11-08 15:29:54 -05:00
Francis Lachapelle 62a3057633 (js, html) Fix IMAP folder subscriptions manager
Fixes #3865
2016-11-08 15:20:41 -05:00
Francis Lachapelle ea64046df2 Fix links to newly added addressbook 2016-11-08 12:24:56 -05:00
Francis Lachapelle 8e33794400 (js) Fix links to newly subscribed calendar 2016-11-08 11:44:10 -05:00
Francis Lachapelle de9e3ed0b3 (html) Fix list avatar in users folders search 2016-11-08 11:42:28 -05:00
Ludovic Marcotte bc98c31f9e Updated NEWS 2016-11-08 10:31:33 -05:00
Ludovic Marcotte 0cdc6c9cd7 (fix) we now always use utf8 when sending IMIP messages 2016-11-08 08:49:23 -05:00
InverseBot 6a759553e5 (js/css) Update generated files 2016-11-08 01:17:57 -05:00
Francis Lachapelle f4580c8920 (js) Fix computation of week number 2016-11-07 15:01:09 -05:00
Francis Lachapelle 4a6e53934b (js) Mark multiple messages as seen
Fixes #3873
2016-11-07 12:14:00 -05:00
InverseBot 836e2ee275 (js/css) Update generated files 2016-11-05 01:17:43 -04:00
Francis Lachapelle 168a2ddd18 Fix handling of weekly recurrence rule with count
This fixes some corner cases when computing the freebusy and therefore
when verifying for resource conflicts.
2016-11-04 16:44:14 -04:00
Francis Lachapelle c35e074842 (js) Mark form as dirty when removing an attendee 2016-11-04 14:37:23 -04:00
Francis Lachapelle 963e3f4587 Update NEWS file 2016-11-04 14:36:50 -04:00
Francis Lachapelle 7c02b4bf88 (js) Disable submit btn while saving event or task
Fixes #3880
2016-11-04 14:29:54 -04:00
Ludovic Marcotte fb7a83f44a (fix) don't update c_nextalarm in quick table for email alarms 2016-11-04 08:41:47 -04:00
InverseBot a45d8c68f8 (js/css) Update generated files 2016-11-04 01:06:39 -04:00
Ludovic Marcotte 3d36a6dd23 (fix) reverted change for display alarms 2016-11-03 16:17:27 -04:00
Francis Lachapelle aff6a8b7c9 Untabify + indent 2016-11-03 16:02:51 -04:00
Francis Lachapelle e6b129c8eb Fix condition in weekly recurrence calculator 2016-11-03 15:26:38 -04:00
Ludovic Marcotte 70f5d748f2 Updated NEWS 2016-11-03 13:51:44 -04:00
Ludovic Marcotte 70b3ff4b5c (feat) we now also search on the send for EAS Search ops 2016-11-03 13:50:03 -04:00
Francis Lachapelle 21dd03eb81 (js) Improve reset of a reccurent component 2016-11-03 11:48:48 -04:00
Francis Lachapelle 57a4286cd5 Set default relation to START in alarm description 2016-11-03 11:48:17 -04:00
Francis Lachapelle c02c4aa834 Avoid mail notifications on superfluous changes
(cont'd)

Fixes #3790
2016-11-03 11:47:21 -04:00
InverseBot 42597abf8d (js/css) Update generated files 2016-11-03 01:17:54 -04:00
Ludovic Marcotte 78045b14be (feat) first pass at support for recurring events/tasks email alarms (fixes #1053) 2016-11-02 18:16:45 -04:00
Francis Lachapelle 8cadf5cbbd (js) Fix mail settings persistence of sorting 2016-11-02 15:11:01 -04:00
Francis Lachapelle 0a515d66bd Update ChangeLog 2016-11-02 12:29:35 -04:00
Francis Lachapelle 79d48dfc7c Preparation for release 3.2.1 2016-11-02 12:29:13 -04:00
Francis Lachapelle 7704b2c3cc (js/css) Update generated files 2016-11-02 12:25:47 -04:00
Francis Lachapelle 17e65da618 (js) Add CKEditor pastefromexcel plugin
Fixes #3854
2016-11-02 12:19:00 -04:00
Francis Lachapelle fd57625c54 Update comment 2016-11-02 12:02:57 -04:00
Francis Lachapelle 45c6c537f5 (html) Respect SOGoSearchMinimumWordLength 2016-11-02 12:01:22 -04:00
Francis Lachapelle 9fd42fdaa9 Update time zones to version 2016h 2016-11-02 11:59:21 -04:00
Francis Lachapelle 4179c88fa4 (i18n) Update translations 2016-11-02 11:30:57 -04:00
InverseBot 1aa2702a24 (js/css) Update generated files 2016-11-02 01:17:20 -04:00
Francis Lachapelle 81ff9e7f04 (css,js) Update md to v1.1.1-master-70cecda 2016-11-01 15:54:56 -04:00
Francis Lachapelle 651a1c3910 Avoid mail notifications on superfluous changes
Fixes #3790
2016-11-01 15:26:59 -04:00
Francis Lachapelle 1ee7693432 Fix support for recurrent tasks (cont'd)
Fixes #3864
2016-11-01 14:52:18 -04:00
Ludovic Marcotte 188dd986d2 (fix) cosmetic changes 2016-11-01 14:20:59 -04:00
Francis Lachapelle 1c689719ac (html) Add missing options to subscribed calendars
Fixes #3863
2016-11-01 12:09:08 -04:00
Francis Lachapelle 613d21b0c5 (i18n) Update translations 2016-11-01 12:06:15 -04:00
Francis Lachapelle 0e0f53cd98 Allow a mailbox to be deleted immediately
Fixes #3875
2016-11-01 11:40:59 -04:00
Francis Lachapelle 5c7147cccc (js) Restore immediate deletion of messages 2016-11-01 10:35:00 -04:00
Francis Lachapelle 67f566ec9d Minor cleanup to event/task editors 2016-11-01 09:27:16 -04:00
InverseBot 89fdbeee6b (js/css) Update generated files 2016-11-01 01:20:13 -04:00
Francis Lachapelle 1ccf5e369f (js) Move "ACLs saved" toast of admin to bottom 2016-10-31 15:19:03 -04:00
Francis Lachapelle 0b99dbfc99 Fix SOGoLoginModule when set to "Last used" 2016-10-31 15:19:03 -04:00
Ludovic Marcotte 067934026b Updated NEWS 2016-10-31 10:25:43 -04:00
Ludovic Marcotte 6200a5dbd7 (fix) support replied/forwarded flags using EAS (fixes #3796) 2016-10-31 10:24:16 -04:00
Ludovic Marcotte 90fcd572c3 (feat) initial support for EAS recurring tasks 2016-10-31 10:22:27 -04:00
InverseBot 5e27437b25 (js/css) Update generated files 2016-10-31 01:18:28 -04:00
InverseBot 81db98784b (js/css) Update generated files 2016-10-29 01:16:28 -04:00
Francis Lachapelle 5208e46d10 (js) Fix Resource conflict error handling 2016-10-28 11:47:40 -04:00
InverseBot f25c26b7bd (js/css) Update generated files 2016-10-27 01:17:26 -04:00
Francis Lachapelle ad5fc5b91f Add missing options to subscribed addressbooks
Fixes #3850
2016-10-26 17:27:25 -04:00
Francis Lachapelle 7310834ac6 (js) Fix auto-completion of list members
Fixes #3870
2016-10-26 15:48:40 -04:00
Francis Lachapelle 1d09a980da (js) Add minimumSearchLength to sgSettings value 2016-10-26 15:44:43 -04:00
Francis Lachapelle b44bf86164 Improve validation of mail account delegators 2016-10-26 15:42:50 -04:00
Francis Lachapelle 65a653ac0c (i18n) Update translations 2016-10-26 08:27:44 -04:00
InverseBot a30a4c34ba (js/css) Update generated files 2016-10-26 01:15:49 -04:00
Francis Lachapelle 3095bdb86c Cleanup UIxCalDayTable.wox 2016-10-25 17:34:21 -04:00
Francis Lachapelle 79a34f1e36 (js) Update sg-timepicker following md changes 2016-10-25 17:34:21 -04:00
Francis Lachapelle 524a481340 (js) Cleanup sg-search directive 2016-10-25 17:34:20 -04:00
Ludovic Marcotte 2949bef902 (fix) make sure consider non-void GUID 2016-10-25 11:18:49 -04:00
Francis Lachapelle c709b9c04b (js) Fix initialization of a new Card's note 2016-10-25 09:27:57 -04:00
Francis Lachapelle 4d0dcc4978 Fix support for recurrent tasks 2016-10-24 16:31:59 -04:00
Francis Lachapelle d779657fdf Fix tasks sorting by priority 2016-10-24 09:32:52 -04:00
InverseBot 0cbf5cca8d (js/css) Update generated files 2016-10-22 01:18:34 -04:00
Francis Lachapelle 36c5f72317 Fix some unlocalized strings
Fixes #3858
2016-10-21 10:55:59 -04:00
Francis Lachapelle 24e4c60baa Improve Preferences module and Mail account editor 2016-10-21 10:49:09 -04:00
Francis Lachapelle 6d695e813b (js) Fix addContactCategory of Preferences ctrl
Fixes #3859
2016-10-21 08:59:04 -04:00
InverseBot 8eebf6be00 (js/css) Update generated files 2016-10-21 01:58:06 -04:00
Francis Lachapelle 9ee271c278 (js) Improve toast of event alarm 2016-10-20 21:40:45 -04:00
Francis Lachapelle b301c5ec4c (js) Improve sg-ripple-click directive 2016-10-20 21:15:50 -04:00
Francis Lachapelle f326ca5ae5 Fix saving the note of a card
Fixes #3849
2016-10-20 18:28:58 -04:00
Francis Lachapelle 03661eef9e (js) Improve initialization of "vacation" dates 2016-10-20 18:08:32 -04:00
Ludovic Marcotte e6b1589e5f (fix) make sure we unencode @ signs before storing them in the ACL table 2016-10-20 10:27:26 -04:00
InverseBot c703a00659 (js/css) Update generated files 2016-10-20 01:17:32 -04:00
Francis Lachapelle 58ee225e6b (js) Improve dates constraints of vacation reply
Fixes #3841
2016-10-19 16:14:27 -04:00
Ludovic Marcotte 7ef245edc3 Updated NEWS file 2016-10-19 15:17:13 -04:00
Ludovic Marcotte 85ad17ad36 (fix) We never send IMIP reply when the "initiator" is Outlook 2013/2016 over 2016-10-19 15:13:28 -04:00
Ludovic Marcotte c1c2b3e849 (fix) only show the organizer field of an IMIP REPLY if one is defined 2016-10-19 10:08:34 -04:00
Ludovic Marcotte 6a47b61800 Fixed broken commits
d491a3fa49 and bda3be1c2d
2016-10-19 10:06:19 -04:00
InverseBot c57ffb4268 (js/css) Update generated files 2016-10-19 01:19:20 -04:00
Ludovic Marcotte d491a3fa49 (fix) more fixes with sogo-tool manage-eas + single store mode 2016-10-18 19:43:49 -04:00
Ludovic Marcotte bda3be1c2d (fix) improve handling of email folders without a parent 2016-10-18 11:22:22 -04:00
Ludovic Marcotte 21896929ad Updated NEWS 2016-10-18 11:19:39 -04:00
Ludovic Marcotte 1b63068b6c (fix) make sogo-tool manageeas work with single instance store 2016-10-18 11:18:44 -04:00
Francis Lachapelle 6f14696e0a (js) Improve dates constraints of vacation reply
Fixes #3846
2016-10-18 09:22:32 -04:00
InverseBot 6454cdb95f (js/css) Update generated files 2016-10-18 01:17:31 -04:00
Francis Lachapelle f902b90348 Fix vCard generation for tags with no type
Fixes #3826
2016-10-17 16:36:21 -04:00
Francis Lachapelle 1c0c7ab256 (js) Improve hotkeys cheat sheet
Add mapping for '*' character code and remove hotkeys from cheat sheet
when no callback is registered.
2016-10-17 15:38:13 -04:00
Francis Lachapelle 9a050620f0 (js) New hotkeys for message controller
Fixes #3834
2016-10-17 15:37:40 -04:00
Francis Lachapelle aa124d3273 (js) Improve ckEditor directive
Fixes #3839
2016-10-17 13:44:16 -04:00
Francis Lachapelle 37089e15c1 (html) Fix progress indicators of import dialogs 2016-10-17 12:06:13 -04:00
Ludovic Marcotte 069ea4142e Updated NEWS 2016-10-17 11:41:45 -04:00
Ludovic Marcotte b40d5e24d1 (fix) only consider SMTP proxyAddresses for AD (fixes #3842) 2016-10-17 11:41:07 -04:00
Ludovic Marcotte 8d6e0342ec (fix) improve memory usage when importing very large address books 2016-10-17 08:54:24 -04:00
InverseBot 984677796c (js/css) Update generated files 2016-10-16 01:57:59 -04:00
Francis Lachapelle 3e501be5a9 (js) Respect SearchMinWordLength in list editor
More precisely, the domain default is named SOGoSearchMinimumWordLength.
2016-10-14 16:35:57 -04:00
Francis Lachapelle 56283668d0 (js) Add constraints to dates of vacation reply
Fixes #3841
2016-10-14 11:49:23 -04:00
InverseBot fd55403ebd (js/css) Update generated files 2016-10-13 01:15:56 -04:00
Francis Lachapelle c50c3763b1 (js) Add automatic refresh of calendar view
We were only refreshing the selected component list, we now also refresh
the calendar view.
2016-10-12 11:01:59 -04:00
InverseBot e20d2281db (js/css) Update generated files 2016-10-12 02:08:16 -04:00
Francis Lachapelle 0f1eeae7bb (js) Update Angular to branch 1.5.x 2016-10-11 09:56:00 -04:00
InverseBot 7aec556a51 (js/css) Update generated files 2016-10-11 01:15:42 -04:00
Francis Lachapelle 292432df12 Don't remove the "c_component" condition in search
This will fix a bug when we'll support recurrent tasks!
2016-10-07 12:19:19 -04:00
Francis Lachapelle c3d349e3c6 Fix tasks list when some weekdays are disabled 2016-10-07 12:08:40 -04:00
InverseBot 75326e0194 (js/css) Update generated files 2016-10-06 01:22:48 -04:00
Francis Lachapelle 84412cc538 Improve NSArray comparison in Contacts module 2016-10-05 15:38:54 -04:00
Francis Lachapelle 64434bbfad Fix sort by email with LDAP sources 2016-10-05 15:25:57 -04:00
InverseBot cc77f5aa16 (js/css) Update generated files 2016-10-04 00:22:40 -04:00
Francis Lachapelle 1a0ce5339c Fix condition in UIxPreferences.m 2016-10-03 12:36:57 -04:00
Francis Lachapelle 9a1e2804de Update ChangeLog 2016-10-03 11:54:49 -04:00
Francis Lachapelle 69c7102ee0 Preparation for release 3.2.0 2016-10-03 11:54:02 -04:00
Francis Lachapelle 2a59a117a2 (js/css) Update generated files 2016-10-03 11:53:23 -04:00
Francis Lachapelle 030dabdcb2 (i18n) Update translations 2016-10-03 11:47:57 -04:00
Francis Lachapelle 1bd4fe5010 (js) Add hotkey to search in contacts 2016-10-03 11:44:51 -04:00
Francis Lachapelle 5c8568f14e (js) Improve navigation with hotkeys in lists 2016-10-03 11:27:57 -04:00
Francis Lachapelle b4676ce439 Allow custom email to be one of the user's profile
Fixes #3551
2016-10-03 10:29:30 -04:00
Ludovic Marcotte f0a368e42c Updated NEWS 2016-10-03 09:08:42 -04:00
Ludovic Marcotte 23fa9c0ea1 (fix) fixed recurring events with timezones for EAS (fixes #3822) 2016-10-03 08:59:37 -04:00
InverseBot 92a81f8c1b (js/css) Update generated files 2016-10-01 01:19:55 -04:00
Francis Lachapelle a6b2202576 (js) Fix users list order of ACLs manager dialog 2016-09-30 12:26:43 -04:00
Francis Lachapelle f5cc2d7c27 (js) Cleanup call in contact view template 2016-09-30 12:24:47 -04:00
Francis Lachapelle 508550d677 Add ARIA label for mail accounts toggle buttons 2016-09-30 12:23:22 -04:00
Francis Lachapelle c845d021ea (js) Add hotkey to flag a message 2016-09-30 12:15:37 -04:00
Francis Lachapelle 268b8ea1c3 (js,html) Improve IMAP subscriptions manager 2016-09-30 12:02:46 -04:00
Francis Lachapelle f233b2a9a7 (css) Improve top navigation toolbar
This improves the tall toolbar of the preferences module and fixes a bug
with Firefox and the fab button of the preferences module.
2016-09-30 10:37:40 -04:00
Francis Lachapelle 9046bae712 (js) Remove resize grips to short events
Fixes #3771
2016-09-30 09:31:01 -04:00
InverseBot 4d7242bfc6 (js/css) Update generated files 2016-09-30 01:21:47 -04:00
Francis Lachapelle 66267b17f2 (js,css) Add sg-now-line directive 2016-09-29 15:59:39 -04:00
Francis Lachapelle 77e3d7ca0c (js) Improve hotkeys support 2016-09-29 13:40:36 -04:00
Ludovic Marcotte c80ee886b3 Updated NEWS 2016-09-29 13:01:47 -04:00
Ludovic Marcotte 5db9f40f6a (fix) make sure we don't sleep for too long when EAS processes need interruption 2016-09-29 13:00:48 -04:00
InverseBot c317ae964d (js/css) Update generated files 2016-09-29 02:05:49 -04:00
Francis Lachapelle aef0609032 (js) Improve hotkeys cheat sheet 2016-09-28 16:04:28 -04:00
Francis Lachapelle a299ed2f26 (js) Fix navigation in multicolumn day view 2016-09-28 14:47:10 -04:00
Francis Lachapelle ef21630441 (css) Improve hotkeys cheat sheet 2016-09-28 14:46:23 -04:00
Francis Lachapelle ee66383f09 (css,js) Update md to v1.1.1-master-1b9245a 2016-09-28 14:45:42 -04:00
Francis Lachapelle c1733221ba (js) Adapt Component ctrl to latest md changes
Fixes #3823
2016-09-28 14:39:18 -04:00
Francis Lachapelle 9623604aac (js) Don't allow hotkeys in md-chips 2016-09-28 14:38:59 -04:00
Francis Lachapelle 3d30345fb5 Update CKEditor to version 4.5.11 2016-09-28 14:29:34 -04:00
Francis Lachapelle af9e0f4853 (js) Adapt sgTransformOnBlur for latest md changes 2016-09-28 14:21:08 -04:00
Francis Lachapelle 5e76627641 Revert "(js) Drop sgTransformOnBlur directive"
This reverts commit 67258fe337.

Fixes #3815
2016-09-28 13:50:44 -04:00
Francis Lachapelle 3a61903e7f (js) Add sg-category-stylesheet directive
Fixes #3816
2016-09-28 12:03:11 -04:00
Francis Lachapelle f0a0da28ae Update NEWS file 2016-09-28 10:40:09 -04:00
Ludovic Marcotte b7abbeb045 (fix) fixed default TRANSP value when creating event 2016-09-28 10:28:43 -04:00
Francis Lachapelle c328ea1823 (i18n) Update translations 2016-09-28 09:29:55 -04:00
InverseBot 81643c1c60 (js/css) Update generated files 2016-09-28 02:06:13 -04:00
Ludovic Marcotte b55d5e9f54 Updated NEWS 2016-09-27 19:50:50 -04:00
Ludovic Marcotte 8ec73590d7 (fix) make sure new cards always have a UID (fixes #3819) 2016-09-27 19:49:58 -04:00
Ludovic Marcotte e4efff6bc1 Updated NEWS 2016-09-27 16:36:22 -04:00
Francis Lachapelle 57a735753f (js,css) Improve keyboard shortcuts
- Defined some hotkeys in all modules;
- Added generation of cheat sheet.
2016-09-27 16:16:09 -04:00
Ludovic Marcotte 13dd21bebb (fix) added sort by arrival date in Mail module (fixes #708) 2016-09-27 16:10:44 -04:00
InverseBot 008b38ab7d (js/css) Update generated files 2016-09-27 01:34:10 -04:00
Francis Lachapelle 44aa1352e4 Caching expiration of ACLs assigned to LDAP groups
Fixes #2867
2016-09-26 16:22:44 -04:00
Ludovic Marcotte 5cb85c4f4f Updated NEWS 2016-09-26 15:24:22 -04:00
Ludovic Marcotte c1326dc20e (fix) search in all domain sources for Apple Calendar and properly handle groups 2016-09-26 15:22:49 -04:00
Francis Lachapelle ae58c771b6 (js) Add Mailbox.prototype.$selectedMessageIndex 2016-09-26 09:52:54 -04:00
InverseBot 3c924e30ea (js/css) Update generated files 2016-09-26 01:31:36 -04:00
InverseBot bb3d24c696 (js/css) Update generated files 2016-09-24 01:27:07 -04:00
Francis Lachapelle a2e3807a3a (js) Initial support for keyboard shortcuts 2016-09-23 17:17:25 -04:00
Francis Lachapelle 93de7b9ab3 (js) Fix caching of user rights 2016-09-23 16:43:48 -04:00
Francis Lachapelle d81a663fd1 Update NEWS file 2016-09-23 15:19:54 -04:00
Ludovic Marcotte dde4fc829f Updated NEWS 2016-09-23 11:29:33 -04:00
Ludovic Marcotte 9bbffe48e4 (fix) handle 120 EAS status code when message submission fails (fixes #3774) 2016-09-23 11:28:15 -04:00
InverseBot 300a893957 (js/css) Update generated files 2016-09-23 01:45:40 -04:00
Francis Lachapelle 1c8f309c33 Automatically mark msg as read in Mail module 2016-09-22 16:08:59 -04:00
Francis Lachapelle 0c9a301f25 Automatically mark msg as read in Mail module
This avoids an extra XHR to the server.
2016-09-22 15:51:56 -04:00
Ludovic Marcotte fcd61abc41 (fix) added global search for Android 6 2016-09-22 14:22:44 -04:00
Ludovic Marcotte 56e8883a94 (fix) avoid generating invalid response if mail isn't found 2016-09-22 12:57:01 -04:00
Ludovic Marcotte a768620747 (fix) fixed EAS search for iOS devices 2016-09-22 12:54:37 -04:00
Ludovic Marcotte a9c29c65b3 (fix) compiler fixes + first round of iOS fixes 2016-09-22 11:42:28 -04:00
Francis Lachapelle 8bbfc4155b (doc) Improve installation guid 2016-09-22 11:27:25 -04:00
InverseBot 6a75834988 (js/css) Update generated files 2016-09-22 01:37:32 -04:00
Francis Lachapelle 0504769cd2 (js) Show event categories in month view
Fixes #3816
2016-09-21 15:08:10 -04:00
Francis Lachapelle 908c29d67c (js) Improve display of dragging ghost in Calendar 2016-09-21 15:04:09 -04:00
Ludovic Marcotte 1e2238534b Updated NEWS 2016-09-21 09:23:07 -04:00
Ludovic Marcotte 30bcae5acb (feat) initial EAS support for server-side mailbox search operations 2016-09-21 09:20:37 -04:00
Ludovic Marcotte 9d5c3a707a (fix) code cleanups 2016-09-21 09:16:43 -04:00
Francis Lachapelle ecfe532397 Merge pull request #220 from andryyy/patch-1
Update SOGoInstallationGuide.asciidoc
2016-09-21 08:40:54 -04:00
InverseBot ab3d59f5fc (js/css) Update generated files 2016-09-21 01:31:28 -04:00
Francis Lachapelle 98c9364712 (css,js) Update md to v1.1.1-master-72d0685 2016-09-20 14:17:12 -04:00
Francis Lachapelle b985d0770d (css,js) Disable dynamic theme when not debugging 2016-09-20 14:09:19 -04:00
Francis Lachapelle 2c4b11230c Merge pull request #221 from d--j/patch-1
Change active state of "Remember username" switch
2016-09-20 12:16:37 -04:00
Daniel Jagszent a402272f9d Change active state of "Remember username" switch
If you activate "Remember username" on the login screen the switch would have the same color as the background. This makes the active state of the switch not really visible.

This changes the theming of this switch to use the same color as the login button.
2016-09-20 17:44:17 +02:00
InverseBot 2b9cbb4696 (js/css) Update generated files 2016-09-20 01:17:46 -04:00
Francis Lachapelle d7b3a8176d Show user's name upon successful login (cont'd) 2016-09-16 15:51:21 -04:00
Francis Lachapelle 8bf452992e Fix Serbian translation 2016-09-15 06:21:09 -04:00
InverseBot 0856d56a70 (js/css) Update generated files 2016-09-15 02:10:43 -04:00
Ludovic Marcotte 42127c51ab (feat) added IMAP folders subscriptions management (fixes #255) 2016-09-14 15:57:49 -04:00
Francis Lachapelle 49d58b436e Fix Serbian translation 2016-09-14 13:28:22 -04:00
Francis Lachapelle 6d8f7c9a44 Add Serbian translation 2016-09-14 12:13:42 -04:00
Ludovic Marcotte a50c45ff12 Updated NEWS 2016-09-14 09:21:26 -04:00
Ludovic Marcotte 557936f7fd (fix) EAS yearly rrule generation + small EAS MoveItems fix 2016-09-14 09:19:30 -04:00
Ludovic Marcotte b626fbf178 Updated NEWS 2016-09-13 11:06:59 -04:00
Ludovic Marcotte 1a027134c5 (fix) handle binary just like 7 and 8bit 2016-09-13 11:03:04 -04:00
InverseBot 53e2a2dacc (js/css) Update generated files 2016-09-13 01:28:27 -04:00
Francis Lachapelle 4c23f21ae1 (js) Insert unseen msgs count in window's title 2016-09-12 16:11:35 -04:00
InverseBot 195d477149 (js/css) Update generated files 2016-09-08 01:27:37 -04:00
Francis Lachapelle 6dc2078c38 (js) Error handling when renaming a mailbox 2016-09-07 16:44:11 -04:00
Francis Lachapelle 2040706432 (js,css) Adapt time picker to latest md changes 2016-09-07 16:12:39 -04:00
André Peters ffc5a23e39 Update SOGoInstallationGuide.asciidoc
I tried adding a column `alias` to my view which contains a value that matches with the content of the column `mail`. AngularJS complains about a duplicate when it iterates through the array and fails.
It would be cool if Angular "cleans" the array and removes duplicates with some JS.
2016-09-07 12:51:01 +02:00
Francis Lachapelle 67258fe337 (js) Drop sgTransformOnBlur directive
The md-chips component has now the md-add-on-blur functionality.

See https://github.com/angular/material/issues/3364
2016-09-02 10:20:12 -04:00
Francis Lachapelle 1041d8f259 (css,js) Update md to v1.1.0-master-2b98560 2016-09-02 10:14:32 -04:00
InverseBot 42858b997c (js/css) Update generated files 2016-09-01 01:27:35 -04:00
Francis Lachapelle ab4118fb29 Show user's name upon successful login 2016-08-31 14:32:30 -04:00
Francis Lachapelle c2a0994aed Fix ripple blocking login form
Fixes #3808
2016-08-31 11:29:30 -04:00
Francis Lachapelle 89329a0c78 (css) Improve .sg-inset alignment 2016-08-31 11:22:55 -04:00
Francis Lachapelle 53f97af814 (css) Cleanup 2016-08-31 11:22:14 -04:00
Francis Lachapelle 015f389f7c (css) Improve display of attendees status icon 2016-08-31 11:19:36 -04:00
InverseBot 8486448843 (js/css) Update generated files 2016-08-31 01:23:11 -04:00
Francis Lachapelle ed7537d430 (html) Add missing ARIA labels 2016-08-30 17:49:17 -04:00
Francis Lachapelle 0c814e5050 (html) Optimize progress indicator in Contacts 2016-08-30 16:27:13 -04:00
Francis Lachapelle 81a124acc3 (html) Optimize ui-sref links of list members 2016-08-30 13:01:07 -04:00
Francis Lachapelle 7572098f01 (js) Fix links to members after editing list 2016-08-30 12:59:13 -04:00
Francis Lachapelle c31230ce19 (js) Disable Aria warnings when not debugging 2016-08-30 11:57:26 -04:00
Francis Lachapelle 098713537e Update Angular Material to version 1.1.0 2016-08-30 10:27:32 -04:00
Ludovic Marcotte 2cc388bb1f Updated NEWS file 2016-08-29 16:11:58 -04:00
Ludovic Marcotte 28ee04b68b (fix) make sure to escape email and all address fields 2016-08-29 15:01:47 -04:00
Francis Lachapelle 07c66563e8 Until date of repeat must end after first event 2016-08-29 14:06:46 -04:00
Ludovic Marcotte ce5cc6843e Updated NEWS file 2016-08-19 14:12:56 -04:00
Ludovic Marcotte d2f69077b7 (fix) properly generate the BusyStatus for normal events 2016-08-19 14:11:53 -04:00
Ludovic Marcotte 8b9ceb3273 (fix) allow multiple space-delimited addresses in the MailFieldNames column 2016-08-19 11:45:15 -04:00
Ludovic Marcotte 9eab774c5e (doc) updated regarding previous commit 2016-08-18 15:41:39 -04:00
Ludovic Marcotte 84e8ece31f Updated NEWS 2016-08-18 15:37:43 -04:00
Ludovic Marcotte 372158a3e9 (fix) strip protocol value from proxyAddresses (fixes #3182) 2016-08-18 15:34:13 -04:00
InverseBot 0d021724f7 (js/css) Update generated files 2016-08-13 02:25:20 -04:00
InverseBot 155d15e80c Merge branch 'master' of github.com:inverse-inc/sogo 2016-08-13 02:22:49 -04:00
Francis Lachapelle 287c57c994 Restore SOGoMailAddOutgoingAddresses functionality 2016-08-12 11:38:05 -04:00
Francis Lachapelle 3d281c2f39 (i18n) Update translations 2016-08-12 11:12:13 -04:00
InverseBot e4ef3f73cb (js/css) Update generated files 2016-08-12 06:31:04 -04:00
Francis Lachapelle 261a17c83b (js) Improve error handling in Preferences service 2016-08-11 12:00:29 -04:00
InverseBot cc4a4f1770 (js/css) Update generated files 2016-08-11 01:28:23 -04:00
Francis Lachapelle 01fe6f1d4b (i18n) Fix source string in Mail module 2016-08-10 14:23:34 -04:00
Francis Lachapelle e526d9e567 Update ChangeLog 2016-08-10 13:53:11 -04:00
Francis Lachapelle 503de64379 (js/css) Update generated files 2016-08-10 13:51:16 -04:00
Francis Lachapelle 0fd8c791c4 (i18n) Update translations 2016-08-10 13:48:39 -04:00
Francis Lachapelle 3cbe098b17 Preparation for release 3.1.5 2016-08-10 11:08:25 -04:00
Francis Lachapelle 746cb3e7dd (js) Update CKEditor to version 4.5.10 2016-08-10 11:08:24 -04:00
Ludovic Marcotte b58dc7a813 Fixed typo 2016-08-10 10:54:53 -04:00
Francis Lachapelle cf73eab325 Update postcss options to match angular material 2016-08-10 10:20:14 -04:00
Ludovic Marcotte 8be6c4d74d (fix) also purge repetitive events that have an old end date 2016-08-10 10:09:21 -04:00
Francis Lachapelle 4ffc291617 (doc) Update Developer's Guide 2016-08-10 10:00:16 -04:00
Francis Lachapelle 7b5cc03747 (css,js) Update md to v1.1.0-rc.5-master-2ddeb91 2016-08-10 09:59:31 -04:00
Francis Lachapelle 1cd6697b5b Cleanup API documentation 2016-08-10 09:53:03 -04:00
Francis Lachapelle 0d1f7a90ce (html) Cleanup 2016-08-10 09:52:28 -04:00
Francis Lachapelle ae89c397c9 (css) Adapt to latest md changes 2016-08-10 09:51:45 -04:00
Francis Lachapelle 6b54d6608d (css) Cleanup 2016-08-10 09:51:25 -04:00
Ludovic Marcotte db5b27cb89 (fix) minor improvement to SQL query 2016-08-10 09:47:49 -04:00
Ludovic Marcotte bc332bc980 Minor improvement over previous commit 2016-08-09 16:22:09 -04:00
Ludovic Marcotte eb9006e527 Updated NEWS 2016-08-09 16:19:27 -04:00
Ludovic Marcotte 0e2336cc4e (fix) check if the SENT-BY has access to organizer's calendar before modifying attendees' calendar (fixes #3759) 2016-08-09 16:17:17 -04:00
InverseBot e876c9d68e (js/css) Update generated files 2016-08-09 02:27:10 -04:00
Francis Lachapelle 0fee8ad691 (css) Improve sg-droppable-over for Firefox 2016-08-08 12:06:31 -04:00
Francis Lachapelle 4c9060abaa (css) Switch to md-scale for fab speed dials
.. until the "md-fling" effect gets fixed (speed dial is opened on
initialization).
2016-08-08 11:23:37 -04:00
Francis Lachapelle a6a43b989a (doc) Improve Installation Guide 2016-08-08 10:12:06 -04:00
InverseBot decfc0c49c (js/css) Update generated files 2016-08-06 01:40:24 -04:00
Francis Lachapelle 932ac03a4e (html) Improve size of event/task view dialogs 2016-08-05 16:18:40 -04:00
Francis Lachapelle 829c8fee68 (js) Don't block when copying/moving vLists 2016-08-05 16:15:25 -04:00
Francis Lachapelle 907024d2c4 (js) Drag'n'drop of cards in AddressBook module
Required to add the option to move multiple cards to another
addressbook. Fixed the possibility to copy cards to a subscribed
calendar.
2016-08-05 16:08:04 -04:00
Ludovic Marcotte e963981460 Updated NEWS 2016-08-05 14:56:02 -04:00
Ludovic Marcotte b7496a5d6b (fix) correctly calculate recurrence exceptions 2016-08-05 14:53:38 -04:00
Ludovic Marcotte d2b20c88c3 (fix) updated tests for 403 -> 409 2016-08-05 08:44:10 -04:00
InverseBot 53c0e34abe (js/css) Update generated files 2016-08-05 01:33:14 -04:00
Francis Lachapelle 5909810b1f Improve error handling of msg move/copy actions 2016-08-04 17:38:54 -04:00
Francis Lachapelle 84a2c70c87 (js) DnD of messages in the Mail module
Fixes #3497, #3586, #3734, #3788
2016-08-04 17:34:29 -04:00
Francis Lachapelle 1e26b3e61d (js) sgDraggable and sgDroppable directives 2016-08-04 16:50:14 -04:00
Francis Lachapelle fea6978b63 (js) Don't allow drag'n'drop of invitations 2016-08-04 14:26:51 -04:00
Francis Lachapelle 7f5e06c020 (html) Fix localization of event conflicts dialogs 2016-08-04 14:25:15 -04:00
Francis Lachapelle 23185273a6 (css) Cleanup transition of event DnD ghosts 2016-08-04 14:25:14 -04:00
Ludovic Marcotte 21e0cd8711 (fix) change 403 to 409 so Lightning doesn't fail silently 2016-08-04 14:13:00 -04:00
Ludovic Marcotte f03cdaf4b7 (fix) handle domain-less-login case with multi-domain on during backups 2016-08-04 12:53:20 -04:00
Ludovic Marcotte 38028e7b41 Updated NEWS for upcoming cherry-pick 2016-08-04 12:52:33 -04:00
InverseBot ef251e8206 (js/css) Update generated files 2016-08-03 01:23:21 -04:00
Francis Lachapelle 6ebf834729 (js) Progress indicator for event/task lists 2016-08-02 12:09:11 -04:00
Francis Lachapelle 8946880c84 (html) Improve layout of event & task editors 2016-08-02 11:20:38 -04:00
Francis Lachapelle 279dc5a513 Improve middle list of Calendar module
Fixes #3786
2016-08-02 11:19:07 -04:00
Francis Lachapelle 6426dc1206 (html) Fix display of event/task classification 2016-08-02 10:48:31 -04:00
Francis Lachapelle 25d420141f Localization 2016-08-02 10:44:08 -04:00
InverseBot 0d9ec64fa0 (js/css) Update generated files 2016-08-02 01:23:29 -04:00
Francis Lachapelle 6011b7aede (js) Fix card editor template
Fixes #3784
2016-08-01 16:01:28 -04:00
Francis Lachapelle 9d65d7c3a8 Support multiple descriptions from LDAP entries
Fixes #3750
2016-08-01 15:55:50 -04:00
Francis Lachapelle 6071375c29 (css) Fix printing of long mails
Fixes #3731
2016-08-01 14:19:16 -04:00
Francis Lachapelle 431db5495e (js) Improve sg-calendar-scroll-view directive 2016-08-01 12:13:12 -04:00
Francis Lachapelle 8389ec5f40 (js, css) Improve sg-ripple-click directive 2016-08-01 12:13:11 -04:00
Francis Lachapelle 0ec79e0411 (html,css) Use fab button on login page 2016-08-01 12:13:11 -04:00
InverseBot 54318a2432 (js/css) Update generated files 2016-07-30 01:24:31 -04:00
Francis Lachapelle c23a9f955a (html) Allow sorting the actions of a Sieve filter 2016-07-29 13:59:57 -04:00
InverseBot 1738ac87d8 (js/css) Update generated files 2016-07-28 01:24:11 -04:00
Francis Lachapelle 80338daf91 Expunge mailbox on specific actions
Current mailbox is now expunged when leaving the Mail module. The drafts
mailbox is also expunged when a message is sent.
2016-07-27 11:56:28 -04:00
InverseBot f1d2bcffc8 (js/css) Update generated files 2016-07-26 01:25:51 -04:00
Francis Lachapelle 197e237a66 (js) Fix avatar in autocompletion of contacts 2016-07-25 14:55:59 -04:00
Francis Lachapelle 6a608425f2 (html) Improve card editor layout 2016-07-25 14:41:42 -04:00
Francis Lachapelle d045f4a958 (css) Improve Sieve filter editor layout 2016-07-25 14:39:26 -04:00
Ludovic Marcotte 4ed1063296 Correctly get the collection/key IDs (fixes #3775) 2016-07-25 06:19:36 -04:00
InverseBot 63bdf77847 (js/css) Update generated files 2016-07-25 01:27:08 -04:00
InverseBot 83bffdc468 (js/css) Update generated files 2016-07-23 01:24:24 -04:00
Francis Lachapelle 106d8ba807 (css) Remove transition of event DnD ghosts 2016-07-22 11:35:18 -04:00
Francis Lachapelle f6a919f070 (js) Fix position of ghost block of new event
The position of the ghost block inside the scroll view was not correct
after having expanded the all-day events.
2016-07-22 11:28:58 -04:00
InverseBot cf856a64ad (js/css) Update generated files 2016-07-22 01:23:41 -04:00
Francis Lachapelle e804e5b7c0 (css) Fix breakpoints 2016-07-21 14:35:33 -04:00
Francis Lachapelle 5ad962d7b2 (css) Fix printing of long mails
Fixes #3731
2016-07-21 14:35:28 -04:00
Ludovic Marcotte aaa256f321 Updated NEWS file 2016-07-21 14:12:54 -04:00
Ludovic Marcotte 440acec143 Added EAS folder merge support and fixed long GUID issue (fixes #3460) 2016-07-21 14:06:11 -04:00
InverseBot 8dfe399c02 (js/css) Update generated files 2016-07-21 01:27:23 -04:00
Francis Lachapelle 370631817d Update README 2016-07-20 14:24:58 -04:00
Francis Lachapelle 793be51d14 Restore auto-reply indicator in top toolbar 2016-07-20 14:24:15 -04:00
Francis Lachapelle 4a6bdffc5b Fix exception when moving tasks 2016-07-20 13:31:15 -04:00
Francis Lachapelle ffa1920122 (js) Reset multiple-selection mode after delete 2016-07-20 11:10:34 -04:00
Francis Lachapelle e742916084 (js) Improve check on undefined email of card 2016-07-20 11:10:33 -04:00
InverseBot 596f991460 (js/css) Update generated files 2016-07-20 01:32:01 -04:00
extrafu ef10920f57 Merge pull request #217 from imz/fix-unrecognized-selector
Fix the unrecognized selector exception in the fresh pieces of the EAS
2016-07-19 20:31:13 -04:00
Francis Lachapelle c9703c0f74 (js) Fix refresh after deleting card(s) 2016-07-19 16:31:48 -04:00
Francis Lachapelle 88a0dfdac3 (i18n) Add missing localization string 2016-07-19 15:40:04 -04:00
Francis Lachapelle f18a0373d8 (css) Fix overflow of login page 2016-07-19 15:20:21 -04:00
Ivan Zakharyaschev deaec0bd7b An attempt to fix the unrecognized selector exception (by writing the queries analoguously to the other ones) 2016-07-19 19:15:18 +03:00
InverseBot 0cf0c25399 (js/css) Update generated files 2016-07-16 01:28:33 -04:00
Francis Lachapelle 1a3fc0a1d2 (js) Notify on successful messages operations 2016-07-15 14:37:56 -04:00
Francis Lachapelle f9cebd975a Update NEWS file 2016-07-15 14:09:40 -04:00
Francis Lachapelle 6bbb56c386 (css,js) Improve progress feedback
This ads a "ripple" effect that blocks the context when login in or
sending a message. Generic enough to be used elsewhere.

Fixes #3765
2016-07-15 14:03:16 -04:00
InverseBot 0fe472b5e9 (js/css) Update generated files 2016-07-15 01:26:58 -04:00
Francis Lachapelle 3a2d01188c Improve Gruntfile.js 2016-07-14 16:13:56 -04:00
Francis Lachapelle 9abc6ab579 (css) Fix breakpoints 2016-07-14 15:57:50 -04:00
Francis Lachapelle 4f5de1b3a1 (js) Remove unused file 2016-07-14 15:50:41 -04:00
InverseBot 24c7c10992 (js/css) Update generated files 2016-07-13 01:28:16 -04:00
ethoms aea4ee72c9 Convert configure script shebang back to /bin/sh for cross-platform compatability (#215) 2016-07-12 14:49:17 -04:00
937 changed files with 43037 additions and 18797 deletions

No files matched your search

+11
View File
@@ -30,6 +30,7 @@ trans.pt_BR = UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/MailerUI/Russian.lproj/Localizable.strings
trans.sk = UI/MailerUI/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/MailerUI/Slovenian.lproj/Localizable.strings
trans.sr = UI/MailerUI/Serbian.lproj/Localizable.strings
trans.sv = UI/MailerUI/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/MailerUI/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/MailerUI/Ukrainian.lproj/Localizable.strings
@@ -64,6 +65,7 @@ trans.pt_BR = UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/PreferencesUI/Russian.lproj/Localizable.strings
trans.sk = UI/PreferencesUI/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/PreferencesUI/Slovenian.lproj/Localizable.strings
trans.sr = UI/PreferencesUI/Serbian.lproj/Localizable.strings
trans.sv = UI/PreferencesUI/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/PreferencesUI/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/PreferencesUI/Ukrainian.lproj/Localizable.strings
@@ -98,6 +100,7 @@ trans.pt_BR = UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/Scheduler/Russian.lproj/Localizable.strings
trans.sk = UI/Scheduler/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/Scheduler/Slovenian.lproj/Localizable.strings
trans.sr = UI/Scheduler/Serbian.lproj/Localizable.strings
trans.sv = UI/Scheduler/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/Scheduler/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/Scheduler/Ukrainian.lproj/Localizable.strings
@@ -132,6 +135,7 @@ trans.pt_BR = UI/Contacts/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/Contacts/Russian.lproj/Localizable.strings
trans.sk = UI/Contacts/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/Contacts/Slovenian.lproj/Localizable.strings
trans.sr = UI/Contacts/Serbian.lproj/Localizable.strings
trans.sv = UI/Contacts/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/Contacts/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/Contacts/Ukrainian.lproj/Localizable.strings
@@ -166,6 +170,7 @@ trans.pt_BR = UI/MainUI/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/MainUI/Russian.lproj/Localizable.strings
trans.sk = UI/MainUI/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/MainUI/Slovenian.lproj/Localizable.strings
trans.sr = UI/MainUI/Serbian.lproj/Localizable.strings
trans.sv = UI/MainUI/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/MainUI/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/MainUI/Ukrainian.lproj/Localizable.strings
@@ -200,6 +205,7 @@ trans.pt_BR = UI/Common/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/Common/Russian.lproj/Localizable.strings
trans.sk = UI/Common/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/Common/Slovenian.lproj/Localizable.strings
trans.sr = UI/Common/Serbian.lproj/Localizable.strings
trans.sv = UI/Common/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/Common/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/Common/Ukrainian.lproj/Localizable.strings
@@ -234,6 +240,7 @@ trans.pt_BR = UI/AdministrationUI/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/AdministrationUI/Russian.lproj/Localizable.strings
trans.sk = UI/AdministrationUI/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/AdministrationUI/Slovenian.lproj/Localizable.strings
trans.sr = UI/AdministrationUI/Serbian.lproj/Localizable.strings
trans.sv = UI/AdministrationUI/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/AdministrationUI/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/AdministrationUI/Ukrainian.lproj/Localizable.strings
@@ -268,6 +275,7 @@ trans.pt_BR = SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strin
trans.ru = SoObjects/Appointments/Russian.lproj/Localizable.strings
trans.sk = SoObjects/Appointments/Slovak.lproj/Localizable.strings
trans.sl_SI = SoObjects/Appointments/Slovenian.lproj/Localizable.strings
trans.sr = SoObjects/Appointments/Serbian.lproj/Localizable.strings
trans.sv = SoObjects/Appointments/Swedish.lproj/Localizable.strings
trans.tr_TR = SoObjects/Appointments/TurkishTurkey.lproj/Localizable.strings
trans.uk = SoObjects/Appointments/Ukrainian.lproj/Localizable.strings
@@ -302,6 +310,7 @@ trans.pt_BR = SoObjects/Contacts/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = SoObjects/Contacts/Russian.lproj/Localizable.strings
trans.sk = SoObjects/Contacts/Slovak.lproj/Localizable.strings
trans.sl_SI = SoObjects/Contacts/Slovenian.lproj/Localizable.strings
trans.sr = SoObjects/Contacts/Serbian.lproj/Localizable.strings
trans.sv = SoObjects/Contacts/Swedish.lproj/Localizable.strings
trans.tr_TR = SoObjects/Contacts/TurkishTurkey.lproj/Localizable.strings
trans.uk = SoObjects/Contacts/Ukrainian.lproj/Localizable.strings
@@ -336,6 +345,7 @@ trans.pt_BR = SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = SoObjects/Mailer/Russian.lproj/Localizable.strings
trans.sk = SoObjects/Mailer/Slovak.lproj/Localizable.strings
trans.sl_SI = SoObjects/Mailer/Slovenian.lproj/Localizable.strings
trans.sr = SoObjects/Mailer/Serbian.lproj/Localizable.strings
trans.sv = SoObjects/Mailer/Swedish.lproj/Localizable.strings
trans.tr_TR = SoObjects/Mailer/TurkishTurkey.lproj/Localizable.strings
trans.uk = SoObjects/Mailer/Ukrainian.lproj/Localizable.strings
@@ -370,6 +380,7 @@ trans.pt_BR = UI/MailPartViewers/BrazilianPortuguese.lproj/Localizable.strings
trans.ru = UI/MailPartViewers/Russian.lproj/Localizable.strings
trans.sk = UI/MailPartViewers/Slovak.lproj/Localizable.strings
trans.sl_SI = UI/MailPartViewers/Slovenian.lproj/Localizable.strings
trans.sr = UI/MailPartViewers/Serbian.lproj/Localizable.strings
trans.sv = UI/MailPartViewers/Swedish.lproj/Localizable.strings
trans.tr_TR = UI/MailPartViewers/TurkishTurkey.lproj/Localizable.strings
trans.uk = UI/MailPartViewers/Ukrainian.lproj/Localizable.strings
+6 -6
View File
@@ -138,7 +138,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[s appendFormat: @"<JobTitle xmlns=\"Contacts:\">%@</JobTitle>", [o activeSyncRepresentationInContext: context]];
if ((o = [self preferredEMail]))
[s appendFormat: @"<Email1Address xmlns=\"Contacts:\">%@</Email1Address>", o];
[s appendFormat: @"<Email1Address xmlns=\"Contacts:\">%@</Email1Address>", [o activeSyncRepresentationInContext: context]];
// Secondary email addresses (2 and 3)
@@ -148,7 +148,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
o = [[emails objectAtIndex: i] flattenedValuesForKey: @""];
[s appendFormat: @"<Email%dAddress xmlns=\"Contacts:\">%@</Email%dAddress>", i+2, o, i+2];
[s appendFormat: @"<Email%dAddress xmlns=\"Contacts:\">%@</Email%dAddress>", i+2, [o activeSyncRepresentationInContext: context], i+2];
if (i == 1)
break;
@@ -181,10 +181,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
a = [NSMutableString string];
if ((o = [homeAdr flattenedValueAtIndex: 2 forKey: @""]))
[a appendString: o];
[a appendString: [o activeSyncRepresentationInContext: context]];
if ((o = [homeAdr flattenedValueAtIndex: 1 forKey: @""]) && [o length])
[a appendFormat: @"\n%@", o];
[a appendFormat: @"\n%@", [o activeSyncRepresentationInContext: context]];
[s appendFormat: @"<HomeStreet xmlns=\"Contacts:\">%@</HomeStreet>", [a activeSyncRepresentationInContext: context]];
@@ -212,10 +212,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
a = [NSMutableString string];
if ((o = [workAdr flattenedValueAtIndex: 2 forKey: @""]))
[a appendString: o];
[a appendString: [o activeSyncRepresentationInContext: context]];
if ((o = [workAdr flattenedValueAtIndex: 1 forKey: @""]) && [o length])
[a appendFormat: @"\n%@", o];
[a appendFormat: @"\n%@", [o activeSyncRepresentationInContext: context]];
[s appendFormat: @"<BusinessStreet xmlns=\"Contacts:\">%@</BusinessStreet>", [a activeSyncRepresentationInContext: context]];
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+13 -6
View File
@@ -1003,7 +1003,7 @@ struct GlobalObjectId {
[s appendFormat: @"<GlobalObjId xmlns=\"Email:\">%@</GlobalObjId>", [globalObjId activeSyncRepresentationInContext: context]];
// We set the right message type - we must set AS version to 14.1 for this
if ([[context valueForKey: @"ASProtocolVersion"] floatValue] >= 14.1)
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 14.1)
[s appendFormat: @"<MeetingMessageType xmlns=\"Email2:\">%d</MeetingMessageType>", 1];
[s appendString: @"</MeetingRequest>"];
@@ -1169,7 +1169,7 @@ struct GlobalObjectId {
truncated = 0;
}
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
[s appendFormat: @"<Body xmlns=\"Email:\">%@</Body>", content];
[s appendFormat: @"<BodyTruncated xmlns=\"Email:\">%d</BodyTruncated>", truncated];
@@ -1204,7 +1204,7 @@ struct GlobalObjectId {
{
int i;
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
[s appendString: @"<Attachments xmlns=\"Email:\">"];
else
[s appendString: @"<Attachments xmlns=\"AirSyncBase:\">"];
@@ -1219,12 +1219,12 @@ struct GlobalObjectId {
// FileReference must be a unique identifier across the whole store. We use the following structure:
// mail/<foldername>/<message UID/<pathofpart>
// mail/INBOX/2
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
[s appendFormat: @"<AttName>mail/%@/%@/%@</AttName>", [[[self container] relativeImap4Name] stringByEscapingURL], [self nameInContainer], [value objectForKey: @"path"]];
else
[s appendFormat: @"<FileReference>mail/%@/%@/%@</FileReference>", [[[self container] relativeImap4Name] stringByEscapingURL], [self nameInContainer], [value objectForKey: @"path"]];
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
[s appendFormat: @"<AttMethod>%d</AttMethod>", 1];
[s appendFormat: @"<AttSize>%d</AttSize>", [[value objectForKey: @"size"] intValue]];
@@ -1273,7 +1273,7 @@ struct GlobalObjectId {
[s appendFormat: @"</Categories>"];
}
if ([[context valueForKey: @"ASProtocolVersion"] floatValue] >= 14.0)
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 14.0)
{
id value;
NSString *reference;
@@ -1291,6 +1291,13 @@ struct GlobalObjectId {
[s appendFormat: @"<ConversationId xmlns=\"Email2:\">%@</ConversationId>", [[[self inReplyTo] dataUsingEncoding: NSUTF8StringEncoding] activeSyncRepresentationInContext: context]];
else if ([[self messageId] length] > 0)
[s appendFormat: @"<ConversationId xmlns=\"Email2:\">%@</ConversationId>", [[[self messageId] dataUsingEncoding: NSUTF8StringEncoding] activeSyncRepresentationInContext: context]];
if ([self replied])
[s appendFormat: @"<LastVerbExecuted xmlns=\"Email2:\">%d</LastVerbExecuted>", 1];
else if ([self forwarded])
[s appendFormat: @"<LastVerbExecuted xmlns=\"Email2:\">%d</LastVerbExecuted>", 3];
else
[s appendFormat: @"<LastVerbExecuted xmlns=\"Email2:\">%d</LastVerbExecuted>", 0];
}
// FIXME - support these in the future
+33 -4
View File
@@ -63,7 +63,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- (int) _attendeeStatus: (iCalPerson *) attendee
{
int attendee_status;
attendee_status = 5;
if ([[attendee partStat] caseInsensitiveCompare: @"ACCEPTED"] == NSOrderedSame)
attendee_status = 3;
@@ -75,6 +75,29 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
return attendee_status;
}
//
// Possible values are:
// 0 Free
// 1 Tentative
// 2 Busy
// 3 Out of Office
// 4 Working elsewhere
//
- (int) _busyStatus: (iCalPerson *) attendee
{
int attendee_status;
attendee_status = 2;
if ([[attendee partStat] caseInsensitiveCompare: @"DECLINED"] == NSOrderedSame)
attendee_status = 0;
else if ([[attendee partStat] caseInsensitiveCompare: @"TENTATIVE"] == NSOrderedSame)
attendee_status = 1;
return attendee_status;
}
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context
{
NSMutableString *s;
@@ -183,7 +206,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
else
{
meetingStatus = 0; // appointment
meetingStatus = 0; // The event is an appointment, which has no attendees.
}
// This depends on the 'NEEDS-ACTION' parameter.
@@ -204,6 +227,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[s appendFormat: @"<DisallowNewTimeProposal xmlns=\"Calendar:\">%d</DisallowNewTimeProposal>", 1];
// BusyStatus -- http://msdn.microsoft.com/en-us/library/ee202290(v=exchg.80).aspx
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", [self _busyStatus: attendee]];
}
else
{
// If it's a normal event (ie, with no organizer/attendee) or we are the organizer to an event
// invitation, we set the busy status to 2 (Busy)
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", 2];
}
@@ -244,7 +273,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// otherwise it'll prevent WP8 phones from sync'ing. See #3028 for details.
o = [o activeSyncRepresentationInContext: context];
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
[s appendFormat: @"<Body xmlns=\"Calendar:\">%@</Body>", o];
[s appendString: @"<BodyTruncated xmlns=\"Calendar:\">0</BodyTruncated>"];
@@ -487,7 +516,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
// FIXME: merge with iCalToDo
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
if ((o = [theValues objectForKey: @"Body"]))
[self setComment: o];
+49 -24
View File
@@ -35,21 +35,42 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Foundation/NSString.h>
#import <NGCards/iCalEvent.h>
#import <NGCards/iCalToDo.h>
#import <NGCards/iCalByDayMask.h>
#import <NGCards/iCalDateTime.h>
#import <NGCards/iCalTimeZone.h>
#import "NSCalendarDate+ActiveSync.h"
#import "NSDate+ActiveSync.h"
@implementation iCalRecurrenceRule (ActiveSync)
- (NSCalendarDate *) _adjustedStartDate
{
iCalTimeZone *timeZone;
timeZone = [(iCalDateTime *)[[self parent] firstChildWithTag: @"dtstart"] timeZone];
if (timeZone)
return [timeZone computedDateForDate: [[self parent] startDate]];
else
return [[self parent] startDate];
}
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context
{
NSMutableString *s;
NSString *t;
int type;
s = [NSMutableString string];
[s appendString: @"<Recurrence xmlns=\"Calendar:\">"];
if ([[self parent] isKindOfClass: [iCalToDo class]])
t = @"Tasks";
else
t = @"Calendar";
[s appendFormat: @"<Recurrence xmlns=\"%@:\">", t];
// 0 -> daily, 1 -> weekly, 2 -> montly, 5 -> yearly
type = 0;
@@ -61,11 +82,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// 1 -> sunday, 2 -> monday, 4 -> tuesday, 8 -> wednesday, 16 -> thursday, 32 -> friday, 64 -> saturday, 127 -> last day of month (montly or yearl recurrences only)
if ([[self byDayMask] isWeekDays])
{
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"Calendar:\">%d</Recurrence_DayOfWeek>", (2|4|8|16|32)];
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"%@:\">%d</Recurrence_DayOfWeek>", t, (2|4|8|16|32)];
}
else
{
[s appendFormat: @"<Recurrence_Interval xmlns=\"Calendar:\">%d</Recurrence_Interval>", [self repeatInterval]];
[s appendFormat: @"<Recurrence_Interval xmlns=\"%@:\">%d</Recurrence_Interval>", t, [self repeatInterval]];
}
}
else if ([self frequency] == iCalRecurrenceFrequenceWeekly)
@@ -90,11 +111,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
// No byDayMask, we take the event's start date to compute the DayOfWeek
// 0 == Sunday, 6 == Saturday
v = (1 << [[[self parent] startDate] dayOfWeek]);
v = (1 << [[self _adjustedStartDate] dayOfWeek]);
}
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"Calendar:\">%d</Recurrence_DayOfWeek>", v];
[s appendFormat: @"<Recurrence_Interval xmlns=\"Calendar:\">%d</Recurrence_Interval>", [self repeatInterval]];
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"%@:\">%d</Recurrence_DayOfWeek>", t, v];
[s appendFormat: @"<Recurrence_Interval xmlns=\"%@:\">%d</Recurrence_Interval>", t, [self repeatInterval]];
}
else if ([self frequency] == iCalRecurrenceFrequenceMonthly)
{
@@ -111,8 +132,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
if (firstOccurrence < 0)
firstOccurrence = 5;
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"Calendar:\">%d</Recurrence_DayOfWeek>", (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"Calendar:\">%d</Recurrence_WeekOfMonth>", firstOccurrence];
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"%@:\">%d</Recurrence_DayOfWeek>", t, (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"%@:\">%d</Recurrence_WeekOfMonth>", t, firstOccurrence];
}
else if ([[self byMonthDay] count])
{
@@ -126,8 +147,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
iCalByDayMask *dm;
dm = [self byDayMask];
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"Calendar:\">%d</Recurrence_DayOfWeek>", (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"Calendar:\">%d</Recurrence_WeekOfMonth>", 5];
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"%@:\">%d</Recurrence_DayOfWeek>", t, (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"%@:\">%d</Recurrence_WeekOfMonth>", t, 5];
}
else
{
@@ -139,8 +160,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
// Simple reccurrence rule of type "Monthly"
type = 2;
[s appendFormat: @"<Recurrence_DayOfMonth xmlns=\"Calendar:\">%d</Recurrence_DayOfMonth>",
(int)[[[self parent] startDate] dayOfMonth]];
[s appendFormat: @"<Recurrence_DayOfMonth xmlns=\"%@:\">%d</Recurrence_DayOfMonth>", t, [[self _adjustedStartDate] dayOfMonth]];
}
}
else if ([self frequency] == iCalRecurrenceFrequenceYearly)
@@ -159,33 +179,39 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
if (firstOccurrence < 0)
firstOccurrence = 5;
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"Calendar:\">%d</Recurrence_DayOfWeek>", (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"Calendar:\">%d</Recurrence_WeekOfMonth>", firstOccurrence];
[s appendFormat: @"<Recurrence_MonthOfYear xmlns=\"Calendar:\">%@</Recurrence_MonthOfYear>",
[s appendFormat: @"<Recurrence_DayOfWeek xmlns=\"%@:\">%d</Recurrence_DayOfWeek>", t, (1 << [dm firstDay])];
[s appendFormat: @"<Recurrence_WeekOfMonth xmlns=\"%@:\">%d</Recurrence_WeekOfMonth>", t, firstOccurrence];
[s appendFormat: @"<Recurrence_MonthOfYear xmlns=\"%@:\">%@</Recurrence_MonthOfYear>", t,
[self flattenedValuesForKey: @"bymonth"]];
}
else
{
type = 5; // Yearly
[s appendFormat: @"<Recurrence_DayOfMonth xmlns=\"Calendar:\">%@</Recurrence_DayOfMonth>",
[s appendFormat: @"<Recurrence_DayOfMonth xmlns=\"%@:\">%@</Recurrence_DayOfMonth>", t,
[self flattenedValuesForKey: @"bymonthday"]];
[s appendFormat: @"<Recurrence_MonthOfYear xmlns=\"Calendar:\">%@</Recurrence_MonthOfYear>",
[s appendFormat: @"<Recurrence_MonthOfYear xmlns=\"%@:\">%@</Recurrence_MonthOfYear>", t,
[self flattenedValuesForKey: @"bymonth"]];
}
}
else
type = 5;
{
type = 5;
[s appendFormat: @"<Recurrence_DayOfMonth xmlns=\"%@:\">%d</Recurrence_DayOfMonth>", t, [[self _adjustedStartDate] dayOfMonth]];
[s appendFormat: @"<Recurrence_MonthOfYear xmlns=\"%@:\">%d</Recurrence_MonthOfYear>", t, [[self _adjustedStartDate] monthOfYear]];
}
}
[s appendFormat: @"<Recurrence_Type xmlns=\"Calendar:\">%d</Recurrence_Type>", type];
[s appendFormat: @"<Recurrence_Type xmlns=\"%@:\">%d</Recurrence_Type>", t, type];
if ([[self parent] isKindOfClass: [iCalToDo class]])
[s appendFormat: @"<Recurrence_Start xmlns=\"%@:\">%@</Recurrence_Start>", t, [[[self parent] startDate] activeSyncRepresentationInContext: context]];
// Occurrences / Until
//[s appendFormat: @"<Recurrence_Occurrences xmlns=\"Calendar:\">%d</Recurrence_Occurrences>", 5];
if ([self repeatCount])
{
[s appendFormat: @"<Recurrence_Occurrences xmlns=\"Calendar:\">%@</Recurrence_Occurrences>",
[s appendFormat: @"<Recurrence_Occurrences xmlns=\"%@:\">%@</Recurrence_Occurrences>", t,
[self flattenedValuesForKey: @"count"]];
}
else if ([self untilDate])
@@ -196,11 +222,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//ud = [[context activeUser] userDefaults];
//[date setTimeZone: [ud timeZone]];
[s appendFormat: @"<Recurrence_Until xmlns=\"Calendar:\">%@</Recurrence_Until>",
[s appendFormat: @"<Recurrence_Until xmlns=\"%@:\">%@</Recurrence_Until>", t,
[date activeSyncRepresentationWithoutSeparatorsInContext: context]];
}
[s appendString: @"</Recurrence>"];
return s;
+12 -8
View File
@@ -123,7 +123,7 @@ struct SYSTEMTIME {
//uint16_t wStandardYear;
struct SYSTEMTIME stStandardDate;
//uint16_t wDaylightYear;
struct SYSTEMTIME stDaylightDate;
struct SYSTEMTIME stDaylightDate = {0,0,0,0,0,0,0,0};
char standardName[64], daylightName[64];
@@ -139,13 +139,17 @@ struct SYSTEMTIME {
period = [self _mostRecentPeriodWithName: @"DAYLIGHT"];
if (!period)
stStandardDate.wMonth = 0;
lDaylightBias = (uint32_t) -([period secondsOffsetFromGMT] / 60) - lBias;
[period _fillTZDate: &stDaylightDate];
//wStandardYear = stStandardDate.wYear;
//wDaylightYear = stDaylightDate.wYear;
{
stStandardDate.wMonth = 0;
lDaylightBias = 0;
}
else
{
lDaylightBias = (uint32_t) -([period secondsOffsetFromGMT] / 60) - lBias;
[period _fillTZDate: &stDaylightDate];
//wStandardYear = stStandardDate.wYear;
//wDaylightYear = stDaylightDate.wYear;
}
// We build the timezone
[bytes appendBytes: &lBias length: 4];
+30 -3
View File
@@ -45,7 +45,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "NSDate+ActiveSync.h"
#include "NSString+ActiveSync.h"
#include "iCalRecurrenceRule+ActiveSync.h"
@implementation iCalToDo (ActiveSync)
@@ -80,6 +80,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[s appendFormat: @"<DueDate xmlns=\"Tasks:\">%@</DueDate>", [o activeSyncRepresentationInContext: context]];
[s appendFormat: @"<UTCDueDate xmlns=\"Tasks:\">%@</UTCDueDate>", [o activeSyncRepresentationInContext: context]];
}
// Recurrence rules
if ([self isRecurrent])
[s appendString: [[[self recurrenceRules] lastObject] activeSyncRepresentationInContext: context]];
// Importance
o = [self priority];
@@ -127,7 +131,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// otherwise it'll prevent WP8 phones from sync'ing. See #3028 for details.
o = [o activeSyncRepresentationInContext: context];
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
[s appendFormat: @"<Body xmlns=\"Tasks:\">%@</Body>", o];
[s appendString: @"<BodyTruncated xmlns=\"Tasks:\">0</BodyTruncated>"];
@@ -161,7 +165,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[self setSummary: o];
// FIXME: merge with iCalEvent
if ([[context valueForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
if ([[context objectForKey: @"ASProtocolVersion"] isEqualToString: @"2.5"])
{
if ((o = [theValues objectForKey: @"Body"]))
[self setComment: o];
@@ -247,6 +251,29 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
}
// Recurrence
if ((o = [theValues objectForKey: @"Recurrence"]) && !([[o objectForKey: @"Recurrence_DeadOccur"] intValue]))
{
iCalRecurrenceRule *rule;
rule = [[iCalRecurrenceRule alloc] init];
[self setRecurrenceRules: [NSArray arrayWithObject: rule]];
RELEASE(rule);
[rule takeActiveSyncValues: o inContext: context];
if (!([theValues objectForKey: @"StartDate"]))
{
iCalDateTime *start;
start = (iCalDateTime *) [self uniqueChildWithTag: @"dtstart"];
[start setTimeZone: tz];
[start setDate: [[o objectForKey: @"Recurrence_Start"] calendarDate]];
}
}
}
@end
+5363
View File
File diff suppressed because it is too large. Load diff
@@ -153,10 +153,12 @@ Building frontend
* Install grunt
npm install -g grunt-cli
npm install -g bower
* Generate JavaScript files
cd UI/WebServerResources
npm install
grunt build
Version Control
+47 -20
View File
@@ -170,8 +170,8 @@ supported by SOGo:
* Red Hat Enterprise Linux (RHEL) Server 5, 6 and 7
* Community ENTerprise Operating System (CentOS) 5, 6 and 7
* Debian GNU/Linux 6.0 (Squeeze) to 8.0 (Jessie)
* Ubuntu 12.04 (Precise) to 14.04 (Trusty)
* Debian GNU/Linux 6.0 (Squeeze), 7.0 (Wheezy) and 8.0 (Jessie)
* Ubuntu 12.04 (Precise), 14.04 (Trusty) and 16.04 (Xenial)
Make sure the required components are started automatically at boot time
and that they are running before proceeding with the SOGo configuration.
@@ -201,6 +201,11 @@ should apply to all supported operating systems.
Software Downloads
~~~~~~~~~~~~~~~~~~
[NOTE]
In order to access the production builds, you need a proper support contract
from https://sogo.nu/support/index_new.html#support-plans[Inverse]. Continue
with the configuration once you received your username and password.
SOGo can be installed using the `yum` utility. To do so, first create
the `/etc/yum.repos.d/inverse.repo` configuration file with the following
content:
@@ -208,17 +213,32 @@ content:
----
[SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/rhel-v3/7/$basearch
gpgcheck=0
baseurl=https://<username>:<password>@packages.inverse.ca/SOGo/release/3/rhel/7/$basearch
gpgcheck=1
----
Some of the softwares on which SOGo depends are available from the
repository of RepoForge (previously known as RPMforge). To add RepoForge
to your packages sources, download and install the appropriate RPM
package from http://packages.sw.be/rpmforge-release/.
Also make sure you enabled the "rpmforge-extras" repository.
[NOTE]
Any non-URL safe characters in username/password must be URL-encoded. For
example, if your password is `so%go`, you must set the value in your
configuration file to `so%25go` - where `%` is encoded to `%25`.
For more information on using RepoForge, visit http://repoforge.org/use/.
Inverse signs its RPM packages with its GPG key. Integrity verification happens
all by itself on package installation, all you need to do is first import the
key into your rpm keychain:
----
rpm --import "https://pgp.mit.edu/pks/lookup?op=get&search=0xCB2D3A2AA0030E2C"
----
Some of the softwares on which SOGo depends are available from the repository
"Extra Packages for Enterprise Linux" (EPEL). To add EPEL to your packages
sources, install the following package:
----
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
----
For more information on EPEL, visit http://fedoraproject.org/wiki/EPEL/.
Software Installation
~~~~~~~~~~~~~~~~~~~~~
@@ -888,7 +908,7 @@ source:
[cols="^3,>47,50a"]
|=======================================================================
.34+|D <|SOGoUserSources
.36+|D <|SOGoUserSources
|Parameter used to set the LDAP and/or SQL sources used for
authentication and global address books. Multiple sources can be
specified as an array of dictionaries. A dictionary that defines an LDAP
@@ -917,7 +937,8 @@ table.
|MailFieldNames
|An array of fields that returns the user's email addresses (defaults to
`mail` when unset).
`mail` when unset). Note that SOGo will always automatically strip the
protocol value from the attribute if the attribute name is `proxyAddresses`.
|SearchFieldNames
|An array of fields to to match against the search string when filtering
@@ -1027,9 +1048,9 @@ be specified as a LDAP Extension in the LDAP URL (e.g.
without Password Policies enabled.
Possible values are: `none`, `plain`, `crypt`, `md5`, `md5-crypt`,
`smd5`, `cram-md5` and `sha`, `sha256`, `sha512` and its ssha (e.g.
`ssha` or `ssha256`) variants (plus setting of the encoding with `.b64`
or `.hex`).
`sha256-crypt` and `sha512-crypt`, `smd5`, `cram-md5` and `sha`, `sha256`,
`sha512` and its ssha (e.g. `ssha` or `ssha256`) variants
(plus setting of the encoding with `.b64` or `.hex`).
For a more detailed description see
http://wiki.dovecot.org/Authentication/PasswordSchemes.
@@ -1038,6 +1059,9 @@ Note that `cram-md5` is not actually using cram-md5 (due to the lack of
challenge-response mechanism), its just saving the intermediate MD5
context as Dovecot stores in its database.
Also note that `sha256-crypt` and `sha512-crypt` requires that your
operating system supports glibc 2.7 or more recent.
|canAuthenticate
|If set to `YES`, this LDAP source is used for authentication
@@ -1208,6 +1232,7 @@ mapping = {
2+h|Other
|Birthday |birthyear-birthmonth-birthday
|Note |description
|Photo |photo
|===
Authenticating using C.A.S.
@@ -1443,7 +1468,7 @@ URL could be set to something like:
`postgresql://sogo:sogo@localhost:5432/sogo/sogo_alarms_folder`
|S |OCSStoreURL
|Parameter used to set the database URL so that SOGo can use to start
|Parameter used to set the database URL so that SOGo can use to store
all content data. You must also set `OCSAclURL` and `OCSCacheFolderURL`
if you set this parameter. Using these parameters will allow SOGo to use
a total of nine database tables - and prevent SOGo from creating three
@@ -1453,7 +1478,7 @@ For PostgresSQL, set the database URL to something like:
`postgresql://sogo:@localhost:5432/sogo/sogo_store`.
|S |OCSAclURL
|Parameter used to set the database URL so that SOGo can use to start
|Parameter used to set the database URL so that SOGo can use to store
all ACL data. You must also set `OCSStoreURL` and `OCSCacheFolderURL`
if you set this parameter.
@@ -1461,7 +1486,7 @@ For PostgresSQL, set the database URL to something like:
`postgresql://sogo:@localhost:5432/sogo/sogo_acl`.
|S |OCSCacheFolderURL
|Parameter used to set the database URL so that SOGo can use to start
|Parameter used to set the database URL so that SOGo can use to store
all cache data. You must also set `OCSStoreURL` and `OCSAclURL`
if you set this parameter.
@@ -1645,8 +1670,10 @@ repository.
authentication usernames (defaults to `c_uid` when unset).
|MailFieldNames (optional)
|Aan array of fields that specifies the column names that hold
|An array of fields that specifies the column names that hold
additional email addresses (beside the `mail` column) for each user.
Values must be unique and not appear in more than one column.
Space-separated values allowed in all *additional* columns (besides in `mail`).
|IMAPHostFieldName (optional)
|The field that returns the IMAP hostname for the user.
@@ -2459,7 +2486,7 @@ as keys for the the `domains` dictionary.
|Parameter used to set domains visible among themselves. This parameter
is an array of arrays.
Example: `SOGoDomainsVisibility = ((acme, coyote));`
Example: `SOGoDomainsVisibility = ( (acme, coyote) );`
Defaults to an empty array, which means domains are isolated from each
other.
+3 -3
View File
@@ -1,7 +1,7 @@
<!-- TODO have the build system take care of this -->
<releaseinfo>Version 3.1.4 - July 2016</releaseinfo>
<subtitle>for version 3.1.4</subtitle>
<date>2016-07-12</date>
<releaseinfo>Version 3.2.4 - December 2016</releaseinfo>
<subtitle>for version 3.2.4</subtitle>
<date>2016-12-01</date>
<legalnotice>
<para>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".</para>
@@ -13,6 +13,6 @@
// TODO have the build system take care of this
:release_version: 3.1.4
:release_version: 3.2.4
// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab:
+1 -4
View File
@@ -1,8 +1,6 @@
/* SOGo+DAV.h - this file is part of SOGo
*
* Copyright (C) 2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Copyright (C) 2010-2016 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,7 +29,6 @@
@interface SOGo (SOGoWebDAVExtensions)
- (WOResponse *) davPrincipalMatch: (WOContext *) localContext;
// - (WOResponse *) davPrincipalPropertySearch: (WOContext *) localContext;
- (WOResponse *) davPrincipalSearchPropertySet: (WOContext *) localContext;
@end
+17 -23
View File
@@ -1,6 +1,6 @@
/* SOGo+DAV.m - this file is part of SOGo
*
* Copyright (C) 2010-2013 Inverse inc.
* Copyright (C) 2010-2016 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -36,6 +36,7 @@
#import <SOGo/SOGoPermissions.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserFolder.h>
#import <SOGo/SOGoUserManager.h>
#import "SOGo+DAV.h"
@@ -178,9 +179,8 @@
[hrefs addObject: [self davURLAsString]];
}
- (NSDictionary *)
_handlePrincipalMatchPrincipalProperty: (id <DOMElement>) child
inContext: (WOContext *) localContext
- (NSDictionary *) _handlePrincipalMatchPrincipalProperty: (id <DOMElement>) child
inContext: (WOContext *) localContext
{
NSMutableArray *hrefs;
NSDictionary *response;
@@ -359,31 +359,26 @@
withEmailAddressSetMatching: (NSString *) value
inContext: (WOContext *) localContext
{
id <SOGoSource> authenticationSource;
SOGoUser *activeUser;
SOGoUserManager *um;
NSArray *records;
NSUInteger count, max;
NSString *uid;
SOGoUserFolder *collection;
activeUser = [localContext activeUser];
if ([activeUser respondsToSelector: @selector (authenticationSource)])
um = [SOGoUserManager sharedUserManager];
records = [um fetchUsersMatching: value
inDomain: [[localContext activeUser] domain]];
max = [records count];
for (count = 0; count < max; count++)
{
authenticationSource = [[localContext activeUser] authenticationSource];
records = [authenticationSource
fetchContactsMatching: value
inDomain: [activeUser domain]];
max = [records count];
for (count = 0; count < max; count++)
{
uid = [[records objectAtIndex: count] objectForKey: @"c_uid"];
if ([uid length] > 0)
{
collection = [[SOGoUser userWithLogin: uid]
uid = [[records objectAtIndex: count] objectForKey: @"c_uid"];
if ([uid length] > 0)
{
collection = [[SOGoUser userWithLogin: uid]
homeFolderInContext: localContext];
[collections addObject: collection];
}
}
[collections addObject: collection];
}
}
}
@@ -579,7 +574,6 @@
@"addressbook", @"calendar-access",
@"calendar-schedule", @"calendar-auto-schedule",
@"calendar-proxy",
@"calendar-query-extended",
@"extended-mkcol",
@"calendarserver-principal-property-search",
+172
View File
@@ -1,3 +1,175 @@
3.2.4 (2016-12-01)
------------------
New features
- [core] new sogo-tool cleanup user feature
Enhancements
- [core] added handling of BYSETPOS for BYDAY in recurrence rules
- [web] added sort by start date for tasks (#3840)
Bug fixes
- [web] fixed JavaScript exception when SOGo is launched from an external link (#3900)
- [web] restored fetching of freebusy information of MS Exchange contacts
- [web] fixed mail attribute when importing an LDIF file (#3878)
- [web] don't save empty custom auto-reply subject
- [web] fixed detection of session expiration
- [eas] properly escape all GAL responses (#3923)
3.2.3 (2016-11-25)
------------------
New features
- [core] added photo support for LDAP-based address books (#747, #2184)
Enhancements
- [web] updated CKEditor to version 4.6.0
- [web] updated Angular to version 1.5.9
Bug fixes
- [web] restore attributes when rewriting base64-encoded img tags (#3814)
- [web] improve alarms dialog (#3909)
- [eas] fixed EAS delete operation
3.2.2 (2016-11-23)
------------------
New features
- [core] support repetitive email alarms on tasks and events (#1053)
- [web] allow to hide center column on large screens (#3861)
- [eas] relaxed permission requirements for subscription synchronizations (#3118, #3180)
Enhancements
- [core] added sha256-crypt and sha512-crypt password support
- [core] updated time zones to version 2016i
- [eas] now also search on senders when using EAS Search ops
- [web] allow multiple messages to be marked as seen (#3873)
- [web] use switches instead of checkboxes in Calendars module
Bug fixes
- [core] fixed condition in weekly recurrence calculator
- [core] always send IMIP messages using UTF-8
- [web] fixed mail settings persistence when sorting by arrival date
- [web] disable submit button while saving an event or a task (#3880)
- [web] disable submit button while saving a contact
- [web] fixed computation of week number
- [web] fixed and improved IMAP folder subscriptions manager (#3865)
- [web] fixed Sieve script activation when vacation start date is in the future (#3885)
- [web] fixed moving a component without the proper rights (#3889)
- [web] restored Sieve folder encoding support (#3904)
- [web] allow edition of a mailbox rights when user can administer mailbox
3.2.1 (2016-11-02)
------------------
Enhancements
- [web] add constraints to start/end dates of automatic responder (#3841)
- [web] allow a mailbox to be deleted immediately (#3875)
- [web] updated Angular to version 1.5.8
- [eas] initial support for recurring tasks EAS
- [eas] now support replied/forwarded flags using EAS (#3796)
- [core] updated time zones to version 2016h
Bug fixes
- [web] fixed tasks list when some weekdays are disabled
- [web] fixed automatic refresh of calendar view
- [web] respect SOGoSearchMinimumWordLength in contacts list editor
- [web] improved memory usage when importing very large address books
- [web] fixed progress indicator while importing cards or events and tasks
- [web] improved detection of changes in CKEditor (#3839)
- [web] fixed vCard generation for tags with no type (#3826)
- [web] only show the organizer field of an IMIP REPLY if one is defined
- [web] fixed saving the note of a card (#3849)
- [web] fixed support for recurrent tasks (#3864)
- [web] restored support for alarms in tasks
- [web] improved validation of mail account delegators
- [web] fixed auto-completion of list members (#3870)
- [web] added missing options to subscribed addressbooks (#3850)
- [web] added missing options to subscribed calendars (#3863)
- [web] fixed resource conflict error handling (403 vs 409 HTTP code) (#3837)
- [web] restored immediate deletion of messages (without moving them to the trash)
- [web] avoid mail notifications on superfluous event changes (#3790)
- [web] CKEditor: added the pastefromexcel plugin (#3854)
- [eas] improve handling of email folders without a parent
- [eas] never send IMIP reply when the "initiator" is Outlook 2013/2016
- [core] only consider SMTP addresses for AD's proxyAddresses (#3842)
- [core] sogo-tool manage-eas now works with single store mode
3.2.0 (2016-10-03)
------------------
New features
- [web] added IMAP folder subscriptions management (#255)
- [web] keyboard hotkeys (#1711, #1467, #3817)
- [eas] initial support for server-side mailbox search operations
Enhancements
- [web] don't allow a recurrence rule to end before the first occurrence
- [web] updated Angular Material to version 1.1.1
- [web] show user's name upon successful login
- [web] inserted unseen messages count and mailbox name in browser's window title
- [web] disable JavaScript theme generation when SOGoUIxDebugEnabled is set to NO
- [web] added Serbian (sr) translation - thanks to Bogdanović Bojan
- [web] added sort by arrival date in Mail module (#708)
- [web] restored "now" line in Calendar module
- [web] updated CKEditor to version 4.5.11
- [web] allow custom email address to be one of the user's profile (#3551)
- [eas] propagate message submission errors to EAS clients (#3774)
Bug fixes
- [eas] properly generate the BusyStatus for normal events
- [eas] properly escape all email and address fields
- [eas] properly generate yearly rrule
- [eas] make sure we don't sleep for too long when EAS processes need interruption
- [eas] fixed recurring events with timezones for EAS (#3822)
- [web] restored functionality to save unknown recipient emails to address book on send
- [web] fixed ripple blocking the form when submitting no values (#3808)
- [web] fixed error handling when renaming a mailbox
- [web] handle binary content transfer encoding when displaying mails
- [web] removed resize grips to short events (#3771)
- [core] strip protocol value from proxyAddresses attribute (#3182)
- [core] we now search in all domain sources for Apple Calendar
- [core] properly handle groups in Apple Calendar's delegation
- [core] fixed caching expiration of ACLs assigned to LDAP groups (#2867)
- [core] make sure new cards always have a UID (#3819)
- [core] fixed default TRANSP value when creating event
3.1.5 (2016-08-10)
------------------
New features
- [web] drag'n'drop of messages in the Mail module (#3497, #3586, #3734, #3788)
- [web] drag'n'drop of cards in the AddressBook module
- [eas] added folder merging capabilities
Enhancements
- [web] improve action progress when login in or sending a message (#3765, #3761)
- [web] don't allow to send the message while an upload is in progress
- [web] notify when successfully copied or moved some messages
- [web] restored indicator in the top banner when a vacation message (auto-reply) is active
- [web] removed animation when dragging an event to speed up rendering
- [web] expunge drafts mailbox when a draft is sent and deleted
- [web] actions of Sieve filters are now sortable
- [web] show progress indicator when refreshing events/tasks lists
- [web] updated CKEditor to version 4.5.10
Bug fixes
- [web] fixed refresh of addressbook when deleting one or many cards
- [web] reset multiple-selection mode after deleting cards, events or tasks
- [web] fixed exception when moving tasks to a different calendar
- [web] fixed printing of long mail (#3731)
- [web] fixed position of ghost block when creating an event from DnD
- [web] fixed avatar image in autocompletion
- [web] restored expunge of current mailbox when leaving the Mail module
- [web] added support for multiple description values in LDAP entries (#3750)
- [web] don't allow drag'n'drop of invitations
- [eas] fixed long GUID issue preventing sometimes synchronisation (#3460)
- [core] fixing sogo-tool backup with multi-domain configuration but domain-less logins
- [core] during event scheduling, use 409 instead of 403 so Lightning doesn't fail silently
- [core] correctly calculate recurrence exceptions when not overlapping the recurrence id
- [core] prevent invalid SENT-BY handling during event invitations (#3759)
3.1.4 (2016-07-12)
------------------
+32 -30
View File
@@ -32,35 +32,37 @@ Please refer to the [FAQ](http://sogo.nu/support/faq.html) for [compilation inst
SOGo and its associated components are available in various languages. The following list describes the official translations alongside their maintainers :
* English - [Inverse inc.](http://www.inverse.ca/)
* Arabic - Anass Ahmed
* Basque - Gorka Gonzalez
* Brazilian Portuguese - Alexandre Marcilio
* Catalan - Hector M. Rulot Segovia
* Chinese (Taiwan)
* Croatian - Jens Riecken
* Czech - Šimon Halamásek
* Danish (Denmark) - Altibox
* Dutch - Roel van Os
* Finnish - Kari Salmu
* French - [Inverse](http://www.inverse.ca/)
* German - Alexander Greiner-Baer
* Hungarian - Sándor Kuti
* Icelandic - Anna Jonna Armannsdottir
* Italian - Alessio Fattorini
* Lithuanian - Mantas Liobė
* Macedonian - Miroslav Jovanovic
* Norwegian (Bokmål) - Jan Ivar Karlsen
* Norwegian (Nynorsk) - Altibox
* Polish - Paweł Bogusławski
* Russian - Alex Kabakaev
* Slovak - Martin Pastor
* Slovenian - Jens Riecken
* Spanish (Argentina) - Federico Alberto Sayd
* Spanish (Spain) - Dominique Couot
* Swedish - Peter Johansson
* Turkish (Turkey) - Sinan Kurşunoğlu
* Ukrainian - Oleksa Stasevych
* Welsh - Iona Bailey
* [en] English - [Inverse inc.](http://www.inverse.ca/)
* [ar] Arabic - Anass Ahmed
* [eu] Basque - Gorka Gonzalez
* [pr_BR] Brazilian Portuguese - Alexandre Marcilio
* [ca] Catalan - Hector M. Rulot Segovia
* [zh_TW] Chinese (Taiwan)
* [hr_HR] Croatian - Jens Riecken
* [cs] Czech - Šimon Halamásek
* [da_DK] Danish (Denmark) - Altibox
* [nl] Dutch - Roel van Os
* [fi] Finnish - Kari Salmu
* [fr] French - [Inverse](http://www.inverse.ca/)
* [de] German - Alexander Greiner-Baer
* [hu] Hungarian - Sándor Kuti
* [is] Icelandic - Anna Jonna Armannsdottir
* [it] Italian - Alessio Fattorini
* [lt] Lithuanian - Mantas Liobė
* [mk_MK] Macedonian - Miroslav Jovanovic
* [nb_NO] Norwegian (Bokmål) - Jan Ivar Karlsen
* [nn_NO] Norwegian (Nynorsk) - Altibox
* [pl] Polish - Paweł Bogusławski
* [pt] Portuguese - Eduardo Crispim
* [ru] Russian - Alex Kabakaev
* [sr] Serbian - Bogdanović Bojan
* [sk] Slovak - Martin Pastor
* [sl_SI] Slovenian - Jens Riecken
* [es_AR] Spanish (Argentina) - Federico Alberto Sayd
* [es_ES] Spanish (Spain) - Dominique Couot
* [sv] Swedish - Peter Johansson
* [tr_TR] Turkish (Turkey) - Sinan Kurşunoğlu
* [uk] Ukrainian - Oleksa Stasevych
* [cy] Welsh - Iona Bailey
If you would like to translate the software in an other language, please consult the [FAQ](http://sogo.nu/support/faq/article/how-to-translate-sogo-in-another-language-2.html). You can also subscribe to the SOGo i18n mailing list to follow string additions or changes. To subscribe to i18n@sogo.nu, send an email to i18n-request@sogo.nu with SUBSCRIBE i18n as the subject. Archived posts are [available online](https://inverse.ca/sogo/lists/arc/i18n).
+1 -5
View File
@@ -1,8 +1,6 @@
/* GCSAlarmsFolder.h - this file is part of $PROJECT_NAME_HERE$
*
* Copyright (C) 2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Copyright (C) 2010-2016 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -60,8 +58,6 @@
- (void) deleteRecordForEntryWithCName: (NSString *) cname
inCalendarAtPath: (NSString *) path;
- (void) deleteRecordsForEntriesUntilDate: (NSCalendarDate *) date;
@end
#endif /* GCSALARMSFOLDER_H */
+1 -33
View File
@@ -1,6 +1,6 @@
/* GCSAlarmsFolder.m - this file is part of SOGo
*
* Copyright (C) 2010-2014 Inverse inc.
* Copyright (C) 2010-2016 Inverse inc.
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -409,36 +409,4 @@ static NSString *alarmsFolderURLString = nil;
}
}
- (void) deleteRecordsForEntriesUntilDate: (NSCalendarDate *) date
{
EOAdaptorChannel *tc;
EOAdaptorContext *context;
EOEntity *entity;
EOSQLQualifier *qualifier;
NSException *error;
tc = [self _acquireStoreChannel];
if (tc)
{
context = [tc adaptorContext];
entity = [self _storeTableEntityForChannel: tc];
qualifier = [[EOSQLQualifier alloc] initWithEntity: entity
qualifierFormat:
@"c_alarm_date <= %d",
(int) [date timeIntervalSince1970]];
[qualifier autorelease];
[context beginTransaction];
error = [tc deleteRowsDescribedByQualifierX: qualifier];
if (error)
{
[context rollbackTransaction];
[self errorWithFormat:@"%s: cannot delete record: %@",
__PRETTY_FUNCTION__, error];
}
else
[context commitTransaction];
[self _releaseChannel: tc];
}
}
@end
+3
View File
@@ -123,6 +123,8 @@
- (NSException *) deleteContentWithName: (NSString *) _name;
- (NSException *) deleteAllContent;
- (NSException *) purgeDeletedRecordsBefore: (unsigned int) days;
- (NSException *) touchContentWithName: (NSString *) _name;
- (NSException *) deleteFolder;
@@ -143,6 +145,7 @@
- (void) deleteAclWithSpecification: (EOFetchSpecification *) _fs;
- (unsigned int) recordsCountByExcludingDeleted: (BOOL) includeDeleted;
- (unsigned int) recordsCountDeletedBefore: (unsigned int) days;
- (NSCalendarDate *) lastModificationDate;
+230 -73
View File
@@ -68,7 +68,7 @@ static GCSStringFormatter *stringFormatter = nil;
+ (void) initialize
{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
debugOn = [ud boolForKey:@"GCSFolderDebugEnabled"];
doLogStore = [ud boolForKey:@"GCSFolderStoreDebugEnabled"];
@@ -91,7 +91,7 @@ static GCSStringFormatter *stringFormatter = nil;
NSEnumerator *fields;
GCSFieldInfo *field;
NSString *fieldName;
if ((self = [super init])) {
folderManager = [_fm retain];
folderInfo = [_ftype retain];
@@ -114,7 +114,7 @@ static GCSStringFormatter *stringFormatter = nil;
if (![fieldName isEqualToString: @"c_name"])
[contentFieldNames addObject: fieldName];
}
folderId = [_folderId copy];
folderName = [[_path lastPathComponent] copy];
path = [_path copy];
@@ -124,7 +124,7 @@ static GCSStringFormatter *stringFormatter = nil;
folderTypeName = [_ftname copy];
ofFlags.requiresFolderSelect = 0;
ofFlags.sameTableForQuick =
ofFlags.sameTableForQuick =
[location isEqualTo:quickLocation] ? 1 : 0;
}
return self;
@@ -133,7 +133,7 @@ static GCSStringFormatter *stringFormatter = nil;
- (id) init
{
return [self initWithPath:nil primaryKey:nil
folderTypeName:nil folderType:nil
folderTypeName:nil folderType:nil
location:nil quickLocation:nil
aclLocation:nil
folderManager:nil];
@@ -271,13 +271,13 @@ static GCSStringFormatter *stringFormatter = nil;
NSDictionary *ui;
ui = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithUnsignedInt:_base],
[NSNumber numberWithUnsignedInt:_base],
@"GCSExpectedVersion",
[NSNumber numberWithUnsignedInt:_store],
@"GCSStoredVersion",
self, @"GCSFolder",
nil];
return [NSException exceptionWithName:@"GCSVersionMismatch"
reason:@"Transaction conflict during a GCS modification."
userInfo:ui];
@@ -369,7 +369,7 @@ static GCSStringFormatter *stringFormatter = nil;
requirement: (GCSTableRequirement) requirement
{
NSString *selectedFields;
if (requirement == bothTableRequired && [fields containsObject: @"c_name"])
selectedFields = [self _dottedFields: fields];
else
@@ -381,7 +381,7 @@ static GCSStringFormatter *stringFormatter = nil;
- (NSString *) _sqlForQualifier: (EOQualifier *) qualifier
{
NSMutableString *ms;
if (qualifier)
{
ms = [NSMutableString stringWithCapacity:32];
@@ -399,7 +399,7 @@ static GCSStringFormatter *stringFormatter = nil;
if ((count = [_so count]) == 0)
return nil;
sql = [NSMutableString stringWithCapacity:(count * 16)];
for (i = 0; i < count; i++) {
EOSortOrdering *so;
@@ -409,9 +409,9 @@ static GCSStringFormatter *stringFormatter = nil;
so = [_so objectAtIndex:i];
sel = [so selector];
column = [so key];
if (i > 0) [sql appendString:@", "];
if (sel_eq(sel, EOCompareAscending)) {
[sql appendString:column];
[sql appendString:@" ASC"];
@@ -558,21 +558,21 @@ static GCSStringFormatter *stringFormatter = nil;
error = [channel evaluateExpressionX:sql];
if (error)
{
[self errorWithFormat:@"%s: cannot execute quick-fetch SQL '%@': %@",
[self errorWithFormat:@"%s: cannot execute quick-fetch SQL '%@': %@",
__PRETTY_FUNCTION__, sql, error];
results = nil;
}
else
{
/* fetch results */
results = [NSMutableArray arrayWithCapacity: 64];
attrs = [channel describeResults: NO /* do not beautify names */];
while ((row = [channel fetchAttributes: attrs withZone: NULL]))
[results addObject: row];
/* release channels */
}
[self releaseChannel: channel];
// NSLog(@"/running query");
@@ -582,7 +582,7 @@ static GCSStringFormatter *stringFormatter = nil;
[self errorWithFormat:@" could not open storage channel!"];
results = nil;
}
return results;
}
@@ -764,7 +764,7 @@ andAttribute: (EOAttribute *)_attribute
EOAttribute *attribute;
id value;
unsigned i, count;
if (_row == nil || _table == nil)
return nil;
@@ -774,7 +774,7 @@ andAttribute: (EOAttribute *)_attribute
[sql appendString:@"UPDATE "];
[sql appendString:_table];
[sql appendString:@" SET "];
for (i = 0, count = [keys count]; i < count; i++) {
fieldName = [keys objectAtIndex:i];
@@ -823,7 +823,7 @@ andAttribute: (EOAttribute *)_attribute
{
EOAttribute *attribute;
EOEntity *entity;
entity = AUTORELEASE([[EOEntity alloc] init]);
[entity setName: _name];
[entity setExternalName: _name];
@@ -841,7 +841,7 @@ andAttribute: (EOAttribute *)_attribute
EOAttribute *attribute;
EOEntity *entity;
entity = [self _entityWithName: [self storeTableName]];
entity = [self _entityWithName: [self storeTableName]];
attribute = AUTORELEASE([[EOAttribute alloc] init]);
[attribute setName: @"c_version"];
@@ -873,7 +873,7 @@ andAttribute: (EOAttribute *)_attribute
- (EOSQLQualifier *) _qualifierUsingWhereColumn:(NSString *)_colname
isEqualTo:(id)_value
andColumn:(NSString *)_colname2
andColumn:(NSString *)_colname2
isEqualTo:(id)_value2
entity: (EOEntity *)_entity
withAdaptor: (EOAdaptor *)_adaptor
@@ -970,7 +970,7 @@ andAttribute: (EOAttribute *)_attribute
NSArray *rows;
NSException *error;
/* check preconditions */
/* check preconditions */
if (_name)
{
if (_content)
@@ -979,10 +979,10 @@ andAttribute: (EOAttribute *)_attribute
error = nil;
nowDate = [NSCalendarDate date];
now = [NSNumber numberWithUnsignedInt:[nowDate timeIntervalSince1970]];
if (doLogStore)
[self logWithFormat:@"should store content: '%@'\n%@", _name, _content];
rows = [self fetchFields: [NSArray arrayWithObjects:
@"c_version",
@"c_deleted",
@@ -1017,20 +1017,34 @@ andAttribute: (EOAttribute *)_attribute
|| *_baseVersion == [storedVersion unsignedIntValue])
{
/* extract quick info */
quickRow = [theComponent performSelector: @selector(quickRecordFromContent:container:) withObject: _content withObject: theContainer];
NSMethodSignature *aSignature;
NSInvocation *anInvocation;
SEL aSelector;
aSelector = @selector(quickRecordFromContent:container:nameInContainer:);
aSignature = [[theComponent class] instanceMethodSignatureForSelector: aSelector];
anInvocation = [NSInvocation invocationWithMethodSignature:aSignature];
[anInvocation setSelector: aSelector];
[anInvocation setTarget: theComponent];
[anInvocation setArgument:&_content atIndex: 2];
[anInvocation setArgument:&theContainer atIndex: 3];
[anInvocation setArgument:&_name atIndex: 4];
[anInvocation invoke];
[anInvocation getReturnValue: &quickRow];
if (quickRow)
{
[quickRow setObject:_name forKey:@"c_name"];
if (doLogStore)
[self logWithFormat:@" store quick: %@", quickRow];
/* make content row */
contentRow = [NSMutableDictionary dictionaryWithCapacity:16];
if (ofFlags.sameTableForQuick)
[contentRow addEntriesFromDictionary:quickRow];
[contentRow setObject:_name forKey:@"c_name"];
[contentRow setObject:now forKey:@"c_lastmodified"];
if (isNewRecord)
@@ -1044,7 +1058,7 @@ andAttribute: (EOAttribute *)_attribute
[NSNumber numberWithInt:([storedVersion intValue] + 1)]
forKey:@"c_version"];
[contentRow setObject:_content forKey:@"c_content"];
/* open channels */
storeChannel = [self acquireStoreChannel];
if (storeChannel)
@@ -1066,14 +1080,14 @@ andAttribute: (EOAttribute *)_attribute
/* we check if we can call directly methods on our adaptor
channel delegate. If not, we generate SQL ourself since it'll
be a little bit faster and less complex than using GDL to do so */
hasInsertDelegate = [[storeChannel delegate]
hasInsertDelegate = [[storeChannel delegate]
respondsToSelector: @selector(adaptorChannel:willInsertRow:forEntity:)];
hasUpdateDelegate = [[storeChannel delegate]
respondsToSelector: @selector(adaptorChannel:willUpdateRow:describedByQualifier:)];
[[quickChannel adaptorContext] beginTransaction];
[[storeChannel adaptorContext] beginTransaction];
quickTableEntity = [self _quickTableEntity];
storeTableEntity = [self _storeTableEntity];
@@ -1083,10 +1097,10 @@ andAttribute: (EOAttribute *)_attribute
error = (hasInsertDelegate
? [quickChannel insertRowX: quickRow forEntity: quickTableEntity]
: [quickChannel
evaluateExpressionX: [self _generateInsertStatementForRow: quickRow
evaluateExpressionX: [self _generateInsertStatementForRow: quickRow
adaptor: [[quickChannel adaptorContext] adaptor]
tableName: [self quickTableName]]]);
if (!error)
error = (hasInsertDelegate
? [storeChannel insertRowX: contentRow forEntity: storeTableEntity]
@@ -1124,7 +1138,7 @@ andAttribute: (EOAttribute *)_attribute
andColumn: (*_baseVersion != 0 ? (id)@"c_version" : (id)nil)
isEqualTo: (*_baseVersion != 0 ? [NSNumber numberWithUnsignedInt: *_baseVersion] : (NSNumber *)nil)]]);
}
if (error)
{
[[storeChannel adaptorContext] rollbackTransaction];
@@ -1173,26 +1187,25 @@ andAttribute: (EOAttribute *)_attribute
return error;
}
- (NSException *)deleteContentWithName:(NSString *)_name {
- (NSException *) deleteContentWithName:(NSString *)_name {
EOAdaptorChannel *storeChannel, *quickChannel;
EOAdaptorContext *adaptorCtx;
NSException *error;
NSString *delsql;
NSCalendarDate *nowDate;
/* check preconditions */
if (_name == nil) {
return [NSException exceptionWithName:@"GCSDeleteException"
reason:@"no content filename was provided"
userInfo:nil];
}
if (doLogStore)
[self logWithFormat:@"should delete content: '%@'", _name];
/* open channels */
if ((storeChannel = [self acquireStoreChannel]) == nil) {
[self errorWithFormat:@"could not open storage channel!"];
return nil;
@@ -1229,7 +1242,7 @@ andAttribute: (EOAttribute *)_attribute
delsql = [delsql stringByAppendingFormat:@" AND c_folder_id = %@", folderId];
if ((error = [storeChannel evaluateExpressionX:delsql]) != nil) {
[self errorWithFormat:
@"%s: cannot delete content '%@': %@",
@"%s: cannot delete content '%@': %@",
__PRETTY_FUNCTION__, delsql, error];
}
else if (!ofFlags.sameTableForQuick) {
@@ -1243,19 +1256,19 @@ andAttribute: (EOAttribute *)_attribute
delsql = [delsql stringByAppendingFormat:@" AND c_folder_id = %@", folderId];
if ((error = [quickChannel evaluateExpressionX:delsql]) != nil) {
[self errorWithFormat:
@"%s: cannot delete quick row '%@': %@",
@"%s: cannot delete quick row '%@': %@",
__PRETTY_FUNCTION__, delsql, error];
/*
/*
Note: we now have a "broken" record, needs to be periodically GCed by
a script!
*/
}
}
/* release channels and return */
[adaptorCtx commitTransaction];
[self releaseChannel:storeChannel];
if (!ofFlags.sameTableForQuick) {
[[quickChannel adaptorContext] commitTransaction];
[self releaseChannel:quickChannel];
@@ -1294,7 +1307,7 @@ andAttribute: (EOAttribute *)_attribute
query = [NSString stringWithFormat: @"DELETE FROM %@", [self storeTableName]];
error = [storeChannel evaluateExpressionX:query];
if (error)
[self errorWithFormat: @"%s: cannot delete content '%@': %@",
[self errorWithFormat: @"%s: cannot delete content '%@': %@",
__PRETTY_FUNCTION__, query, error];
else if (!ofFlags.sameTableForQuick) {
/* content row deleted, now delete the quick row */
@@ -1304,7 +1317,7 @@ andAttribute: (EOAttribute *)_attribute
query = [NSString stringWithFormat: @"DELETE FROM %@", [self quickTableName]];
error = [quickChannel evaluateExpressionX: query];
if (error)
[self errorWithFormat: @"%s: cannot delete quick row '%@': %@",
[self errorWithFormat: @"%s: cannot delete quick row '%@': %@",
__PRETTY_FUNCTION__, query, error];
}
@@ -1320,18 +1333,113 @@ andAttribute: (EOAttribute *)_attribute
return error;
}
- (NSException *) purgeDeletedRecordsBefore: (unsigned int) days
{
NSString *delSql, *table;
EOAdaptorContext *adaptorCtx;
EOAdaptorChannel *channel;
NSCalendarDate *nowDate;
unsigned int delta;
channel = [self acquireStoreChannel];
if ((channel = [self acquireStoreChannel]) == nil)
return [NSException exceptionWithName: @"GCSChannelException"
reason: @"could not open storage channel!"
userInfo: nil];
adaptorCtx = [channel adaptorContext];
[adaptorCtx beginTransaction];
table = [self storeTableName];
nowDate = [NSCalendarDate date];
delta = days * 24 * 60 * 60;
if (delta > [nowDate timeIntervalSince1970])
return [NSException exceptionWithName: @"GCSArgumentException"
reason: @"number of days is too high!"
userInfo: nil];
delta = [nowDate timeIntervalSince1970] - delta;
if ([GCSFolderManager singleStoreMode])
delSql = [NSString stringWithFormat: @"DELETE FROM %@"
@" WHERE c_folder_id = %@ AND c_deleted = 1 AND c_lastmodified < %u",
table, folderId, delta];
else
delSql = [NSString stringWithFormat: @"DELETE FROM %@"
@" WHERE c_deleted = 1 AND c_lastmodified < %u",
table, delta];
[channel evaluateExpressionX: delSql];
[[channel adaptorContext] commitTransaction];
[self releaseChannel: channel];
return nil;
}
- (NSException *) touchContentWithName: (NSString *) _name
{
NSString *touchSql, *table;
EOAdaptorContext *adaptorCtx;
EOAdaptorChannel *channel;
EOAttribute *attribute;
NSCalendarDate *nowDate;
if (_name == nil)
return [NSException exceptionWithName: @"GCSDeleteException"
reason: @"no content filename was provided"
userInfo: nil];
channel = [self acquireStoreChannel];
if ((channel = [self acquireStoreChannel]) == nil)
{
[self errorWithFormat:@"could not open storage channel!"];
return nil;
}
adaptorCtx = [channel adaptorContext];
[adaptorCtx beginTransaction];
table = [self storeTableName];
attribute = [self _attributeForColumn: @"c_name"];
nowDate = [NSCalendarDate date];
if ([GCSFolderManager singleStoreMode])
touchSql = [NSString stringWithFormat: @"UPDATE %@ SET c_lastmodified = %u WHERE c_name = %@ AND c_folder_id = %@",
table,
(unsigned int) [nowDate timeIntervalSince1970],
[self _formatRowValue: _name
withAdaptor: [adaptorCtx adaptor]
andAttribute: attribute],
folderId];
else
touchSql = [NSString stringWithFormat: @"UPDATE %@ SET c_lastmodified = %u WHERE c_name = %@",
table,
(unsigned int) [nowDate timeIntervalSince1970],
[self _formatRowValue: _name
withAdaptor: [adaptorCtx adaptor]
andAttribute: attribute]];
[channel evaluateExpressionX: touchSql];
[[channel adaptorContext] commitTransaction];
[self releaseChannel: channel];
return nil;
}
- (NSException *)deleteFolder {
EOAdaptorChannel *channel;
NSString *delsql;
NSString *table;
/* open channels */
if ((channel = [self acquireStoreChannel]) == nil) {
[self errorWithFormat:@"could not open channel!"];
return nil;
}
/* delete rows */
[[channel adaptorContext] beginTransaction];
table = [self storeTableName];
@@ -1358,7 +1466,7 @@ andAttribute: (EOAttribute *)_attribute
delsql = [@"DROP TABLE " stringByAppendingString: table];
[channel evaluateExpressionX:delsql];
}
[[channel adaptorContext] commitTransaction];
[self releaseChannel:channel];
@@ -1372,7 +1480,7 @@ andAttribute: (EOAttribute *)_attribute
EOAdaptorChannel *quickChannel;
EOAdaptorContext *adaptorCtx;
NSException *error;
quickChannel = [self acquireQuickChannel];
adaptorCtx = [quickChannel adaptorContext];
[adaptorCtx beginTransaction];
@@ -1435,15 +1543,15 @@ andAttribute: (EOAttribute *)_attribute
NSArray *attrs;
NSMutableArray *results;
NSDictionary *row;
qualifier = [_fs qualifier];
sortOrderings = [_fs sortOrderings];
#if 0
[self logWithFormat:@"FETCH: %@", _flds];
[self logWithFormat:@" MATCH: %@", _q];
#endif
/* generate SQL */
sql = [NSMutableString stringWithCapacity:256];
@@ -1471,34 +1579,34 @@ andAttribute: (EOAttribute *)_attribute
[sql appendString:@" LIMIT "]; // count
[sql appendString:@" OFFSET "]; // index from 0
#endif
/* open channel */
if ((channel = [self acquireAclChannel]) == nil) {
[self errorWithFormat:@"could not open acl channel!"];
return nil;
}
/* run SQL */
if ((error = [channel evaluateExpressionX:sql]) != nil) {
[self errorWithFormat:@"%s: cannot execute acl-fetch SQL '%@': %@",
[self errorWithFormat:@"%s: cannot execute acl-fetch SQL '%@': %@",
__PRETTY_FUNCTION__, sql, error];
[self releaseChannel:channel];
return nil;
}
/* fetch results */
results = [NSMutableArray arrayWithCapacity:64];
attrs = [channel describeResults:NO /* do not beautify names */];
while ((row = [channel fetchAttributes:attrs withZone:NULL]) != nil)
[results addObject:row];
/* release channels */
[self releaseChannel: channel];
return results;
}
@@ -1537,7 +1645,7 @@ andAttribute: (EOAttribute *)_attribute
NSException *error;
NSMutableString *sql;
NSString *qSql;
sql = [NSMutableString stringWithCapacity:256];
[sql appendString:@"DELETE FROM "];
[sql appendString:[self aclTableName]];
@@ -1555,16 +1663,16 @@ andAttribute: (EOAttribute *)_attribute
[self errorWithFormat:@"could not open acl channel!"];
return;
}
/* run SQL */
[[channel adaptorContext] beginTransaction];
if ((error = [channel evaluateExpressionX:sql]) != nil) {
[self errorWithFormat:@"%s: cannot execute acl-fetch SQL '%@': %@",
[self errorWithFormat:@"%s: cannot execute acl-fetch SQL '%@': %@",
__PRETTY_FUNCTION__, sql, error];
[self releaseChannel:channel];
return;
}
[[channel adaptorContext] commitTransaction];
[self releaseChannel:channel];
}
@@ -1582,11 +1690,11 @@ andAttribute: (EOAttribute *)_attribute
if ([GCSFolderManager singleStoreMode])
sqlString = [NSMutableString stringWithFormat:
@"SELECT COUNT(*) AS CNT FROM %@ WHERE c_folder_id = %@",
@"SELECT COUNT(*) AS cnt FROM %@ WHERE c_folder_id = %@",
[self storeTableName], folderId];
else
sqlString = [NSMutableString stringWithFormat:
@"SELECT COUNT(*) AS CNT FROM %@",
@"SELECT COUNT(*) AS cnt FROM %@",
[self storeTableName]];
if (excludeDeleted)
{
@@ -1601,7 +1709,56 @@ andAttribute: (EOAttribute *)_attribute
{
error = [channel evaluateExpressionX: sqlString];
if (error)
[self errorWithFormat: @"%s: cannot execute SQL '%@': %@",
[self errorWithFormat: @"%s: cannot execute SQL '%@': %@",
__PRETTY_FUNCTION__, sqlString, error];
else
{
attrs = [channel describeResults: NO];
row = [channel fetchAttributes: attrs withZone: NULL];
count = [[row objectForKey: @"cnt"] unsignedIntValue];
[channel cancelFetch];
}
[self releaseChannel: channel];
}
return count;
}
- (unsigned int) recordsCountDeletedBefore: (unsigned int) days
{
EOAdaptorChannel *channel;
NSArray *attrs;
NSCalendarDate *nowDate;
NSDictionary *row;
NSException *error;
NSMutableString *sqlString;
unsigned int delta, count;
count = 0;
nowDate = [NSCalendarDate date];
delta = days * 24 * 60 * 60;
if (delta < [nowDate timeIntervalSince1970])
delta = [nowDate timeIntervalSince1970] - delta;
else
delta = 0;
if ([GCSFolderManager singleStoreMode])
sqlString = [NSMutableString stringWithFormat:
@"SELECT COUNT(*) AS cnt FROM %@"
@" WHERE c_folder_id = %@ AND c_lastmodified < %u AND c_deleted = 1",
[self storeTableName], folderId, delta];
else
sqlString = [NSMutableString stringWithFormat:
@"SELECT COUNT(*) AS cnt FROM %@"
@" WHERE c_lastmodified < %u AND c_deleted = 1",
[self storeTableName], delta];
channel = [self acquireStoreChannel];
if (channel)
{
error = [channel evaluateExpressionX: sqlString];
if (error)
[self errorWithFormat: @"%s: cannot execute SQL '%@': %@",
__PRETTY_FUNCTION__, sqlString, error];
else
{
@@ -1651,7 +1808,7 @@ andAttribute: (EOAttribute *)_attribute
- (NSString *)description {
NSMutableString *ms;
id tmp;
ms = [NSMutableString stringWithCapacity:256];
[ms appendFormat:@"<0x%p[%@]:", self, NSStringFromClass([self class])];
@@ -1664,7 +1821,7 @@ andAttribute: (EOAttribute *)_attribute
if ((tmp = [self folderTypeName])) [ms appendFormat:@" type=%@", tmp];
if ((tmp = [self location]))
[ms appendFormat:@" loc=%@", [tmp absoluteString]];
[ms appendString:@">"];
return ms;
}
+1 -3
View File
@@ -1,8 +1,6 @@
/* NGVCardPhoto.h - this file is part of NGCards
*
* Copyright (C) 2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Copyright (C) 2010-2016 Inverse inc.
*
* NGCards is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the
+1 -3
View File
@@ -1,8 +1,6 @@
/* NGVCardPhoto.m - this file is part of NGCards
*
* Copyright (C) 2010 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Copyright (C) 2010-2016 Inverse inc.
*
* NGCards is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Abidjan
X-LIC-LOCATION:Africa/Abidjan
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Abidjan
X-LIC-LOCATION:Africa/Abidjan
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Accra
X-LIC-LOCATION:Africa/Accra
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Accra
X-LIC-LOCATION:Africa/Accra
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Addis_Ababa
X-LIC-LOCATION:Africa/Addis_Ababa
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Addis_Ababa
X-LIC-LOCATION:Africa/Addis_Ababa
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Algiers
X-LIC-LOCATION:Africa/Algiers
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Algiers
X-LIC-LOCATION:Africa/Algiers
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Asmara
X-LIC-LOCATION:Africa/Asmara
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Asmara
X-LIC-LOCATION:Africa/Asmara
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bamako
X-LIC-LOCATION:Africa/Bamako
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bamako
X-LIC-LOCATION:Africa/Bamako
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bangui
X-LIC-LOCATION:Africa/Bangui
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bangui
X-LIC-LOCATION:Africa/Bangui
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Banjul
X-LIC-LOCATION:Africa/Banjul
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Banjul
X-LIC-LOCATION:Africa/Banjul
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bissau
X-LIC-LOCATION:Africa/Bissau
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bissau
X-LIC-LOCATION:Africa/Bissau
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Blantyre
X-LIC-LOCATION:Africa/Blantyre
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Blantyre
X-LIC-LOCATION:Africa/Blantyre
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Brazzaville
X-LIC-LOCATION:Africa/Brazzaville
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Brazzaville
X-LIC-LOCATION:Africa/Brazzaville
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bujumbura
X-LIC-LOCATION:Africa/Bujumbura
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Bujumbura
X-LIC-LOCATION:Africa/Bujumbura
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -22
View File
@@ -1,22 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Cairo
X-LIC-LOCATION:Africa/Cairo
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19700924T235959
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1TH
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EEST
DTSTART:19700424T010000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Cairo
X-LIC-LOCATION:Africa/Cairo
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Casablanca
X-LIC-LOCATION:Africa/Casablanca
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
TZNAME:WET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Casablanca
X-LIC-LOCATION:Africa/Casablanca
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
TZNAME:WET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ceuta
X-LIC-LOCATION:Africa/Ceuta
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ceuta
X-LIC-LOCATION:Africa/Ceuta
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:CEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Conakry
X-LIC-LOCATION:Africa/Conakry
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Conakry
X-LIC-LOCATION:Africa/Conakry
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Dakar
X-LIC-LOCATION:Africa/Dakar
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Dakar
X-LIC-LOCATION:Africa/Dakar
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Dar_es_Salaam
X-LIC-LOCATION:Africa/Dar_es_Salaam
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Dar_es_Salaam
X-LIC-LOCATION:Africa/Dar_es_Salaam
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Djibouti
X-LIC-LOCATION:Africa/Djibouti
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Djibouti
X-LIC-LOCATION:Africa/Djibouti
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Douala
X-LIC-LOCATION:Africa/Douala
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Douala
X-LIC-LOCATION:Africa/Douala
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/El_Aaiun
X-LIC-LOCATION:Africa/El_Aaiun
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
TZNAME:WET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/El_Aaiun
X-LIC-LOCATION:Africa/El_Aaiun
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0000
TZNAME:WET
DTSTART:19701025T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WEST
DTSTART:19700329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Freetown
X-LIC-LOCATION:Africa/Freetown
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Freetown
X-LIC-LOCATION:Africa/Freetown
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Gaborone
X-LIC-LOCATION:Africa/Gaborone
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Gaborone
X-LIC-LOCATION:Africa/Gaborone
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Harare
X-LIC-LOCATION:Africa/Harare
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Harare
X-LIC-LOCATION:Africa/Harare
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Johannesburg
X-LIC-LOCATION:Africa/Johannesburg
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Johannesburg
X-LIC-LOCATION:Africa/Johannesburg
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Juba
X-LIC-LOCATION:Africa/Juba
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Juba
X-LIC-LOCATION:Africa/Juba
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kampala
X-LIC-LOCATION:Africa/Kampala
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kampala
X-LIC-LOCATION:Africa/Kampala
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Khartoum
X-LIC-LOCATION:Africa/Khartoum
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Khartoum
X-LIC-LOCATION:Africa/Khartoum
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kigali
X-LIC-LOCATION:Africa/Kigali
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kigali
X-LIC-LOCATION:Africa/Kigali
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kinshasa
X-LIC-LOCATION:Africa/Kinshasa
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Kinshasa
X-LIC-LOCATION:Africa/Kinshasa
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lagos
X-LIC-LOCATION:Africa/Lagos
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lagos
X-LIC-LOCATION:Africa/Lagos
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Libreville
X-LIC-LOCATION:Africa/Libreville
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Libreville
X-LIC-LOCATION:Africa/Libreville
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lome
X-LIC-LOCATION:Africa/Lome
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lome
X-LIC-LOCATION:Africa/Lome
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Luanda
X-LIC-LOCATION:Africa/Luanda
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Luanda
X-LIC-LOCATION:Africa/Luanda
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lubumbashi
X-LIC-LOCATION:Africa/Lubumbashi
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lubumbashi
X-LIC-LOCATION:Africa/Lubumbashi
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lusaka
X-LIC-LOCATION:Africa/Lusaka
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Lusaka
X-LIC-LOCATION:Africa/Lusaka
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Malabo
X-LIC-LOCATION:Africa/Malabo
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Malabo
X-LIC-LOCATION:Africa/Malabo
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Maputo
X-LIC-LOCATION:Africa/Maputo
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Maputo
X-LIC-LOCATION:Africa/Maputo
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:CAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Maseru
X-LIC-LOCATION:Africa/Maseru
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Maseru
X-LIC-LOCATION:Africa/Maseru
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Mbabane
X-LIC-LOCATION:Africa/Mbabane
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Mbabane
X-LIC-LOCATION:Africa/Mbabane
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:SAST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Mogadishu
X-LIC-LOCATION:Africa/Mogadishu
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Mogadishu
X-LIC-LOCATION:Africa/Mogadishu
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Monrovia
X-LIC-LOCATION:Africa/Monrovia
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Monrovia
X-LIC-LOCATION:Africa/Monrovia
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Nairobi
X-LIC-LOCATION:Africa/Nairobi
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Nairobi
X-LIC-LOCATION:Africa/Nairobi
BEGIN:STANDARD
TZOFFSETFROM:+0300
TZOFFSETTO:+0300
TZNAME:EAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ndjamena
X-LIC-LOCATION:Africa/Ndjamena
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ndjamena
X-LIC-LOCATION:Africa/Ndjamena
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Niamey
X-LIC-LOCATION:Africa/Niamey
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Niamey
X-LIC-LOCATION:Africa/Niamey
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Nouakchott
X-LIC-LOCATION:Africa/Nouakchott
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Nouakchott
X-LIC-LOCATION:Africa/Nouakchott
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ouagadougou
X-LIC-LOCATION:Africa/Ouagadougou
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Ouagadougou
X-LIC-LOCATION:Africa/Ouagadougou
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Porto-Novo
X-LIC-LOCATION:Africa/Porto-Novo
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Porto-Novo
X-LIC-LOCATION:Africa/Porto-Novo
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Sao_Tome
X-LIC-LOCATION:Africa/Sao_Tome
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Sao_Tome
X-LIC-LOCATION:Africa/Sao_Tome
BEGIN:STANDARD
TZOFFSETFROM:+0000
TZOFFSETTO:+0000
TZNAME:GMT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Tripoli
X-LIC-LOCATION:Africa/Tripoli
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Tripoli
X-LIC-LOCATION:Africa/Tripoli
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0200
TZNAME:EET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Tunis
X-LIC-LOCATION:Africa/Tunis
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Tunis
X-LIC-LOCATION:Africa/Tunis
BEGIN:STANDARD
TZOFFSETFROM:+0100
TZOFFSETTO:+0100
TZNAME:CET
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Windhoek
X-LIC-LOCATION:Africa/Windhoek
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:WAST
DTSTART:19700906T020000
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700405T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Africa/Windhoek
X-LIC-LOCATION:Africa/Windhoek
BEGIN:DAYLIGHT
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
TZNAME:WAST
DTSTART:19700906T020000
RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
TZNAME:WAT
DTSTART:19700405T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Adak
X-LIC-LOCATION:America/Adak
BEGIN:DAYLIGHT
TZOFFSETFROM:-1000
TZOFFSETTO:-0900
TZNAME:HADT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0900
TZOFFSETTO:-1000
TZNAME:HAST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Adak
X-LIC-LOCATION:America/Adak
BEGIN:DAYLIGHT
TZOFFSETFROM:-1000
TZOFFSETTO:-0900
TZNAME:HDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0900
TZOFFSETTO:-1000
TZNAME:HST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Anchorage
X-LIC-LOCATION:America/Anchorage
BEGIN:DAYLIGHT
TZOFFSETFROM:-0900
TZOFFSETTO:-0800
TZNAME:AKDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0800
TZOFFSETTO:-0900
TZNAME:AKST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Anchorage
X-LIC-LOCATION:America/Anchorage
BEGIN:DAYLIGHT
TZOFFSETFROM:-0900
TZOFFSETTO:-0800
TZNAME:AKDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0800
TZOFFSETTO:-0900
TZNAME:AKST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Anguilla
X-LIC-LOCATION:America/Anguilla
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Anguilla
X-LIC-LOCATION:America/Anguilla
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Antigua
X-LIC-LOCATION:America/Antigua
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Antigua
X-LIC-LOCATION:America/Antigua
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Araguaina
X-LIC-LOCATION:America/Araguaina
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Araguaina
X-LIC-LOCATION:America/Araguaina
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Buenos_Aires
X-LIC-LOCATION:America/Argentina/Buenos_Aires
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Buenos_Aires
X-LIC-LOCATION:America/Argentina/Buenos_Aires
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Catamarca
X-LIC-LOCATION:America/Argentina/Catamarca
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Catamarca
X-LIC-LOCATION:America/Argentina/Catamarca
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Cordoba
X-LIC-LOCATION:America/Argentina/Cordoba
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Cordoba
X-LIC-LOCATION:America/Argentina/Cordoba
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Jujuy
X-LIC-LOCATION:America/Argentina/Jujuy
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Jujuy
X-LIC-LOCATION:America/Argentina/Jujuy
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/La_Rioja
X-LIC-LOCATION:America/Argentina/La_Rioja
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/La_Rioja
X-LIC-LOCATION:America/Argentina/La_Rioja
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Mendoza
X-LIC-LOCATION:America/Argentina/Mendoza
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Mendoza
X-LIC-LOCATION:America/Argentina/Mendoza
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Rio_Gallegos
X-LIC-LOCATION:America/Argentina/Rio_Gallegos
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Rio_Gallegos
X-LIC-LOCATION:America/Argentina/Rio_Gallegos
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Salta
X-LIC-LOCATION:America/Argentina/Salta
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Salta
X-LIC-LOCATION:America/Argentina/Salta
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/San_Juan
X-LIC-LOCATION:America/Argentina/San_Juan
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/San_Juan
X-LIC-LOCATION:America/Argentina/San_Juan
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/San_Luis
X-LIC-LOCATION:America/Argentina/San_Luis
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/San_Luis
X-LIC-LOCATION:America/Argentina/San_Luis
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Tucuman
X-LIC-LOCATION:America/Argentina/Tucuman
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Tucuman
X-LIC-LOCATION:America/Argentina/Tucuman
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Ushuaia
X-LIC-LOCATION:America/Argentina/Ushuaia
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Argentina/Ushuaia
X-LIC-LOCATION:America/Argentina/Ushuaia
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:ART
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Aruba
X-LIC-LOCATION:America/Aruba
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Aruba
X-LIC-LOCATION:America/Aruba
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+22 -22
View File
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Asuncion
X-LIC-LOCATION:America/Asuncion
BEGIN:DAYLIGHT
TZOFFSETFROM:-0400
TZOFFSETTO:-0300
TZNAME:PYST
DTSTART:19701004T000000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0400
TZNAME:PYT
DTSTART:19700322T000000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Asuncion
X-LIC-LOCATION:America/Asuncion
BEGIN:DAYLIGHT
TZOFFSETFROM:-0400
TZOFFSETTO:-0300
TZNAME:PYST
DTSTART:19701004T000000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0400
TZNAME:PYT
DTSTART:19700322T000000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=4SU
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Atikokan
X-LIC-LOCATION:America/Atikokan
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Atikokan
X-LIC-LOCATION:America/Atikokan
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0500
TZNAME:EST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Bahia
X-LIC-LOCATION:America/Bahia
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Bahia
X-LIC-LOCATION:America/Bahia
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
@@ -1,22 +1,22 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Bahia_Banderas
X-LIC-LOCATION:America/Bahia_Banderas
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
TZNAME:CST
DTSTART:19701025T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
TZNAME:CDT
DTSTART:19700405T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Bahia_Banderas
X-LIC-LOCATION:America/Bahia_Banderas
BEGIN:STANDARD
TZOFFSETFROM:-0500
TZOFFSETTO:-0600
TZNAME:CST
DTSTART:19701025T020000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0600
TZOFFSETTO:-0500
TZNAME:CDT
DTSTART:19700405T020000
RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU
END:DAYLIGHT
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Barbados
X-LIC-LOCATION:America/Barbados
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Barbados
X-LIC-LOCATION:America/Barbados
BEGIN:STANDARD
TZOFFSETFROM:-0400
TZOFFSETTO:-0400
TZNAME:AST
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
+14 -14
View File
@@ -1,14 +1,14 @@
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Belem
X-LIC-LOCATION:America/Belem
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//Inverse inc.//NONSGML IANA 2016h//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Belem
X-LIC-LOCATION:America/Belem
BEGIN:STANDARD
TZOFFSETFROM:-0300
TZOFFSETTO:-0300
TZNAME:BRT
DTSTART:19700101T000000
END:STANDARD
END:VTIMEZONE
END:VCALENDAR
Loaded 100 of 937 files, more files were not shown because too many files have changed in this diff. Show more