Compare commits

...
359 Commits
Author SHA1 Message Date
Francis Lachapelle 0fe8d0eab2 Merge to 2.3.22 2017-07-20 14:03:59 -04:00
Francis Lachapelle b5bb9e86e3 Update ChangeLog 2017-07-20 14:02:54 -04:00
Francis Lachapelle 938fd3a6f4 Preparation for release 2.3.22 2017-07-20 14:02:37 -04:00
Francis Lachapelle a15765df7b Use xsltproc instead of fop to generate XSL-FO 2017-07-20 13:54:49 -04:00
Francis Lachapelle d536f090d1 (js) Update CKEditor to version 4.7.1 2017-07-20 13:49:49 -04:00
Francis Lachapelle d0898879ca (i18n) Update translations 2017-07-20 13:36:52 -04:00
Ludovic Marcotte 12993e45be (fix) fixed forwarding mails with attachments containing slashes in file names 2017-07-13 10:45:18 -04:00
Ludovic Marcotte 00948f5753 (fix) support Squeeze + minor cleanups 2017-07-05 11:08:33 -04:00
Francis Lachapelle 6272cb5a85 (js) Improve regular expression for email address 2017-07-04 17:22:01 -04:00
Ludovic Marcotte 98064259a2 Updated NEWS 2017-07-04 13:20:37 -04:00
Ludovic Marcotte 67fef95024 (fix) silence sogo-ealarms-notify verbose output (fixes #4170)
Conflicts:
	Tools/SOGoEAlarmsNotifier.m
2017-07-04 13:18:39 -04:00
Ludovic Marcotte a9d9e114aa Updated NEWS 2017-07-04 11:02:14 -04:00
Ludovic Marcotte 8d1b02d52b (fix) enable S/MIME even when using GNU TLS (fixes #4201)
Conflicts:
	UI/MailPartViewers/UIxMailPartSignedViewer.m
2017-07-04 11:01:43 -04:00
Ludovic Marcotte 722c813909 (fix) respect disabled state of sending rate-limiting (fixes #4198) 2017-07-04 09:57:05 -04:00
Ludovic Marcotte 4bcc6d128a (fix) avoid advertising EAS 16 support until libwbxml is fixed 2017-07-04 09:26:40 -04:00
Ludovic Marcotte b0e5d330e5 (doc) improve iOS doc 2017-06-29 15:41:51 -04:00
Francis Lachapelle b3650d61e1 Update NEWS file 2017-06-28 11:02:02 -04:00
Francis Lachapelle a7d07b2a12 (fix) Update settings of active user only
Fixes #3988
2017-06-28 10:58:30 -04:00
Ludovic Marcotte a30efc6cc7 (fix) check cache before using it (fixes #3988) 2017-06-22 10:22:16 -04:00
Ludovic Marcotte 31d131f4d3 (fix) not using cleaned data when sending mails (#4199) 2017-06-16 08:37:34 -04:00
Ludovic Marcotte fc740b1c9f Updated NEWS 2017-06-15 11:23:26 -04:00
Ludovic Marcotte a5a40b2ea0 (fix) don't include task folders over EAS if we are hiding them (fixes #4164) 2017-06-15 11:22:43 -04:00
Ludovic Marcotte 5b70632de0 (doc) updates for MySQL's max_allowed_packet parameter (fixes #4119 and #4142) 2017-06-09 11:22:30 -04:00
Ludovic Marcotte 842188744c (fix) improvements for Drafts handling 2017-06-09 10:01:53 -04:00
Ludovic Marcotte a84b55f36c (fix) use the organizer's alarm by default when accepting IMIP messages (fixes #3934) 2017-06-06 11:10:31 -04:00
Ludovic Marcotte 636264d782 Updated NEWS 2017-06-01 16:12:35 -04:00
Ludovic Marcotte 1666048da5 (feat) first pas at EAS v16 support and save in drafts
Conflicts:
	ActiveSync/SOGoMailObject+ActiveSync.m
2017-06-01 16:09:17 -04:00
Francis Lachapelle 06c10d8b37 Merge to 2.3.21
Conflicts:
	SoObjects/Appointments/SOGoAppointmentFolder.m
2017-06-01 09:54:00 -04:00
Francis Lachapelle 71fe42e8c3 Update ChangeLog 2017-06-01 09:48:48 -04:00
Francis Lachapelle 875b1c9836 Preparation for release 2.3.21 2017-06-01 09:47:58 -04:00
Francis Lachapelle 428d179b9f (js) Update CKEditor to version 4.7.0 2017-06-01 09:44:32 -04:00
Francis Lachapelle e73a3495bb Respect languages preferences on login page
Fixes #4169
2017-05-31 10:48:35 -04:00
Francis Lachapelle 678cf66a57 Add Latvian (lv) translation (cont'd) 2017-05-31 06:32:40 -04:00
Francis Lachapelle 0cca551c22 Add Latvian (lv) translation 2017-05-30 17:27:49 -04:00
Ludovic Marcotte 98f042b390 (fix) fixed typos in tools' help (fixes #4175) 2017-05-30 14:47:55 -04:00
Ludovic Marcotte bbac466276 (fix) sanity check when no defaults are found (fixes #4179) 2017-05-30 14:45:21 -04:00
Ludovic Marcotte d7eb751951 Updated NEWS 2017-05-30 13:16:35 -04:00
Ludovic Marcotte 7cc3ff2fcc (fix) remove any trailing cr (fixes #4172) 2017-05-30 13:16:01 -04:00
Ludovic Marcotte ec397b39b0 (feat) added custom fields support from Thunderbird's address book 2017-05-30 10:38:31 -04:00
Francis Lachapelle 95d08c0150 Newly subscribed calendars are excluded from FB
Fixes #3354
2017-05-30 09:40:04 -04:00
Ludovic Marcotte b3149ee7c2 Fixed typo 2017-05-17 09:56:38 -04:00
Ludovic Marcotte 20cbe3cf77 Updated NEWS 2017-05-17 09:46:27 -04:00
Ludovic Marcotte a57cad33f6 (feat) now able to subscribe/unsubscribe folders using sogo-tool 2017-05-17 09:45:47 -04:00
Francis Lachapelle 5027aabc1b Improve validation of mail account delegators 2017-05-08 11:35:56 -04:00
Francis Lachapelle 149997b4cd Fix mail delegation of pristine user accounts
Fixes #4160
2017-05-08 11:27:50 -04:00
Ludovic Marcotte 9b4dd624c6 Updated NEWS 2017-05-08 10:46:12 -04:00
Ludovic Marcotte c3121c50d5 (fix) make sure to use crypt as the scheme for md5/sha256/sha512 (fixes #4137) 2017-05-08 10:45:01 -04:00
Francis Lachapelle 3f698447b9 Properly honor "include in freebusy"
Fixes #3354
2017-04-27 09:02:46 -04:00
Francis Lachapelle 2705b5956a (doc) Update installation guide 2017-04-26 09:42:25 -04:00
Francis Lachapelle e0cb700f54 (js) Prevent 304 HTTP status code in IE11 2017-04-21 16:42:08 -04:00
Ludovic Marcotte 65e735a314 Updated NEWS 2017-04-21 15:31:54 -04:00
Ludovic Marcotte 89400fe980 (feat) added photo support in GAL search ops 2017-04-21 15:30:20 -04:00
Ludovic Marcotte e6baba445f Updated comment 2017-04-20 14:36:03 -04:00
Ludovic Marcotte 341885542b Updated NEWS 2017-04-20 14:30:54 -04:00
Ludovic Marcotte 9c1e481d54 (fix) handle properly windows-1255 charset (fixes #4124) 2017-04-20 14:30:13 -04:00
Ludovic Marcotte 8fc55833d2 Updated NEWS 2017-04-12 16:37:39 -04:00
Ludovic Marcotte 43385ce5bf (fix) enhance display of all-day invitations (fixes #4145) 2017-04-12 16:13:40 -04:00
Ludovic Marcotte f28b7f2f8c Updated NEWS 2017-04-12 13:05:06 -04:00
Ludovic Marcotte 7a418582c4 (fix) avoid sending IMIP messages for all EAS clients (fixes #4022) 2017-04-12 13:04:29 -04:00
Ludovic Marcotte 34e22dad42 (fix) set RSVP when sending events invite 2017-04-12 13:00:20 -04:00
Ludovic Marcotte b8ae9afbd2 Updated NEWS 2017-04-11 10:15:32 -04:00
Ludovic Marcotte be527031bc (fix) remove over EAS alarms if we don't want them (fixes #4059) 2017-04-11 10:14:50 -04:00
Ludovic Marcotte b4f5430ac5 Updated NEWS 2017-04-07 13:45:38 -04:00
Ludovic Marcotte 8b307d8ac6 (fix) correctly set flags when ReplaceMime is set (fixes #4133) 2017-04-07 13:44:21 -04:00
Ludovic Marcotte 2e8c6680fe (fix) check if found before changing location 2017-04-06 14:25:06 -04:00
Ludovic Marcotte d9d4808d29 (fix) protect ourself from broken SOPE/SOGo installs (fixes #4117) 2017-04-06 11:03:50 -04:00
Ludovic Marcotte 43dc7dee87 (fix) calendar component move across collections (fixes #4116) 2017-03-31 15:33:19 -04:00
Ludovic Marcotte 9995ccc29f (fix) more fixes for #3905 2017-03-24 11:37:54 -04:00
Ludovic Marcotte 28ab0015a9 (fix) more fixes for #3905 2017-03-24 11:11:10 -04:00
Francis Lachapelle 2c8f56fb67 Merge to 2.3.20 2017-03-10 11:14:52 -05:00
Ludovic Marcotte 4cd8a32081 Release preparation 2017-03-10 08:58:46 -05:00
Ludovic Marcotte fbc6bb71a8 (fix) don't abort on unhandled requests 2017-03-09 13:57:27 -05:00
Francis Lachapelle 4ecff8a437 (i18n) Update translations and add Hebrew 2017-03-09 12:31:54 -05:00
Francis Lachapelle e5b4a12f8a (js) Update CKEditor to version 4.6.2 2017-03-09 11:52:04 -05:00
Francis Lachapelle 41ea0341a8 Fix typo in Scheduler
Fixes #4072
2017-03-08 16:04:07 -05:00
Francis Lachapelle 9df8eb367a (js) Prevent 304 HTTP status code in IE
Fixes #4066
2017-03-08 15:58:47 -05:00
Ludovic Marcotte 4f73005d1d (fix) wrong var type declaration 2017-03-08 09:32:05 -05:00
Ludovic Marcotte 45255cd27f (fix) brought bcc handling code from v3 2017-03-08 08:52:40 -05:00
Francis Lachapelle 8c7a2cb2eb (js) Fix SCAYT automatic language selection 2017-03-07 15:13:04 -05:00
Ludovic Marcotte 2428c3cb3d Updated NEWS 2017-03-07 10:47:53 -05:00
Ludovic Marcotte 05ab2015c6 (fix) remove attendees that have the same identity of the organizer (fixes #3905) 2017-03-07 10:46:25 -05:00
Ludovic Marcotte 847313fe25 Updated NEWS 2017-03-03 14:14:49 -05:00
Ludovic Marcotte 84deb2fe45 (fix) fixed handling of exdates and proper intersection for fbinfo (fixes #4051) 2017-03-03 14:14:16 -05:00
Ludovic Marcotte 2f56bb43be (fix) keep UID during MOVE 2017-02-22 11:35:07 -05:00
Ludovic Marcotte 3cfbaecbf8 (fix) minor fixes in tools 2017-02-22 11:00:32 -05:00
Ludovic Marcotte 48861491c1 Updated NEWS 2017-02-21 10:15:34 -05:00
Ludovic Marcotte 6720b9aaed (fix) safety checks, fixed remove ALL and added add ALL 2017-02-21 10:14:00 -05:00
Ludovic Marcotte 505079dfda (feat) new sogo-tool manage-acl feature to get/add/remove ACLs from GCS folders 2017-02-21 10:13:47 -05:00
Ludovic Marcotte e0497448e6 (feat) added delete capability to sogo-tool checkup 2017-02-20 13:37:53 -05:00
Ludovic Marcotte f4394ad8b5 (fix) set the memcache retry timeout to 5 seconds 2017-02-20 10:05:52 -05:00
Ludovic Marcotte 3c2fa1c769 (fix) enable tcp_nodelay for memcache 2017-02-20 09:54:20 -05:00
Ludovic Marcotte 12fb067f47 Updated NEWS 2017-02-09 14:42:10 -05:00
Ludovic Marcotte bad4abeba7 (feat) new sogo-tool checkup command to make sure user's data is sane
Conflicts:
	Tools/GNUmakefile
2017-02-09 14:41:25 -05:00
Ludovic Marcotte 0c61de49ee (fix) properly handle canceled appointments 2017-02-03 15:26:55 -05:00
Ludovic Marcotte 7436d54f9e Updated NEWS 2017-02-01 13:05:19 -05:00
Ludovic Marcotte 4bb5d15cfa (fix) improve EAS parameters parsing (fixes #4003) 2017-02-01 13:04:18 -05:00
Francis Lachapelle 94a94e3c2a Fix condition when enabling Vacation message 2017-02-01 08:18:40 -05:00
Ludovic Marcotte 01983f60d1 (fix) cache sogo_folder_info records and avoid phantom subscriptions (fixes #4010) 2017-01-31 16:01:26 -05:00
Ludovic Marcotte 9a1f91ead2 Revert "(fix) properly honor "include in freebusy" (fixes #3354)"
This reverts commit 42c2c66caa.
2017-01-30 08:40:01 -05:00
Francis Lachapelle 4a3f17506c Remove debugging output 2017-01-29 18:07:59 -05:00
Ludovic Marcotte a7740dc5ed Updated NEWS 2017-03-18 15:37:15 -04:00
Ludovic Marcotte 3155ecf325 (fix) fix opacity in freebusy over EAS 2017-03-18 15:35:45 -04:00
Ludovic Marcotte fb8ba8f3b9 (fix) remove old code conflicting with #3905 2017-03-15 10:38:20 -04:00
Francis Lachapelle 6cff413e4d Fix for Sieve test 2017-01-23 11:37:52 -05:00
Francis Lachapelle 9539b8ce6e Add support for date extension of Sieve
Fixes #1530, #1949
2017-01-20 11:29:32 -05:00
Ludovic Marcotte 86c0f32fe6 (fix) improve doc around SOGoTimeZone (fixes #3995) 2017-01-18 16:17:52 -05:00
Ludovic Marcotte b01988b6a6 Updated NEWS 2017-01-13 13:19:11 -05:00
Ludovic Marcotte 59281f02c1 (fix) return if not content is there, to avoid random crash 2017-01-13 13:17:42 -05:00
Ludovic Marcotte a42d6ce450 (fix) remove all alarms before IMIP reply (fixes #3925) 2017-01-13 13:17:20 -05:00
Ludovic Marcotte 494b2d7b7e (fix) some more memory info 2017-01-09 16:09:35 -05:00
Ludovic Marcotte ccb176d996 (fix) be a bit more verbose about memory usage 2017-01-09 16:04:16 -05:00
Francis Lachapelle 42fa0a273e Update ChangeLog 2017-01-06 20:58:17 -05:00
Francis Lachapelle 07872d753c (js) Update ResizeSensor.js 2017-01-06 20:58:17 -05:00
Francis Lachapelle 0305d00d50 (js) Update CKEditor to version 4.6.1 2017-01-06 20:58:17 -05:00
Francis Lachapelle 3b65b6e2cf (i18n) Update translations 2017-01-06 20:58:16 -05:00
Ludovic Marcotte 43a68979ac Updated NEWS 2017-01-06 20:58:16 -05:00
Ludovic Marcotte 4cd2ad0337 (fix) handle sha512-crypt with rounds 2017-01-06 20:58:16 -05:00
Ludovic Marcotte ca57ac4677 Updated NEWS 2017-01-06 20:58:16 -05:00
Ludovic Marcotte 0063320d70 (fix) correctly handle all identities during IMIP status update 2017-01-06 20:58:15 -05:00
Ludovic Marcotte f7462fd5ee (fix) small optimization over previous commit 2017-01-06 20:58:15 -05:00
Ludovic Marcotte 893fdda43b (fix) handle all identities during IMIP REPLY processing 2017-01-06 20:58:15 -05:00
Francis Lachapelle 62df4fffa3 Fix support for recurrent tasks 2017-01-06 20:58:15 -05:00
Francis Lachapelle cde6fe520c Add parameter validation to alarmsListAction 2017-01-06 20:58:15 -05:00
Francis Lachapelle d548cea518 (js) Use GET instead of POST when form is empty
Fixes #3978, #3979
2017-01-06 20:58:15 -05:00
Ludovic Marcotte 278b65d89c (fix) make sure we compare the organizer's email only 2017-01-06 20:58:14 -05:00
Ludovic Marcotte 46261d61ff (fix) make sure to bump LAST-MODIFIED to trigger all auto-scheduling code 2017-01-06 20:58:14 -05:00
Ludovic Marcotte d2952f1c91 (fix) disabled bias computation for now 2017-01-06 20:58:14 -05:00
Ludovic Marcotte f10b3e8be0 Updated NEWS 2017-01-06 20:58:14 -05:00
Ludovic Marcotte 7837343383 (fix) fix events in floating time during CalDAV's PUT operation (fixes #2865) 2017-01-06 20:58:14 -05:00
Ludovic Marcotte 22acfc943c Updated NEWS 2017-01-06 20:58:14 -05:00
Ludovic Marcotte daad202e50 (fix) provide correct error response to EAS client when sending big mails (fixes #3956) 2017-01-06 20:58:14 -05:00
Ludovic Marcotte a188b5132a Updated NEWS 2017-01-06 20:58:13 -05:00
Ludovic Marcotte 56b92307b5 (fix) handle semicolon in value during LDIF import (fixes #1760) 2017-01-06 20:58:13 -05:00
Ludovic Marcotte a479356fbf Updated NEWS 2017-01-06 20:58:13 -05:00
Ludovic Marcotte 8166f48d10 (fix) small CSS fix to allow scrolling in the attachment menu (fixes #3413) 2017-01-06 20:58:13 -05:00
Ludovic Marcotte a9eecd76b3 Updated NEWS 2017-01-06 20:58:13 -05:00
Ludovic Marcotte f39e4e880e (fix) handle URI in vCard photos (fixes #2683) 2017-01-06 20:58:13 -05:00
Ludovic Marcotte 399dad7d23 Updated NEWS 2017-01-06 20:58:13 -05:00
Ludovic Marcotte 1088b027a7 (feat) added photo support for LDIF import (fixes #1084) 2017-01-06 20:58:12 -05:00
Ludovic Marcotte baa9057fd6 Updated NEWS 2017-01-06 20:58:12 -05:00
Ludovic Marcotte 90762689cf (fix) add support for "other" addresses (fixes #3966) 2017-01-06 20:58:12 -05:00
Ludovic Marcotte 4c979e3f14 (fix) avoid trying to parse empty request (fixes #3969) 2017-01-06 20:58:12 -05:00
Ludovic Marcotte d91d5b7a2d (fix) properly escape values (fixes #3241) 2017-01-06 20:58:12 -05:00
Ludovic Marcotte 617fcbbf19 (fix) set a max-height so we can scroll in the attendees list (fixes #3666) 2017-01-06 20:58:12 -05:00
Ludovic Marcotte b3741e65c8 Updated NEWS 2017-01-06 20:58:12 -05:00
Ludovic Marcotte 81df371e9f (feat) added new SOGoMaximumMessageSizeLimit config parameter (fixes #3510) 2017-01-06 20:58:11 -05:00
Ludovic Marcotte c4c1e87612 Updated NEWS 2017-01-06 20:58:11 -05:00
Ludovic Marcotte 4f9d514c2f (fix) properly honor "include in freebusy" (fixes #3354) 2017-01-06 20:58:11 -05:00
Ludovic Marcotte 7a0908c34a Updates NEWS 2017-01-06 20:58:11 -05:00
Ludovic Marcotte ced9369623 (fix) do not decode from hex the event's UID (fixes #3965) 2017-01-06 20:58:11 -05:00
Ludovic Marcotte aba24c05fa (fix) also use the filter when doing DN lookups (fixes #2253) 2017-01-06 20:58:11 -05:00
Ludovic Marcotte 0db668a0ea Updated NEWS 2017-01-06 20:58:11 -05:00
Ludovic Marcotte d53f477c8d (fix) append .ics extension if not present when importing events (fixes #2308) 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 0b243987e0 Updated NEWS 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 6bf26d45b9 (feat) handle alarms for tasks (fixes #3964) 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 64b72969d3 Updated NEWS 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 727c7ed89f (fix) use the source's domain if none is defined (fixes #3523) 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 3484cd570c (fix) avoid double encoding (fixes #3960) 2017-01-06 20:58:10 -05:00
Ludovic Marcotte b9b8983343 (fix) sage-guard against empty rrule 2017-01-06 20:58:10 -05:00
Ludovic Marcotte 9c1f36d615 Updated NEWS 2017-01-06 20:58:09 -05:00
Ludovic Marcotte ff43324644 (fix) 30 mins offset in FB 2017-01-06 20:58:09 -05:00
Ludovic Marcotte ef32b0c277 (fix) return a 404 for public user 2017-01-06 20:58:09 -05:00
Ludovic Marcotte da3c68c708 Updated NEWS 2017-01-06 20:58:09 -05:00
Ludovic Marcotte 3d7071d018 (fix) return login page for unknown users (fixes #2135) 2017-01-06 20:58:09 -05:00
Ludovic Marcotte 0d6c6bb425 Updated NEWS 2017-01-06 20:58:09 -05:00
Ludovic Marcotte 60819d8233 (fix) correctly block if fail count is within interval (fixes #2850) 2017-01-06 20:58:08 -05:00
Ludovic Marcotte daadc6df69 Updated NEWS 2017-01-06 20:58:08 -05:00
Ludovic Marcotte 848201850a (fix) properly skip folders we don't want (fixes #3943) 2017-01-06 20:58:08 -05:00
Ludovic Marcotte 6649d7101e (fix) make sure we safely escape all chars 2017-01-06 20:58:08 -05:00
Francis Lachapelle 3a96b3b315 (js) Update jQuery (1.12.4) and jQuery-UI (1.11.4)
This fixes the issue of attaching a file to a draft by drag'n'drop.
2017-01-06 20:58:08 -05:00
Ludovic Marcotte cbcc942e73 (fix) prevent using localhost on additional IMAP accounts 2017-01-06 20:58:08 -05:00
Ludovic Marcotte 5433cf19da (fix) properly set interval for monthly recurring events using EAS 2017-01-06 20:58:07 -05:00
Ludovic Marcotte 26bfbcf083 Updated NEWS 2017-01-06 20:58:07 -05:00
Ludovic Marcotte 914f37c3b5 (fix) properly escape all GAL responses (fixes #3923) 2017-01-06 20:58:07 -05:00
Francis Lachapelle d4a4e49521 Add handling of BYSETPOS for BYDAY in repeat rule 2017-01-06 20:58:07 -05:00
Francis Lachapelle a0e7e9d24e Fix MSExchangeFreeBusySOAPRequest.wod 2017-01-06 20:58:07 -05:00
Francis Lachapelle 5afb4b7dd3 Update ChangeLog 2017-01-06 20:56:37 -05:00
Francis Lachapelle bdcba43f10 (js) Update ResizeSensor.js 2017-01-06 20:56:10 -05:00
Francis Lachapelle de46924950 (js) Update CKEditor to version 4.6.1 2017-01-06 20:51:34 -05:00
Francis Lachapelle 8a2f88bc07 (i18n) Update translations 2017-01-06 20:38:01 -05:00
Ludovic Marcotte 82fbeee7e5 Updated NEWS 2017-01-06 16:02:47 -05:00
Ludovic Marcotte cd3d59428f (fix) handle sha512-crypt with rounds 2017-01-06 15:53:11 -05:00
Ludovic Marcotte 2d2f3fbe7b Updated NEWS 2017-01-06 14:34:18 -05:00
Ludovic Marcotte 59734d18e8 (fix) correctly handle all identities during IMIP status update 2017-01-06 14:33:18 -05:00
Ludovic Marcotte d1cc3e8c25 (fix) small optimization over previous commit 2017-01-06 14:30:12 -05:00
Ludovic Marcotte d434f709bf (fix) handle all identities during IMIP REPLY processing 2017-01-06 14:24:37 -05:00
Francis Lachapelle 441a503802 Fix support for recurrent tasks 2017-01-06 11:59:15 -05:00
Francis Lachapelle a883d93a80 Add parameter validation to alarmsListAction 2017-01-06 11:48:10 -05:00
Francis Lachapelle 2c801e7756 (js) Use GET instead of POST when form is empty
Fixes #3978, #3979
2017-01-06 11:38:52 -05:00
Ludovic Marcotte e71709c09f (fix) make sure we compare the organizer's email only 2017-01-06 11:04:29 -05:00
Ludovic Marcotte 926cf6f34c (fix) make sure to bump LAST-MODIFIED to trigger all auto-scheduling code 2017-01-06 09:54:54 -05:00
Ludovic Marcotte d139d9e75d (fix) disabled bias computation for now 2017-01-05 09:27:54 -05:00
Ludovic Marcotte 160450f15d Updated NEWS 2016-12-30 12:28:35 -05:00
Ludovic Marcotte 72c03390cc (fix) fix events in floating time during CalDAV's PUT operation (fixes #2865) 2016-12-30 12:27:33 -05:00
Ludovic Marcotte 2af6674ce8 (fix) added fix from PR#224, in v2 instead of maint 2016-12-30 10:08:18 -05:00
extrafu 52a3508479 Merge pull request #231 from inverse-inc/revert-224-maint
Revert "Fixup empty calendars, sogod crashing when it tries to call"
2016-12-30 10:06:55 -05:00
extrafu 3a33b465c8 Revert "Fixup empty calendars, sogod crashing when it tries to call" 2016-12-30 10:06:47 -05:00
extrafu 559bdf15a8 Merge pull request #224 from buzzdeee/maint
Fixup empty calendars, sogod crashing when it tries to call
2016-12-30 10:06:30 -05:00
Ludovic Marcotte c36b90dc3d Updated NEWS 2016-12-30 10:00:34 -05:00
Ludovic Marcotte d8582dbcc0 (fix) provide correct error response to EAS client when sending big mails (fixes #3956) 2016-12-30 09:59:47 -05:00
Ludovic Marcotte 0463d7f88c Updated NEWS 2016-12-29 16:22:39 -05:00
Ludovic Marcotte e46c51e242 (fix) handle semicolon in value during LDIF import (fixes #1760) 2016-12-29 16:22:05 -05:00
Ludovic Marcotte 6349365dc7 Updated NEWS 2016-12-29 15:34:11 -05:00
Ludovic Marcotte a8335541e8 (fix) small CSS fix to allow scrolling in the attachment menu (fixes #3413) 2016-12-29 15:32:56 -05:00
Ludovic Marcotte 119792786f Updated NEWS 2016-12-29 14:36:31 -05:00
Ludovic Marcotte 30513c7ce8 (fix) handle URI in vCard photos (fixes #2683) 2016-12-29 14:35:42 -05:00
Ludovic Marcotte 2a648895df Updated NEWS 2016-12-29 14:14:13 -05:00
Ludovic Marcotte 7049519d85 (feat) added photo support for LDIF import (fixes #1084) 2016-12-29 14:13:31 -05:00
Ludovic Marcotte 51114438aa Updated NEWS 2016-12-29 10:54:17 -05:00
Ludovic Marcotte 4d3de95f39 (fix) add support for "other" addresses (fixes #3966) 2016-12-29 10:53:06 -05:00
Ludovic Marcotte 366681e6b2 (fix) avoid trying to parse empty request (fixes #3969) 2016-12-29 09:55:56 -05:00
Ludovic Marcotte dd932802f4 (fix) properly escape values (fixes #3241) 2016-12-28 14:11:25 -05:00
Ludovic Marcotte 7a55338c08 (fix) set a max-height so we can scroll in the attendees list (fixes #3666) 2016-12-28 11:53:23 -05:00
Ludovic Marcotte 6ea37ce3e6 Updated NEWS 2016-12-28 10:24:58 -05:00
Ludovic Marcotte 3f68fb7b53 (feat) added new SOGoMaximumMessageSizeLimit config parameter (fixes #3510) 2016-12-28 10:18:10 -05:00
Ludovic Marcotte d5eb18a247 Updated NEWS 2016-12-23 11:38:03 -05:00
Ludovic Marcotte 42c2c66caa (fix) properly honor "include in freebusy" (fixes #3354) 2016-12-23 11:37:27 -05:00
Ludovic Marcotte 8c6cc990df Updates NEWS 2016-12-23 10:21:27 -05:00
Ludovic Marcotte 4602e70b91 (fix) do not decode from hex the event's UID (fixes #3965) 2016-12-23 10:20:50 -05:00
Ludovic Marcotte b7e40776ad (fix) also use the filter when doing DN lookups (fixes #2253) 2016-12-22 14:27:07 -05:00
Ludovic Marcotte 122f912718 Updated NEWS 2016-12-21 11:46:10 -05:00
Ludovic Marcotte 3c8412e90c (fix) append .ics extension if not present when importing events (fixes #2308) 2016-12-21 11:44:05 -05:00
Ludovic Marcotte ee265c2ab7 Updated NEWS 2016-12-21 08:51:04 -05:00
Ludovic Marcotte 73309f9c24 (feat) handle alarms for tasks (fixes #3964) 2016-12-21 08:49:39 -05:00
Ludovic Marcotte 4221b6dfab Updated NEWS 2016-12-20 13:16:52 -05:00
Ludovic Marcotte e64b3bc1f2 (fix) use the source's domain if none is defined (fixes #3523) 2016-12-20 13:16:01 -05:00
Ludovic Marcotte ffa2efbc7d (fix) avoid double encoding (fixes #3960) 2016-12-20 08:56:48 -05:00
Ludovic Marcotte 9d8778b10d (fix) sage-guard against empty rrule 2016-12-19 15:02:07 -05:00
Ludovic Marcotte e436816fc3 Updated NEWS 2016-12-16 10:09:37 -05:00
Ludovic Marcotte 0e7ffa18a1 (fix) 30 mins offset in FB 2016-12-16 10:08:47 -05:00
Ludovic Marcotte fd0180fe74 (fix) return a 404 for public user 2016-12-16 09:08:24 -05:00
Ludovic Marcotte 629b7f4d22 Updated NEWS 2016-12-15 14:24:42 -05:00
Ludovic Marcotte a3047e0756 (fix) return login page for unknown users (fixes #2135) 2016-12-15 14:23:02 -05:00
Ludovic Marcotte bb180710c7 Updated NEWS 2016-12-14 21:22:23 -05:00
Ludovic Marcotte b0c355a36c (fix) correctly block if fail count is within interval (fixes #2850) 2016-12-14 21:21:20 -05:00
Ludovic Marcotte c7c5046cfb Updated NEWS 2016-12-14 13:46:55 -05:00
Ludovic Marcotte eff3446353 (fix) properly skip folders we don't want (fixes #3943) 2016-12-14 13:43:12 -05:00
Ludovic Marcotte c5a3f06538 (fix) make sure we safely escape all chars 2016-12-09 10:47:44 -05:00
Francis Lachapelle 8b2a6b05f1 (js) Update jQuery (1.12.4) and jQuery-UI (1.11.4)
This fixes the issue of attaching a file to a draft by drag'n'drop.
2016-12-08 14:36:46 -05:00
Ludovic Marcotte cab308a2c7 (fix) prevent using localhost on additional IMAP accounts 2016-12-05 14:52:09 -05:00
Ludovic Marcotte a556af43c1 (fix) properly set interval for monthly recurring events using EAS 2016-12-02 09:21:54 -05:00
Ludovic Marcotte 595a6ed048 Updated NEWS 2016-12-01 09:41:40 -05:00
Ludovic Marcotte d6440b9dd5 (fix) properly escape all GAL responses (fixes #3923) 2016-12-01 09:41:07 -05:00
Francis Lachapelle 9529881948 Add handling of BYSETPOS for BYDAY in repeat rule 2016-11-30 08:36:43 -05:00
Francis Lachapelle b327be656b Fix MSExchangeFreeBusySOAPRequest.wod 2016-11-29 16:16:02 -05:00
Ludovic Marcotte 1b13d7b862 Version bump 2016-11-28 14:36:18 -05:00
Ludovic Marcotte 3fe20b4b2f Update ChangeLog 2016-11-28 14:35:19 -05:00
Francis Lachapelle 62813cd4b8 (js) Update CKEditor to version 4.6.0 2016-11-28 14:23:32 -05:00
Ludovic Marcotte f370ce71c6 (fix) fixed missing include leading to compilation errors 2016-11-28 14:10:00 -05:00
Francis Lachapelle b450f999f0 (i18n) Update translations 2016-11-28 14:07:05 -05:00
Francis Lachapelle 6270a11d73 Improve sort validation in Contacts module 2016-11-28 10:53:47 -05:00
Ludovic Marcotte 2ad709e4d1 (fix) use GMT + adjust bias when querying Exchange's FB info
Conflicts:

	SoObjects/Appointments/MSExchangeFreeBusySOAPRequest.m
2016-11-25 15:15:37 -05:00
Ludovic Marcotte 4c87898167 (fix) wrong check for delete permission 2016-11-24 15:49:54 -05:00
Ludovic Marcotte 0329133601 (fix) also filter out recurrence-id 2016-11-24 15:44:07 -05:00
Ludovic Marcotte b2f3585739 (fix) don't check Dovecot conditions if we're using IMAP annotations 2016-11-24 11:43:06 -05:00
Francis Lachapelle 9b7b637866 Update NEWS file 2016-11-23 15:24:05 -05:00
Francis Lachapelle 3711e7d123 Restore attributes of base64-encoded img tags
Fixes #3814
2016-11-23 15:18:17 -05:00
Francis Lachapelle 1ff24dddfc Respect mailbox administration rights of user 2016-11-23 15:13:49 -05:00
Francis Lachapelle eee1cb19d0 Formatting of SOGoDefaults.plist 2016-11-23 09:14:58 -05:00
Ludovic Marcotte 26c2fd3d28 (fix) avoid redeclaration 2016-11-21 10:52:16 -05:00
Ludovic Marcotte 73d663fe85 (feat) relaxed permission requirements for subscription synchronizations (fixes #3118 and #3180)
Conflicts:

	NEWS
2016-11-21 10:49:33 -05:00
Ludovic Marcotte 01b0b5f783 (fix) adpated previous commit for v2 non-single instance store 2016-11-21 10:00:01 -05:00
Ludovic Marcotte 8cb6061b55 (feat) added content "touching" capability (for developers) 2016-11-21 09:58:40 -05:00
Ludovic Marcotte b5fa808758 (fix) removed unused imports 2016-11-16 14:48:29 -05:00
Ludovic Marcotte c254ae327b (feat) sha256/512-crypt password support for SQL sources 2016-11-15 14:23:09 -05:00
Ludovic Marcotte 53b1cc5477 (fix) fixed broken string initializations (fixes #3899) 2016-11-15 14:22:46 -05:00
Ludovic Marcotte d992ab921f (fix) fixed method usage 2016-11-15 14:22:37 -05:00
Ludovic Marcotte c79e3790c5 (feat) added sha256-crypt and sha512-crypt support 2016-11-15 14:22:30 -05:00
Ivan Zakharyaschev dc70e7e691 An attempt to fix the unrecognized selector exception (by writing the queries analoguously to the other ones) 2016-11-14 11:18:42 -05:00
Ludovic Marcotte 5f4acda249 (fix) fix EAS download of attachments on iOS 10 2016-11-11 08:34:41 -05:00
Ludovic Marcotte ebd4058b11 Updated NEWS 2016-11-08 10:32:01 -05:00
Ludovic Marcotte 4229918693 (fix) we now always use utf8 when sending IMIP messages 2016-11-08 10:30:44 -05:00
Francis Lachapelle 7a628bac12 Allow a mailbox to be deleted immediately
Fixes #3875
2016-11-08 10:26:55 -05:00
Francis Lachapelle eb0917f42f Update time zones to version 2016h 2016-11-08 09:06:41 -05:00
Francis Lachapelle 7d70538517 Update NEWS file 2016-11-07 15:27:28 -05:00
Francis Lachapelle e948b45899 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-07 15:25:59 -05:00
Francis Lachapelle 892db449e5 Untabify + indent 2016-11-07 15:25:35 -05:00
Francis Lachapelle 7d1549250d Fix condition in weekly recurrence calculator 2016-11-07 15:24:52 -05:00
Ludovic Marcotte cdae46c7c1 Updated NEWS 2016-11-03 13:51:07 -04:00
Ludovic Marcotte d74755fb63 (feat) we now also search on the send for EAS Search ops 2016-11-03 13:50:37 -04:00
Sebastian Reitenbach f3aa717570 Fixup empty calendars, sogod crashing when it tries to call
stringByEscapingHTMLString on NSNull objects. Those happen
to be there when not all fields of the calendar are filled
in. Leading to errors like:

ERROR(-[NSNull(misc) forwardInvocation:]): called selector stringByEscapingHTMLString on NSNull !
and subsequent crashes on the instance serving that request.
2016-11-02 08:17:31 +01:00
Ludovic Marcotte feca02e740 (fix) support replied/forwarded flags using EAS (fixes #3796) 2016-10-31 10:28:20 -04:00
Ludovic Marcotte bde322b0b4 Updated NEWS 2016-10-31 10:27:02 -04:00
Ludovic Marcotte 56a9f5f215 (feat) initial support for EAS recurring tasks 2016-10-31 10:23:12 -04:00
Francis Lachapelle fce60e1c25 Improve validation of mail account delegators 2016-10-25 17:33:55 -04:00
Francis Lachapelle 0d817c8e18 Cleanup SOGoTaskObject.{h,m} 2016-10-25 17:33:55 -04:00
Ludovic Marcotte 700a1aa706 (fix) make sure consider non-void GUID 2016-10-25 11:35:04 -04:00
Francis Lachapelle ef84985025 Fix support for recurrent tasks 2016-10-21 17:30:47 -04:00
Ludovic Marcotte 827e9cfca6 Release preparation 2016-10-20 10:47:50 -04:00
Ludovic Marcotte 6d9c5e4542 (fix) make sure we unencode @ signs before storing them in the ACL table 2016-10-20 10:28:11 -04:00
Ludovic Marcotte cad99d476d (fix) We never send IMIP reply when the "initiator" is Outlook 2013/2016 over EAS 2016-10-19 15:18:44 -04:00
Ludovic Marcotte eaf0a19002 (fix) improve handling of email folders without a parent 2016-10-18 19:41:47 -04:00
Ludovic Marcotte a912fe0c5e Updated NEWS 2016-10-17 11:42:13 -04:00
Ludovic Marcotte 73cc81c71f (fix) only consider SMTP proxyAddresses for AD (fixes #3842) 2016-10-17 11:40:17 -04:00
Francis Lachapelle 5796992b56 (js,css) Resizable left column in attendees editor
Will not work in IE since it doesn't support the "resize" CSS property.

Fixes #1479, #3667
2016-10-06 12:27:59 -04:00
Francis Lachapelle be12528a0e Fix condition in UIxPreferences.m 2016-10-04 06:14:41 -04:00
Francis Lachapelle 0fc3791f37 Allow custom email to be one of the user's profile
Fixes #3551
2016-10-03 10:33:49 -04:00
Ludovic Marcotte 3badf13c22 Updated NEWS 2016-10-03 09:09:14 -04:00
Ludovic Marcotte 665367f8f8 (fix) fixed recurring events with timezones for EAS (fixes #3822) 2016-10-03 09:01:20 -04:00
Ludovic Marcotte 340c110442 Updated NEWS 2016-09-29 13:08:21 -04:00
Ludovic Marcotte 81d3d3bc5b (fix) make sure we don't sleep for too long when EAS processes need interruption 2016-09-29 13:07:29 -04:00
Ludovic Marcotte 686b32d78b Release preparation 2016-09-28 10:58:05 -04:00
Francis Lachapelle 6b322e6b75 Fix Serbian translation 2016-09-28 10:37:14 -04:00
Francis Lachapelle 29d004c4a4 Add Serbian translation and update translations 2016-09-28 10:02:25 -04:00
Francis Lachapelle 1a8b82d75d Update NEWS file 2016-09-28 09:34:22 -04:00
Francis Lachapelle ca87ac05a2 Update CKEditor to version 4.5.11 2016-09-28 09:25:09 -04:00
Ludovic Marcotte 0c33bc58b6 Removed old file 2016-09-28 08:56:00 -04:00
Ludovic Marcotte 6319007631 Updated NEWS 2016-09-27 19:51:39 -04:00
Ludovic Marcotte 156a83046b (fix) make sure new cards always have a UID (fixes #3819) 2016-09-27 19:51:16 -04:00
Ludovic Marcotte 84e170a601 (fix) correctly set percent-complete for tasks from the list view (fixes #3197) 2016-09-27 13:43:21 -04:00
Francis Lachapelle 5ada0024af Caching expiration of ACLs assigned to LDAP groups
Fixes #2867
2016-09-26 17:27:12 -04:00
Ludovic Marcotte 7daa6728a1 Updated NEWS 2016-09-26 15:25:07 -04:00
Ludovic Marcotte 1cbced4965 (fix) search in all domain sources for Apple Calendar and properly handle groups 2016-09-26 15:24:51 -04:00
Ludovic Marcotte 323bc50f10 Updated NEWS 2016-09-23 11:30:34 -04:00
Ludovic Marcotte 8c81d55061 (fix) handle 120 EAS status code when message submission fails (fixes #3774) 2016-09-23 11:30:10 -04:00
Ludovic Marcotte 36fb9c138e (fix) added global search for Android 6 2016-09-22 14:23:14 -04:00
Ludovic Marcotte 81aee49555 (fix) avoid generating invalid response if mail isn't found 2016-09-22 12:57:28 -04:00
Ludovic Marcotte ed4c2b3dca (fix) fixed EAS search for iOS devices 2016-09-22 12:55:04 -04:00
Ludovic Marcotte 677df619fd (fix) compiler fixes + first round of iOS fixes 2016-09-22 11:43:03 -04:00
Ludovic Marcotte 40cd481ec0 Updated NEWS 2016-09-21 09:22:26 -04:00
Ludovic Marcotte cfcc4922ac (feat) initial EAS support for server-side mailbox search operations 2016-09-21 09:21:31 -04:00
Ludovic Marcotte 1cf85475d7 Updates for the release 2016-09-14 09:27:29 -04:00
Ludovic Marcotte 83ce0f01b4 Updated NEWS 2016-09-14 09:20:45 -04:00
Ludovic Marcotte d1dcb820bd (fix) EAS yearly rrule generation + small EAS MoveItems fix 2016-09-14 09:20:15 -04:00
Ludovic Marcotte e098b3d050 Updated NEWS 2016-09-13 11:06:32 -04:00
Ludovic Marcotte 18f7bc7e69 (fix) handle binary just like 7 and 8bit 2016-09-13 11:02:26 -04:00
Ludovic Marcotte 1a1afb7b95 Updated NEWS 2016-08-29 16:13:33 -04:00
Ludovic Marcotte 44f7fdc50a (fix) make sure to escape email and all address fields 2016-08-29 15:02:22 -04:00
Francis Lachapelle 3de6e0fc5a Until date of repeat must end after first event 2016-08-29 14:36:04 -04:00
Ludovic Marcotte 928b18890c Updated NEWS 2016-08-19 14:13:21 -04:00
Ludovic Marcotte 828fed54a0 (fix) properly generate the BusyStatus for normal events 2016-08-19 14:12:29 -04:00
Ludovic Marcotte 1b88d17e01 (fix) allow multiple space-delimited addresses in the MailFieldNames column 2016-08-19 11:45:59 -04:00
Ludovic Marcotte 3d54bfb882 (doc) updated regarding previous commit 2016-08-18 15:42:04 -04:00
Ludovic Marcotte 96914b39fb Updated NEWS 2016-08-18 15:38:33 -04:00
Ludovic Marcotte ec11b8abb4 (fix) strip protocol value from proxyAddresses (fixes #3182) 2016-08-18 15:36:46 -04:00
Ludovic Marcotte 2fbe6e8429 Version bump to 2.3.14 2016-08-17 08:18:50 -04:00
Francis Lachapelle ac6b60c4c9 (js,css) Style cancelled events in Calendar module
Fixes #2800
2016-08-12 14:31:28 -04:00
Francis Lachapelle 76eeef2541 (i18n) Update translations 2016-08-12 11:14:30 -04:00
Francis Lachapelle 086b905215 Update CKEditor to version 4.5.10 2016-08-12 10:47:13 -04:00
Ludovic Marcotte 713e0d5ecb (fix) also purge repetitive events that have an old end date 2016-08-10 10:09:59 -04:00
Ludovic Marcotte 58732e316b (fix) minor improvement to SQL query 2016-08-10 09:48:24 -04:00
Ludovic Marcotte 9199d42e51 Minor improvement over previous commit 2016-08-09 16:22:41 -04:00
Ludovic Marcotte 8c217103f8 Updated NEWS 2016-08-09 16:20:59 -04:00
Ludovic Marcotte ab5fd9fef1 (fix) check if the SENT-BY has access to organizer's calendar before modifying attendees' calendar (fixes #3759) 2016-08-09 16:20:01 -04:00
Ludovic Marcotte 165d866cfc (fix) correctly calculate recurrence exceptions when not overlapping the recurrence id 2016-08-05 15:01:21 -04:00
Ludovic Marcotte 8ba6c6d9f5 (fix) updated tests for 403 -> 409 2016-08-05 09:07:24 -04:00
Ludovic Marcotte 960962f92f Fixed typo 2016-08-04 14:12:09 -04:00
Ludovic Marcotte cbb23bd536 Updated changelog 2016-08-04 14:11:35 -04:00
Ludovic Marcotte 196e36acb2 (fix) change 403 to 409 error codes so Lightning doesn't silently fails 2016-08-04 14:09:11 -04:00
Ludovic Marcotte 6c05576e53 Updated NEWS file 2016-08-04 12:51:30 -04:00
Ludovic Marcotte 9449b0df27 (fix) handle domain-less-login case with multi-domain on during backups 2016-08-04 11:28:57 -04:00
Ludovic Marcotte 9ecee32d08 (fix) delete mailbox from the Trash folder
Fixes #595, #1189, #641
2016-08-02 10:30:37 -04:00
Francis Lachapelle 199c9d9237 (js) Improve extraction of HTML signature 2016-07-27 14:01:22 -04:00
Francis Lachapelle d95b90281b Expunge drafts mailbox when a draft is sent 2016-07-27 12:02:00 -04:00
Ludovic Marcotte 8545f89b2f Correctly get the collection/key IDs (fixes #3775) 2016-07-25 06:20:33 -04:00
Ludovic Marcotte c827b62f7f Updated NEWS file 2016-07-21 14:13:47 -04:00
Ludovic Marcotte 16356aaf36 Added EAS folder merge support and fixed long GUID issue (fixes #3460)
Conflicts:

	ActiveSync/SOGoActiveSyncDispatcher+Sync.m
2016-07-21 14:09:50 -04:00
ethoms 4c4d3e4c25 Convert configure script shebang back to /bin/sh for cross-platform compatability (#215) 2016-07-12 14:47:54 -04:00
Francis Lachapelle f638113d53 Improve handling of mail delegates 2016-07-06 15:35:09 -04:00
856 changed files with 31527 additions and 18985 deletions

No files matched your search

+33
View File
@@ -15,11 +15,13 @@ trans.es_ES = UI/MailerUI/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/MailerUI/Basque.lproj/Localizable.strings
trans.fi = UI/MailerUI/Finnish.lproj/Localizable.strings
trans.fr = UI/MailerUI/French.lproj/Localizable.strings
trans.he = UI/MailerUI/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/MailerUI/Croatian.lproj/Localizable.strings
trans.hu = UI/MailerUI/Hungarian.lproj/Localizable.strings
trans.is = UI/MailerUI/Icelandic.lproj/Localizable.strings
trans.it = UI/MailerUI/Italian.lproj/Localizable.strings
trans.lt = UI/MailerUI/Lithuanian.lproj/Localizable.strings
trans.lv = UI/MailerUI/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/MailerUI/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/MailerUI/Dutch.lproj/Localizable.strings
@@ -30,6 +32,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
@@ -49,11 +52,13 @@ trans.es_ES = UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/PreferencesUI/Basque.lproj/Localizable.strings
trans.fi = UI/PreferencesUI/Finnish.lproj/Localizable.strings
trans.fr = UI/PreferencesUI/French.lproj/Localizable.strings
trans.he = UI/PreferencesUI/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/PreferencesUI/Croatian.lproj/Localizable.strings
trans.hu = UI/PreferencesUI/Hungarian.lproj/Localizable.strings
trans.is = UI/PreferencesUI/Icelandic.lproj/Localizable.strings
trans.it = UI/PreferencesUI/Italian.lproj/Localizable.strings
trans.lt = UI/PreferencesUI/Lithuanian.lproj/Localizable.strings
trans.lv = UI/PreferencesUI/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/PreferencesUI/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/PreferencesUI/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/PreferencesUI/Dutch.lproj/Localizable.strings
@@ -64,6 +69,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
@@ -83,11 +89,13 @@ trans.es_ES = UI/Scheduler/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/Scheduler/Basque.lproj/Localizable.strings
trans.fi = UI/Scheduler/Finnish.lproj/Localizable.strings
trans.fr = UI/Scheduler/French.lproj/Localizable.strings
trans.he = UI/Scheduler/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/Scheduler/Croatian.lproj/Localizable.strings
trans.hu = UI/Scheduler/Hungarian.lproj/Localizable.strings
trans.is = UI/Scheduler/Icelandic.lproj/Localizable.strings
trans.it = UI/Scheduler/Italian.lproj/Localizable.strings
trans.lt = UI/Scheduler/Lithuanian.lproj/Localizable.strings
trans.lv = UI/Scheduler/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/Scheduler/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/Scheduler/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/Scheduler/Dutch.lproj/Localizable.strings
@@ -98,6 +106,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
@@ -117,11 +126,13 @@ trans.es_ES = UI/Contacts/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/Contacts/Basque.lproj/Localizable.strings
trans.fi = UI/Contacts/Finnish.lproj/Localizable.strings
trans.fr = UI/Contacts/French.lproj/Localizable.strings
trans.he = UI/Contacts/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/Contacts/Croatian.lproj/Localizable.strings
trans.hu = UI/Contacts/Hungarian.lproj/Localizable.strings
trans.is = UI/Contacts/Icelandic.lproj/Localizable.strings
trans.it = UI/Contacts/Italian.lproj/Localizable.strings
trans.lt = UI/Contacts/Lithuanian.lproj/Localizable.strings
trans.lv = UI/Contacts/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/Contacts/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/Contacts/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/Contacts/Dutch.lproj/Localizable.strings
@@ -132,6 +143,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
@@ -151,11 +163,13 @@ trans.es_ES = UI/MainUI/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/MainUI/Basque.lproj/Localizable.strings
trans.fi = UI/MainUI/Finnish.lproj/Localizable.strings
trans.fr = UI/MainUI/French.lproj/Localizable.strings
trans.he = UI/MainUI/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/MainUI/Croatian.lproj/Localizable.strings
trans.hu = UI/MainUI/Hungarian.lproj/Localizable.strings
trans.is = UI/MainUI/Icelandic.lproj/Localizable.strings
trans.it = UI/MainUI/Italian.lproj/Localizable.strings
trans.lt = UI/MainUI/Lithuanian.lproj/Localizable.strings
trans.lv = UI/MainUI/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/MainUI/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/MainUI/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/MainUI/Dutch.lproj/Localizable.strings
@@ -166,6 +180,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
@@ -185,11 +200,13 @@ trans.es_ES = UI/Common/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/Common/Basque.lproj/Localizable.strings
trans.fi = UI/Common/Finnish.lproj/Localizable.strings
trans.fr = UI/Common/French.lproj/Localizable.strings
trans.he = UI/Common/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/Common/Croatian.lproj/Localizable.strings
trans.hu = UI/Common/Hungarian.lproj/Localizable.strings
trans.is = UI/Common/Icelandic.lproj/Localizable.strings
trans.it = UI/Common/Italian.lproj/Localizable.strings
trans.lt = UI/Common/Lithuanian.lproj/Localizable.strings
trans.lv = UI/Common/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/Common/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/Common/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/Common/Dutch.lproj/Localizable.strings
@@ -200,6 +217,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
@@ -219,11 +237,13 @@ trans.es_ES = UI/AdministrationUI/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/AdministrationUI/Basque.lproj/Localizable.strings
trans.fi = UI/AdministrationUI/Finnish.lproj/Localizable.strings
trans.fr = UI/AdministrationUI/French.lproj/Localizable.strings
trans.he = UI/AdministrationUI/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/AdministrationUI/Croatian.lproj/Localizable.strings
trans.hu = UI/AdministrationUI/Hungarian.lproj/Localizable.strings
trans.is = UI/AdministrationUI/Icelandic.lproj/Localizable.strings
trans.it = UI/AdministrationUI/Italian.lproj/Localizable.strings
trans.lt = UI/AdministrationUI/Lithuanian.lproj/Localizable.strings
trans.lv = UI/AdministrationUI/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/AdministrationUI/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/AdministrationUI/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/AdministrationUI/Dutch.lproj/Localizable.strings
@@ -234,6 +254,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
@@ -253,11 +274,13 @@ trans.es_ES = SoObjects/Appointments/SpanishSpain.lproj/Localizable.strings
trans.eu = SoObjects/Appointments/Basque.lproj/Localizable.strings
trans.fi = SoObjects/Appointments/Finnish.lproj/Localizable.strings
trans.fr = SoObjects/Appointments/French.lproj/Localizable.strings
trans.he = SoObjects/Appointments/Hebrew.lproj/Localizable.strings
trans.hr_HR = SoObjects/Appointments/Croatian.lproj/Localizable.strings
trans.hu = SoObjects/Appointments/Hungarian.lproj/Localizable.strings
trans.is = SoObjects/Appointments/Icelandic.lproj/Localizable.strings
trans.it = SoObjects/Appointments/Italian.lproj/Localizable.strings
trans.lt = SoObjects/Appointments/Lithuanian.lproj/Localizable.strings
trans.lv = SoObjects/Appointments/Latvian.lproj/Localizable.strings
trans.mk_MK = SoObjects/Appointments/Macedonian.lproj/Localizable.strings
trans.nb_NO = SoObjects/Appointments/NorwegianBokmal.lproj/Localizable.strings
trans.nl = SoObjects/Appointments/Dutch.lproj/Localizable.strings
@@ -268,6 +291,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
@@ -287,11 +311,13 @@ trans.es_ES = SoObjects/Contacts/SpanishSpain.lproj/Localizable.strings
trans.eu = SoObjects/Contacts/Basque.lproj/Localizable.strings
trans.fi = SoObjects/Contacts/Finnish.lproj/Localizable.strings
trans.fr = SoObjects/Contacts/French.lproj/Localizable.strings
trans.he = SoObjects/Contacts/Hebrew.lproj/Localizable.strings
trans.hr_HR = SoObjects/Contacts/Croatian.lproj/Localizable.strings
trans.hu = SoObjects/Contacts/Hungarian.lproj/Localizable.strings
trans.is = SoObjects/Contacts/Icelandic.lproj/Localizable.strings
trans.it = SoObjects/Contacts/Italian.lproj/Localizable.strings
trans.lt = SoObjects/Contacts/Lithuanian.lproj/Localizable.strings
trans.lv = SoObjects/Contacts/Latvian.lproj/Localizable.strings
trans.mk_MK = SoObjects/Contacts/Macedonian.lproj/Localizable.strings
trans.nb_NO = SoObjects/Contacts/NorwegianBokmal.lproj/Localizable.strings
trans.nl = SoObjects/Contacts/Dutch.lproj/Localizable.strings
@@ -302,6 +328,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
@@ -321,11 +348,13 @@ trans.es_ES = SoObjects/Mailer/SpanishSpain.lproj/Localizable.strings
trans.eu = SoObjects/Mailer/Basque.lproj/Localizable.strings
trans.fi = SoObjects/Mailer/Finnish.lproj/Localizable.strings
trans.fr = SoObjects/Mailer/French.lproj/Localizable.strings
trans.he = SoObjects/Mailer/Hebrew.lproj/Localizable.strings
trans.hr_HR = SoObjects/Mailer/Croatian.lproj/Localizable.strings
trans.hu = SoObjects/Mailer/Hungarian.lproj/Localizable.strings
trans.is = SoObjects/Mailer/Icelandic.lproj/Localizable.strings
trans.it = SoObjects/Mailer/Italian.lproj/Localizable.strings
trans.lt = SoObjects/Mailer/Lithuanian.lproj/Localizable.strings
trans.lv = SoObjects/Mailer/Latvian.lproj/Localizable.strings
trans.mk_MK = SoObjects/Mailer/Macedonian.lproj/Localizable.strings
trans.nb_NO = SoObjects/Mailer/NorwegianBokmal.lproj/Localizable.strings
trans.nl = SoObjects/Mailer/Dutch.lproj/Localizable.strings
@@ -336,6 +365,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
@@ -355,11 +385,13 @@ trans.es_ES = UI/MailPartViewers/SpanishSpain.lproj/Localizable.strings
trans.eu = UI/MailPartViewers/Basque.lproj/Localizable.strings
trans.fi = UI/MailPartViewers/Finnish.lproj/Localizable.strings
trans.fr = UI/MailPartViewers/French.lproj/Localizable.strings
trans.he = UI/MailPartViewers/Hebrew.lproj/Localizable.strings
trans.hr_HR = UI/MailPartViewers/Croatian.lproj/Localizable.strings
trans.hu = UI/MailPartViewers/Hungarian.lproj/Localizable.strings
trans.is = UI/MailPartViewers/Icelandic.lproj/Localizable.strings
trans.it = UI/MailPartViewers/Italian.lproj/Localizable.strings
trans.lt = UI/MailPartViewers/Lithuanian.lproj/Localizable.strings
trans.lv = UI/MailPartViewers/Latvian.lproj/Localizable.strings
trans.mk_MK = UI/MailPartViewers/Macedonian.lproj/Localizable.strings
trans.nb_NO = UI/MailPartViewers/NorwegianBokmal.lproj/Localizable.strings
trans.nl = UI/MailPartViewers/Dutch.lproj/Localizable.strings
@@ -370,6 +402,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
+101 -10
View File
@@ -87,7 +87,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context
{
NSArray *emails, *addresses, *categories, *elements;
CardElement *n, *homeAdr, *workAdr;
NSMutableArray *other_addresses;
CardElement *n, *homeAdr, *workAdr, *otherAdr;
NSMutableString *s, *a;
NSString *url;
id o;
@@ -142,7 +143,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)
@@ -152,7 +153,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;
@@ -185,12 +186,12 @@ 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]];
[s appendFormat: @"<HomeStreet xmlns=\"Contacts:\">%@</HomeStreet>", a];
if ((o = [homeAdr flattenedValueAtIndex: 3 forKey: @""]))
[s appendFormat: @"<HomeCity xmlns=\"Contacts:\">%@</HomeCity>", [o activeSyncRepresentationInContext: context]];
@@ -216,12 +217,12 @@ 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]];
[s appendFormat: @"<BusinessStreet xmlns=\"Contacts:\">%@</BusinessStreet>", a];
if ((o = [workAdr flattenedValueAtIndex: 3 forKey: @""]))
[s appendFormat: @"<BusinessCity xmlns=\"Contacts:\">%@</BusinessCity>", [o activeSyncRepresentationInContext: context]];
@@ -236,6 +237,39 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[s appendFormat: @"<BusinessCountry xmlns=\"Contacts:\">%@</BusinessCountry>", [o activeSyncRepresentationInContext: context]];
}
// Other Address
other_addresses = [[self childrenWithTag: @"adr"] mutableCopy];
[other_addresses removeObjectsInArray: [self childrenWithTag: @"adr" andAttribute: @"type" havingValue: @"work"]];
[other_addresses removeObjectsInArray: [self childrenWithTag: @"adr" andAttribute: @"type" havingValue: @"home"]];
if ([other_addresses count])
{
otherAdr = [other_addresses objectAtIndex: 0];
a = [NSMutableString string];
if ((o = [otherAdr flattenedValueAtIndex: 2 forKey: @""]))
[a appendString: [o activeSyncRepresentationInContext: context]];
if ((o = [otherAdr flattenedValueAtIndex: 1 forKey: @""]) && [o length])
[a appendFormat: @"\n%@", [o activeSyncRepresentationInContext: context]];
[s appendFormat: @"<OtherStreet xmlns=\"Contacts:\">%@</OtherStreet>", a];
if ((o = [otherAdr flattenedValueAtIndex: 3 forKey: @""]))
[s appendFormat: @"<OtherCity xmlns=\"Contacts:\">%@</OtherCity>", [o activeSyncRepresentationInContext: context]];
if ((o = [otherAdr flattenedValueAtIndex: 4 forKey: @""]))
[s appendFormat: @"<OtherState xmlns=\"Contacts:\">%@</OtherState>", [o activeSyncRepresentationInContext: context]];
if ((o = [otherAdr flattenedValueAtIndex: 5 forKey: @""]))
[s appendFormat: @"<OtherPostalCode xmlns=\"Contacts:\">%@</OtherPostalCode>", [o activeSyncRepresentationInContext: context]];
if ((o = [otherAdr flattenedValueAtIndex: 6 forKey: @""]))
[s appendFormat: @"<OtherCountry xmlns=\"Contacts:\">%@</OtherCountry>", [o activeSyncRepresentationInContext: context]];
}
// Other, less important fields
if ((o = [self birthday]))
{
@@ -271,7 +305,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
inContext: (WOContext *) context
{
CardElement *element;
NSMutableArray *addressLines;
NSMutableArray *addressLines, *other_addresses;
id o;
// Contact's note
@@ -402,6 +436,63 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
atIndex: 6 forKey: @""];
}
// OtherCountry
//
other_addresses = [[self childrenWithTag: @"adr"] mutableCopy];
[other_addresses removeObjectsInArray: [self childrenWithTag: @"adr" andAttribute: @"type" havingValue: @"work"]];
[other_addresses removeObjectsInArray: [self childrenWithTag: @"adr" andAttribute: @"type" havingValue: @"home"]];
if ([other_addresses count])
element = [other_addresses objectAtIndex: 0];
else
{
element = [CardElement elementWithTag: @"adr"];
[self addChild: element];
}
if ((o = [theValues objectForKey: @"OtherStreet"]) || ![self _isGhosted: @"OtherStreet" inContext: context])
{
addressLines = [NSMutableArray arrayWithArray: [o componentsSeparatedByString: @"\n"]];
[element setSingleValue: @""
atIndex: 1 forKey: @""];
[element setSingleValue: [addressLines count] ? [addressLines objectAtIndex: 0] : @""
atIndex: 2 forKey: @""];
// Extended address line. If there are more then 2 address lines we add them to the extended address line.
if ([addressLines count] > 1)
{
[addressLines removeObjectAtIndex: 0];
[element setSingleValue: [addressLines componentsJoinedByString: @" "]
atIndex: 1 forKey: @""];
}
}
if ((o = [theValues objectForKey: @"OtherCity"]) || ![self _isGhosted: @"OtherCity" inContext: context])
{
[element setSingleValue: [theValues objectForKey: @"OtherCity"]
atIndex: 3 forKey: @""];
}
if ((o = [theValues objectForKey: @"OtherState"]) || ![self _isGhosted: @"OtherState" inContext: context])
{
[element setSingleValue: [theValues objectForKey: @"OtherState"]
atIndex: 4 forKey: @""];
}
if ((o = [theValues objectForKey: @"OtherPostalCode"]) || ![self _isGhosted: @"OtherPostalCode" inContext: context])
{
[element setSingleValue: [theValues objectForKey: @"OtherPostalCode"]
atIndex: 5 forKey: @""];
}
if ((o = [theValues objectForKey: @"OtherCountry"]) || ![self _isGhosted: @"OtherCountry" inContext: context])
{
[element setSingleValue: [theValues objectForKey: @"OtherCountry"]
atIndex: 6 forKey: @""];
}
// Company's name
if ((o = [theValues objectForKey: @"CompanyName"]))
[self setOrg: o units: nil];
+9
View File
@@ -151,6 +151,10 @@ static NSArray *easCommandParameters = nil;
const char* qs_bytes;
queryString = [[components objectAtIndex: 0] dataByDecodingBase64];
if (![queryString length])
return nil;
qs_bytes = (const char*)[queryString bytes];
return [NSString stringWithFormat:@"%.1f", (float)((uint8_t)qs_bytes[0]/10)];
@@ -199,6 +203,11 @@ static NSArray *easCommandParameters = nil;
// Command code, 1 byte, ie.: cmd=
cmd_code = qs_bytes[1];
// Check whether the command code is within the known range.
if (cmd_code < 0 || cmd_code > 22)
return nil;
[components addObject: [NSString stringWithFormat: @"cmd=%@", [easCommandCodes objectAtIndex: cmd_code]]];
// Device ID length and Device ID (variable)
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+2
View File
@@ -42,6 +42,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context;
- (void) takeActiveSyncValues: (NSDictionary *) theValues
inContext: (WOContext *) context;
- (NSString *) storeMail: (NSDictionary *) theValues
inContext: (WOContext *) _context;
@end
+132 -9
View File
@@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Foundation/NSException.h>
#import <Foundation/NSString.h>
#import <Foundation/NSCharacterSet.h>
#import <Foundation/NSTimeZone.h>
#import <NGCards/iCalCalendar.h>
#import <NGCards/iCalDateTime.h>
@@ -46,9 +47,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <NGExtensions/NGQuotedPrintableCoding.h>
#import <NGExtensions/NSString+misc.h>
#import <NGExtensions/NSString+Encoding.h>
#import <NGExtensions/NGHashMap.h>
#import <NGImap4/NGImap4Envelope.h>
#import <NGImap4/NGImap4EnvelopeAddress.h>
#import <NGImap4/NSString+Imap4.h>
#import <NGImap4/NGImap4Connection.h>
#import <NGImap4/NGImap4Client.h>
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WOApplication.h>
@@ -63,6 +67,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <Mailer/SOGoMailLabel.h>
#import <SOGo/SOGoUserDefaults.h>
#import <SOGo/SOGoUserFolder.h>
#include "iCalTimeZone+ActiveSync.h"
#include "NSData+ActiveSync.h"
@@ -73,6 +78,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <Appointments/iCalPerson+SOGo.h>
#include <Mailer/NSString+Mail.h>
#include <Mailer/SOGoMailBodyPart.h>
#import <Mailer/SOGoMailLabel.h>
#import <Mailer/SOGoMailFolder.h>
#import <Mailer/SOGoMailObject.h>
#import <Mailer/SOGoMailAccount.h>
#import <Mailer/SOGoMailAccounts.h>
#include <SOGo/SOGoUser.h>
#include <SOGo/NSString+Utilities.h>
@@ -163,7 +174,7 @@ struct GlobalObjectId {
const char *bytes;
uid = [event uid];
uidAsASCII = [uid decodeFromHexidecimal];
uidAsASCII = [uid dataUsingEncoding: NSASCIIStringEncoding];
newGlobalId = (struct GlobalObjectId*)calloc(sizeof(uint8_t), sizeof(struct GlobalObjectId) + 0x0c + [uidAsASCII length]);
prefix = @"040000008200e00074c5b7101a82e008";
@@ -934,7 +945,7 @@ struct GlobalObjectId {
else if ([method isEqualToString: @"COUNTER"])
className = @"IPM.Schedule.Meeting.Resp.Tent";
else if ([method isEqualToString: @"CANCEL"])
className = @"IPM.Schedule.Meeting.Cancelled";
className = @"IPM.Schedule.Meeting.Canceled";
else
className = @"IPM.Appointment";
@@ -962,7 +973,12 @@ struct GlobalObjectId {
// Location
if ([[event location] length])
[s appendFormat: @"<Location xmlns=\"Email:\">%@</Location>", [[event location] activeSyncRepresentationInContext: context]];
{
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0)
[s appendFormat: @"<Location xmlns=\"AirSyncBase:\"><DisplayName>%@</DisplayName></Location>", [[event location] activeSyncRepresentationInContext: context]];
else
[s appendFormat: @"<Location xmlns=\"Email:\">%@</Location>", [[event location] activeSyncRepresentationInContext: context]];
}
[s appendFormat: @"<Organizer xmlns=\"Email:\">%@</Organizer>", [[[event organizer] mailAddress] activeSyncRepresentationInContext: context]];
@@ -1003,7 +1019,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 +1185,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 +1220,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 +1235,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 +1289,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 +1307,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
@@ -1415,4 +1438,104 @@ struct GlobalObjectId {
}
}
- (NSString *) storeMail: (NSDictionary *) theValues
inContext: (WOContext *) _context
{
NSString *dateReceived, *folder, *s;
NGMimeMessageGenerator *generator;
NGMimeMessage *bounceMessage;
NSDictionary *identity;
NGMutableHashMap *map;
NGImap4Client *client;
NSData *message_data;
id o, result;
int bodyType;
identity = [[context activeUser] primaryIdentity];
message_data = nil;
bodyType = 1;
if ((o = [[theValues objectForKey: @"Body"] objectForKey: @"Type"]))
bodyType = [o intValue];
if (bodyType == 4)
{
s = [[theValues objectForKey: @"Body"] objectForKey: @"Data"];
message_data = [s dataUsingEncoding: NSUTF8StringEncoding];
}
if (bodyType == 1 || bodyType == 2)
{
map = [[[NGMutableHashMap alloc] initWithCapacity: 1] autorelease];
[map setObject: [NSString stringWithFormat: @"%@ <%@>", [identity objectForKey: @"fullName"], [identity objectForKey: @"email"]] forKey: @"from"];
if ((o = [theValues objectForKey: @"To"]))
[map setObject: o forKey: @"to"];
if ((o = [theValues objectForKey: @"Subject"]))
[map setObject: o forKey: @"subject"];
o = [[theValues objectForKey: @"DateReceived"] calendarDate];
if (!o)
o = [NSCalendarDate date];
#if GNUSTEP_BASE_MINOR_VERSION < 21
dateReceived = [o descriptionWithCalendarFormat: @"%a, %d %b %Y %H:%M:%S %z"
timeZone: [NSTimeZone timeZoneWithName: @"GMT"]
locale: nil];
#else
dateReceived = [o descriptionWithCalendarFormat: @"%a, %d %b %Y %H:%M:%S %z"
timeZone: [NSTimeZone timeZoneWithName: @"GMT"]
locale: [NSDictionary dictionaryWithObjectsAndKeys:
[NSArray arrayWithObjects: @"Jan", @"Feb", @"Mar", @"Apr",
@"May", @"Jun", @"Jul", @"Aug",
@"Sep", @"Oct", @"Nov", @"Dec", nil],
@"NSShortMonthNameArray",
[NSArray arrayWithObjects: @"Sun", @"Mon", @"Tue", @"Wed", @"Thu",
@"Fri", @"Sat", nil],
@"NSShortWeekDayNameArray",
nil]];
#endif
[map setObject: dateReceived forKey: @"date"];
[map setObject: [NSString generateMessageID] forKey: @"message-id"];
[map setObject: (bodyType == 1 ? @"text/plain; charset=utf-8" : @"text/html; charset=utf-8")
forKey: @"content-type"];
[map setObject: @"quoted-printable" forKey: @"content-transfer-encoding"];
bounceMessage = [[[NGMimeMessage alloc] initWithHeader: map] autorelease];
[bounceMessage setBody: [[NSString stringWithFormat: @"%@", [[theValues objectForKey: @"Body"] objectForKey: @"Data"] ] dataUsingEncoding: NSUTF8StringEncoding]];
generator = [[[NGMimeMessageGenerator alloc] init] autorelease];
message_data = [generator generateMimeFromPart: bounceMessage];
}
if (message_data)
{
client = [[self imap4Connection] client];
if (![imap4 doesMailboxExistAtURL: [container imap4URL]])
{
[[self imap4Connection] createMailbox: [[self imap4Connection] imap4FolderNameForURL: [container imap4URL]]
atURL: [[self mailAccountFolder] imap4URL]];
[imap4 flushFolderHierarchyCache];
}
folder = [imap4 imap4FolderNameForURL: [container imap4URL]];
result = [client append: message_data
toFolder: folder
withFlags: [NSArray arrayWithObjects: @"draft", nil]];
if ([[result objectForKey: @"result"] boolValue])
return [NSString stringWithFormat: @"%d", [self IMAP4IDFromAppendResult: result]];
}
return nil;
}
@end
+48 -28
View File
@@ -39,6 +39,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <NGCards/iCalAlarm.h>
#import <NGCards/iCalEvent.h>
#import <NGCards/iCalTrigger.h>
#import <NGCards/NSCalendarDate+NGCards.h>
#include "NSDate+ActiveSync.h"
@implementation iCalAlarm (ActiveSync)
@@ -56,9 +59,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
nextAlarmDate = [self nextAlarmDate];
delta = (int)(([[(iCalEvent *)parent startDate] timeIntervalSince1970] - [nextAlarmDate timeIntervalSince1970])/60);
// don't send negative reminder - not supported
if (delta > 0)
[s appendFormat: @"<Reminder xmlns=\"Calendar:\">%d</Reminder>", (int)delta];
if ([parent isKindOfClass: [iCalEvent class]])
{
// don't send negative reminder - not supported
if (delta > 0)
[s appendFormat: @"<Reminder xmlns=\"Calendar:\">%d</Reminder>", (int)delta];
}
else
{
[s appendFormat: @"<ReminderTime xmlns=\"Task:\">%@</ReminderTime>", [nextAlarmDate activeSyncRepresentationInContext: context]];
}
}
return s;
@@ -70,37 +80,47 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
iCalTrigger *trigger;
id o;
o = [theValues objectForKey: @"Reminder"];
// Outlook: if reminder is set to 0 minutes before start save it as 1 minute since -> 0 minutes in not accepted by SOGo
if ([o isEqualToString: @"0"])
o = @"1";
trigger = [iCalTrigger elementWithTag: @"TRIGGER"];
[trigger setValueType: @"DURATION"];
[self setTrigger: trigger];
[self setAction: @"DISPLAY"];
// SOGo web ui only supports 1w but not 2w (custom reminder only supports min/hours/days)
// 1week = -P1W
// 2weeks > -PxD
// xdays > -PxD
// xhours -> -PTxH
// xmin -> -PTxM
if ([o intValue] == 10080)
[trigger setSingleValue: [NSString stringWithFormat: @"-P1W" ] forKey: @""];
else
if ((o = [theValues objectForKey: @"Reminder"]))
{
if (([o intValue] % 1440) == 0)
[trigger setSingleValue: [NSString stringWithFormat: @"-P%dD", ([o intValue] / 1440)] forKey: @""];
// Outlook: if reminder is set to 0 minutes before starttime, save it as 1 minute since -> 0 minutes in not accepted by SOGo
if ([o isEqualToString: @"0"])
o = @"1";
trigger = [iCalTrigger elementWithTag: @"TRIGGER"];
[trigger setValueType: @"DURATION"];
[self setTrigger: trigger];
[self setAction: @"DISPLAY"];
// SOGo web ui only supports 1w but not 2w (custom reminder only supports min/hours/days)
// 1week = -P1W
// 2weeks > -PxD
// xdays > -PxD
// xhours -> -PTxH
// xmin -> -PTxM
if ([o intValue] == 10080)
[trigger setSingleValue: [NSString stringWithFormat: @"-P1W" ] forKey: @""];
else
{
if (([o intValue] % 60) == 0)
[trigger setSingleValue: [NSString stringWithFormat: @"-PT%dH", ([o intValue] / 60)] forKey: @""];
if (([o intValue] % 1440) == 0)
[trigger setSingleValue: [NSString stringWithFormat: @"-P%dD", ([o intValue] / 1440)] forKey: @""];
else
[trigger setSingleValue: [NSString stringWithFormat: @"-PT%@M", o] forKey: @""];
{
if (([o intValue] % 60) == 0)
[trigger setSingleValue: [NSString stringWithFormat: @"-PT%dH", ([o intValue] / 60)] forKey: @""];
else
[trigger setSingleValue: [NSString stringWithFormat: @"-PT%@M", o] forKey: @""];
}
}
}
else if ((o = [theValues objectForKey: @"ReminderTime"]))
{
o = [o calendarDate];
trigger = [iCalTrigger elementWithTag: @"TRIGGER"];
[trigger setValueType: @"DATE-TIME"];
[trigger setSingleValue: [NSString stringWithFormat: @"%@Z", [o iCalFormattedDateTimeString]] forKey: @""];
[self setTrigger: trigger];
[self setAction: @"DISPLAY"];
}
}
@end
+57 -14
View File
@@ -70,7 +70,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;
@@ -82,6 +82,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;
@@ -190,7 +213,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.
@@ -211,7 +234,13 @@ 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>", 2];
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", [self _busyStatus: attendee]];
}
else
{
// If it's a normal event (i.e. with no organizer/attendee) or we are the organizer of an event
// invitation, we set the busy status depending on TRANSP.
[s appendFormat: @"<BusyStatus xmlns=\"Calendar:\">%d</BusyStatus>", (([self isOpaque]) ? 2 : 0)];
}
[s appendFormat: @"<MeetingStatus xmlns=\"Calendar:\">%d</MeetingStatus>", meetingStatus];
@@ -222,7 +251,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Location
if ([[self location] length])
[s appendFormat: @"<Location xmlns=\"Calendar:\">%@</Location>", [[self location] activeSyncRepresentationInContext: context]];
{
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0)
[s appendFormat: @"<Location xmlns=\"AirSyncBase:\"><DisplayName>%@</DisplayName></Location>", [[self location] activeSyncRepresentationInContext: context]];
else
[s appendFormat: @"<Location xmlns=\"Calendar:\">%@</Location>", [[self location] activeSyncRepresentationInContext: context]];
}
// Importance - NOT SUPPORTED - DO NOT ENABLE
//o = [self priority];
@@ -251,7 +285,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>"];
@@ -429,7 +463,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
occurences = [NSMutableArray arrayWithArray: [[self parent] events]];
if ((o = [theValues objectForKey: @"UID"]))
if ((o = [theValues objectForKey: ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0) ? @"ClientUid" : @"UID"]))
[self setUid: o];
// FIXME: merge with iCalToDo
@@ -452,7 +486,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
if ((o = [theValues objectForKey: @"BusyStatus"]))
{
[o intValue];
if ([o boolValue])
[self setTransparency: @"OPAQUE"];
else
[self setTransparency: @"TRANSPARENT"];
}
//
@@ -494,7 +531,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];
@@ -505,8 +542,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[self setComment: o];
}
if ((o = [theValues objectForKey: @"Location"]))
if ([[context objectForKey: @"ASProtocolVersion"] floatValue] < 16.0 && (o = [theValues objectForKey: @"Location"]))
[self setLocation: o];
else if ([[context objectForKey: @"ASProtocolVersion"] floatValue] >= 16.0 && (o = [theValues objectForKey: @"Location"]) && [o isKindOfClass: [NSDictionary class]])
[self setLocation: [o objectForKey: @"DisplayName"]];
deltasecs = 0;
start = nil;
@@ -557,7 +596,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
{
// Ignore the alarm for now
}
else if ((o = [theValues objectForKey: @"Reminder"]))
else if ((o = [theValues objectForKey: @"Reminder"]) && [o length])
{
// NOTE: Outlook sends a 15 min reminder (18 hour for allday) if no reminder is specified
// although no default reminder is defined (File -> Options -> Clendar -> Calendar Options - > Default Reminders)
@@ -580,7 +619,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
// Recurrence
if ((o = [theValues objectForKey: @"Recurrence"]))
if ((o = [theValues objectForKey: @"Recurrence"]) && [o isKindOfClass: [NSDictionary class]])
{
iCalRecurrenceRule *rule;
@@ -808,7 +847,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
}
// Attendees - we don't touch the values if we're an attendee. This is gonna
// be done automatically by the ActiveSync client when invoking MeetingResponse.
if (![self userIsAttendee: [context activeUser]])
@@ -833,7 +871,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
person = [iCalPerson elementWithTag: @"attendee"];
[person setCn: [attendee objectForKey: @"Attendee_Name"]];
[person setEmail: [attendee objectForKey: @"Attendee_Email"]];
status = [[attendee objectForKey: @"Attendee_Status"] intValue];
switch (status)
@@ -850,7 +888,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
case 0:
case 5:
default:
[person setPartStat: @"NEEDS-ACTION"];
{
[person setPartStat: @"NEEDS-ACTION"];
[person setRsvp: @"TRUE"];
}
break;
}
@@ -862,6 +903,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[self setAttendees: attendees];
}
}
[self setLastModified: [NSCalendarDate calendarDate]];
}
- (void) changeParticipationStatus: (NSDictionary *) theValues
+51 -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,9 @@ 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];
[s appendFormat: @"<Recurrence_Interval xmlns=\"%@:\">%d</Recurrence_Interval>", t, [self repeatInterval]];
}
else if ([[self byMonthDay] count])
{
@@ -126,8 +148,9 @@ 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];
[s appendFormat: @"<Recurrence_Interval xmlns=\"%@:\">%d</Recurrence_Interval>", t, [self repeatInterval]];
}
else
{
@@ -139,8 +162,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 +181,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 +224,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
@@ -128,7 +128,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];
@@ -144,13 +144,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];
+55 -6
View File
@@ -47,9 +47,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#import <NGCards/iCalDateTime.h>
#import <NGCards/iCalTimeZone.h>
#import <Appointments/iCalEntityObject+SOGo.h>
#include "NSDate+ActiveSync.h"
#include "NSString+ActiveSync.h"
#include "iCalRecurrenceRule+ActiveSync.h"
#include "iCalAlarm+ActiveSync.h"
@implementation iCalToDo (ActiveSync)
@@ -84,6 +87,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];
@@ -95,8 +102,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
v = 1;
[s appendFormat: @"<Importance xmlns=\"Tasks:\">%d</Importance>", v];
// Reminder - FIXME
[s appendFormat: @"<ReminderSet xmlns=\"Tasks:\">%d</ReminderSet>", 0];
// Reminder
if ([self hasAlarms])
{
iCalAlarm *alarm;
alarm = [self firstDisplayOrAudioAlarm];
[s appendFormat: @"<ReminderSet xmlns=\"Tasks:\">%d</ReminderSet>", 1];
[s appendString: [alarm activeSyncRepresentationInContext: context]];
}
else
{
[s appendFormat: @"<ReminderSet xmlns=\"Tasks:\">%d</ReminderSet>", 0];
}
// Sensitivity
if ([[self accessClass] isEqualToString: @"PRIVATE"])
@@ -131,7 +149,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>"];
@@ -145,7 +163,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[s appendString: @"</Body>"];
}
}
return s;
}
@@ -165,7 +183,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];
@@ -249,8 +267,39 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
if ((o = [theValues objectForKey: @"ReminderTime"]))
{
iCalAlarm *alarm;
alarm = [[iCalAlarm alloc] init];
[alarm takeActiveSyncValues: theValues inContext: context];
[self removeAllAlarms];
[self addToAlarms: alarm];
RELEASE(alarm);
}
// 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
+3861
View File
File diff suppressed because it is too large. Load diff
-5655
View File
File diff suppressed because it is too large. Load diff
+3 -2
View File
@@ -2,7 +2,8 @@ all: $(patsubst %.asciidoc,%.pdf,$(wildcard *.asciidoc))
%.pdf : %.asciidoc
asciidoc -a docinfo1 -b docbook -d book -o $<.docbook $<
fop -c fonts/fop-config.xml -xsl docbook/xsl/sogo-fo.xsl -xml $<.docbook -pdf $@
xsltproc -o $<.fo docbook/xsl/sogo-fo.xsl $<.docbook
fop -c fonts/fop-config.xml $<.fo -pdf $@
clean:
rm *.asciidoc.docbook *.pdf
rm -f *.asciidoc.fo *.asciidoc.docbook *.pdf
+85 -55
View File
@@ -18,13 +18,13 @@ About this Guide
This guide will walk you through the installation and configuration of
the SOGo solution. It also covers the installation and configuration of
SOGo ActiveSync support – the solution used to synchronize mobile
SOGo ActiveSync support - the solution used to synchronize mobile
devices with SOGo.
The instructions are based on version {release_version} of SOGo.
The latest version of this guide is available
at http://www.sogo.nu/downloads/documentation.html.
at http://sogo.nu/downloads/documentation.html.
Introduction
------------
@@ -47,11 +47,10 @@ and the data of Mozilla Thunderbird and Lightning
the SOGo Connector and the SOGo Integrator
* Native compatibility for Microsoft Outlook 2003, 2007, 2010, and 2013
* Two-way synchronization support with any Microsoft ActiveSync-capable
device, or Outlook 2013
device, or Outlook 2013/2016
SOGo is developed by a community of developers located mainly in North
America and Europe. More information can be found
at http://www.sogo.nu/
America and Europe. More information can be found at http://sogo.nu/
Architecture and Compatibility
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -202,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:
@@ -209,17 +213,22 @@ content:
----
[SOGo]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
baseurl=https://<username>:<password>@packages.inverse.ca/SOGo/release/2/rhel/6/$basearch
gpgcheck=0
----
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"
----
Software Installation
~~~~~~~~~~~~~~~~~~~~~
@@ -482,7 +491,7 @@ SOGoSAML2LogoutEnabled must be set to YES. If unset, the user will be
redirected to a blank page.
|D |SOGoTimeZone
|Parameter used to set a default time zone for users. The default
|Mandatory parameter used to set a default time zone for users. The default
timezone is set to UTC. The Olson database is a standard database that
takes all the time zones around the world into account and represents
them along with their history. On GNU/Linux systems, time zone
@@ -504,8 +513,8 @@ In our example, we set the default domain to `acme.com`.
meeting participants. Possible values are:
[options="compact"]
* `YES` – to send notifications
* `NO` – to not send notifications
* `YES` - to send notifications
* `NO` - to not send notifications
Defaults to `NO` when unset.
@@ -578,6 +587,8 @@ for SOGo. Possible values are:
* `Basque`
* `BrazilianPortuguese`
* `Catalan`
* `ChineseTaiwan`
* `Croatian`
* `Czech`
* `Danish`
* `Dutch`
@@ -588,14 +599,19 @@ for SOGo. Possible values are:
* `Hungarian`
* `Icelandic`
* `Italian`
* `Lithuanian`
* `Macedonian`
* `NorwegianBokmal`
* `NorwegianNynorsk`
* `Polish`
* `Portuguese`
* `Russian`
* `Slovak`
* `SpanishSpain`
* `Slovenian`
* `SpanishArgentina`
* `SpanishSpain`
* `Swedish`
* `TurkishTurkey`
* `Ukrainian`
* `Welsh`
@@ -604,8 +620,8 @@ for SOGo. Possible values are:
someone changes his/her own calendar. Possible values are:
[options="compact"]
- `YES` – to send notifications
- `NO` – to not send notifications
- `YES` - to send notifications
- `NO` - to not send notifications
Defaults to `NO` when unset. User can overwrite this from the calendar
properties window.
@@ -616,8 +632,8 @@ modification is being done to his/her own calendar by someone else.
Possible values are:
[options="compact"]
* `YES` – to send notifications
* `NO` – to not send notifications
* `YES` - to send notifications
* `NO` - to not send notifications
Defaults to `NO` when unset. User can overwrite this from the calendar
properties window.
@@ -640,8 +656,8 @@ requiring not authentication) their calendars and address books.
Possible values are:
[options="compact"]
* `YES` – to allow them
* `NO` – to prevent them from doing so
* `YES` - to allow them
* `NO` - to prevent them from doing so
Defaults to `NO` when unset.
@@ -652,8 +668,8 @@ SOGo.
Possible values are:
[options="compact"]
* `YES` – to allow them
* `NO` – to prevent them from doing so
* `YES` - to allow them
* `NO` - to prevent them from doing so
Defaults to `NO` when unset.
@@ -683,7 +699,7 @@ Defaults to `NO` when unset.
string (attendee completion, address book search, etc.) prior triggering
the server-side search operation.
Defaults to `2` when unset – which means a search operation will be
Defaults to `2` when unset - which means a search operation will be
triggered on the 3rd typed character.
|S |SOGoMaximumFailedLoginCount
@@ -888,7 +904,7 @@ source can contain the following values:
|The type of this user source, set to ldap` for an LDAP source.
|id
|The identification name of the LDAP repository. This must be unique –
|The identification name of the LDAP repository. This must be unique -
even when using multiple domains.
|CNFieldName
@@ -907,7 +923,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
@@ -954,8 +971,8 @@ be marked as busy the first time it is booked.
EOQualifier. The following operators are supported:
[options="compact"]
* `<>` – inequality operator
* `=` – equality operator
* `<>` - inequality operator
* `=` - equality operator
Multiple qualifiers can be joined by using `OR` and `AND`, they can also
be grouped together by using parenthesis. Attribute values should be
@@ -1017,9 +1034,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.
@@ -1028,6 +1045,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
@@ -1370,9 +1390,9 @@ SOGoProfileURL =
Create the database user and schema using the following commands:
----
su – postgres
createuser --no-superuser --no-createdb –-no-createrole \
–-encrypted --pwprompt sogo
su - postgres
createuser --no-superuser --no-createdb --no-createrole \
--encrypted --pwprompt sogo
(specify “sogo” as password)
createdb -O sogo sogo
----
@@ -1473,7 +1493,7 @@ source can contain the following values:
|The type of this user source, set to `sql` for a SQL source.
|id
|The identification name of the SQL repository. This must be unique –
|The identification name of the SQL repository. This must be unique -
even when using multiple domains.
|viewURL
@@ -1481,9 +1501,9 @@ even when using multiple domains.
present. Required columns are:
[options="compact"]
* `c_uid`: will be used for authentication – it's a username or
* `c_uid`: will be used for authentication - it's a username or
username@domain.tld
* `c_name`: will be used to uniquely identify entries – which can be
* `c_name`: will be used to uniquely identify entries - which can be
identical to `c_uid`
* `c_password`: password of the user, plain text, crypt, md5 or sha
encoded
@@ -1589,14 +1609,14 @@ SOGoUserSources =
Certain database columns must be present in the view/table, such as:
* `c_uid` – will be used for authentication – it's the username
* `c_uid` - will be used for authentication - it's the username
or username@domain.tld
* `c_name` – which can be identical to `c_uid` – will be used to
* `c_name` - which can be identical to `c_uid` - will be used to
uniquely identify entries
* `c_password` – password of the user, plain-text, md5 or sha encoded
* `c_password` - password of the user, plain-text, md5 or sha encoded
for now
* `c_cn` – the user's common name – such as "John Doe"
* `mail` – the user's mail address
* `c_cn` - the user's common name - such as "John Doe"
* `mail` - the user's mail address
Note that groups are currently not supported for SQL-based
authentication sources.
@@ -1616,8 +1636,8 @@ The following table describes the related parameters.
are:
[options="compact"]
* `sendmail` – to use the sendmail binary
* `smtp` – to use the SMTP protocol
* `sendmail` - to use the sendmail binary
* `smtp` - to use the SMTP protocol
|D |SOGoSMTPServer
|The DNS name or IP address of the SMTP server used when
@@ -2541,13 +2561,19 @@ have unexpected behaviour with various ActiveSync clients.
EAS command.
Defaults to `NO`, which means no logging is performed.
|S |SOGoMaximumPictureSize
|Parameter used to overwrite the maximum number of bytes returned in the picture
for EAS Search operations in the GAL.
If not set, it defaults to `102400` bytes, or 100 KB.
|=======================================================================
Please be aware of the following limitations:
* Outlook 2013 does not search the GAL. One possible alternative
* Outlook 2013/2016 does not search the GAL. One possible alternative
solution is to configure Outlook to use a LDAP server (over SSL) with
authentication. Outlook 2013 also does not seem to support multiple
authentication. Outlook 2013/2016 also does not seem to support multiple
address books over ActiveSync.
* To successfully synchronize Outlook email categories, a corresponding
mail label (Preferences->Mail Options) has to be created manually in SOGo
@@ -2563,9 +2589,9 @@ to handle many clients. Make sure you tune your SOGo server when having
lots of ActiveSync clients.
* Repetitive events with occurrences exceptions are currently not
supported.
* Outlook 2013 Autodiscovery is currently not supported.
* Outlook 2013 freebusy lookups are supported using the Internet
Free/Busy feature of Outlook 2013. Please
* Outlook 2013/2016 Autodiscovery is currently not supported.
* Outlook 2013/2016 freebusy lookups are supported using the Internet
Free/Busy feature of Outlook 2013/2016. Please
see http://support.microsoft.com/kb/291621 for configuration
instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to
`YES` and the URL to use must be of the following format:
@@ -2574,6 +2600,9 @@ instructions. On the SOGo side, _SOGoEnablePublicAccess_ must be set to
need to adjust the word size of your IMAP server. In Dovecot, the parameter
to increase is "imap_max_line_length" while under Cyrus IMAP Server, the
parameter is "maxword". We suggest a buffer of 2MB.
* If you are using MySQL, make sure you set "max_allowed_packet" to a large value
since the EAS cache size can be large for mailboxes with thousands of messages.
A 64M or even 128M value is recommended.
In order to use the SOGo ActiveSync support code in production
environments, you need to get a proper usage license from Microsoft.
@@ -2722,17 +2751,18 @@ To access your personal calendar:
`http://localhost/SOGo/dav/jdoe/Calendar/personal/`
* Click on Continue.
Apple iCal
~~~~~~~~~~
Apple Calendar and iOS
~~~~~~~~~~~~~~~~~~~~~~
Apple iCal can also be used as a client application for SOGo.
Apple Calendar and Mac OS X and the calendar application on iOS can also be used
as a client application for SOGo.
To configure it so it works with SOGo, create a new account and specify,
To configure the application so it works with SOGo, create a new account and specify,
as the Account URL, an URL such as:
http://localhost/SOGo/dav/jdoe/
Note that the trailing slash is important for Apple iCal 3.
Note that the trailing slash is important for the old Apple iCal 3 application.
Apple AddressBook
~~~~~~~~~~~~~~~~~
+2 -2
View File
@@ -121,9 +121,9 @@
</xsl:choose>
</xsl:template>
<xsl:template name="next.itemsymbol">
<xsl:param name="itemsymbol" select="'default'"/>
<xsl:param name="itemsymbol" select="'square'"/>
<xsl:choose>
<xsl:otherwise>square</xsl:otherwise>
<xsl:when test="$itemsymbol='square'">square</xsl:when>
</xsl:choose>
</xsl:template>
+3 -3
View File
@@ -1,7 +1,7 @@
<!-- TODO have the build system take care of this -->
<releaseinfo>Version 2.3.13 - July 2016</releaseinfo>
<subtitle>for version 2.3.13</subtitle>
<date>2016-07-06</date>
<releaseinfo>Version 2.3.22 - July 2017</releaseinfo>
<subtitle>for version 2.3.22</subtitle>
<date>2017-07-20</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>
@@ -6,13 +6,13 @@
Authors:
- Inverse inc. <info@inverse.ca>
Copyright (C) 2008-2016 Inverse inc.
Copyright (C) 2008-2017 Inverse inc.
License: GFDL 1.2 or later. http://www.gnu.org/licenses/fdl.html
////
// TODO have the build system take care of this
:release_version: 2.3.13
:release_version: 2.3.22
// vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab:
+14 -19
View File
@@ -42,6 +42,7 @@
#import <SOGo/SOGoPermissions.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserFolder.h>
#import <SOGo/SOGoUserManager.h>
#import "SOGo+DAV.h"
@@ -365,31 +366,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];
}
}
}
@@ -585,7 +581,6 @@
@"addressbook", @"calendar-access",
@"calendar-schedule", @"calendar-auto-schedule",
@"calendar-proxy",
@"calendar-query-extended",
@"extended-mkcol",
@"calendarserver-principal-property-search",
+16 -5
View File
@@ -35,6 +35,7 @@
#import <GDLContentStore/GCSAlarmsFolder.h>
#import <GDLContentStore/GCSSessionsFolder.h>
#import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/SoClassSecurityInfo.h>
#import <NGObjWeb/WOContext.h>
#import <NGObjWeb/WORequest+So.h>
@@ -123,7 +124,7 @@ static BOOL debugLeaks;
vMemSizeLimit = [defaults vmemLimit];
if (vMemSizeLimit > 0)
[self logWithFormat: @"vmem size check enabled: shutting down app when "
@"vmem > %d MB", vMemSizeLimit];
@"vmem > %d MB. Currently at %d MB", vMemSizeLimit, [[NSProcessInfo processInfo] virtualMemorySize]/1048576];
/* SoClass security declarations */
sInfo = [self soClassSecurityInfo];
@@ -146,6 +147,8 @@ static BOOL debugLeaks;
/* load products */
[[SOGoProductLoader productLoader] loadAllProducts: YES];
if (vMemSizeLimit > 0)
[self logWithFormat: @"All products loaded - current memory usage at %d MB", [[NSProcessInfo processInfo] virtualMemorySize]/1048576];
}
- (id) init
@@ -369,8 +372,12 @@ static BOOL debugLeaks;
"GET" if no method was provided in the query path.
*/
if ([_key length] > 0 && ![_key isEqualToString:@"favicon.ico"])
obj = [self lookupUser: _key inContext: _ctx];
}
{
obj = [self lookupUser: _key inContext: _ctx];
if (!obj && ![_key isEqualToString: @"public"])
obj = [self lookupUser: @"anonymous" inContext: _ctx];
}
}
}
else
obj = nil;
@@ -396,8 +403,12 @@ static BOOL debugLeaks;
- (WOResponse *) handleException: (NSException *) _exc
inContext: (WOContext *) _ctx
{
printf("EXCEPTION: %s\n", [[_exc description] cString]);
abort();
WOResponse *resp;
NSLog(@"EXCEPTION: %s\n", [[_exc description] cString]);
resp = [WOResponse responseWithRequest: [_ctx request]];
[resp setStatus: 501];
return resp;
}
/* runtime maintenance */
+183
View File
@@ -1,3 +1,186 @@
2.3.22 (2017-07-20)
-------------------
New features
- [eas] initial EAS v16 and email drafts support
Enhancements
- [web] updated CKEditor to version 4.7.1
Bug fixes
- [web] use the organizer's alarm by default when accepting IMIP messages (#3934)
- [web] fixed forwarding mails with attachments containing slashes in file names
- [eas] don't include task folders if we hide them in SOGo (#4164)
- [core] not using cleaned data when sending mails (#4199)
- [core] don't update subscriptions when owner is not the active user (#3988)
- [core] enable S/MIME even when using GNU TLS (#4201)
- [core] silence verbose output for sogo-ealarms-notify (#4170)
2.3.21 (2017-06-01)
-------------------
Enhancements
- [core] improved event invitation for all day events (#4145)
- [core] now possible to {un}subscribe to folders using sogo-tool
- [eas] added photo support for GAL search operations
- [web] added custom fields support from Thunderbird's address book
- [web] updated CKEditor to version 4.7.0
- [web] added Latvian (lv) translation - thanks to Juris Balandis
Bug fixes
- [core] fixed calendar component move across collections (#4116)
- [core] handle properly mails using windows-1255 charset (#4124)
- [core] properly honor the "include in freebusy" setting (#3354)
- [core] make sure to use crypt scheme when encoding md5/sha256/sha512 (#4137)
- [core] newly subscribed calendars are excluded from freebusy (#3354)
- [core] strip cr during LDIF import process (#4172)
- [web] fixed mail delegation of pristine user accounts (#4160)
- [web] respect SOGoLanguage and SOGoSupportedLanguages (#4169)
- [eas] fixed opacity in EAS freebusy (#4033)
- [eas] set reply/forwarded flags when ReplaceMime is set (#4133)
- [eas] remove alarms over EAS if we don't want them (#4059)
- [eas] correctly set RSVP on event invitations
- [eas] avoid sending IMIP request/update messages for all EAS clients (#4022)
2.3.20 (2017-03-10)
-------------------
New features
- [core] new sogo-tool checkup command to make sure user's data is sane
- [core] new sogo-tool manage-acl command to manage calendar/address book ACLs
- [web] use "date" extension of Sieve to enable/disable vacation auto-reply (#1530, #1949)
Enhancements
- [web] added Hebrew (he) translation - thanks to Raz Aidlitz
- [web] updated CKEditor to version 4.6.2
Bug fixes
- [core] remove all alarms before sending IMIP replies (#3925)
- [core] fixed handling of exdates and proper intersection for fbinfo (#4051)
- [core] remove attendees that have the same identity as the organizer (#3905)
- [eas] improved EAS parameters parsing (#4003)
- [eas] properly handle canceled appointments
- [web] fixed SCAYT automatic language selection in HTML editor
- [web] prevent 304 HTTP status code for Ajax requests on IE (#4066)
2.3.19 (2017-01-09)
-------------------
Enhancements
- [core] added handling of BYSETPOS for BYDAY in recurrence rules
- [core] improved IMIP handling from Exchange/Outlook clients
- [web] update jQuery to version 1.12.4 and jQuery UI to version 1.11.4
- [web] added SOGoMaximumMessageSizeLimit to limit webmail message size
- [web] added photo support for LDIF import (#1084)
- [web] updated CKEditor to version 4.6.1
Bug fixes
- [core] honor blocking wrong login attemps within time interval (#2850)
- [core] use source's domain when none defined and trying to match users (#3523)
- [core] properly honor the "include in freebusy" setting (#3354)
- [core] fix events in floating time during CalDAV's PUT operation (#2865)
- [core] handle rounds in sha512-crypt password hashes
- [web] return login page for unknown users (#2135)
- [web] append ics file extension when importing events (#2308)
- [web] set a max-height so we can scroll in the attendees list (#3666)
- [web] set a max-height so we can scroll in the attachments list (#3413)
- [web] handle URI in vCard photos (#2683)
- [web] handle semicolon in values during LDIF import (#1760)
- [eas] properly escape all GAL responses (#3923)
- [eas] properly skip folders we don't want to synchronize (#3943)
- [eas] fixed 30 mins freebusy offset with S Planner
- [eas] now correctly handles reminders on tasks (#3964)
- [eas] do not decode from hex the event's UID (#3965)
- [eas] add support for "other addresses" (#3966)
- [eas] provide correct response status when sending too big mails (#3956)
2.3.18 (2016-11-28)
-------------------
New features
- [eas] relaxed permission requirements for subscription synchronizations (#3118 and #3180)
Enhancements
- [core] added sha256-crypt and sha512-crypt password support
- [core] updated time zones to version 2016h
- [eas] initial support for recurring tasks EAS
- [eas] now support replied/forwarded flags using EAS (#3796)
- [eas] now also search on senders when using EAS Search ops
- [web] updated CKEditor to version 4.6.0
Bug fixes
- [core] fixed condition in weekly recurrence calculator
- [core] always send IMIP messages using UTF-8
- [web] fixed support for recurrent tasks
- [web] improved validation of mail account delegators
- [web] allow edition of a mailbox rights when user can administer mailbox
- [web] restore attributes when rewriting base64-encoded img tags (#3814)
2.3.17 (2016-10-20)
-------------------
Enhancements
- [web] allow custom email address to be one of the user's profile (#3551)
- [web] the left column of the attendees editor is resizable (not supported in IE) (#1479, #3667)
Bug fixes
- [eas] make sure we don't sleep for too long when EAS processes need interruption
- [eas] fixed recurring events with timezones for EAS (#3822)
- [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)
2.3.16 (2016-09-28)
-------------------
New features
- [eas] initial support for server-side mailbox search operations
Enhancements
- [eas] propagate message submission errors to EAS clients (#3774)
- [web] updated CKEditor to version 4.5.11
- [web] added Serbian (sr) translation - thanks to Bogdanović Bojan
Bug fixes
- [web] correctly set percent-complete for tasks from the list view (#3197)
- [core] fixed caching expiration of ACLs assigned to LDAP groups (#2867)
- [core] we now search in all domain sources for Apple Calendar
- [core] properly handle groups in Apple Calendar's delegation
- [core] make sure new cards always have a UID (#3819)
2.3.15 (2016-09-14)
-------------------
Enhancements
- [web] don't allow a recurrence rule to end before the first occurrence
Bug fixes
- [eas] properly generate the BusyStatus for normal events
- [eas] properly escape all email and address fields
- [eas] properly generate yearly rrule
- [core] strip protocol value from proxyAddresses attribute (#3182)
- [web] handle binary content transfer encoding when displaying mails
2.3.14 (2016-08-17)
-------------------
New features
- [eas] added folder merging capabilities
Enhancements
- [web] expunge drafts mailbox when a draft is sent and deleted
- [web] style cancelled events in Calendar module (#2800)
- [web] updated CKEditor to version 4.5.10
Bug fixes
- [eas] fixed long GUID issue preventing sometimes synchronisation (#3460)
- [web] improved extraction of HTML signature in Preferences module
- [web] really delete mailboxes being deleted from the Trash folder (#595, #1189, #641)
- [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)
2.3.13 (2016-07-06)
-------------------
+1
View File
@@ -124,6 +124,7 @@
- (NSException *) deleteContentWithName: (NSString *) _name;
- (NSException *) deleteAllContent;
- (NSException *) touchContentWithName: (NSString *) _name;
- (NSException *) deleteFolder;
+44 -2
View File
@@ -1100,7 +1100,7 @@ andAttribute: (EOAttribute *)_attribute
return error;
}
- (NSException *)deleteContentWithName:(NSString *)_name {
- (NSException *) deleteContentWithName:(NSString *)_name {
EOAdaptorChannel *storeChannel, *quickChannel;
EOAdaptorContext *adaptorCtx;
NSException *error;
@@ -1108,7 +1108,6 @@ andAttribute: (EOAttribute *)_attribute
NSCalendarDate *nowDate;
/* check preconditions */
if (_name == nil) {
return [NSException exceptionWithName:@"GCSDeleteException"
reason:@"no content filename was provided"
@@ -1237,6 +1236,49 @@ andAttribute: (EOAttribute *)_attribute
return error;
}
- (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];
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;
+1
View File
@@ -65,6 +65,7 @@
- (BOOL)folderExistsAtPath:(NSString *)_path;
- (NSArray *)listSubFoldersAtPath:(NSString *)_path recursive:(BOOL)_flag;
- (NSDictionary *) recordAtPath: (NSString *) _path;
- (GCSFolder *)folderAtPath:(NSString *)_path;
- (NSException *)createFolderOfType:(NSString *)_type withName:(NSString *)_name atPath:(NSString *)_path;
+8 -3
View File
@@ -634,7 +634,7 @@ static NSCharacterSet *asciiAlphaNumericCS = nil;
return result;
}
- (GCSFolder *) folderAtPath: (NSString *) _path
- (NSDictionary *) recordAtPath: (NSString *) _path
{
NSMutableString *sql;
NSArray *fnames, *records;
@@ -691,8 +691,13 @@ static NSCharacterSet *asciiAlphaNumericCS = nil;
[self debugWithFormat:@"found no record for path: '%@'", _path];
return nil;
}
return [self folderForRecord:record];
return record;
}
- (GCSFolder *) folderAtPath: (NSString *) _path
{
return [self folderForRecord: [self recordAtPath: _path]];
}
- (NSString *) baseTableNameWithUID: (NSString *) _uid
+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
Loaded 100 of 856 files, more files were not shown because too many files have changed in this diff. Show more