From 9610fcc5ca4faa9083e4be1c4cdf0bde53e7e228 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 29 Sep 2014 15:30:02 -0400 Subject: [PATCH 001/198] Bumped version --- Version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Version b/Version index d8abd9c85..f5f76e90f 100644 --- a/Version +++ b/Version @@ -4,4 +4,4 @@ MAJOR_VERSION=2 MINOR_VERSION=2 -SUBMINOR_VERSION=9a +SUBMINOR_VERSION=10 From 89284d558c558c5bd2ec8c346fe5c16acbc1c366 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 1 Oct 2014 09:02:03 -0400 Subject: [PATCH 002/198] Add missing translation --- UI/PreferencesUI/English.lproj/Localizable.strings | 1 + 1 file changed, 1 insertion(+) diff --git a/UI/PreferencesUI/English.lproj/Localizable.strings b/UI/PreferencesUI/English.lproj/Localizable.strings index 65219eec9..ebc9ace4e 100644 --- a/UI/PreferencesUI/English.lproj/Localizable.strings +++ b/UI/PreferencesUI/English.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Forward"; "Password" = "Password"; "Categories" = "Categories"; +"Appointments invitations" = "Appointments invitations"; "Name" = "Name"; "Color" = "Color"; "Add" = "Add"; From 25b7fffb009333e07de5f0327288086de08cd942 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 1 Oct 2014 14:08:29 -0400 Subject: [PATCH 003/198] Fix for bug #2930 --- NEWS | 6 ++++++ UI/MainUI/SOGoUserHomePage.m | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index e2d50e2a8..2c794faca 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,9 @@ +2.2.10 (2014-xx-xx) +------------------- + +Bug fixes + - fix freebusy lookup with "Show time as busy" (#2930) + 2.2.9a (2014-09-29) ------------------- diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 39d96ec26..f3a517549 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -215,7 +215,10 @@ timeZone: [endDate timeZone]]; interval = [endDate timeIntervalSinceDate: startDate] + 60; - intervals = interval / intervalSeconds; /* slices of 15 minutes */ + + // Slices of 15 minutes. The +4 is to take into account that we can + // have a timezone change during the freebusy lookup. + intervals = interval / intervalSeconds + 4; // Build a bit string representation of the freebusy data for the period freeBusyItems = NSZoneCalloc (NULL, intervals, sizeof (int)); From 6ded9e95b33a80c09b00a63f7199b72f882d99d5 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Wed, 1 Oct 2014 20:36:42 +0200 Subject: [PATCH 004/198] Put private libraries in /usr/lib/sogo --- Main/GNUmakefile | 2 +- Main/GNUmakefile.preamble | 2 +- OpenChange/GNUmakefile | 8 +++++--- SOPE/GDLContentStore/GNUmakefile | 1 + SOPE/NGCards/GNUmakefile | 1 + SoObjects/SOGo/GNUmakefile | 3 +++ SoObjects/common.make | 2 +- Tests/Integration/GNUmakefile.preamble | 2 +- Tests/Unit/GNUmakefile | 4 ++-- Tools/GNUmakefile | 2 ++ Tools/GNUmakefile.preamble | 2 +- UI/AdministrationUI/GNUmakefile | 1 + UI/Common/GNUmakefile | 1 + UI/Contacts/GNUmakefile | 1 + UI/MailPartViewers/GNUmakefile | 1 + UI/MailerUI/GNUmakefile | 1 + UI/MainUI/GNUmakefile | 1 + UI/PreferencesUI/GNUmakefile | 1 + UI/SOGoUI/GNUmakefile | 3 +++ UI/Scheduler/GNUmakefile | 1 + UI/common.make | 4 ++-- 21 files changed, 32 insertions(+), 12 deletions(-) diff --git a/Main/GNUmakefile b/Main/GNUmakefile index 962730cbc..ac0632d8a 100644 --- a/Main/GNUmakefile +++ b/Main/GNUmakefile @@ -7,7 +7,7 @@ include ../Version ADDITIONAL_OBJCFLAGS += -fPIE ADDITIONAL_INCLUDE_DIRS += ADDITIONAL_LIB_DIRS += -L../SOPE/GDLContentStore/obj/ -ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -fPIE -pie +ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -fPIE -pie -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo SOGOD = sogod TOOL_NAME = $(SOGOD) diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble index 022e3d1e2..a75f9f932 100644 --- a/Main/GNUmakefile.preamble +++ b/Main/GNUmakefile.preamble @@ -9,7 +9,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -I.. ADDITIONAL_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework \ + -L../SoObjects/SOGo/SOGo.framework/sogo \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ SYSTEM_LIB_DIR += -L/usr/local/lib -L/usr/lib diff --git a/OpenChange/GNUmakefile b/OpenChange/GNUmakefile index e3adc5f7e..29939b87d 100644 --- a/OpenChange/GNUmakefile +++ b/OpenChange/GNUmakefile @@ -137,7 +137,7 @@ $(DBMSGREADER_TOOL)_OBJC_FILES += \ NSObject+PropertyList.m $(DBMSGREADER_TOOL)_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework/ -lSOGo \ + -L../SoObjects/SOGo/SOGo.framework/sogo -lSOGo \ -L../SOPE/GDLContentStore/obj/ -lGDLContentStore \ -L../SOPE/NGCards/obj/ -lNGCards \ -lNGObjWeb @@ -161,12 +161,12 @@ LIBMAPISTORE_LIBS = $(shell pkg-config libmapistore --libs) -lmapiproxy -lWEExte $(MAPISTORESOGO)_INSTALL_DIR = $(DESTDIR)/$(SAMBA_LIB_DIR)/mapistore_backends $(MAPISTORESOGO)_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework/ -lSOGo -lgnustep-base -lobjc -lNGObjWeb \ + -L../SoObjects/SOGo/SOGo.framework/sogo/ -lSOGo -lgnustep-base -lobjc -lNGObjWeb \ $(LIBMAPI_LIBS) \ $(LIBMAPISTORE_LIBS) $(SOGOBACKEND)_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework/ -lSOGo \ + -L../SoObjects/SOGo/SOGo.framework/sogo/ -lSOGo \ $(LIBMAPI_LIBS) \ $(LIBMAPISTORE_LIBS) @@ -179,6 +179,8 @@ ADDITIONAL_INCLUDE_DIRS += \ -DBACKEND_BUNDLE_NAME="@\"$(BUNDLE_NAME)$(BUNDLE_EXTENSION)\"" \ -DSOGO_BUNDLES_DIR="@\"$(BUNDLE_INSTALL_DIR)\"" +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo + -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make include $(GNUSTEP_MAKEFILES)/library.make diff --git a/SOPE/GDLContentStore/GNUmakefile b/SOPE/GDLContentStore/GNUmakefile index 84f24d0c0..b94b4057d 100644 --- a/SOPE/GDLContentStore/GNUmakefile +++ b/SOPE/GDLContentStore/GNUmakefile @@ -74,6 +74,7 @@ ifneq ($(frameworks),yes) ifneq ($(FHS_INSTALL_ROOT),) GNUSTEP_HEADERS=$(DESTDIR)$(FHS_INSTALL_ROOT)/include endif +GNUSTEP_TARGET_LDIR=sogo include $(GNUSTEP_MAKEFILES)/library.make else include $(GNUSTEP_MAKEFILES)/framework.make diff --git a/SOPE/NGCards/GNUmakefile b/SOPE/NGCards/GNUmakefile index 90f75848a..31cfdd836 100644 --- a/SOPE/NGCards/GNUmakefile +++ b/SOPE/NGCards/GNUmakefile @@ -131,6 +131,7 @@ ifneq ($(frameworks),yes) ifneq ($(FHS_INSTALL_ROOT),) GNUSTEP_HEADERS=$(DESTDIR)$(FHS_INSTALL_ROOT)/include endif +GNUSTEP_TARGET_LDIR=sogo include $(GNUSTEP_MAKEFILES)/library.make else include $(GNUSTEP_MAKEFILES)/framework.make diff --git a/SoObjects/SOGo/GNUmakefile b/SoObjects/SOGo/GNUmakefile index f1ee391bd..70b458001 100644 --- a/SoObjects/SOGo/GNUmakefile +++ b/SoObjects/SOGo/GNUmakefile @@ -11,6 +11,8 @@ SOGo_VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBMINOR_VERSION) #SOGo_INSTALL_DIR = $(SOGO_LIBDIR) SOGo_INSTALL_DIR = $(DESTDIR)$(GNUSTEP_$(GNUSTEP_INSTALLATION_DOMAIN)_FRAMEWORKS) +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo + SOGo_HEADER_FILES = \ SOGoBuild.h \ SOGoProductLoader.h \ @@ -200,6 +202,7 @@ ADDITIONAL_LDFLAGS += -lmemcached ifneq ($(FHS_INSTALL_ROOT),) GNUSTEP_HEADERS=$(DESTDIR)$(FHS_INSTALL_ROOT)/include endif +GNUSTEP_TARGET_LDIR=sogo include $(GNUSTEP_MAKEFILES)/framework.make include $(GNUSTEP_MAKEFILES)/library.make include $(GNUSTEP_MAKEFILES)/tool.make diff --git a/SoObjects/common.make b/SoObjects/common.make index 31f10e1ac..ef14724ba 100644 --- a/SoObjects/common.make +++ b/SoObjects/common.make @@ -18,7 +18,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -I../../SOPE ADDITIONAL_LIB_DIRS += \ - -L../SOGo/SOGo.framework/ \ + -L../SOGo/SOGo.framework/sogo/ \ -L../../SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ -L/usr/local/lib diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index cd29c8e19..7237a3cd8 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -10,7 +10,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -D_GNU_SOURCE -I../../SOPE/ -I../../SoObjects/ ADDITIONAL_LIB_DIRS += \ - -L../../SoObjects/SOGo/SOGo.framework -lSOGo \ + -L../../SoObjects/SOGo/SOGo.framework/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions diff --git a/Tests/Unit/GNUmakefile b/Tests/Unit/GNUmakefile index 6b99e05a5..bcfd13850 100644 --- a/Tests/Unit/GNUmakefile +++ b/Tests/Unit/GNUmakefile @@ -33,9 +33,9 @@ $(TEST_TOOL)_CPPFLAGS += \ -Wall -D_GNU_SOURCE -I../../SOPE/ -I../../SoObjects/ -I../../UI/ ADDITIONAL_LIB_DIRS += \ - -L../../SoObjects/SOGo/SOGo.framework/Versions/Current -L../../SOPE/NGCards/obj -L../../SOPE/GDLContentStore/obj -lSOGo -lNGMime -lNGCards -lGDLContentStore -lNGExtensions -lSBJson -lobjc \ + -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -L../../SOPE/NGCards/obj -L../../SOPE/GDLContentStore/obj -lSOGo -lNGMime -lNGCards -lGDLContentStore -lNGExtensions -lSBJson -lobjc \ -L/usr/local/lib -lSaxObjC \ - -Wl,-rpath,../../SoObjects/SOGo/SOGo.framework/Versions/Current -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj + -Wl,-rpath,../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -include GNUmakefile.preamble diff --git a/Tools/GNUmakefile b/Tools/GNUmakefile index c5b56a1fc..ec65344f3 100644 --- a/Tools/GNUmakefile +++ b/Tools/GNUmakefile @@ -4,6 +4,8 @@ include ../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../Version +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo + ### SOGO_TOOL = sogo-tool $(SOGO_TOOL)_INSTALL_DIR = $(SOGO_ADMIN_TOOLS) diff --git a/Tools/GNUmakefile.preamble b/Tools/GNUmakefile.preamble index fc78b8b0a..1cf88ce79 100644 --- a/Tools/GNUmakefile.preamble +++ b/Tools/GNUmakefile.preamble @@ -10,7 +10,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -D_GNU_SOURCE -I../SOPE/ -I../SoObjects/ ADDITIONAL_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework -lSOGo \ + -L../SoObjects/SOGo/SOGo.framework/sogo -lSOGo \ -L../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions -lNGObjWeb diff --git a/UI/AdministrationUI/GNUmakefile b/UI/AdministrationUI/GNUmakefile index d57aee9dc..041edd709 100644 --- a/UI/AdministrationUI/GNUmakefile +++ b/UI/AdministrationUI/GNUmakefile @@ -25,6 +25,7 @@ AdministrationUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/Common/GNUmakefile b/UI/Common/GNUmakefile index 5eaf6c036..eb5671695 100644 --- a/UI/Common/GNUmakefile +++ b/UI/Common/GNUmakefile @@ -33,6 +33,7 @@ CommonUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/Contacts/GNUmakefile b/UI/Contacts/GNUmakefile index 6e32c50db..ef8a09ebf 100644 --- a/UI/Contacts/GNUmakefile +++ b/UI/Contacts/GNUmakefile @@ -38,6 +38,7 @@ ContactsUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/MailPartViewers/GNUmakefile b/UI/MailPartViewers/GNUmakefile index a094e92eb..57a874fb4 100644 --- a/UI/MailPartViewers/GNUmakefile +++ b/UI/MailPartViewers/GNUmakefile @@ -37,6 +37,7 @@ MailPartViewers_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += $(shell xml2-config --cflags) ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ -L../../SoObjects/Mailer/obj -L../../SoObjects/Appointments/obj +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/MailerUI/GNUmakefile b/UI/MailerUI/GNUmakefile index 851eb9abf..b3754bbaf 100644 --- a/UI/MailerUI/GNUmakefile +++ b/UI/MailerUI/GNUmakefile @@ -46,6 +46,7 @@ MailerUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ -L../MailPartViewers/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/MainUI/GNUmakefile b/UI/MainUI/GNUmakefile index 62837f307..acd40f8ef 100644 --- a/UI/MainUI/GNUmakefile +++ b/UI/MainUI/GNUmakefile @@ -32,6 +32,7 @@ MainUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/PreferencesUI/GNUmakefile b/UI/PreferencesUI/GNUmakefile index 7aa0511d2..c2c75ab39 100644 --- a/UI/PreferencesUI/GNUmakefile +++ b/UI/PreferencesUI/GNUmakefile @@ -28,6 +28,7 @@ PreferencesUI_LOCALIZED_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/SOGoUI/GNUmakefile b/UI/SOGoUI/GNUmakefile index 2b781caed..7ec6f08dc 100644 --- a/UI/SOGoUI/GNUmakefile +++ b/UI/SOGoUI/GNUmakefile @@ -11,6 +11,8 @@ libSOGoUI_HEADER_FILES_DIR = . libSOGoUI_HEADER_FILES_INSTALL_DIR = /SOGoUI libSOGoUI_INTERFACE_VERSION = $(MAJOR_VERSION).$(MINOR_VERSION) +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo + libSOGoUI_HEADER_FILES += \ \ UIxJSClose.h \ @@ -32,5 +34,6 @@ libSOGoUI_OBJC_FILES += \ ifneq ($(FHS_INSTALL_ROOT),) GNUSTEP_HEADERS=$(DESTDIR)$(FHS_INSTALL_ROOT)/include endif +GNUSTEP_TARGET_LDIR=sogo include $(GNUSTEP_MAKEFILES)/library.make -include GNUmakefile.postamble diff --git a/UI/Scheduler/GNUmakefile b/UI/Scheduler/GNUmakefile index 9f96857a6..cc574b512 100644 --- a/UI/Scheduler/GNUmakefile +++ b/UI/Scheduler/GNUmakefile @@ -72,6 +72,7 @@ SchedulerUI_RESOURCE_FILES += \ ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make diff --git a/UI/common.make b/UI/common.make index 80d67ea23..b44a3e0b2 100644 --- a/UI/common.make +++ b/UI/common.make @@ -20,13 +20,13 @@ ifeq ($(GNUSTEP_BUILD_DIR),) ADDITIONAL_LIB_DIRS += \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR) \ -L../SOGoUI/$(GNUSTEP_OBJ_DIR) \ - -L../../SoObjects/SOGo/SOGo.framework/ + -L../../SoObjects/SOGo/SOGo.framework/sogo/ else RELBUILD_DIR_libNGCards = \ $(GNUSTEP_BUILD_DIR)/../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR_NAME) RELBUILD_DIR_libSOGo = \ - $(GNUSTEP_BUILD_DIR)/../../SoObjects/SOGo/SOGo.framework/ + $(GNUSTEP_BUILD_DIR)/../../SoObjects/SOGo/SOGo.framework/sogo/ RELBUILD_DIR_libSOGoUI = \ $(GNUSTEP_BUILD_DIR)/../SOGoUI/$(GNUSTEP_OBJ_DIR_NAME) From 51ed3717962c2d49f9c0824ced0efa700919dbff Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 10:21:36 -0400 Subject: [PATCH 005/198] Adjusted debian install files regarding sogo lib move --- packaging/debian-multiarch/sogo-dev.install | 2 +- packaging/debian-multiarch/sogo.install | 2 +- packaging/debian/sogo-dev.install | 2 +- packaging/debian/sogo.install | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packaging/debian-multiarch/sogo-dev.install b/packaging/debian-multiarch/sogo-dev.install index a29817742..43e84abbb 100644 --- a/packaging/debian-multiarch/sogo-dev.install +++ b/packaging/debian-multiarch/sogo-dev.install @@ -1,2 +1,2 @@ usr/include/GNUstep/* -usr/lib/lib*.so +usr/lib/sogo/lib*.so diff --git a/packaging/debian-multiarch/sogo.install b/packaging/debian-multiarch/sogo.install index 0df9077fa..ba044b824 100644 --- a/packaging/debian-multiarch/sogo.install +++ b/packaging/debian-multiarch/sogo.install @@ -12,7 +12,7 @@ usr/lib/GNUstep/SaxMappings/* usr/lib/GNUstep/WOxElemBuilders-4.9/* usr/lib/GNUstep/SOGo/Templates usr/lib/GNUstep/SOGo/WebServerResources -usr/lib/lib*.so.* +usr/lib/sogo/lib*.so.* usr/share/lintian/* usr/lib/GNUstep/SOGo/AdministrationUI.SOGo usr/lib/GNUstep/SOGo/Appointments.SOGo diff --git a/packaging/debian/sogo-dev.install b/packaging/debian/sogo-dev.install index a29817742..43e84abbb 100644 --- a/packaging/debian/sogo-dev.install +++ b/packaging/debian/sogo-dev.install @@ -1,2 +1,2 @@ usr/include/GNUstep/* -usr/lib/lib*.so +usr/lib/sogo/lib*.so diff --git a/packaging/debian/sogo.install b/packaging/debian/sogo.install index 0df9077fa..ba044b824 100644 --- a/packaging/debian/sogo.install +++ b/packaging/debian/sogo.install @@ -12,7 +12,7 @@ usr/lib/GNUstep/SaxMappings/* usr/lib/GNUstep/WOxElemBuilders-4.9/* usr/lib/GNUstep/SOGo/Templates usr/lib/GNUstep/SOGo/WebServerResources -usr/lib/lib*.so.* +usr/lib/sogo/lib*.so.* usr/share/lintian/* usr/lib/GNUstep/SOGo/AdministrationUI.SOGo usr/lib/GNUstep/SOGo/Appointments.SOGo From 68d79472a529b783273bf766bf4d5e5eb029343d Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 10:46:47 -0400 Subject: [PATCH 006/198] Fixed makefile for teststrings due to sogo lib change --- Tests/Integration/GNUmakefile | 1 + Tests/Integration/GNUmakefile.preamble | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Tests/Integration/GNUmakefile b/Tests/Integration/GNUmakefile index c93ca1c10..5347e57aa 100644 --- a/Tests/Integration/GNUmakefile +++ b/Tests/Integration/GNUmakefile @@ -1,3 +1,4 @@ +include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = teststrings diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 7237a3cd8..67eb61e04 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -10,9 +10,10 @@ ADDITIONAL_INCLUDE_DIRS += \ -D_GNU_SOURCE -I../../SOPE/ -I../../SoObjects/ ADDITIONAL_LIB_DIRS += \ - -L../../SoObjects/SOGo/SOGo.framework/sogo -lSOGo \ + -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ - -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions + -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions \ + -Wl,-rpath,../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj ADDITIONAL_LDFLAGS += -Wl,--no-as-needed From f93c06e6a915889cc0d1a5de3b3d760efd5a100a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 10:50:34 -0400 Subject: [PATCH 007/198] Fixed include --- Tests/Integration/GNUmakefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Tests/Integration/GNUmakefile b/Tests/Integration/GNUmakefile index 5347e57aa..c93ca1c10 100644 --- a/Tests/Integration/GNUmakefile +++ b/Tests/Integration/GNUmakefile @@ -1,4 +1,3 @@ -include ../../config.make include $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME = teststrings From 18431922abd08be9a024589d16ee4117dcf9c477 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 10:55:05 -0400 Subject: [PATCH 008/198] Fixed makefile --- ActiveSync/common.make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ActiveSync/common.make b/ActiveSync/common.make index 505f53f88..3ca497db5 100644 --- a/ActiveSync/common.make +++ b/ActiveSync/common.make @@ -16,7 +16,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -I../../SOPE ADDITIONAL_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework/ \ + -L../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo \ -L../SoObjects/SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ -L/usr/local/lib From 8875c42d256444ed230bd834f7ed72fb1595cda2 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 11:00:43 -0400 Subject: [PATCH 009/198] Fixed makefile --- SoObjects/common.make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/common.make b/SoObjects/common.make index ef14724ba..2c7b53fca 100644 --- a/SoObjects/common.make +++ b/SoObjects/common.make @@ -18,7 +18,7 @@ ADDITIONAL_INCLUDE_DIRS += \ -I../../SOPE ADDITIONAL_LIB_DIRS += \ - -L../SOGo/SOGo.framework/sogo/ \ + -L../SOGo/SOGo.framework/Versions/Current/sogo/ \ -L../../SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ -L/usr/local/lib From ba4a50e778f586aaf5fc536b62b1ea00b9145292 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 11:05:19 -0400 Subject: [PATCH 010/198] Added rpath kungfu --- SoObjects/common.make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SoObjects/common.make b/SoObjects/common.make index 2c7b53fca..0fa89a243 100644 --- a/SoObjects/common.make +++ b/SoObjects/common.make @@ -21,7 +21,8 @@ ADDITIONAL_LIB_DIRS += \ -L../SOGo/SOGo.framework/Versions/Current/sogo/ \ -L../../SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ - -L/usr/local/lib + -L/usr/local/lib \ + -Wl,-rpath,../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo BUNDLE_LIBS += \ -lSOGo \ From fb3ddca9e8e3a5f8c5d4698dcb8046202f5ecc2d Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 11:17:45 -0400 Subject: [PATCH 011/198] Improved makefiles --- SoObjects/Mailer/GNUmakefile | 1 - SoObjects/common.make | 11 +++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/SoObjects/Mailer/GNUmakefile b/SoObjects/Mailer/GNUmakefile index a7afca3a4..b4725fc4f 100644 --- a/SoObjects/Mailer/GNUmakefile +++ b/SoObjects/Mailer/GNUmakefile @@ -98,7 +98,6 @@ Mailer_LOCALIZED_RESOURCE_FILES = Localizable.strings ADDITIONAL_INCLUDE_DIRS += -I../../SOPE/ ADDITIONAL_INCLUDE_DIRS += $(shell xml2-config --cflags) -ADDITIONAL_LIB_DIRS += -L../../SOPE/GDLContentStore/obj/ -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/wobundle.make diff --git a/SoObjects/common.make b/SoObjects/common.make index 0fa89a243..13004a78a 100644 --- a/SoObjects/common.make +++ b/SoObjects/common.make @@ -18,18 +18,17 @@ ADDITIONAL_INCLUDE_DIRS += \ -I../../SOPE ADDITIONAL_LIB_DIRS += \ - -L../SOGo/SOGo.framework/Versions/Current/sogo/ \ + -L../SOGo/SOGo.framework/Versions/Current/sogo/ -lSOGo \ -L../../SOGo/$(GNUSTEP_OBJ_DIR)/ \ - -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ + -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ + -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L/usr/local/lib \ - -Wl,-rpath,../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo + -Wl,-rpath,../SOGo/SOGo.framework/Versions/Current/sogo -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj BUNDLE_LIBS += \ - -lSOGo \ - -lGDLContentStore \ -lGDLAccess \ -lNGObjWeb \ - -lNGCards -lNGMime -lNGLdap \ + -lNGMime -lNGLdap \ -lNGStreams -lNGExtensions -lEOControl \ -lDOM -lSaxObjC -lSBJson From f88cfae611cda5462d5920638c1ff41856eb0a50 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 12:36:22 -0400 Subject: [PATCH 012/198] Improved and simplified rpath --- SoObjects/common.make | 2 +- Tests/Integration/GNUmakefile.preamble | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SoObjects/common.make b/SoObjects/common.make index 13004a78a..f2c00d252 100644 --- a/SoObjects/common.make +++ b/SoObjects/common.make @@ -23,7 +23,7 @@ ADDITIONAL_LIB_DIRS += \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L/usr/local/lib \ - -Wl,-rpath,../SOGo/SOGo.framework/Versions/Current/sogo -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj + -Wl,-rpath,$(SOGO_SYSLIBDIR)/sogo BUNDLE_LIBS += \ -lGDLAccess \ diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 67eb61e04..22c9c3c58 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -14,6 +14,6 @@ ADDITIONAL_LIB_DIRS += \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions \ - -Wl,-rpath,../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -Wl,-rpath,../../SOPE/NGCards/obj -Wl,-rpath,../../SOPE/GDLContentStore/obj + -Wl,-rpath,$(SOGO_SYSLIBDIR)/sogo ADDITIONAL_LDFLAGS += -Wl,--no-as-needed From f29a47d44328904a150c3c8ffc2a03af63293fb8 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 12:42:06 -0400 Subject: [PATCH 013/198] Added rpath --- ActiveSync/common.make | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ActiveSync/common.make b/ActiveSync/common.make index 3ca497db5..bf77fa3be 100644 --- a/ActiveSync/common.make +++ b/ActiveSync/common.make @@ -19,7 +19,8 @@ ADDITIONAL_LIB_DIRS += \ -L../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo \ -L../SoObjects/SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ - -L/usr/local/lib + -L/usr/local/lib \ + -Wl,-rpath,$(SOGO_SYSLIBDIR)/sogo BUNDLE_LIBS += \ -lSOGo \ From 7f49dcb2fa0507d98741c3eeaa276f772de49886 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 2 Oct 2014 13:10:54 -0400 Subject: [PATCH 014/198] Avoid using SOGO_SYSLIBDIR when testing since it's undefined --- Tests/Integration/GNUmakefile.preamble | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 22c9c3c58..0da5bbed9 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -14,6 +14,6 @@ ADDITIONAL_LIB_DIRS += \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions \ - -Wl,-rpath,$(SOGO_SYSLIBDIR)/sogo + -Wl,-rpath,/usr/lib/sogo -Wl,-rpath,/usr/local/lib/sogo ADDITIONAL_LDFLAGS += -Wl,--no-as-needed From d7f8427623288493e9d082f793ed75870134c7e5 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 3 Oct 2014 13:13:42 -0400 Subject: [PATCH 015/198] Improve XSL for documentation --- Documentation/Makefile | 2 +- Documentation/docbook/xsl/sogo-fo-article.xsl | 193 ------------------ Documentation/docbook/xsl/sogo-fo.xsl | 7 + 3 files changed, 8 insertions(+), 194 deletions(-) delete mode 100644 Documentation/docbook/xsl/sogo-fo-article.xsl diff --git a/Documentation/Makefile b/Documentation/Makefile index 40bc10436..ee7246fba 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -1,7 +1,7 @@ all: $(patsubst %.asciidoc,%.pdf,$(wildcard *.asciidoc)) %.pdf : %.asciidoc - asciidoc -a docinfo1 -b docbook -d book -d book -o $<.docbook $< + asciidoc -a docinfo1 -b docbook -d book -o $<.docbook $< fop -c fonts/fop-config.xml -xsl docbook/xsl/sogo-fo.xsl -xml $<.docbook -pdf $@ clean: diff --git a/Documentation/docbook/xsl/sogo-fo-article.xsl b/Documentation/docbook/xsl/sogo-fo-article.xsl deleted file mode 100644 index 6489f9d5a..000000000 --- a/Documentation/docbook/xsl/sogo-fo-article.xsl +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Lato-Medium - - - 0.5em - solid 2px - 1em - - - solid 1px - 1em - 1em - - - 1em - 1em - - - 1em - - - 1em - - - - - 1.5em - 1.5em - 2.2em - - - - Lato-Light - 10 - Incosolata - - - - 12pt - bold - center - - - page - - - 1px solid - - - - - - - - - - - - - 0em - 0em - 0.2em - - - - - - - - - - - - - square - - - - - - images/ - .png - - 1px solid - 1px solid - 0.5em - 0.5em - 2em - - - - - - - #E0E0E0 - thin #9F9F9F solid - 0pt - 0.5em - - always - - - - - wrap - - - - - - - - blue - underline - - - - - - - - - - diff --git a/Documentation/docbook/xsl/sogo-fo.xsl b/Documentation/docbook/xsl/sogo-fo.xsl index 4f5c4ba31..5ab3c7396 100644 --- a/Documentation/docbook/xsl/sogo-fo.xsl +++ b/Documentation/docbook/xsl/sogo-fo.xsl @@ -165,6 +165,13 @@ underline + + + + + + + From 4cc6b72cfb434b79d8e0e5f2277fbc3a7f54a2ad Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Sun, 5 Oct 2014 15:47:00 +0200 Subject: [PATCH 016/198] Make png files non-executable --- UI/WebServerResources/error.png | Bin UI/WebServerResources/notice.png | Bin UI/WebServerResources/success.png | Bin UI/WebServerResources/warning.png | Bin 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 UI/WebServerResources/error.png mode change 100755 => 100644 UI/WebServerResources/notice.png mode change 100755 => 100644 UI/WebServerResources/success.png mode change 100755 => 100644 UI/WebServerResources/warning.png diff --git a/UI/WebServerResources/error.png b/UI/WebServerResources/error.png old mode 100755 new mode 100644 diff --git a/UI/WebServerResources/notice.png b/UI/WebServerResources/notice.png old mode 100755 new mode 100644 diff --git a/UI/WebServerResources/success.png b/UI/WebServerResources/success.png old mode 100755 new mode 100644 diff --git a/UI/WebServerResources/warning.png b/UI/WebServerResources/warning.png old mode 100755 new mode 100644 From a0317046ba4aa51450a6c9df451f322178811ff1 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Sun, 5 Oct 2014 00:30:27 -0400 Subject: [PATCH 017/198] Card view: don't escape
's in note field --- NEWS | 3 ++- UI/Contacts/UIxContactView.m | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 2c794faca..98bf909fd 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,8 @@ ------------------- Bug fixes - - fix freebusy lookup with "Show time as busy" (#2930) + - fixed freebusy lookup with "Show time as busy" (#2930) + - don't escape
's in a card's note field 2.2.9a (2014-09-29) ------------------- diff --git a/UI/Contacts/UIxContactView.m b/UI/Contacts/UIxContactView.m index 4880fa667..259a518e9 100644 --- a/UI/Contacts/UIxContactView.m +++ b/UI/Contacts/UIxContactView.m @@ -67,15 +67,18 @@ - (NSString *) _cardStringWithLabel: (NSString *) label value: (NSString *) value + byEscapingHTMLString: (BOOL) escapeHTML asLinkScheme: (NSString *) scheme withLinkAttributes: (NSString *) attrs { NSMutableString *cardString; cardString = [NSMutableString stringWithCapacity: 80]; - value = [[value stringByReplacingString: @"\r" withString: @""] stringByEscapingHTMLString]; + value = [value stringByReplacingString: @"\r" withString: @""]; if ([value length] > 0) { + if (escapeHTML) + value = [value stringByEscapingHTMLString]; if ([scheme length] > 0) value = [NSString stringWithFormat: @"%@", scheme, value, attrs, value]; @@ -94,6 +97,7 @@ { return [self _cardStringWithLabel: label value: value + byEscapingHTMLString: YES asLinkScheme: nil withLinkAttributes: nil]; } @@ -104,6 +108,7 @@ { return [self _cardStringWithLabel: label value: value + byEscapingHTMLString: YES asLinkScheme: scheme withLinkAttributes: nil]; } @@ -144,6 +149,7 @@ return [self _cardStringWithLabel: @"Email:" value: email + byEscapingHTMLString: YES asLinkScheme: @"mailto:" withLinkAttributes: attrs]; } @@ -182,6 +188,7 @@ [secondaryEmails addObject: [self _cardStringWithLabel: nil value: email + byEscapingHTMLString: YES asLinkScheme: @"mailto:" withLinkAttributes: attrs]]; } @@ -365,6 +372,7 @@ return [self _cardStringWithLabel: nil value: data + byEscapingHTMLString: YES asLinkScheme: schema withLinkAttributes: @"target=\"_blank\""]; } @@ -591,13 +599,18 @@ note = [card note]; if (note) { + note = [note stringByEscapingHTMLString]; note = [note stringByReplacingString: @"\r\n" withString: @"
"]; note = [note stringByReplacingString: @"\n" withString: @"
"]; } - return [self _cardStringWithLabel: @"Note:" value: note]; + return [self _cardStringWithLabel: @"Note:" + value: note + byEscapingHTMLString: NO + asLinkScheme: nil + withLinkAttributes: nil]; } /* hrefs */ From e3837188fd747ad8cb4d752c99b8027661fed03a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 6 Oct 2014 14:45:30 -0400 Subject: [PATCH 018/198] Updated spec file for SOGo's private libraries move --- packaging/rhel/sogo.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index a330f39e3..0f1449f79 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -260,8 +260,8 @@ rm -fr ${RPM_BUILD_ROOT} %dir %attr(0750, root, %sogo_user) %{_sysconfdir}/sogo %{_sbindir}/sogod %{_sbindir}/openchange_user_cleanup -%{_libdir}/libSOGo.so.* -%{_libdir}/libSOGoUI.so.* +%{_libdir}/sogo/libSOGo.so.* +%{_libdir}/sogo/libSOGoUI.so.* %{_libdir}/GNUstep/SOGo/AdministrationUI.SOGo %{_libdir}/GNUstep/SOGo/Appointments.SOGo %{_libdir}/GNUstep/SOGo/CommonUI.SOGo @@ -317,21 +317,21 @@ rm -fr ${RPM_BUILD_ROOT} %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore %defattr(-,root,root,-) -%{_libdir}/libGDLContentStore*.so.* +%{_libdir}/sogo/libGDLContentStore*.so.* %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore-devel %{_includedir}/GDLContentStore -%{_libdir}/libGDLContentStore*.so +%{_libdir}/sogo/libGDLContentStore*.so %files -n sope%{sope_major_version}%{sope_minor_version}-cards -%{_libdir}/libNGCards.so.* +%{_libdir}/sogo/libNGCards.so.* %{_libdir}/GNUstep/SaxDrivers-* %{_libdir}/GNUstep/SaxMappings %{_libdir}/GNUstep/Libraries/Resources/NGCards %files -n sope%{sope_major_version}%{sope_minor_version}-cards-devel %{_includedir}/NGCards -%{_libdir}/libNGCards.so +%{_libdir}/sogo/libNGCards.so %if %{sogo_major_version} >= 2 %files openchange-backend From 22844a57426d9b3e2938a579f959fb934ef59357 Mon Sep 17 00:00:00 2001 From: Jens Erat Date: Wed, 8 Oct 2014 10:01:17 +0200 Subject: [PATCH 019/198] Minor fixes in documentation --- Documentation/SOGoInstallationGuide.asciidoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index c4f077505..f02c84248 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -193,7 +193,7 @@ installation for a Red Hat or CentOS distribution. Software Downloads ~~~~~~~~~~~~~~~~~~ -SOGo can be installed using the+yum+utility. To do so, first create +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: @@ -1167,7 +1167,7 @@ keytool -import -keystore /etc/ssl/certs/java/cacerts \ *The certificate used by the CAS server must also be trusted by SOGo.* In case of a self-signed certificate, this means exporting tomcat's -certificate using the +keytool+utility, converting it to PEM format and +certificate using the `keytool` utility, converting it to PEM format and appending it to the `ca-certificates.crt` file (the name and location of that file differs between distributions). Basically: @@ -1581,8 +1581,8 @@ Note that TLS is supported but SSL is not. |D |SOGoSieveFolderEncoding |Parameter used to specify which encoding is used for IMAP folder names -in Sieve filters. Defaults to "UTF-7". The other possible value is -"UTF-8". +in Sieve filters. Defaults to `UTF-7`. The other possible value is +`UTF-8`. |U |SOGoMailShowSubscribedFoldersOnly |Parameter used to specify if the Web interface should only show @@ -1644,7 +1644,7 @@ SASL mechanism. Please note that feature might be limited at this time. |D |NGImap4ConnectionGroupIdPrefix |Prefix to prepend to names in IMAP ACL transactions, to indicate the -name is a group name not a user name. +name is a group name, not a user name. RFC4314 gives examples where group names are prefixed with `$`. Dovecot, for one, follows this scheme, and will, for example, apply permissions @@ -1993,7 +1993,7 @@ Defaults to `NO` when unset. SOGo Configuration Summary ~~~~~~~~~~~~~~~~~~~~~~~~~~ -The complete SOGo configuration file+/etc/sogo/sogo.conf+should look +The complete SOGo configuration file `/etc/sogo/sogo.conf` should look like this: ---- From 25f68c7eb5263aaaaf7c5e4cfe29d8ecc60386ec Mon Sep 17 00:00:00 2001 From: Jens Erat Date: Wed, 8 Oct 2014 10:07:48 +0200 Subject: [PATCH 020/198] Added missing NGImap4DisableIMAP4Pooling option to documentation --- Documentation/SOGoInstallationGuide.asciidoc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index f02c84248..27757da34 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -1632,6 +1632,12 @@ cronjob `sogo-tmpwatch`. Defaults to `/var/spool/sogo`. +|S |NGImap4DisableIMAP4Pooling +|Disables IMAP pooling when set to `YES`. Enable pooling by setting to +`NO` or using a caching proxy like imapproxy. + +The default value is `YES`. + |S |NGImap4ConnectionStringSeparator |Parameter used to set the IMAP mailbox separator. Setting this will also have an impact on the mailbox separator used by Sieve filters. From 20e0cd623407d2066168818c7dd8c26a6afba05e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:10:02 -0400 Subject: [PATCH 021/198] Fixed RHEL packaging with lib move to "sogo" app directory --- packaging/rhel/sogo.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 0f1449f79..0234ad118 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -306,14 +306,14 @@ rm -fr ${RPM_BUILD_ROOT} %files -n sogo-devel %{_includedir}/SOGo %{_includedir}/SOGoUI -%{_libdir}/libSOGo.so -%{_libdir}/libSOGoUI.so +%{_libdir}/sogo/libSOGo.so +%{_libdir}/sogo/libSOGoUI.so %{_libdir}/GNUstep/Frameworks/SOGo.framework/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/libSOGo.so -%{_libdir}/GNUstep/Frameworks/SOGo.framework/SOGo +%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/SOGo +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/SOGo %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore %defattr(-,root,root,-) From 29295f93c5a1b807eda1e4d6c92f9d1271e72597 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:17:26 -0400 Subject: [PATCH 022/198] Fixed again the spec file --- packaging/rhel/sogo.spec | 55 +++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 0234ad118..06f4b2f3a 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -306,13 +306,13 @@ rm -fr ${RPM_BUILD_ROOT} %files -n sogo-devel %{_includedir}/SOGo %{_includedir}/SOGoUI -%{_libdir}/sogo/libSOGo.so -%{_libdir}/sogo/libSOGoUI.so +%{_libdir}/sogo/libSOGo.so.* +%{_libdir}/sogo/libSOGoUI.so.* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so.* %{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so.* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/SOGo %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore @@ -371,73 +371,76 @@ fi # ********************************* changelog ************************* %changelog -* Wed Jan 15 2014 Jean Raby +* Wed Oct 8 2014 Inverse inc. +- fixed the library move to "sogo" app dir + +* Wed Jan 15 2014 Inverse inc. - New package: sogo-activesync - explicitly list all *.SOGo modules in sogo package - added dependency on sogo = %version for sogo-tool -* Thu Apr 17 2013 Jean Raby +* Thu Apr 17 2013 Inverse inc. - Install openchange_user_cleanup in sbindir instead of doc -* Wed Apr 10 2013 Jean Raby +* Wed Apr 10 2013 Inverse inc. - use %sogo_user instead of 'sogo' - install a sample sogo.conf in /etc/sogo -* Tue Jan 22 2013 Jean Raby +* Tue Jan 22 2013 Inverse inc. - Create the sogo user as a system user - Use %attr() to set directory permissions instead of chown/chmod -* Mon Nov 12 2012 Jean Raby +* Mon Nov 12 2012 Inverse inc. - Add missing dependency on lasso and lasso-devel -* Mon Nov 05 2012 Jean Raby +* Mon Nov 05 2012 Inverse inc. - Disable saml2 on rhel5 - glib2 too old -* Fri Nov 02 2012 Jean Raby +* Fri Nov 02 2012 Inverse inc. - Enable saml2 -* Tue Aug 28 2012 Jean Raby +* Tue Aug 28 2012 Inverse inc. - Add openchange_cleanup.py and tweak it to work on RHEL5 -* Tue Jul 31 2012 Jean Raby +* Tue Jul 31 2012 Inverse inc. - treat logrotate file as a config file -* Fri May 24 2012 Jean Raby +* Fri May 24 2012 Inverse inc. - %post: restart sogo if it was running before rpm install -* Fri Mar 16 2012 Jean Raby +* Fri Mar 16 2012 Inverse inc. - %post: update timestamp on imgs,css,js to let apache know the files changed -* Fri Feb 16 2012 Jean Raby +* Fri Feb 16 2012 Inverse inc. - Use globbing to include all sql upgrade scripts instead of listing them all -* Tue Jan 10 2012 Jean Raby +* Tue Jan 10 2012 Inverse inc. - /etc/cron.d/sogo -* Thu Oct 27 2011 Wolfgang Sourdeau +* Thu Oct 27 2011 Inverse inc. - make build of sogo-openchange-backend conditional to sogo_version >= 2 -* Fri Oct 14 2011 Wolfgang Sourdeau +* Fri Oct 14 2011 Inverse inc. - adapted to gnustep-make 2.6 - added sogo-openchange-backend -* Tue Sep 28 2010 Wolfgang Sourdeau +* Tue Sep 28 2010 Inverse inc. - removed "README" from documentation -* Fri Aug 20 2010 Wolfgang Sourdeau +* Fri Aug 20 2010 Inverse inc. - added sogo-ealarms-notify package -* Tue Apr 06 2010 Wolfgang Sourdeau +* Tue Apr 06 2010 Inverse inc. - added sogo-slapd-sockd package -* Thu Jul 31 2008 Wolfgang Sourdeau +* Thu Jul 31 2008 Inverse inc. - added dependencies on sopeXY-appserver, -core, -gdl1-contentstore and -ldap -* Wed May 21 2008 Wolfgang Sourdeau +* Wed May 21 2008 Inverse inc. - removed installation of template and resource files, since it is now done by the upstream package -* Tue Oct 4 2007 Francis Lachapelle +* Tue Oct 4 2007 Inverse inc. - added package sope-gdl1-contentstore -* Wed Jul 18 2007 Wolfgang Sourdeau +* Wed Jul 18 2007 Inverse inc. - initial build From ab9ba66b366c9b97cde626fe8a5cd23b3f0d3cdb Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:22:14 -0400 Subject: [PATCH 023/198] More fixes --- packaging/rhel/sogo.spec | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 06f4b2f3a..42debb587 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -260,8 +260,8 @@ rm -fr ${RPM_BUILD_ROOT} %dir %attr(0750, root, %sogo_user) %{_sysconfdir}/sogo %{_sbindir}/sogod %{_sbindir}/openchange_user_cleanup -%{_libdir}/sogo/libSOGo.so.* -%{_libdir}/sogo/libSOGoUI.so.* +%{_libdir}/sogo/libSOGo.so* +%{_libdir}/sogo/libSOGoUI.so* %{_libdir}/GNUstep/SOGo/AdministrationUI.SOGo %{_libdir}/GNUstep/SOGo/Appointments.SOGo %{_libdir}/GNUstep/SOGo/CommonUI.SOGo @@ -275,7 +275,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/GNUstep/SOGo/SchedulerUI.SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Resources -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so.* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Resources %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/Current %{_libdir}/GNUstep/SOGo/Templates @@ -306,32 +306,32 @@ rm -fr ${RPM_BUILD_ROOT} %files -n sogo-devel %{_includedir}/SOGo %{_includedir}/SOGoUI -%{_libdir}/sogo/libSOGo.so.* -%{_libdir}/sogo/libSOGoUI.so.* +%{_libdir}/sogo/libSOGo.so* +%{_libdir}/sogo/libSOGoUI.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so.* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so.* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/SOGo %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore %defattr(-,root,root,-) -%{_libdir}/sogo/libGDLContentStore*.so.* +%{_libdir}/sogo/libGDLContentStore*.so* %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore-devel %{_includedir}/GDLContentStore -%{_libdir}/sogo/libGDLContentStore*.so +%{_libdir}/sogo/libGDLContentStore*.so* %files -n sope%{sope_major_version}%{sope_minor_version}-cards -%{_libdir}/sogo/libNGCards.so.* +%{_libdir}/sogo/libNGCards.so* %{_libdir}/GNUstep/SaxDrivers-* %{_libdir}/GNUstep/SaxMappings %{_libdir}/GNUstep/Libraries/Resources/NGCards %files -n sope%{sope_major_version}%{sope_minor_version}-cards-devel %{_includedir}/NGCards -%{_libdir}/sogo/libNGCards.so +%{_libdir}/sogo/libNGCards.so* %if %{sogo_major_version} >= 2 %files openchange-backend From 435ebb9eb41fc88a8af1de280f1894608e61f302 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:25:40 -0400 Subject: [PATCH 024/198] Fixes --- packaging/rhel/sogo.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 42debb587..098a8893f 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -275,7 +275,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/GNUstep/SOGo/SchedulerUI.SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Resources -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Resources %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/Current %{_libdir}/GNUstep/SOGo/Templates @@ -309,10 +309,10 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/sogo/libSOGo.so* %{_libdir}/sogo/libSOGoUI.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so %{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so* +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/SOGo %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore From 3e2de9701cd1af8d27b9c0abf43e199049496b5d Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:29:08 -0400 Subject: [PATCH 025/198] Fixes --- packaging/rhel/sogo.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 098a8893f..90d7ad291 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -275,7 +275,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/GNUstep/SOGo/SchedulerUI.SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Resources -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Resources %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/Current %{_libdir}/GNUstep/SOGo/Templates @@ -312,7 +312,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/libSOGo.so %{_libdir}/GNUstep/Frameworks/SOGo.framework/sogo/SOGo %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/Headers -%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so +%{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/libSOGo.so* %{_libdir}/GNUstep/Frameworks/SOGo.framework/Versions/%{sogo_major_version}/sogo/SOGo %files -n sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore From f1919d10edcb56c4ae87a79a61522063c4d6e808 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 09:35:50 -0400 Subject: [PATCH 026/198] Flag for conditional openchange build --- packaging/rhel/sogo.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 90d7ad291..f8ffa51c6 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -36,6 +36,10 @@ BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{so %{?!el5:Requires: lasso} %{?!el5:BuildRequires: lasso-devel} +# We disable OpenChange builds on el5 since it's prehistoric +%define enable_openchange 1 +%{?el5:%define enable_openchange 0} + %description SOGo is a groupware server built around OpenGroupware.org (OGo) and the SOPE application server. It focuses on scalability. @@ -333,7 +337,7 @@ rm -fr ${RPM_BUILD_ROOT} %{_includedir}/NGCards %{_libdir}/sogo/libNGCards.so* -%if %{sogo_major_version} >= 2 +%if %enable_openchange %files openchange-backend %defattr(-,root,root,-) %{_libdir}/GNUstep/SOGo/*.MAPIStore From ff9d49be71645c97d7692af67fda8bfacbb6179a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 8 Oct 2014 10:25:46 -0400 Subject: [PATCH 027/198] Dropped rpath since it seems to be ignored on el5 --- Tests/Integration/GNUmakefile.preamble | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 0da5bbed9..4f707043a 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -13,7 +13,6 @@ ADDITIONAL_LIB_DIRS += \ -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ - -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions \ - -Wl,-rpath,/usr/lib/sogo -Wl,-rpath,/usr/local/lib/sogo + -L/usr/local/lib/sogo -L/usr/lib/sogo -lEOControl -lNGStreams -lNGMime -lNGExtensions ADDITIONAL_LDFLAGS += -Wl,--no-as-needed From 6cc8f17c86713f39ba60d8ae8129ea4ceb052f63 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 9 Oct 2014 15:10:20 -0400 Subject: [PATCH 028/198] Fix display name of subscribed folders --- NEWS | 1 + SoObjects/SOGo/SOGoGCSFolder.m | 62 +++++++++++++++++----------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/NEWS b/NEWS index 98bf909fd..b5a36c7f3 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) - don't escape
's in a card's note field + - fixed folder's display name when the active user subscribes another user to one of her/his folders 2.2.9a (2014-09-29) ------------------- diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index c8a2bccea..bf042a2e4 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -282,41 +282,40 @@ static NSArray *childRecordFields = nil; return value; } -- (void) _setDisplayNameFromRow: (NSDictionary *) row +- (NSString *) _displayNameFromRow: (NSDictionary *) row { - NSString *primaryDN; + NSString *name, *primaryDN; + name = nil; primaryDN = [row objectForKey: @"c_foldername"]; if ([primaryDN length]) { - DESTROY(displayName); - if ([primaryDN isEqualToString: [container defaultFolderName]]) - displayName = [self labelForKey: primaryDN - inContext: context]; + name = [self labelForKey: primaryDN + inContext: context]; else - displayName = primaryDN; - - RETAIN(displayName); + name = primaryDN; } + + return name; } /* This method fetches the display name defined by the owner, but is also the fallback when a subscriber has not redefined the display name yet in his environment. */ -- (void) _fetchDisplayNameFromOwner +- (NSString *) _displayNameFromOwner { GCSChannelManager *cm; EOAdaptorChannel *fc; NSURL *folderLocation; - NSString *sql; + NSString *name, *sql; NSArray *attrs; NSDictionary *row; + name = nil; cm = [GCSChannelManager defaultChannelManager]; - folderLocation - = [[GCSFolderManager defaultFolderManager] folderInfoLocation]; + folderLocation = [[GCSFolderManager defaultFolderManager] folderInfoLocation]; fc = [cm acquireOpenChannelForURL: folderLocation]; if (fc) { @@ -324,33 +323,34 @@ static NSArray *childRecordFields = nil; // performing the query. This could have unexpected results. NS_DURING { - sql - = [NSString stringWithFormat: (@"SELECT c_foldername FROM %@" - @" WHERE c_path = '%@'"), - [folderLocation gcsTableName], ocsPath]; + sql = [NSString stringWithFormat: (@"SELECT c_foldername FROM %@" + @" WHERE c_path = '%@'"), + [folderLocation gcsTableName], ocsPath]; [fc evaluateExpressionX: sql]; attrs = [fc describeResults: NO]; row = [fc fetchAttributes: attrs withZone: NULL]; if (row) - [self _setDisplayNameFromRow: row]; + name = [self _displayNameFromRow: row]; [fc cancelFetch]; [cm releaseChannel: fc]; } NS_HANDLER; NS_ENDHANDLER; } + + return name; } -- (void) _fetchDisplayNameFromSubscriber +- (NSString *) _displayNameFromSubscriber { NSDictionary *ownerIdentity, *folderSubscriptionValues; - NSString *displayNameFormat; + NSString *name, *displayNameFormat; SOGoDomainDefaults *dd; - displayName = [self folderPropertyValueInCategory: @"FolderDisplayNames"]; - if (!displayName) + name = [self folderPropertyValueInCategory: @"FolderDisplayNames"]; + if (!name) { - [self _fetchDisplayNameFromOwner]; + name = [self _displayNameFromOwner]; // We MUST NOT use SOGoUser instances here (by calling -primaryIdentity) // as it'll load user defaults and user settings which is _very costly_ @@ -358,17 +358,17 @@ static NSArray *childRecordFields = nil; ownerIdentity = [[SOGoUserManager sharedUserManager] contactInfosForUserWithUIDorEmail: owner]; - folderSubscriptionValues = [[NSDictionary alloc] initWithObjectsAndKeys: displayName, @"FolderName", + folderSubscriptionValues = [[NSDictionary alloc] initWithObjectsAndKeys: name, @"FolderName", [ownerIdentity objectForKey: @"cn"], @"UserName", [ownerIdentity objectForKey: @"c_email"], @"Email", nil]; dd = [[context activeUser] domainDefaults]; displayNameFormat = [dd subscriptionFolderFormat]; - displayName = [folderSubscriptionValues keysWithFormat: displayNameFormat]; + name = [folderSubscriptionValues keysWithFormat: displayNameFormat]; } - [displayName retain]; + return name; } - (NSString *) displayName @@ -376,14 +376,14 @@ static NSArray *childRecordFields = nil; if (!displayName) { if (activeUserIsOwner) - [self _fetchDisplayNameFromOwner]; + displayName = [self _displayNameFromOwner]; else { - [self _fetchDisplayNameFromSubscriber]; - + displayName = [self _displayNameFromSubscriber]; if (!displayName) - [self _fetchDisplayNameFromOwner]; + displayName = [self _displayNameFromOwner]; } + [displayName retain]; } return displayName; @@ -949,7 +949,7 @@ static NSArray *childRecordFields = nil; forKey: @"FolderShowAlarms"]; } - [self setFolderPropertyValue: [self displayName] + [self setFolderPropertyValue: [self _displayNameFromSubscriber] inCategory: @"FolderDisplayNames" settings: us]; From 460ed2e7bcfd11a2beef4c8146fdd9030a415115 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 9 Oct 2014 15:11:06 -0400 Subject: [PATCH 029/198] Fix JavaScript warning on undefined variable --- UI/WebServerResources/ContactsUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index bfe85c311..27a462984 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -1629,7 +1629,7 @@ function onContactsReload () { } function initRefreshViewCheckTimer() { - var refreshViewCheck = UserDefaults["SOGoRefreshViewCheck"]; + var refreshViewCheck = typeof UserDefaults == 'undefined' ? false : UserDefaults["SOGoRefreshViewCheck"]; if (refreshViewCheck && refreshViewCheck != "manually") { var interval; if (refreshViewCheck == "once_per_hour") From f8a371e351ce161037017ba79c367c494b6d56f1 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 9 Oct 2014 15:12:24 -0400 Subject: [PATCH 030/198] Fix folder's name when subscribing to a folder --- NEWS | 1 + UI/WebServerResources/UIxContactsUserFolders.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index b5a36c7f3..ad28b7a62 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) - don't escape
's in a card's note field + - fixed folder's display name when subscribing to a folder - fixed folder's display name when the active user subscribes another user to one of her/his folders 2.2.9a (2014-09-29) diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index c473906b9..37433ccaf 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -199,7 +199,7 @@ function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) { node._ls = isLast; var content = tree.node(node, (nodeId + subId), null); - content._formattedName = folder.formattedName; + content.displayName = folder.displayName; return content; } @@ -228,7 +228,7 @@ function onConfirmFolderSelection(event) { folderName = description.replace(/>,.*$/, ">", "g"); } else { - folderName = node._formattedName; + folderName = node.displayName; } var data = { folderName: folderName, folder: folder, type: type, window: window }; if (parent$(accessToSubscribedFolder(folder))) From 27ac9e3904f43de0764b426754df6c86db8f3c69 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 9 Oct 2014 15:46:44 -0400 Subject: [PATCH 031/198] Cleanup of unused parameters --- SoObjects/SOGo/SOGoUserFolder.m | 15 +-------------- UI/WebServerResources/AdministrationUI.js | 6 +----- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/SoObjects/SOGo/SOGoUserFolder.m b/SoObjects/SOGo/SOGoUserFolder.m index 9292f9ffa..ba8414b81 100644 --- a/SoObjects/SOGo/SOGoUserFolder.m +++ b/SoObjects/SOGo/SOGoUserFolder.m @@ -153,14 +153,12 @@ - (NSArray *) _subFoldersFromFolder: (SOGoParentFolder *) parentFolder { - NSDictionary *folderSubscriptionValues, *ownerIdentity; - NSString *folderName, *folderOwner, *formattedName; + NSString *folderName, *folderOwner; NSMutableDictionary *currentDictionary; SoSecurityManager *securityManager; SOGoFolder *currentFolder; NSEnumerator *subfolders; NSMutableArray *folders; - SOGoDomainDefaults *dd; Class subfolderClass; folders = [NSMutableArray array]; @@ -193,17 +191,6 @@ [currentDictionary setObject: [currentFolder folderType] forKey: @"type"]; - dd = [[context activeUser] domainDefaults]; - ownerIdentity = [[SOGoUserManager sharedUserManager] - contactInfosForUserWithUIDorEmail: owner]; - folderSubscriptionValues = [[NSDictionary alloc] initWithObjectsAndKeys: [currentFolder displayName], @"FolderName", - [ownerIdentity objectForKey: @"cn"], @"UserName", - [ownerIdentity objectForKey: @"c_email"], @"Email", nil]; - - formattedName = [folderSubscriptionValues keysWithFormat: [dd subscriptionFolderFormat]]; - [currentDictionary setObject: formattedName - forKey: @"formattedName"]; - [folders addObject: currentDictionary]; } } diff --git a/UI/WebServerResources/AdministrationUI.js b/UI/WebServerResources/AdministrationUI.js index a2855464e..a22f9d8d1 100644 --- a/UI/WebServerResources/AdministrationUI.js +++ b/UI/WebServerResources/AdministrationUI.js @@ -153,15 +153,11 @@ function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) { else icon += 'calendar-folder-16x16.png'; var folderId = user + ":" + folder.name.substr(1); - var name = folder.displayName.escapeHTML(); // name has the format "Folername (Firstname Lastname )" - var pos = name.lastIndexOf(' ('); - if (pos > -1) - name = name.substring(0, pos); // strip the part with fullname and email + var name = folder.displayName.escapeHTML(); var node = new dTreeNode(subId, nodeId, name, 0, '#', folderId, folder.type + '-folder', '', '', icon, icon); node._ls = isLast; var content = tree.node(node, (nodeId + subId), null); - content._formattedName = folder.formattedName; return content; } From 4b76e2b933ae675800139e37fdd14ad1982ebc50 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 08:43:28 -0400 Subject: [PATCH 032/198] Added lib64 in the search path --- Tests/Integration/GNUmakefile.preamble | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 4f707043a..3173c8993 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -13,6 +13,6 @@ ADDITIONAL_LIB_DIRS += \ -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ - -L/usr/local/lib/sogo -L/usr/lib/sogo -lEOControl -lNGStreams -lNGMime -lNGExtensions + -L/usr/local/lib/sogo -L/usr/lib/sogo -L/usr/lib64/sogo -lEOControl -lNGStreams -lNGMime -lNGExtensions ADDITIONAL_LDFLAGS += -Wl,--no-as-needed From 1a8aa5a587c63b3c5d434353a41c6d9cffd540ef Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 09:00:14 -0400 Subject: [PATCH 033/198] Fixed spec file to not build sogo-openchange if disabled --- packaging/rhel/sogo.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index f8ffa51c6..b8e9fcfbc 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -143,7 +143,7 @@ AutoReqProv: off %description -n sope%{sope_major_version}%{sope_minor_version}-cards-devel SOPE versit parsing library for iCal and VCard formats -%if %{sogo_major_version} >= 2 +%if %enable_openchange %package openchange-backend Summary: SOGo backend for OpenChange Group: Productivity/Groupware From 81ff6bebfeb30b2abafa31eb4b0e86b102c0f4c0 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 09:02:15 -0400 Subject: [PATCH 034/198] Removed dependancies when openchange is disabled --- packaging/rhel/sogo.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index b8e9fcfbc..e1d403a1c 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -1,5 +1,9 @@ +# We disable OpenChange builds on el5 since it's prehistoric +%define enable_openchange 1 +%{?el5:%define enable_openchange 0} + %{!?sogo_major_version: %global sogo_major_version %(/bin/echo %{sogo_version} | /bin/cut -f 1 -d .)} -%if %{sogo_major_version} >= 2 +%if %enable_openchange %global oc_build_depends samba4 openchange %endif @@ -36,10 +40,6 @@ BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{so %{?!el5:Requires: lasso} %{?!el5:BuildRequires: lasso-devel} -# We disable OpenChange builds on el5 since it's prehistoric -%define enable_openchange 1 -%{?el5:%define enable_openchange 0} - %description SOGo is a groupware server built around OpenGroupware.org (OGo) and the SOPE application server. It focuses on scalability. From c5a7bcf2aaa4177b873c4a0ca780e046d041e074 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 09:17:00 -0400 Subject: [PATCH 035/198] Fixed the system lib dir to point to the sogo lib dir --- Main/GNUmakefile.preamble | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble index a75f9f932..c71f236ea 100644 --- a/Main/GNUmakefile.preamble +++ b/Main/GNUmakefile.preamble @@ -12,7 +12,7 @@ ADDITIONAL_LIB_DIRS += \ -L../SoObjects/SOGo/SOGo.framework/sogo \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -SYSTEM_LIB_DIR += -L/usr/local/lib -L/usr/lib +SYSTEM_LIB_DIR += -L/usr/lib/sogo -L/usr/lib64/sogo -L/usr/local/lib/sogo $(SOGOD)_TOOL_LIBS += \ -lSOGo \ From ccabd93ff2175dc4c26bf11694542a1acf1d382c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 09:21:12 -0400 Subject: [PATCH 036/198] moved system lib dirs to additional lib dirs --- Main/GNUmakefile.preamble | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble index c71f236ea..3e9dc6aa8 100644 --- a/Main/GNUmakefile.preamble +++ b/Main/GNUmakefile.preamble @@ -10,9 +10,10 @@ ADDITIONAL_INCLUDE_DIRS += \ ADDITIONAL_LIB_DIRS += \ -L../SoObjects/SOGo/SOGo.framework/sogo \ - -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ + -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ + -L/usr/local/lib/sogo -L/usr/lib/sogo -L/usr/lib64/sogo -SYSTEM_LIB_DIR += -L/usr/lib/sogo -L/usr/lib64/sogo -L/usr/local/lib/sogo +SYSTEM_LIB_DIR += -L/usr/local/lib -L/usr/lib $(SOGOD)_TOOL_LIBS += \ -lSOGo \ From f6639508089352980758aadc1b9d565157ee4adc Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 09:51:04 -0400 Subject: [PATCH 037/198] Adjusted the rpath, removed unnecessary variables/values --- Main/GNUmakefile | 3 +-- Main/GNUmakefile.preamble | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Main/GNUmakefile b/Main/GNUmakefile index ac0632d8a..33a40230d 100644 --- a/Main/GNUmakefile +++ b/Main/GNUmakefile @@ -6,8 +6,7 @@ include ../Version ADDITIONAL_OBJCFLAGS += -fPIE ADDITIONAL_INCLUDE_DIRS += -ADDITIONAL_LIB_DIRS += -L../SOPE/GDLContentStore/obj/ -ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -fPIE -pie -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo +ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -fPIE -pie -Wl,--rpath,$(GNUSTEP_SYSTEM_LIBRARIES)/sogo SOGOD = sogod TOOL_NAME = $(SOGOD) diff --git a/Main/GNUmakefile.preamble b/Main/GNUmakefile.preamble index 3e9dc6aa8..bc6998db8 100644 --- a/Main/GNUmakefile.preamble +++ b/Main/GNUmakefile.preamble @@ -9,11 +9,9 @@ ADDITIONAL_INCLUDE_DIRS += \ -I.. ADDITIONAL_LIB_DIRS += \ - -L../SoObjects/SOGo/SOGo.framework/sogo \ + -L../SoObjects/SOGo/SOGo.framework/sogo \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ - -L/usr/local/lib/sogo -L/usr/lib/sogo -L/usr/lib64/sogo - -SYSTEM_LIB_DIR += -L/usr/local/lib -L/usr/lib + -L../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ $(SOGOD)_TOOL_LIBS += \ -lSOGo \ From 3416bfea94f17dd26b55bb4133c431f2640c9371 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 10:00:05 -0400 Subject: [PATCH 038/198] Adjusted rpath and removed unusued -L directives --- ActiveSync/common.make | 2 +- Tools/GNUmakefile | 2 +- Tools/GNUmakefile.preamble | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ActiveSync/common.make b/ActiveSync/common.make index bf77fa3be..15024630c 100644 --- a/ActiveSync/common.make +++ b/ActiveSync/common.make @@ -20,7 +20,7 @@ ADDITIONAL_LIB_DIRS += \ -L../SoObjects/SOGo/$(GNUSTEP_OBJ_DIR)/ \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ \ -L/usr/local/lib \ - -Wl,-rpath,$(SOGO_SYSLIBDIR)/sogo + -Wl,-rpath,$(GNUSTEP_SYSTEM_LIBRARIES)/sogo BUNDLE_LIBS += \ -lSOGo \ diff --git a/Tools/GNUmakefile b/Tools/GNUmakefile index ec65344f3..bb580edc9 100644 --- a/Tools/GNUmakefile +++ b/Tools/GNUmakefile @@ -4,7 +4,7 @@ include ../config.make include $(GNUSTEP_MAKEFILES)/common.make include ../Version -ADDITIONAL_LDFLAGS += -Wl,--rpath,$(SOGO_SYSLIBDIR)/sogo +ADDITIONAL_LDFLAGS += -Wl,--rpath,$(GNUSTEP_SYSTEM_LIBRARIES)/sogo ### SOGO_TOOL = sogo-tool diff --git a/Tools/GNUmakefile.preamble b/Tools/GNUmakefile.preamble index 1cf88ce79..f6ed0bb7f 100644 --- a/Tools/GNUmakefile.preamble +++ b/Tools/GNUmakefile.preamble @@ -13,4 +13,4 @@ ADDITIONAL_LIB_DIRS += \ -L../SoObjects/SOGo/SOGo.framework/sogo -lSOGo \ -L../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ -L../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ - -L/usr/local/lib -L/usr/lib -lEOControl -lNGStreams -lNGMime -lNGExtensions -lNGObjWeb + -lEOControl -lNGStreams -lNGMime -lNGExtensions -lNGObjWeb From 923aa5d9b669d9ebca4b80a50c37c148aa17bb60 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Tue, 14 Oct 2014 10:29:11 -0400 Subject: [PATCH 039/198] bugfix #2952, default sorting for new user --- UI/WebServerResources/MailerUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 7a5e592f0..33dab730d 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -843,7 +843,7 @@ function composeNewMessage() { function openMailbox(mailbox, reload) { if (mailbox != Mailer.currentMailbox || reload) { var url = ApplicationBaseURL + encodeURI(mailbox.unescapeHTML()); - var urlParams = {}; + var urlParams = {"filters": [], "sortingAttributes": {}}; if (!reload) { var messageContent = $("messageContent"); From 5f811e1a4e4e6b5e89cd616ddbc0b37ff3e0635a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 10:43:52 -0400 Subject: [PATCH 040/198] Added rpath for integration tests --- Tests/Integration/GNUmakefile.preamble | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 3173c8993..8515573d3 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -12,7 +12,6 @@ ADDITIONAL_INCLUDE_DIRS += \ ADDITIONAL_LIB_DIRS += \ -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ - -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ - -L/usr/local/lib/sogo -L/usr/lib/sogo -L/usr/lib64/sogo -lEOControl -lNGStreams -lNGMime -lNGExtensions + -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards -ADDITIONAL_LDFLAGS += -Wl,--no-as-needed +ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -Wl,--rpath,$(GNUSTEP_SYSTEM_LIBRARIES)/sogo From 0327a42c9c7d305af78504264821281de7e9c2d3 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Tue, 14 Oct 2014 10:45:30 -0400 Subject: [PATCH 041/198] Update NEWS file --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index ad28b7a62..10b060422 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ Bug fixes - don't escape
's in a card's note field - fixed folder's display name when subscribing to a folder - fixed folder's display name when the active user subscribes another user to one of her/his folders + - fixed error with new user default sorting value for the mailer module (#2952) 2.2.9a (2014-09-29) ------------------- From 3264458f4be46d8725962bb215350e7ca291ad18 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 14 Oct 2014 11:27:08 -0400 Subject: [PATCH 042/198] Added back -L directives to properly compile teststrings --- Tests/Integration/GNUmakefile.preamble | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Tests/Integration/GNUmakefile.preamble b/Tests/Integration/GNUmakefile.preamble index 8515573d3..68878f481 100644 --- a/Tests/Integration/GNUmakefile.preamble +++ b/Tests/Integration/GNUmakefile.preamble @@ -12,6 +12,8 @@ ADDITIONAL_INCLUDE_DIRS += \ ADDITIONAL_LIB_DIRS += \ -L../../SoObjects/SOGo/SOGo.framework/Versions/Current/sogo -lSOGo \ -L../../SOPE/GDLContentStore/$(GNUSTEP_OBJ_DIR)/ -lGDLContentStore \ - -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards + -L../../SOPE/NGCards/$(GNUSTEP_OBJ_DIR)/ -lNGCards \ + -L/usr/local/lib/sogo -L/usr/lib/sogo -L/usr/lib64/sogo -lEOControl -lNGStreams -lNGMime -lNGExtensions + ADDITIONAL_LDFLAGS += -Wl,--no-as-needed -Wl,--rpath,$(GNUSTEP_SYSTEM_LIBRARIES)/sogo From e2136e041354f27fb0938b3fad15aa999ebe0621 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 14 Oct 2014 12:54:04 -0400 Subject: [PATCH 043/198] Don't leak database passwords in the logs Fixes #2953 --- NEWS | 7 +++++-- SOPE/GDLContentStore/GCSChannelManager.m | 12 +++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/NEWS b/NEWS index 10b060422..35ef7881a 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,9 @@ 2.2.10 (2014-xx-xx) ------------------- +Enhancements + - no longer leaking database passwords in the logs (#2953) + Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) - don't escape
's in a card's note field @@ -21,7 +24,7 @@ New features - support for recurrent tasks (#2160) - support for alarms on recurrent events / tasks -Enchancements +Enhancements - alarms can now be snoozed for 1 day - better iOS/Mac OS X Calendar compability regarding alarms (#1920) - force default classification over CalDAV if none is set (#2326) @@ -46,7 +49,7 @@ New features - new user settings for threads collapsing - IMAP global search support (#2670) -Enchancements +Enhancements - major refactoring of the GCS component saving code (dropped OGoContentStore) - printing calendars in colors is now possible in all views; list, daily, weekly and multicolumns - new option to print calendars events and tasks with a background color or with a border color diff --git a/SOPE/GDLContentStore/GCSChannelManager.m b/SOPE/GDLContentStore/GCSChannelManager.m index 62a395e71..b21b230a6 100644 --- a/SOPE/GDLContentStore/GCSChannelManager.m +++ b/SOPE/GDLContentStore/GCSChannelManager.m @@ -276,7 +276,7 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60; EOAdaptorChannel *channel; GCSChannelHandle *handle; NSCalendarDate *now, *lastFailure; - NSString *urlId; + NSString *urlId, *url; channel = nil; urlId = [_url gcsURLId]; @@ -304,10 +304,10 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60; } else { + url = [NSString stringWithFormat: @"%@://%@%@", [_url scheme], [_url host], [_url path]]; if (debugPools) { - [self logWithFormat: @"DBPOOL: create new DB channel for URL: %@", - [_url absoluteString]]; + [self logWithFormat: @"DBPOOL: create new DB channel for %@", url]; } /* create channel */ @@ -330,15 +330,13 @@ static NSTimeInterval ChannelCollectionTimer = 5 * 60; if (lastFailure) { - [self logWithFormat: @"db for %@ is now back up", - [_url absoluteString]]; + [self logWithFormat: @"db for %@ is now back up", url]; [lastFailures removeObjectForKey: urlId]; } } else { - [self errorWithFormat: @"could not open channel %@ for URL: %@", - channel, [_url absoluteString]]; + [self errorWithFormat: @"could not open channel %@ for %@", channel, url]; channel = nil; [lastFailures setObject: now forKey: urlId]; [self warnWithFormat: @" will prevent opening of this" From 096a0ef8e4f908802176903685e74826c1fbc2ae Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 15 Oct 2014 11:35:59 -0400 Subject: [PATCH 044/198] Disabled openchange builds on all i386 arch --- packaging/rhel/sogo.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index e1d403a1c..5fbe6cd28 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -2,6 +2,10 @@ %define enable_openchange 1 %{?el5:%define enable_openchange 0} +%ifarch %ix86 +%define enable_openchange 0 +%endif + %{!?sogo_major_version: %global sogo_major_version %(/bin/echo %{sogo_version} | /bin/cut -f 1 -d .)} %if %enable_openchange %global oc_build_depends samba4 openchange From c43ad378500367eb1639d43ab6f69e81e13d2ff4 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 15 Oct 2014 15:21:20 -0400 Subject: [PATCH 045/198] Disable OpenChange for now on RHEL 7 --- packaging/rhel/sogo.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 5fbe6cd28..c9321c0da 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -1,6 +1,7 @@ # We disable OpenChange builds on el5 since it's prehistoric %define enable_openchange 1 %{?el5:%define enable_openchange 0} +%{?el7:%define enable_openchange 0} %ifarch %ix86 %define enable_openchange 0 From d6ff9038ce09e1c5eb507fc8d884708bc706d306 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 09:02:18 -0400 Subject: [PATCH 046/198] Disable timezone in AS for now --- ActiveSync/iCalEvent+ActiveSync.m | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m index bbffb0292..95291eb11 100644 --- a/ActiveSync/iCalEvent+ActiveSync.m +++ b/ActiveSync/iCalEvent+ActiveSync.m @@ -361,14 +361,15 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [self setAccessClass: @"PUBLIC"]; } } - - if ((o = [theValues objectForKey: @"TimeZone"])) - { - // Ugh, we ignore it for now. - userTimeZone = [[[context activeUser] userDefaults] timeZone]; - tz = [iCalTimeZone timeZoneForName: [userTimeZone name]]; - [(iCalCalendar *) parent addTimeZone: tz]; - } + + // We ignore TimeZone sent by mobile devices for now. + // Some Windows devices don't send during event updates. + //if ((o = [theValues objectForKey: @"TimeZone"])) + // { + userTimeZone = [[[context activeUser] userDefaults] timeZone]; + tz = [iCalTimeZone timeZoneForName: [userTimeZone name]]; + [(iCalCalendar *) parent addTimeZone: tz]; + //} // FIXME: merge with iCalToDo if ((o = [[theValues objectForKey: @"Body"] objectForKey: @"Data"])) From b2cab02d7064a6a7c79cf71a5aa748fa31be11ad Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 09:03:34 -0400 Subject: [PATCH 047/198] Handle empty categories --- ActiveSync/NGVCard+ActiveSync.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ActiveSync/NGVCard+ActiveSync.m b/ActiveSync/NGVCard+ActiveSync.m index bb4f29248..aaf6c8581 100644 --- a/ActiveSync/NGVCard+ActiveSync.m +++ b/ActiveSync/NGVCard+ActiveSync.m @@ -222,7 +222,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [self setNote: o]; // Categories - if ((o = [theValues objectForKey: @"Categories"])) + if ((o = [theValues objectForKey: @"Categories"]) && [o length]) [self setCategories: o]; // Birthday From b4f7ec3708bb5c44aaf1bd6637ee1f1df9a0b783 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 09:08:50 -0400 Subject: [PATCH 048/198] Don't send empty tag --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 024b2a2a7..5080f5dd6 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -1037,7 +1037,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. inBuffer: s processed: &processed]; - if (processed) + // Windows phons don't empty Responses tags - such as: . + // We onnly generate this tag when the command has generated a response. + if (processed && [s length]) [commandsBuffer appendFormat: @"%@", s]; else [commandsBuffer appendString: s]; From 231987242b367f3d60d45edf3ebddfda4257709f Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 09:10:54 -0400 Subject: [PATCH 049/198] Handle empty Attendees tag --- ActiveSync/iCalEvent+ActiveSync.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m index 95291eb11..1443df2c3 100644 --- a/ActiveSync/iCalEvent+ActiveSync.m +++ b/ActiveSync/iCalEvent+ActiveSync.m @@ -486,7 +486,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // be done automatically by the ActiveSync client when invoking MeetingResponse. if (![self userIsAttendee: [context activeUser]]) { - if ((o = [theValues objectForKey: @"Attendees"])) + // Windows phones sens sometimes an empty Attendees tag. + // We check it's an array before processing it. + if ((o = [theValues objectForKey: @"Attendees"])&& [o isKindOfClass: [NSArray class]]) { NSMutableArray *attendees; NSDictionary *attendee; From fb95d84a3a4eb1c3f329a02a4496cc7528f17c2a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 09:35:15 -0400 Subject: [PATCH 050/198] Handle base64 encoded query strings, popular on Windows devices --- ActiveSync/NSString+ActiveSync.m | 46 ++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/ActiveSync/NSString+ActiveSync.m b/ActiveSync/NSString+ActiveSync.m index 1007c4bde..2d6826b7f 100644 --- a/ActiveSync/NSString+ActiveSync.m +++ b/ActiveSync/NSString+ActiveSync.m @@ -35,9 +35,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include +#include #include +static NSArray *easCommandCodes = nil; + @implementation NSString (ActiveSync) - (NSString *) sanitizedServerIdWithType: (SOGoMicrosoftActiveSyncFolderType) folderType @@ -134,11 +138,49 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (NSString *) _valueForParameter: (NSString *) theParameter { - NSArray *components; + NSMutableArray *components; NSString *s; int i; - components = [[[self componentsSeparatedByString: @"?"] lastObject] componentsSeparatedByString: @"&"]; + components = [NSMutableArray arrayWithArray: [[[self componentsSeparatedByString: @"?"] lastObject] componentsSeparatedByString: @"&"]]; + + // We handle BASE64 encoded queryStrings. See http://msdn.microsoft.com/en-us/library/ee160227%28v=exchg.80%29.aspx for details. + if ([components count] == 1) + { + NSString *deviceType; + NSData *queryString; + + int cmd_code, deviceid_length, policy_length, devicetype_length; + const char* qs_bytes; + + queryString = [[components objectAtIndex: 0] dataByDecodingBase64]; + qs_bytes = (const char*)[queryString bytes]; + + if (!easCommandCodes) + { + easCommandCodes = [NSArray arrayWithObjects:@"Sync", @"SendMail", @"SmartForward", @"SmartReply", @"GetAttachment", @"na", @"na", @"na", @"na", + @"FolderSync", @"FolderCreate", @"FolderDelete", @"FolderUpdate", @"MoveItems", @"GetItemEstimate", @"MeetingResponse", + @"Search", @"Settings", @"Ping", @"ItemOperations", @"Provision", @"ResolveRecipients", @"ValidateCert", nil]; + RETAIN(easCommandCodes); + } + + // Command code, 1 byte, ie.: cmd= + cmd_code = qs_bytes[1]; + [components addObject:[NSString stringWithFormat: @"cmd=%@", [easCommandCodes objectAtIndex: cmd_code]]]; + + // Device ID length and Device ID (variable) + deviceid_length = qs_bytes[4]; + [components addObject:[NSString stringWithFormat: @"deviceId=%@", [[NSData encodeDataAsHexString:[queryString subdataWithRange:NSMakeRange(5, deviceid_length)]] uppercaseString]]]; + + // Device type length and type (variable) + policy_length = qs_bytes[5+deviceid_length]; + devicetype_length = qs_bytes[5+deviceid_length+1+policy_length]; + deviceType = [[NSString alloc] initWithData:[queryString subdataWithRange: NSMakeRange(5+deviceid_length+1+policy_length+1, devicetype_length)] + encoding:NSASCIIStringEncoding]; + AUTORELEASE(deviceType); + + [components addObject:[NSString stringWithFormat: @"deviceType=%@", deviceType]]; + } for (i = 0; i < [components count]; i++) { From 42ef0bfc3f30a4ce77fab46fd48fc197dfe37684 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 16 Oct 2014 11:49:07 -0400 Subject: [PATCH 051/198] Added doc around IMAP word size vs. ActiveSync on large mail folders --- Documentation/SOGoInstallationGuide.asciidoc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index 27757da34..b57c18ee5 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -2385,6 +2385,10 @@ 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: `http:///SOGo/dav/public/%NAME%/freebusy.ifb` +* If you have very large mail folders (thousands of messages), you will +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. In order to use the SOGo ActiveSync support code in production environments, you need to get a proper usage license from Microsoft. From 6695aa083f5f315bfd95d61e7da58c261e611c3b Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 17 Oct 2014 15:20:25 -0400 Subject: [PATCH 052/198] Fix crash when opening a mailbox with empty filter Fixes #2959 --- UI/MailerUI/UIxMailListActions.m | 49 ++++++++++++++++--------------- UI/WebServerResources/MailerUI.js | 2 +- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/UI/MailerUI/UIxMailListActions.m b/UI/MailerUI/UIxMailListActions.m index 673de4987..f7c583bfe 100644 --- a/UI/MailerUI/UIxMailListActions.m +++ b/UI/MailerUI/UIxMailListActions.m @@ -394,39 +394,42 @@ NSArray *filters; NSString *searchBy, *searchArgument, *searchInput, *searchString, *match; NSMutableArray *searchArray; - int nbFilters = 0, i; + int nbFilters, i; request = [context request]; content = [[request contentAsString] objectFromJSONString]; qualifier = nil; searchString = nil; + match = nil; + filters = [content objectForKey: @"filters"]; - if ([content objectForKey:@"filters"]) + if (filters) { - filters = [content objectForKey:@"filters"]; - sortingAttributes = [content objectForKey:@"sortingAttributes"]; nbFilters = [filters count]; - match = [NSString stringWithString:[sortingAttributes objectForKey:@"match"]]; // AND, OR - - searchArray = [NSMutableArray arrayWithCapacity:nbFilters]; - for (i = 0; i < nbFilters; i++) - { - searchBy = [NSString stringWithString:[[filters objectAtIndex:i] objectForKey:@"searchBy"]]; - searchArgument = [NSString stringWithString:[[filters objectAtIndex:i] objectForKey:@"searchArgument"]]; - searchInput = [NSString stringWithString:[[filters objectAtIndex:i] objectForKey:@"searchInput"]]; + if (nbFilters > 0) { + searchArray = [NSMutableArray arrayWithCapacity: nbFilters]; + sortingAttributes = [content objectForKey: @"sortingAttributes"]; + if (sortingAttributes) + match = [sortingAttributes objectForKey :@"match"]; // AND, OR + for (i = 0; i < nbFilters; i++) + { + searchBy = [NSString stringWithString: [[filters objectAtIndex:i] objectForKey: @"searchBy"]]; + searchArgument = [NSString stringWithString: [[filters objectAtIndex:i] objectForKey: @"searchArgument"]]; + searchInput = [NSString stringWithString: [[filters objectAtIndex:i] objectForKey: @"searchInput"]]; - if ([[[filters objectAtIndex:i] objectForKey:@"negative"] boolValue]) - searchString = [NSString stringWithFormat:@"(not (%@ %@: '%@'))", searchBy, searchArgument, searchInput]; + if ([[[filters objectAtIndex:i] objectForKey: @"negative"] boolValue]) + searchString = [NSString stringWithFormat: @"(not (%@ %@: '%@'))", searchBy, searchArgument, searchInput]; + else + searchString = [NSString stringWithFormat: @"(%@ %@: '%@')", searchBy, searchArgument, searchInput]; + + searchQualifier = [EOQualifier qualifierWithQualifierFormat: searchString]; + [searchArray addObject: searchQualifier]; + } + if ([match isEqualToString: @"OR"]) + qualifier = [[EOOrQualifier alloc] initWithQualifierArray: searchArray]; else - searchString = [NSString stringWithFormat:@"(%@ %@: '%@')", searchBy, searchArgument, searchInput]; - - searchQualifier = [EOQualifier qualifierWithQualifierFormat:searchString]; - [searchArray addObject:searchQualifier]; - } - if ([match isEqualToString:@"OR"]) - qualifier = [[EOOrQualifier alloc] initWithQualifierArray: searchArray]; - else - qualifier = [[EOAndQualifier alloc] initWithQualifierArray: searchArray]; + qualifier = [[EOAndQualifier alloc] initWithQualifierArray: searchArray]; + } } return qualifier; diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 33dab730d..995a11f9c 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -843,7 +843,7 @@ function composeNewMessage() { function openMailbox(mailbox, reload) { if (mailbox != Mailer.currentMailbox || reload) { var url = ApplicationBaseURL + encodeURI(mailbox.unescapeHTML()); - var urlParams = {"filters": [], "sortingAttributes": {}}; + var urlParams = {filters: [], sortingAttributes: {}}; if (!reload) { var messageContent = $("messageContent"); From b53c7267660ba76d26f08b824b88cc87824a7cd3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 29 Oct 2014 10:46:45 -0400 Subject: [PATCH 053/198] TZ fixes on WP devices all day events --- ActiveSync/iCalTimeZone+ActiveSync.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ActiveSync/iCalTimeZone+ActiveSync.m b/ActiveSync/iCalTimeZone+ActiveSync.m index 0670acc11..c4c0071fd 100644 --- a/ActiveSync/iCalTimeZone+ActiveSync.m +++ b/ActiveSync/iCalTimeZone+ActiveSync.m @@ -76,15 +76,17 @@ struct SYSTEMTIME { byMonth = [rrule byMonth]; if ([byMonth count] > 0) { + tzData->wYear = 0; tzData->wMonth = [[byMonth objectAtIndex: 0] intValue]; mask = [rrule byDayMask]; tzData->wDayOfWeek = [mask firstDay]; - tzData->wDay = [mask firstOccurrence]; + tzData->wDay = ([mask firstOccurrence] == -1) ? 5 : [mask firstOccurrence]; dateValue = [self startDate]; tzData->wHour = [dateValue hourOfDay]; tzData->wMinute = [dateValue minuteOfHour]; tzData->wSecond = [dateValue secondOfMinute]; + tzData->wMilliseconds = 0; } } From 395545ca519f4771369eca77d0d4b5aa9d79d1df Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 29 Oct 2014 11:13:18 -0400 Subject: [PATCH 054/198] WP fails to sync if an event is changed on the sever and the client sends a modification of another event --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 5080f5dd6..730936132 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -375,6 +375,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } } + [theBuffer appendString: @""]; + [theBuffer appendFormat: @"%@", serverId]; + [theBuffer appendFormat: @"%d", 1]; + [theBuffer appendString: @""]; } } } @@ -431,6 +435,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (![sogoObject isKindOfClass: [NSException class]]) [sogoObject delete]; + + [theBuffer appendString: @""]; + [theBuffer appendFormat: @"%@", serverId]; + [theBuffer appendFormat: @"%d", 1]; + [theBuffer appendString: @""]; } } } @@ -926,6 +935,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. inCollection: theCollection withType: theFolderType inBuffer: theBuffer]; + *processed = YES; } else if ([[element tagName] isEqualToString: @"Fetch"]) { @@ -1041,8 +1051,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // We onnly generate this tag when the command has generated a response. if (processed && [s length]) [commandsBuffer appendFormat: @"%@", s]; - else - [commandsBuffer appendString: s]; } // If we got any changes or if we have applied any commands @@ -1078,8 +1086,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [theBuffer appendFormat: @"%@", collectionId]; [theBuffer appendFormat: @"%d", 1]; - [theBuffer appendString: changeBuffer]; [theBuffer appendString: commandsBuffer]; + [theBuffer appendString: changeBuffer]; [theBuffer appendString: @""]; } From da962aed01b32be85f85483dfbe978aa4e259361 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 29 Oct 2014 14:20:03 -0400 Subject: [PATCH 055/198] Added support for multiple calendars/addressbooks over ActiveSync --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 51 +- ActiveSync/SOGoActiveSyncDispatcher.m | 938 +++++++++++++-------- SoObjects/Mailer/SOGoMailAccount.m | 3 +- SoObjects/SOGo/SOGoCacheGCSObject.h | 4 +- SoObjects/SOGo/SOGoCacheGCSObject.m | 19 +- 5 files changed, 635 insertions(+), 380 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 730936132..86a2e5c89 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -505,7 +505,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. softdelete_count = 0; - folderMetadata = [self _folderMetadataForKey: [theCollection nameInContainer]]; + folderMetadata = [self _folderMetadataForKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; + dateCache = [folderMetadata objectForKey: @"DateCache"]; syncCache = [folderMetadata objectForKey: @"SyncCache"]; @@ -529,7 +530,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (softdelete_count >= theWindowSize) { [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; - [self _setFolderMetadata: folderMetadata forKey: [theCollection nameInContainer]]; + [self _setFolderMetadata: folderMetadata forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; more_available = YES; *theLastServerKey = theSyncKey; @@ -541,7 +542,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } [folderMetadata removeObjectForKey: @"MoreAvailable"]; - [self _setFolderMetadata: folderMetadata forKey: [theCollection nameInContainer]]; + [self _setFolderMetadata: folderMetadata forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; } // @@ -695,23 +696,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } // If it's a new Sync operation, DateCache and SyncCache need to be deleted - // but GUID stored by folderSync shouldn't be touched - folderMetadata = [self _folderMetadataForKey: [theCollection nameInContainer]]; + folderMetadata = [self _folderMetadataForKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; + if ([theSyncKey isEqualToString: @"-1"]) { [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"SyncCache"]; [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"DateCache"]; } - // Check whether GUID in cache is equal to the GUID from imap - this is to avoid cache corruptions if a folder has been renamed and a new folder - // with the same name has been created but folderSync has not yet updated the cache - if (!([[theCollection nameInContainer] isEqualToString: - [NSString stringWithFormat: @"folder%@", [self globallyUniqueIDToIMAPFolderName: [folderMetadata objectForKey: @"GUID"] type: theFolderType]]])) - { - NSLog(@"GUID mismatch don't sync now!"); - return; - } - syncCache = [folderMetadata objectForKey: @"SyncCache"]; dateCache = [folderMetadata objectForKey: @"DateCache"]; @@ -859,7 +851,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } [self _setFolderMetadata: folderMetadata - forKey: [theCollection nameInContainer]]; + forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; } // default: break; } // switch (folderType) ... @@ -958,7 +950,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. inBuffer: (NSMutableString *) theBuffer changeDetected: (BOOL *) changeDetected { - NSString *collectionId, *realCollectionId, *syncKey, *davCollectionTag, *bodyPreferenceType, *lastServerKey; + NSString *collectionId, *realCollectionId, *syncKey, *davCollectionTag, *bodyPreferenceType, *lastServerKey, *nameInCache; SOGoMicrosoftActiveSyncFolderType folderType; id collection, value; @@ -975,6 +967,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. collection = [self collectionFromId: realCollectionId type: folderType]; syncKey = davCollectionTag = [[(id)[theDocumentElement getElementsByTagName: @"SyncKey"] lastObject] textValue]; + + if (collection == nil) + { + // Collection not found - next folderSync will do the cleanup + //NSLog(@"Sync Collection not found %@ %@", collectionId, realCollectionId); + [theBuffer appendString: @""]; + [theBuffer appendFormat: @"%@", syncKey]; + [theBuffer appendFormat: @"%@", collectionId]; + [theBuffer appendFormat: @"%d", 8]; + [theBuffer appendString: @""]; + + return; + } // We check for a window size, default to 100 if not specfied or out of bounds windowSize = [[[(id)[theDocumentElement getElementsByTagName: @"WindowSize"] lastObject] textValue] intValue]; @@ -1059,9 +1064,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { if (lastServerKey) davCollectionTag = lastServerKey; - else if (![[self _folderMetadataForKey: [collection nameInContainer]] objectForKey: @"MoreAvailable"]) - davCollectionTag = [collection davCollectionTag]; - + else + { + if (folderType == ActiveSyncMailFolder) + nameInCache = [[[collection mailAccountFolder] imapFolderGUIDs] objectForKey: [collection nameInContainer]]; + else + nameInCache = [collection nameInContainer]; + + if (![[self _folderMetadataForKey: nameInCache] objectForKey: @"MoreAvailable"]) + davCollectionTag = [collection davCollectionTag]; + } + *changeDetected = YES; } else diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 0d5287a8a..083829b22 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -36,6 +36,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #import #import +#import +#import #import #import #import @@ -89,6 +91,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #import #import #import +#import #import #import @@ -186,7 +189,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (theFilter) { - o = [SOGoCacheGCSObject objectWithName: [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], theCollectionId] inContainer: nil]; + o = [SOGoCacheGCSObject objectWithName: [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], theCollectionId] inContainer: nil]; [o setObjectType: ActiveSyncGlobalCacheObject]; [o setTableUrl: [self folderTableURL]]; [o reloadIfNeeded]; @@ -223,7 +226,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Get the GUID of the IMAP folder imapGUIDs = [accountFolder imapFolderGUIDs]; - return [[imapGUIDs allKeysForObject: theIdToTranslate] objectAtIndex: 0]; + //return [[imapGUIDs allKeysForObject: theIdToTranslate] objectAtIndex: 0]; + return [[[imapGUIDs allKeysForObject: [NSString stringWithFormat: @"folder%@", theIdToTranslate]] objectAtIndex: 0] substringFromIndex: 6] ; } return theIdToTranslate; @@ -244,13 +248,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { case ActiveSyncContactFolder: { - collection = [[context activeUser] personalContactsFolderInContext: context]; + collection = [[[[context activeUser] homeFolderInContext: context] lookupName: @"Contacts" inContext: context acquire: NO] lookupName: theCollectionId inContext: context acquire: NO]; + if (!collection || ([collection isKindOfClass: [NSException class]])) + collection = nil; + } break; case ActiveSyncEventFolder: case ActiveSyncTaskFolder: { - collection = [[context activeUser] personalCalendarFolderInContext: context]; + collection = [[[[context activeUser] homeFolderInContext: context] lookupName: @"Calendar" inContext: context acquire: NO] lookupName: theCollectionId inContext: context acquire: NO]; + if (!collection || ([collection isKindOfClass: [NSException class]])) + collection = nil; } break; case ActiveSyncMailFolder: @@ -267,6 +276,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. collection = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", theCollectionId] inContext: context acquire: NO]; + if (![(SOGoMailFolder *)collection exists]) + collection = nil; } } @@ -335,27 +346,20 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NSString *key; nameInContainer = [newFolder nameInContainer]; - - // We strip the "folder" prefix - nameInContainer = [nameInContainer substringFromIndex: 6]; - // save new guid into cache accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; - - // update GUID in cache imapGUIDs = [accountFolder imapFolderGUIDs]; + nameInContainer =[imapGUIDs objectForKey: nameInContainer]; - key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], nameInContainer ]; + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInContainer ]; o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; [o setObjectType: ActiveSyncFolderCacheObject]; [o setTableUrl: [self folderTableURL]]; [o reloadIfNeeded]; - nameInContainer =[imapGUIDs objectForKey: nameInContainer]; - - [[o properties ] setObject: nameInContainer forKey: @"GUID"]; + [[o properties ] setObject: [[newFolder nameInContainer] substringFromIndex: 6] forKey: @"displayName"]; [o save]; - nameInContainer = [[NSString stringWithFormat: @"mail/%@", nameInContainer] stringByEscapingURL]; + nameInContainer = [[NSString stringWithFormat: @"mail/%@", [nameInContainer substringFromIndex: 6]] stringByEscapingURL]; } else { @@ -369,7 +373,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. case 15: { SOGoAppointmentFolders *appointmentFolders; - + SOGoCacheGCSObject *o; + NSString *key; + + nameInContainer = nil; + appointmentFolders = [userFolder privateCalendars: @"Calendar" inContext: context]; [appointmentFolders newFolderWithName: displayName nameInContainer: &nameInContainer]; @@ -377,16 +385,36 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. nameInContainer = [NSString stringWithFormat: @"vevent/%@", nameInContainer]; else nameInContainer = [NSString stringWithFormat: @"vtodo/%@", nameInContainer]; + + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInContainer ]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [[o properties ] setObject: displayName forKey: @"displayName"]; + [o save]; } break; case 14: { SOGoContactFolders *contactFolders; + SOGoCacheGCSObject *o; + NSString *key; + + nameInContainer = nil; contactFolders = [userFolder privateContacts: @"Contacts" inContext: context]; [contactFolders newFolderWithName: displayName nameInContainer: &nameInContainer]; nameInContainer = [NSString stringWithFormat: @"vcard/%@", nameInContainer]; + + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInContainer ]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [[o properties ] setObject: displayName forKey: @"displayName"]; + [o save]; } break; default: @@ -428,66 +456,87 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. inResponse: (WOResponse *) theResponse { SOGoMailAccounts *accountsFolder; - SOGoMailFolder *folderToDelete; SOGoUserFolder *userFolder; - id currentFolder; - NSException *error; - NSString *serverId; - + id currentFolder, folderToDelete; + NSString *serverId, *nameInCache, *key, *syncKey; + SOGoCacheGCSObject *o; + NSMutableString *s; + NSData *d; + SOGoMicrosoftActiveSyncFolderType folderType; - + serverId = [[[(id)[theDocumentElement getElementsByTagName: @"ServerId"] lastObject] textValue] realCollectionIdWithFolderType: &folderType]; + nameInCache = serverId; serverId = [self globallyUniqueIDToIMAPFolderName: serverId type: folderType]; - userFolder = [[context activeUser] homeFolderInContext: context]; - accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; - currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; - folderToDelete = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", serverId] - inContext: context - acquire: NO]; - - error = [folderToDelete delete]; - - if (!error) + switch (folderType) { - NSString *syncKey, *key; - SOGoCacheGCSObject *o; - NSMutableString *s; - NSData *d; + case ActiveSyncMailFolder: + { + nameInCache = [NSString stringWithFormat: @"folder%@", nameInCache]; + accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; + currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; + + folderToDelete = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", serverId] + inContext: context + acquire: NO]; + } + break; + case ActiveSyncEventFolder: + case ActiveSyncTaskFolder: + { + SOGoAppointmentFolders *appointmentFolders; - // - // We destroy the cache object - // - key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [folderToDelete nameInContainer]]; - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setTableUrl: [self folderTableURL]]; - [o destroy]; - - // - // We update the FolderSync's synckey - // - syncKey = [[NSProcessInfo processInfo] globallyUniqueString]; - - [self _setFolderSyncKey: syncKey]; - - s = [NSMutableString string]; - [s appendString: @""]; - [s appendString: @""]; - [s appendString: @""]; - [s appendFormat: @"%d", 1]; - [s appendFormat: @"%@", syncKey]; - [s appendString: @""]; - - d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; - - [theResponse setContent: d]; - } - else - { - [theResponse setStatus: 500]; - [theResponse appendContentString: @"Unable to delete folder."]; + if (folderType == ActiveSyncEventFolder) + nameInCache = [NSString stringWithFormat: @"vevent/%@", serverId]; + else + nameInCache = [NSString stringWithFormat: @"vtodo/%@", serverId]; + + appointmentFolders = [userFolder privateCalendars: @"Calendar" inContext: context]; + + folderToDelete = [appointmentFolders lookupName: [NSString stringWithFormat: @"%@", serverId] + inContext: context + acquire: NO]; + } + break; + default: + { + [theResponse setStatus: 500]; + [theResponse appendContentString: @"Unsupported folder type during creation."]; + return; + } } + + // FIXME: we should handle exception here + [folderToDelete delete]; + + // + // We destroy the cache object + // + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInCache]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setTableUrl: [self folderTableURL]]; + [o destroy]; + + + // + // We update the FolderSync's synckey + // + syncKey = [[NSProcessInfo processInfo] globallyUniqueString]; + + [self _setFolderSyncKey: syncKey]; + + s = [NSMutableString string]; + [s appendString: @""]; + [s appendString: @""]; + [s appendString: @""]; + [s appendFormat: @"%d", 1]; + [s appendFormat: @"%@", syncKey]; + [s appendString: @""]; + + d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; + [theResponse setContent: d]; } // @@ -496,89 +545,127 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (void) processFolderUpdate: (id ) theDocumentElement inResponse: (WOResponse *) theResponse { - NSString *serverId, *parentId, *displayName; - SOGoMailAccounts *accountsFolder; + NSString *serverId, *parentId, *displayName, *newName, *nameInCache, *syncKey, *key; SOGoUserFolder *userFolder; - SOGoMailFolder *folderToUpdate; + SOGoCacheGCSObject *o; + NSMutableString *s; id currentFolder; - NSException *error; + NSData *d; SOGoMicrosoftActiveSyncFolderType folderType; - int status; serverId = [[[(id)[theDocumentElement getElementsByTagName: @"ServerId"] lastObject] textValue] realCollectionIdWithFolderType: &folderType]; + + nameInCache = [NSString stringWithFormat: @"folder%@", serverId]; + serverId = [self globallyUniqueIDToIMAPFolderName: serverId type: folderType]; parentId = [[(id)[theDocumentElement getElementsByTagName: @"ParentId"] lastObject] textValue]; displayName = [[(id)[theDocumentElement getElementsByTagName: @"DisplayName"] lastObject] textValue]; userFolder = [[context activeUser] homeFolderInContext: context]; - accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; - currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; + + + switch (folderType) + { + case ActiveSyncMailFolder: + { + SOGoMailAccounts *accountsFolder; + SOGoMailFolder *folderToUpdate; + + accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; + currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; - folderToUpdate = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", serverId] - inContext: context - acquire: NO]; + folderToUpdate = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", serverId] + inContext: context + acquire: NO]; - // If parent is 0 or displayname is not changed it is either a rename of a folder in 0 or a move to 0 - if ([parentId isEqualToString: @"0"] || - ([serverId hasSuffix: [NSString stringWithFormat: @"/%@", displayName]] && [parentId isEqualToString: @"0"])) - { - error = [folderToUpdate renameTo: [NSString stringWithFormat: @"/%@", [displayName stringByEncodingImap4FolderName]]]; - } - else - { - parentId = [self globallyUniqueIDToIMAPFolderName: [[parentId stringByUnescapingURL] substringFromIndex: 5] type: folderType]; - error = [folderToUpdate renameTo: [NSString stringWithFormat: @"%@/%@", [parentId stringByEncodingImap4FolderName], - [displayName stringByEncodingImap4FolderName]]]; + // If parent is 0 or displayname is not changed it is either a rename of a folder in 0 or a move to 0 + if ([parentId isEqualToString: @"0"] || + ([serverId hasSuffix: [NSString stringWithFormat: @"/%@", displayName]] && [parentId isEqualToString: @"0"])) + { + newName = [NSString stringWithFormat: @"%@", [displayName stringByEncodingImap4FolderName]]; + + // FIXME: handle exception here + [folderToUpdate renameTo: [NSString stringWithFormat: @"/%@", [displayName stringByEncodingImap4FolderName]]]; + } + else + { + parentId = [self globallyUniqueIDToIMAPFolderName: [[parentId stringByUnescapingURL] substringFromIndex: 5] type: folderType]; + newName = [NSString stringWithFormat: @"%@/%@", [parentId stringByEncodingImap4FolderName], [displayName stringByEncodingImap4FolderName]]; + + // FIXME: handle exception here + [folderToUpdate renameTo: newName]; + } + + + // + // We update our cache + // + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInCache]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [[o properties ] setObject: newName forKey: @"displayName"]; + [o save]; + } + break; + case ActiveSyncEventFolder: + case ActiveSyncTaskFolder: + { + SOGoAppointmentFolders *appointmentFolders; + SOGoAppointmentFolder *folderToUpdate; + NSString *nameInCache; + + appointmentFolders = [userFolder privateCalendars: @"Calendar" inContext: context]; + + folderToUpdate = [appointmentFolders lookupName: [NSString stringWithFormat: @"%@", serverId] + inContext: context + acquire: NO]; + + // update the cache anyway regardless of any error; if the rename fails next folderSync will to the cleanup + [folderToUpdate renameTo: [NSString stringWithFormat: @"%@", [displayName stringByEncodingImap4FolderName]]]; + + if (folderType == ActiveSyncEventFolder) + nameInCache = [NSString stringWithFormat: @"vevent/%@", serverId]; + else + nameInCache = [NSString stringWithFormat: @"vtodo/%@",serverId]; + + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], nameInCache ]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [[o properties ] setObject: displayName forKey: @"displayName"]; + [o save]; + } + break; + default: + { + [theResponse setStatus: 500]; + [theResponse appendContentString: @"Unsupported folder type during creation."]; + return; + } } - // Handle new name exist - if (!error) - { - NSString *syncKey, *key; - SOGoCacheGCSObject *o; - NSMutableString *s; - NSData *d; - - // - // We update our cache - // - key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], serverId]; - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; - - key = [NSString stringWithFormat: @"/%@+%@", [context objectForKey: @"DeviceId"], [folderToUpdate nameInContainer]]; - [o changePathTo: key]; + // + // We update the FolderSync's synckey + // + syncKey = [[NSProcessInfo processInfo] globallyUniqueString]; - // - // We update the FolderSync's synckey - // - syncKey = [[NSProcessInfo processInfo] globallyUniqueString]; + [self _setFolderSyncKey: syncKey]; - // See http://msdn.microsoft.com/en-us/library/gg675615(v=exchg.80).aspx - // we return '9' - we force a FolderSync - status = 1; - - [self _setFolderSyncKey: syncKey]; - - s = [NSMutableString string]; - [s appendString: @""]; - [s appendString: @""]; - [s appendString: @""]; - [s appendFormat: @"%d", status]; - [s appendFormat: @"%@", syncKey]; - [s appendString: @""]; + s = [NSMutableString string]; + [s appendString: @""]; + [s appendString: @""]; + [s appendString: @""]; + [s appendFormat: @"%d", 1]; + [s appendFormat: @"%@", syncKey]; + [s appendString: @""]; + + d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; - d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; - - [theResponse setContent: d]; - } - else - { - [theResponse setStatus: 500]; - [theResponse appendContentString: @"Unable to update folder."]; - } + [theResponse setContent: d]; } @@ -592,21 +679,36 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (void) processFolderSync: (id ) theDocumentElement inResponse: (WOResponse *) theResponse { - - NSMutableDictionary *metadata; - NSMutableString *s; - NSString *syncKey; + NSString *key, *cKey, *nkey, *name, *serverId, *parentId, *nameInCache, *personalFolderName, *syncKey, *folderType; + NSDictionary *folderMetadata, *imapGUIDs; + NSArray *allFoldersMetadata, *allKeys; + NSMutableDictionary *cachedGUIDs, *metadata; + SOGoMailAccounts *accountsFolder; + SOGoMailAccount *accountFolder; + NSMutableString *s, *commands; + SOGoUserFolder *userFolder; + NSMutableArray *folders; + SoSecurityManager *sm; + SOGoCacheGCSObject *o; + id currentFolder; NSData *d; - - BOOL first_sync; - int status; + int status, command_count, i, type, fi, count; + + BOOL first_sync; + + sm = [SoSecurityManager sharedSecurityManager]; metadata = [self _globalMetadataForDevice]; syncKey = [[(id)[theDocumentElement getElementsByTagName: @"SyncKey"] lastObject] textValue]; s = [NSMutableString string]; first_sync = NO; status = 1; + command_count = 0; + commands = [NSMutableString string]; + + [s appendString: @""]; + [s appendString: @""]; if ([syncKey isEqualToString: @"0"]) { @@ -616,215 +718,296 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. else if (![syncKey isEqualToString: [metadata objectForKey: @"FolderSyncKey"]]) { // Synchronization key mismatch or invalid synchronization key - status = 9; + //NSLog(@"FolderSync syncKey mismatch %@ <> %@", syncKey, metadata); + [s appendFormat: @"9"]; + + d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; + [theResponse setContent: d]; + return; } - [self _setFolderSyncKey: syncKey]; + userFolder = [[context activeUser] homeFolderInContext: context]; + accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; + accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; - [s appendString: @""]; - [s appendString: @""]; - [s appendFormat: @"%d%@", status, syncKey]; - - if (status == 1) - { - SOGoMailAccounts *accountsFolder; - SOGoMailAccount *accountFolder; - SOGoUserFolder *userFolder; - id currentFolder; - - NSString *key, *cKey, *nkey, *name, *serverId, *parentId; - NSDictionary *folderMetadata, *imapGUIDs; - NSArray *allFoldersMetadata, *allKeys; - NSMutableDictionary *cachedGUIDs; - NSMutableString *commands; - SOGoCacheGCSObject *o; - - int i, type, command_count; - - userFolder = [[context activeUser] homeFolderInContext: context]; - accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; - accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; - - allFoldersMetadata = [accountFolder allFoldersMetadata]; + allFoldersMetadata = [accountFolder allFoldersMetadata]; - // Get GUIDs of folder (IMAP) - // e.g. {INBOX = "sogo_73c_192bd57b_d8" - imapGUIDs = [accountFolder imapFolderGUIDs]; + // Get GUIDs of folder (IMAP) + // e.g. {folderINBOX = folder6b93c528176f1151c7260000aef6df92} + imapGUIDs = [accountFolder imapFolderGUIDs]; - cachedGUIDs = [NSMutableDictionary dictionary]; + cachedGUIDs = [NSMutableDictionary dictionary]; - // No need to read cached folder infos during first sync. Otherwise, pull it from the database. - // e.g. {"sogo_73c_192bd57b_d8" = INBOX} - guid = foldername for easy reverse lookup with imapGUIDs - if (!first_sync) - { - NSArray *foldersInCache; - NSString *folderName; + // No need to read cached folder infos during first sync. Otherwise, pull it from the database. + // e.g. {folder6b93c528176f1151c7260000aef6df92 = folderINBOX} - guid = foldername for easy reverse lookup with imapGUIDs + if (!first_sync) + { + NSArray *foldersInCache; - // get the list of folder stored in cache - key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], @"0"]; - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setObjectType: ActiveSyncFolderCacheObject]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; - foldersInCache = [o folderList: [context objectForKey: @"DeviceId"] newerThanVersion: -1]; - - // get guids of folders stored in cache - for (i = 0; i < [foldersInCache count]; i++) - { - folderName = [foldersInCache objectAtIndex: i]; - key = [folderName substringFromIndex: 1]; - - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setObjectType: ActiveSyncFolderCacheObject]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; - - if ([[o properties ] objectForKey: @"GUID"]) - [cachedGUIDs setObject: [key substringFromIndex: [key rangeOfString: @"+"].location+7] - forKey: [[o properties] objectForKey: @"GUID"]]; - } - } + o = [SOGoCacheGCSObject objectWithName: @"0" inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: folderTableURL]; + + foldersInCache = [o cacheEntriesForDeviceId: [context objectForKey: @"DeviceId"] newerThanVersion: -1]; + + // get guids of folders stored in cache + for (i = 0; i < [foldersInCache count]; i++) + { + key = [[foldersInCache objectAtIndex: i] substringFromIndex: 1]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + // When the GUID entry exists the name of the entry has to be changed to new name + if ([[o properties] objectForKey: @"GUID"]) + { + //NSLog(@"Old cacheEntry: %@ displayName: %@ GUID: %@", key, [[o properties] objectForKey: @"displayName"], [[o properties] objectForKey: @"GUID"]); + key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [[o properties] objectForKey: @"GUID"]]; + //NSLog(@"New cacheEntry: %@", key); + [[o properties] removeObjectForKey: @"GUID"]; + [[o properties ] setObject: @"updateMe" forKey: @"displayName"]; + [o save]; + [o changePathTo: [NSString stringWithFormat: @"%@", key]]; + } + + // no dispalay Name + if (![[o properties] objectForKey: @"displayName"]) + continue; + + if ([key rangeOfString: @"+folder" options: NSCaseInsensitiveSearch].location != NSNotFound) + [cachedGUIDs setObject: [NSString stringWithFormat: @"folder%@", [[o properties] objectForKey: @"displayName"]] // e.g. CDB648DDBC5040F8AC90792383DBBBAA+folderINBOX + forKey: [key substringFromIndex: [key rangeOfString: @"+"].location+1]]; + else + [cachedGUIDs setObject: [key substringFromIndex: [key rangeOfString: @"+"].location+1] // e.g. CDB648DDBC5040F8AC90792383DBBBAA+vcard/personal + forKey: [key substringFromIndex: [key rangeOfString: @"+"].location+1]]; + } + } - // Handle folders that have been deleted over IMAP - command_count = 0; - commands = [NSMutableString string]; - allKeys = [cachedGUIDs allKeys]; + // Handle folders that have been deleted on server + allKeys = [cachedGUIDs allKeys]; - for (i = 0; i < [allKeys count]; i++) - { - cKey = [allKeys objectAtIndex: i]; + for (i = 0; i < [allKeys count]; i++) + { + cKey = [allKeys objectAtIndex: i]; - if (![imapGUIDs allKeysForObject: cKey]) - { - // Destroy folders cache content to avoid stale data if a new folder gets created with the same name - key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [cachedGUIDs objectForKey: cKey]]; - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setObjectType: ActiveSyncFolderCacheObject]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; - - // Only send a delete command if GUID is found - if ([[o properties] objectForKey: @"GUID"]) + // ignore invalid folder in cache caused by fs code bugs + if ([cKey isEqualToString:@"(null)"]) + continue; + + // if a cache entry is not found in imapGUIDs its either an imap which has been deleted or its an other folder type which can be checked via lookupName. + if (![imapGUIDs allKeysForObject: cKey]) + { + // Destroy folders cache content to avoid stale data if a new folder gets created with the same name + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], cKey]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + if ([cKey hasPrefix: @"folder"]) + { + [commands appendFormat: @"%@", [[NSString stringWithFormat: @"mail/%@", [cKey substringFromIndex: 6]] stringByEscapingURL]] ; + command_count++; + + [o destroy]; + } + else + { + if ([cKey rangeOfString: @"vevent" options: NSCaseInsensitiveSearch].location != NSNotFound || + [cKey rangeOfString: @"vtodo" options: NSCaseInsensitiveSearch].location != NSNotFound) + folderType = @"Calendar"; + else + folderType = @"Contacts"; + + if ([ cKey rangeOfString: @"/"].location != NSNotFound) + currentFolder = [[[[context activeUser] homeFolderInContext: context] lookupName: folderType inContext: context acquire: NO] + lookupName: [cKey substringFromIndex: [cKey rangeOfString: @"/"].location+1] inContext: context acquire: NO]; + + // remove the folder from device if it doesn't exists or it has not the proper permissions + if (!currentFolder || + [sm validatePermission: SoPerm_DeleteObjects + onObject: currentFolder + inContext: context] || + [sm validatePermission: SoPerm_AddDocumentsImagesAndFiles + onObject: currentFolder + inContext: context]) { - [commands appendFormat: @"%@", [[NSString stringWithFormat: @"mail/%@", [[o properties ] objectForKey: @"GUID"]] stringByEscapingURL] ]; + [commands appendFormat: @"%@", [cKey stringByEscapingURL] ]; command_count++; - } - - [o destroy]; - } - } - - // Handle addition and changes - for (i = 0; i < [allFoldersMetadata count]; i++) - { - folderMetadata = [allFoldersMetadata objectAtIndex: i]; - - // No GUID -> no sync - if (!([imapGUIDs objectForKey: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]])) - continue; - - serverId = [NSString stringWithFormat: @"mail/%@", [imapGUIDs objectForKey: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]]; - name = [folderMetadata objectForKey: @"displayName"]; - - if ([name hasPrefix: @"/"]) - name = [name substringFromIndex: 1]; - - if ([name hasSuffix: @"/"]) - name = [name substringToIndex: [name length]-1]; - - type = [[folderMetadata objectForKey: @"type"] activeSyncFolderType]; - parentId = @"0"; - - if ([folderMetadata objectForKey: @"parent"]) - { - parentId = [NSString stringWithFormat: @"mail/%@", [imapGUIDs objectForKey: [[folderMetadata objectForKey: @"parent"] substringFromIndex: 1]]]; - name = [[name pathComponents] lastObject]; - } - - // Decide between add and change - if ([cachedGUIDs objectForKey: [imapGUIDs objectForKey: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]]) - { - // Search GUID to check name change in cache (diff between IMAP and cache) - if ((![[[folderMetadata objectForKey: @"path"] substringFromIndex: 1] isEqualToString: [imapGUIDs objectForKey: [cachedGUIDs objectForKey: - [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]]])) - { - key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [cachedGUIDs objectForKey: - [imapGUIDs objectForKey: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]]]; - nkey = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [[folderMetadata objectForKey: @"path"] substringFromIndex: 1] ]; - - if (![key isEqualToString: nkey]) - { - [commands appendFormat: @"%@%@%d%@", - [serverId stringByEscapingURL], - [parentId stringByEscapingURL], - type, - [name activeSyncRepresentationInContext: context]]; - - - // Change path in cache - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setObjectType: ActiveSyncFolderCacheObject]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; - [o changePathTo: [NSString stringWithFormat: @"/%@", nkey]]; // ?? why is '/' prefix needed - problem in changePathTo? - - command_count++; - } + [o destroy]; } } - else - { - [commands appendFormat: @"%@%@%d%@", + } + } + + // Handle addition and changes + for (i = 0; i < [allFoldersMetadata count]; i++) + { + folderMetadata = [allFoldersMetadata objectAtIndex: i]; + + nameInCache = [NSString stringWithFormat: @"folder%@", [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]; + serverId = [NSString stringWithFormat: @"mail/%@", [[imapGUIDs objectForKey: nameInCache] substringFromIndex: 6]]; + name = [folderMetadata objectForKey: @"displayName"]; + + if ([name hasPrefix: @"/"]) + name = [name substringFromIndex: 1]; + + if ([name hasSuffix: @"/"]) + name = [name substringToIndex: [name length]-1]; + + type = [[folderMetadata objectForKey: @"type"] activeSyncFolderType]; + parentId = @"0"; + + if ([folderMetadata objectForKey: @"parent"]) + { + parentId = [NSString stringWithFormat: @"mail/%@", [[imapGUIDs objectForKey: [NSString stringWithFormat: @"folder%@", [[folderMetadata objectForKey: @"parent"] substringFromIndex: 1]]] substringFromIndex: 6]]; + name = [[name pathComponents] lastObject]; + } + + // Decide between add and change + if ([cachedGUIDs objectForKey: [imapGUIDs objectForKey: nameInCache]]) + { + // Search GUID to check name change in cache (diff between IMAP and cache) + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [cachedGUIDs objectForKey: [imapGUIDs objectForKey: nameInCache ]]]; + nkey = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [[folderMetadata objectForKey: @"path"] substringFromIndex: 1] ]; + + if (![key isEqualToString: nkey]) + { + [commands appendFormat: @"%@%@%@%d", + [serverId stringByEscapingURL], + [parentId stringByEscapingURL], + [name activeSyncRepresentationInContext: context], type]; + + // Change path in cache + o = [SOGoCacheGCSObject objectWithName: [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [imapGUIDs objectForKey: nameInCache ]] inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + [[o properties ] setObject: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1] forKey: @"displayName"]; + [o save]; + + command_count++; + } + } + else + { + [commands appendFormat: @"%@%@%@%d", [serverId stringByEscapingURL], [parentId stringByEscapingURL], - type, - [name activeSyncRepresentationInContext: context]]; + [name activeSyncRepresentationInContext: context], type]; - // Store folder's GUID in cache - key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]]; - o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; - [o setObjectType: ActiveSyncFolderCacheObject]; - [o setTableUrl: [self folderTableURL]]; - [o reloadIfNeeded]; + // Store folder's displayName in cache + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [imapGUIDs objectForKey: nameInCache ]]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; - [[o properties ] setObject: [imapGUIDs objectForKey: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1]] forKey: @"GUID"]; - [o save]; + [[o properties ] setObject: [[folderMetadata objectForKey: @"path"] substringFromIndex: 1] forKey: @"displayName"]; + [o save]; - command_count++; - } - } - - if (first_sync) - [s appendFormat: @"%d", command_count+3]; - else - [s appendFormat: @"%d", command_count]; - - if (command_count > 0) - [s appendFormat: @"%@", commands]; - - if (first_sync) - { - // We add the personal calendar - events - // FIXME: add all calendars - currentFolder = [[context activeUser] personalCalendarFolderInContext: context]; - name = [NSString stringWithFormat: @"vevent/%@", [currentFolder nameInContainer]]; - [s appendFormat: @"%@%@%d%@", name, @"0", 8, [[currentFolder displayName] activeSyncRepresentationInContext: context]]; - - // We add the personal calendar - tasks - // FIXME: add all calendars - currentFolder = [[context activeUser] personalCalendarFolderInContext: context]; - name = [NSString stringWithFormat: @"vtodo/%@", [currentFolder nameInContainer]]; - [s appendFormat: @"%@%@%d%@", name, @"0", 7, [[currentFolder displayName] activeSyncRepresentationInContext: context]]; - - // We add the personal address book - // FIXME: add all address books - currentFolder = [[context activeUser] personalContactsFolderInContext: context]; - name = [NSString stringWithFormat: @"vcard/%@", [currentFolder nameInContainer]]; - [s appendFormat: @"%@%@%d%@", name, @"0", 9, [[currentFolder displayName] activeSyncRepresentationInContext: context]]; - } + command_count++; + } } + + personalFolderName = [[[context activeUser] personalCalendarFolderInContext: context] nameInContainer]; + folders = [[[[[context activeUser] homeFolderInContext: context] lookupName: @"Calendar" inContext: context acquire: NO] subFolders] mutableCopy]; + [folders addObjectsFromArray: [[[[context activeUser] homeFolderInContext: context] lookupName: @"Contacts" inContext: context acquire: NO] subFolders]]; + + // Inside this loop we remove all the folder without write/delete permissions + count = [folders count]-1; + for (; count >= 0; count--) + { + if ([sm validatePermission: SoPerm_DeleteObjects + onObject: [folders objectAtIndex: count] + inContext: context] || + [sm validatePermission: SoPerm_AddDocumentsImagesAndFiles + onObject: [folders objectAtIndex: count] + inContext: context]) + { + [folders removeObjectAtIndex: count]; + } + } + + count = [folders count]-1; + NSString *operation; + + for (fi = 0; fi <= count ; fi++) + { + if ([[folders objectAtIndex:fi] isKindOfClass: [SOGoAppointmentFolder class]]) + name = [NSString stringWithFormat: @"vevent/%@", [[folders objectAtIndex:fi] nameInContainer]]; + else + name = [NSString stringWithFormat: @"vcard/%@", [[folders objectAtIndex:fi] nameInContainer]]; + + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + // Decide between add and change + if (![[o properties ] objectForKey: @"displayName"] || first_sync) + operation = @"Add"; + else if (![[[o properties ] objectForKey: @"displayName"] isEqualToString: [[folders objectAtIndex:fi] displayName]]) + operation = @"Update"; + else + operation = nil; + + if (operation) + { + if ([[folders objectAtIndex:fi] isKindOfClass: [SOGoAppointmentFolder class]]) + { + type = ([[[folders objectAtIndex:fi] nameInContainer] isEqualToString: personalFolderName] ? 8 : 13); + [commands appendFormat: @"<%@>%@%@%@%d", operation, + [name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation]; + + command_count++; + + [[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"]; + [o save]; + + name = [NSString stringWithFormat: @"vtodo/%@", [[folders objectAtIndex:fi] nameInContainer]]; + type = ([[[folders objectAtIndex:fi] nameInContainer] isEqualToString: personalFolderName] ? 7 : 15); + [commands appendFormat: @"<%@>%@%@%@%d", operation, + [name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation]; + + command_count++; + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], name]; + + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setObjectType: ActiveSyncFolderCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"]; + [o save]; + } + else + { + type = ([[[folders objectAtIndex:fi] nameInContainer] isEqualToString: personalFolderName] ? 9 : 14); + [commands appendFormat: @"<%@>%@%@%@%d", operation, + [name stringByEscapingURL], @"0", [[[folders objectAtIndex:fi] displayName] activeSyncRepresentationInContext: context], type, operation]; + + command_count++; + + [[o properties ] setObject: [[folders objectAtIndex:fi] displayName] forKey: @"displayName"]; + [o save]; + } + } + } + - [s appendString: @""]; + // set a new syncKey if there are folder changes + if (command_count > 0) + { + syncKey = [[NSProcessInfo processInfo] globallyUniqueString]; + [self _setFolderSyncKey: syncKey]; + } + + + [s appendFormat: @"%d", status]; + [s appendFormat: @"%@%d%@", syncKey, command_count, commands]; d = [[s dataUsingEncoding: NSUTF8StringEncoding] xml2wbxml]; @@ -906,7 +1089,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (void) processGetItemEstimate: (id ) theDocumentElement inResponse: (WOResponse *) theResponse { - NSString *collectionId, *realCollectionId; + NSString *collectionId, *realCollectionId, *nameInCache; id currentCollection; NSMutableString *s; NSData *d; @@ -920,7 +1103,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. collectionId = [[(id)[theDocumentElement getElementsByTagName: @"CollectionId"] lastObject] textValue]; realCollectionId = [collectionId realCollectionIdWithFolderType: &folderType]; + + if (folderType == ActiveSyncMailFolder) + nameInCache = [NSString stringWithFormat: @"folder%@", realCollectionId]; + else + nameInCache = collectionId; + realCollectionId = [self globallyUniqueIDToIMAPFolderName: realCollectionId type: folderType]; + currentCollection = [self collectionFromId: realCollectionId type: folderType]; // @@ -955,7 +1145,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. count = [uids count]; // Add the number of UIDs expected to "soft delete" - count += [self _softDeleteCountWithFilter: filter collectionId: realCollectionId]; + count += [self _softDeleteCountWithFilter: filter collectionId: nameInCache]; } else @@ -1211,6 +1401,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOGoMicrosoftActiveSyncFolderType srcFolderType, dstFolderType; id aMoveOperation; NSArray *moveOperations; + SoSecurityManager *sm; NSMutableString *s; NSData *d; int i; @@ -1233,8 +1424,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [s appendString: @""]; - // FIXME - we should support moving events between calendars, for example, or - // or contacts between address books. if (srcFolderType == ActiveSyncMailFolder && dstFolderType == ActiveSyncMailFolder) { NGImap4Client *client; @@ -1309,13 +1498,66 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } else { - // Non-mail move operations - unsupported for now. - [s appendFormat: @"%d", 1]; + id srcCollection, dstCollection, srcSogoObject, dstSogoObject; + NSArray *elements; + NSString *newUID; + NSException *ex; + + unsigned int count, max; + + srcCollection = [self collectionFromId: srcFolderId type: srcFolderType]; + dstCollection = [self collectionFromId: dstFolderId type: srcFolderType]; + + srcSogoObject = [srcCollection lookupName: [srcMessageId sanitizedServerIdWithType: srcFolderType] + inContext: context + acquire: NO]; + + sm = [SoSecurityManager sharedSecurityManager]; + if (![sm validatePermission: SoPerm_DeleteObjects + onObject: srcCollection + inContext: context]) + { + if (![sm validatePermission: SoPerm_AddDocumentsImagesAndFiles + onObject: dstCollection + inContext: context]) + { + newUID = [srcSogoObject globallyUniqueObjectId]; + dstSogoObject = [[SOGoAppointmentObject alloc] initWithName: [newUID sanitizedServerIdWithType: srcFolderType] + inContainer: dstCollection]; + elements = [[srcSogoObject calendar: NO secure: NO] allObjects]; + max = [elements count]; + for (count = 0; count < max; count++) + [[elements objectAtIndex: count] setUid: newUID]; + + ex = [dstSogoObject saveCalendar: [srcSogoObject calendar: NO secure: NO]]; + if (!ex) + { + ex = [srcSogoObject delete]; + [s appendFormat: @"%@", srcMessageId]; + [s appendFormat: @"%@", newUID]; + [s appendFormat: @"%d", 3]; + } + else + { + [s appendFormat: @"%@", srcMessageId]; + [s appendFormat: @"%d", 1]; + } + } + else + { + [s appendFormat: @"%@", srcMessageId]; + [s appendFormat: @"%d", 2]; + } + } + else + { + [s appendFormat: @"%@", srcMessageId]; + [s appendFormat: @"%d", 1]; + } } [s appendString: @""]; } - [s appendString: @""]; @@ -1421,7 +1663,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. allValues = [[accountFolder imapFolderGUIDs] allValues]; for (i = 0; i < [allValues count]; i++) - [allFoldersID addObject: [NSString stringWithFormat: @"mail/%@", [allValues objectAtIndex: i]]]; + [allFoldersID addObject: [NSString stringWithFormat: @"mail/%@", [[allValues objectAtIndex: i] substringFromIndex: 6]]]; // FIXME: handle multiple GCS collecitons @@ -1449,22 +1691,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. collectionId = [allFoldersID objectAtIndex: j]; realCollectionId = [collectionId realCollectionIdWithFolderType: &folderType]; realCollectionId = [self globallyUniqueIDToIMAPFolderName: realCollectionId type: folderType]; + + if (folderType == ActiveSyncMailFolder) + folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"folder%@", [[collectionId stringByUnescapingURL] substringFromIndex:5]]]; + else + folderMetadata = [self _folderMetadataForKey: [collectionId stringByUnescapingURL]]; + collection = [self collectionFromId: realCollectionId type: folderType]; - - switch (folderType) - { - case ActiveSyncContactFolder: - folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vcard/%@", [collection nameInContainer]]]; - break; - case ActiveSyncEventFolder: - folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vevent/%@", [collection nameInContainer]]]; - break; - case ActiveSyncTaskFolder: - folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vtodo/%@", [collection nameInContainer]]]; - break; - default: - folderMetadata = [self _folderMetadataForKey: [collection nameInContainer]]; - } + + // if collection doesn't exists skip it - next foldersync will do the cleanup + if (!collection) + continue; syncKey = [folderMetadata objectForKey: @"SyncKey"]; @@ -2142,7 +2379,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { d = [[theRequest content] wbxml2xml]; } - documentElement = nil; if (!d) diff --git a/SoObjects/Mailer/SOGoMailAccount.m b/SoObjects/Mailer/SOGoMailAccount.m index 5bc3ff2ae..ab6021f07 100644 --- a/SoObjects/Mailer/SOGoMailAccount.m +++ b/SoObjects/Mailer/SOGoMailAccount.m @@ -710,7 +710,8 @@ static NSString *inboxFolderName = @"INBOX"; } } - [folders setObject: guid forKey: [object substringFromIndex: 1]]; + [folders setObject: [NSString stringWithFormat: @"folder%@", guid] forKey: [NSString stringWithFormat: @"folder%@", [object substringFromIndex: 1]]]; + } return folders; diff --git a/SoObjects/SOGo/SOGoCacheGCSObject.h b/SoObjects/SOGo/SOGoCacheGCSObject.h index 90f7d1ba1..b456c1775 100644 --- a/SoObjects/SOGo/SOGoCacheGCSObject.h +++ b/SoObjects/SOGo/SOGoCacheGCSObject.h @@ -67,8 +67,8 @@ typedef enum { - (NSDictionary *) lookupRecord: (NSString *) path newerThanVersion: (NSInteger) startVersion; -- (NSArray *) folderList: (NSString *) deviceId - newerThanVersion: (NSInteger) startVersion; +- (NSArray *) cacheEntriesForDeviceId: (NSString *) deviceId + newerThanVersion: (NSInteger) startVersion; - (void) setObjectType: (SOGoCacheObjectType) newObjectType; - (SOGoCacheObjectType) objectType; /* message, fai, folder */ diff --git a/SoObjects/SOGo/SOGoCacheGCSObject.m b/SoObjects/SOGo/SOGoCacheGCSObject.m index 0b3ba25e8..1f83f8ed2 100644 --- a/SoObjects/SOGo/SOGoCacheGCSObject.m +++ b/SoObjects/SOGo/SOGoCacheGCSObject.m @@ -250,7 +250,7 @@ static EOAttribute *textColumn = nil; newParentPath = NULL; sql = [NSMutableString stringWithFormat: @"UPDATE %@" - @" SET c_path = '%@'", + @" SET c_path = '/%@'", [self tableName], newPath]; if (newParentPath) @@ -375,9 +375,8 @@ static EOAttribute *textColumn = nil; return record; } -// get a list of all folders -- (NSArray *) folderList: (NSString *) deviceId - newerThanVersion: (NSInteger) startVersion +- (NSArray *) cacheEntriesForDeviceId: (NSString *) deviceId + newerThanVersion: (NSInteger) startVersion { NSMutableArray *recordsOut; NSArray *records; @@ -392,16 +391,22 @@ static EOAttribute *textColumn = nil; tableName = [self tableName]; adaptor = [self tableChannelAdaptor]; - pathValue = [adaptor formatValue: [NSString stringWithFormat: @"/%@+folder%", deviceId] + pathValue = [adaptor formatValue: [NSString stringWithFormat: @"/%@", deviceId] forAttribute: textColumn]; /* query */ sql = [NSMutableString stringWithFormat: - @"SELECT * FROM %@ WHERE c_path LIKE %@ AND c_deleted <> 1", - tableName, pathValue]; + @"SELECT * FROM %@ WHERE c_type = %d AND c_deleted <> 1", tableName, objectType]; + if (startVersion > -1) [sql appendFormat: @" AND c_version > %d", startVersion]; + if (deviceId) { + pathValue = [adaptor formatValue: [NSString stringWithFormat: @"/%@%", deviceId] + forAttribute: textColumn]; + [sql appendFormat: @" AND c_path like %@", pathValue]; + } + /* execution */ records = [self performSQLQuery: sql]; From b5023eeb245c0c0cec40b018af404049119cd4d0 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 29 Oct 2014 14:56:03 -0400 Subject: [PATCH 056/198] Fix for bug #2940 --- ActiveSync/SOGoActiveSyncDispatcher.m | 6 +++--- Documentation/SOGoInstallationGuide.asciidoc | 5 +++-- NEWS | 3 +++ SoObjects/SOGo/SOGoSystemDefaults.m | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 083829b22..58c58e455 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -1693,19 +1693,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. realCollectionId = [self globallyUniqueIDToIMAPFolderName: realCollectionId type: folderType]; if (folderType == ActiveSyncMailFolder) - folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"folder%@", [[collectionId stringByUnescapingURL] substringFromIndex:5]]]; + folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"folder%@", [[collectionId stringByUnescapingURL] substringFromIndex:5]]]; else folderMetadata = [self _folderMetadataForKey: [collectionId stringByUnescapingURL]]; collection = [self collectionFromId: realCollectionId type: folderType]; - // if collection doesn't exists skip it - next foldersync will do the cleanup + // If collection doesn't exist skip it - next foldersync will do the cleanup if (!collection) continue; syncKey = [folderMetadata objectForKey: @"SyncKey"]; - if (![syncKey isEqualToString: [collection davCollectionTag]]) + if (syncKey && ![syncKey isEqualToString: [collection davCollectionTag]]) { [foldersWithChanges addObject: collectionId]; } diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index b57c18ee5..ea6bd8757 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -2331,7 +2331,7 @@ ActiveSync: |Parameter used to set the maximum amount of time, in seconds, SOGo will wait before replying to a Ping command. -If not set, it defaults to `5` seconds. +If not set, it defaults to `10` seconds. |S |SOGoMaximumSyncInterval |Parameter used to set the maximum amount of time, in seconds, SOGo will @@ -2342,7 +2342,8 @@ If not set, it defaults to `30` seconds. |S |SOGoInternalSyncInterval |Parameter used to set the maximum amount of time, in seconds, SOGo will wait before doing an internal check for data changes (add, delete, and -update). This parameter must be lower than _SOGoMaximumSyncInterval_. +update). This parameter must be lower than _SOGoMaximumSyncInterval_ and +_SOGoMaximumPingInterval_. If not set, it defaults to `10` seconds. diff --git a/NEWS b/NEWS index 35ef7881a..fb50d675c 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Enhancements - no longer leaking database passwords in the logs (#2953) + - added support for multiple calendars and address books over ActiveSync Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) @@ -10,6 +11,8 @@ Bug fixes - fixed folder's display name when subscribing to a folder - fixed folder's display name when the active user subscribes another user to one of her/his folders - fixed error with new user default sorting value for the mailer module (#2952) + - fixed ActiveSync PING command flooding the server (#2940) + - fixed many interop issues with Windows Phones over ActiveSync 2.2.9a (2014-09-29) ------------------- diff --git a/SoObjects/SOGo/SOGoSystemDefaults.m b/SoObjects/SOGo/SOGoSystemDefaults.m index 01150e287..b9f1f0225 100644 --- a/SoObjects/SOGo/SOGoSystemDefaults.m +++ b/SoObjects/SOGo/SOGoSystemDefaults.m @@ -592,7 +592,7 @@ _injectConfigurationFromFile (NSMutableDictionary *defaultsDict, v = [self integerForKey: @"SOGoMaximumPingInterval"]; if (!v) - v = 5; + v = 10; return v; } From 70cd24e111b04a7bb598a56f86da34fefb689fbf Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 29 Oct 2014 16:42:52 -0400 Subject: [PATCH 057/198] Fix for bug #2965 --- NEWS | 1 + UI/MailerUI/UIxMailView.m | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index fb50d675c..1e52e5b9b 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ Bug fixes - fixed error with new user default sorting value for the mailer module (#2952) - fixed ActiveSync PING command flooding the server (#2940) - fixed many interop issues with Windows Phones over ActiveSync + - fixed automatic return receipts crash when not in the recepient list (#2965) 2.2.9a (2014-09-29) ------------------- diff --git a/UI/MailerUI/UIxMailView.m b/UI/MailerUI/UIxMailView.m index 371a2a504..8b6ec9218 100644 --- a/UI/MailerUI/UIxMailView.m +++ b/UI/MailerUI/UIxMailView.m @@ -315,6 +315,15 @@ static NSString *mailETag = nil; [matchingIdentityEMail retain]; } } + + if (!matchingIdentityEMail) + { + // This can happen if we receive the message because we are + // in the list of bcc. In this case, we take the first + // identity associated with the account. + matchingIdentityEMail = [[[[[self clientObject] mailAccountFolder] identities] lastObject] objectForKey: @"email"]; + RETAIN(matchingIdentityEMail); + } } return matchingIdentityEMail; @@ -487,13 +496,18 @@ static NSString *mailETag = nil; - (NGHashMap *) _receiptMessageHeaderTo: (NSString *) email { + NSString *subject, *from; NGMutableHashMap *map; - NSString *subject; map = [[NGMutableHashMap alloc] initWithCapacity: 1]; [map autorelease]; [map setObject: email forKey: @"to"]; - [map setObject: [self _matchingIdentityEMail] forKey: @"from"]; + + from = [self _matchingIdentityEMail]; + + if (from) + [map setObject: from forKey: @"from"]; + [map setObject: @"multipart/report; report-type=disposition-notification" forKey: @"content-type"]; subject = [NSString stringWithFormat: From d76a4361a094c2a235e310f9e86ab38602d568f7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 30 Oct 2014 09:20:21 -0400 Subject: [PATCH 058/198] Added one more sanitization pass on decoded content --- ActiveSync/SOGoMailObject+ActiveSync.m | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ActiveSync/SOGoMailObject+ActiveSync.m b/ActiveSync/SOGoMailObject+ActiveSync.m index e5f349092..e111b9edb 100644 --- a/ActiveSync/SOGoMailObject+ActiveSync.m +++ b/ActiveSync/SOGoMailObject+ActiveSync.m @@ -67,8 +67,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include - #include +#include typedef struct { uint32_t dwLowDateTime; @@ -323,6 +323,11 @@ struct GlobalObjectId { if (s) { + // We sanitize the content immediately, in case we have non-UNICODE safe + // characters that would be re-encoded later in HTML entities and thus, + // ignore afterwards. + s = [s safeString]; + body = [s dataUsingEncoding: NSUTF8StringEncoding]; } From 08427e0bfb8bba2fd273443558a6832ac1ac0cc5 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 30 Oct 2014 18:58:52 -0400 Subject: [PATCH 059/198] set userTimeZone if event has no tz --- ActiveSync/iCalEvent+ActiveSync.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m index 1443df2c3..522a40782 100644 --- a/ActiveSync/iCalEvent+ActiveSync.m +++ b/ActiveSync/iCalEvent+ActiveSync.m @@ -127,7 +127,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. tz = [(iCalDateTime *)[self firstChildWithTag: @"dtstart"] timeZone]; if (!tz) - tz = [iCalTimeZone timeZoneForName: @"Europe/London"]; + tz = [iCalTimeZone timeZoneForName: [userTimeZone name]] [s appendFormat: @"%@", [tz activeSyncRepresentationInContext: context]]; From 52fdcc34de6fb482b94736652a7699436c17db82 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 31 Oct 2014 06:46:03 -0400 Subject: [PATCH 060/198] Fixed typo --- ActiveSync/iCalEvent+ActiveSync.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m index 522a40782..a54178e53 100644 --- a/ActiveSync/iCalEvent+ActiveSync.m +++ b/ActiveSync/iCalEvent+ActiveSync.m @@ -127,7 +127,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. tz = [(iCalDateTime *)[self firstChildWithTag: @"dtstart"] timeZone]; if (!tz) - tz = [iCalTimeZone timeZoneForName: [userTimeZone name]] + tz = [iCalTimeZone timeZoneForName: [userTimeZone name]]; [s appendFormat: @"%@", [tz activeSyncRepresentationInContext: context]]; From 4b9958336c470a00933b2786c2105a25f95f7801 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 4 Nov 2014 13:50:10 -0500 Subject: [PATCH 061/198] Handle base64-encoded command parameters in EAS --- ActiveSync/NSString+ActiveSync.m | 44 +++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/ActiveSync/NSString+ActiveSync.m b/ActiveSync/NSString+ActiveSync.m index 2d6826b7f..1e5954b28 100644 --- a/ActiveSync/NSString+ActiveSync.m +++ b/ActiveSync/NSString+ActiveSync.m @@ -41,6 +41,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include static NSArray *easCommandCodes = nil; +static NSArray *easCommandParameters = nil; @implementation NSString (ActiveSync) @@ -147,10 +148,10 @@ static NSArray *easCommandCodes = nil; // We handle BASE64 encoded queryStrings. See http://msdn.microsoft.com/en-us/library/ee160227%28v=exchg.80%29.aspx for details. if ([components count] == 1) { - NSString *deviceType; + NSString *deviceType, *parameterValue; NSData *queryString; - int cmd_code, deviceid_length, policy_length, devicetype_length; + int cmd_code, deviceid_length, policy_length, devicetype_length, parameter_code, parameter_length, i; const char* qs_bytes; queryString = [[components objectAtIndex: 0] dataByDecodingBase64]; @@ -164,22 +165,51 @@ static NSArray *easCommandCodes = nil; RETAIN(easCommandCodes); } + if (!easCommandParameters) + { + easCommandParameters = [NSArray arrayWithObjects:@"AttachmentName", @"CollectionId", @"na", @"ItemId", @"LongId", @"na", @"Occurrence", @"Options", @"User", nil]; + RETAIN(easCommandParameters); + } + // Command code, 1 byte, ie.: cmd= cmd_code = qs_bytes[1]; - [components addObject:[NSString stringWithFormat: @"cmd=%@", [easCommandCodes objectAtIndex: cmd_code]]]; + [components addObject: [NSString stringWithFormat: @"cmd=%@", [easCommandCodes objectAtIndex: cmd_code]]]; // Device ID length and Device ID (variable) deviceid_length = qs_bytes[4]; - [components addObject:[NSString stringWithFormat: @"deviceId=%@", [[NSData encodeDataAsHexString:[queryString subdataWithRange:NSMakeRange(5, deviceid_length)]] uppercaseString]]]; + [components addObject: [NSString stringWithFormat: @"deviceId=%@", [[NSData encodeDataAsHexString: [queryString subdataWithRange: NSMakeRange(5, deviceid_length)]] uppercaseString]]]; // Device type length and type (variable) policy_length = qs_bytes[5+deviceid_length]; devicetype_length = qs_bytes[5+deviceid_length+1+policy_length]; - deviceType = [[NSString alloc] initWithData:[queryString subdataWithRange: NSMakeRange(5+deviceid_length+1+policy_length+1, devicetype_length)] - encoding:NSASCIIStringEncoding]; + deviceType = [[NSString alloc] initWithData: [queryString subdataWithRange: NSMakeRange(5+deviceid_length+1+policy_length+1, devicetype_length)] + encoding: NSASCIIStringEncoding]; AUTORELEASE(deviceType); - [components addObject:[NSString stringWithFormat: @"deviceType=%@", deviceType]]; + [components addObject: [NSString stringWithFormat: @"deviceType=%@", deviceType]]; + + // Command Parameters + i = 5+deviceid_length+1+policy_length+1+devicetype_length; + + while (i < [queryString length]) + { + parameter_code = qs_bytes[i]; + parameter_length = qs_bytes[i+1]; + parameterValue = [[NSString alloc] initWithData: [queryString subdataWithRange: NSMakeRange(i+1+1, parameter_length)] + encoding: NSASCIIStringEncoding]; + + AUTORELEASE(parameterValue); + + // parameter_code 7 == Options + // http://msdn.microsoft.com/en-us/library/ee237789(v=exchg.80).aspx + if (parameter_code == 7) + [components addObject: [NSString stringWithFormat: @"%@=%@", [easCommandParameters objectAtIndex: parameter_code], + ([parameterValue isEqualToString: @"\001"]) ? @"SaveInSent" : @"AcceptMultiPart"]]; + else + [components addObject: [NSString stringWithFormat: @"%@=%@", [easCommandParameters objectAtIndex: parameter_code], parameterValue]]; + + i = i + 1 + 1 + parameter_length; + } } for (i = 0; i < [components count]; i++) From 15be4861b6574ce7573e2ebc6e3d3bc3fb10110f Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 5 Nov 2014 08:44:52 -0500 Subject: [PATCH 062/198] Fix support for SieveFolderEncoding default Fixes #2622 --- NEWS | 1 + UI/PreferencesUI/UIxFilterEditor.m | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 1e52e5b9b..5ce79af5f 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ Bug fixes - fixed ActiveSync PING command flooding the server (#2940) - fixed many interop issues with Windows Phones over ActiveSync - fixed automatic return receipts crash when not in the recepient list (#2965) + - fixed support for Sieve folder encoding parameter (#2622) 2.2.9a (2014-09-29) ------------------- diff --git a/UI/PreferencesUI/UIxFilterEditor.m b/UI/PreferencesUI/UIxFilterEditor.m index 964ff44b6..50ae1af15 100644 --- a/UI/PreferencesUI/UIxFilterEditor.m +++ b/UI/PreferencesUI/UIxFilterEditor.m @@ -1,6 +1,6 @@ /* UIxFilterEditor.m - this file is part of SOGo * - * Copyright (C) 2010-2013 Inverse inc. + * Copyright (C) 2010-2014 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,7 +36,6 @@ { NSString *filterId; NSDictionary *labels; - NSString *folderEncoding; } @end @@ -114,9 +113,9 @@ return [labels jsonRepresentation]; } -- (NSString *) folderEncoding +- (NSString *) sieveFolderEncoding { - return [[SOGoSystemDefaults sharedSystemDefaults] folderEncoding]; + return [[SOGoSystemDefaults sharedSystemDefaults] sieveFolderEncoding]; } @end From 7052daa1c8fded384e5dd9e7582014a5acd8188e Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 5 Nov 2014 10:02:55 -0500 Subject: [PATCH 063/198] Fix rename of subscribed addressbooks --- NEWS | 1 + UI/Common/product.plist | 2 +- UI/WebServerResources/ContactsUI.js | 10 ++-------- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/NEWS b/NEWS index 5ce79af5f..85102bcd9 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,7 @@ Bug fixes - fixed many interop issues with Windows Phones over ActiveSync - fixed automatic return receipts crash when not in the recepient list (#2965) - fixed support for Sieve folder encoding parameter (#2622) + - fixed rename of subscribed addressbooks 2.2.9a (2014-09-29) ------------------- diff --git a/UI/Common/product.plist b/UI/Common/product.plist index 160e4155f..d5d6936a1 100644 --- a/UI/Common/product.plist +++ b/UI/Common/product.plist @@ -107,7 +107,7 @@ actionName = "subscribeUsers"; }; renameFolder = { - protectedBy = "Change Permissions"; + protectedBy = "Access Contents Information"; actionClass = "UIxFolderActions"; actionName = "renameFolder"; }; diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 27a462984..fd460859c 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -1113,19 +1113,14 @@ function onAddressBooksMenuPrepareVisibility() { var menu = $("contactFoldersMenu").down("ul");; var listElements = menu.childNodesWithTag("li"); - var modifyOption = listElements[0]; var newListOption = listElements[3]; var removeOption = listElements[5]; var exportOption = listElements[7]; var importOption = listElements[8]; var sharingOption = listElements[listElements.length - 1]; - // Disable the "Sharing" and "Modify" options when address book - // is not owned by user + // Disable the "Sharing" option when address book is not owned by user if (folderOwner == UserLogin || IsSuperUser) { - modifyOption.removeClassName("disabled"); // WARNING: will fail - // for super users - // anyway var aclEditing = selected[0].getAttribute("acl-editing"); if (aclEditing && aclEditing == "available") { sharingOption.removeClassName("disabled"); @@ -1147,8 +1142,7 @@ function onAddressBooksMenuPrepareVisibility() { newListOption.addClassName("disabled"); } - /* Disable the "remove" and "export ab" options when address book is - public */ + // Disable the "remove" and "export ab" options when address book is public if (folderOwner == "nobody") { exportOption.addClassName("disabled"); importOption.addClassName("disabled"); From 6de70e4043bc09a9182ce8a22e2c4f9a76b11af3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 6 Nov 2014 09:35:58 -0500 Subject: [PATCH 064/198] sanitize strings before encoding them when using EAS --- ActiveSync/NSString+ActiveSync.m | 4 ++-- NEWS | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ActiveSync/NSString+ActiveSync.m b/ActiveSync/NSString+ActiveSync.m index 1e5954b28..047a5d45a 100644 --- a/ActiveSync/NSString+ActiveSync.m +++ b/ActiveSync/NSString+ActiveSync.m @@ -66,9 +66,9 @@ static NSArray *easCommandParameters = nil; { NSString *s; - s = [self stringByEscapingHTMLString]; + s = [self safeString]; - return [s safeString]; + return [s stringByEscapingHTMLString]; } - (int) activeSyncFolderType diff --git a/NEWS b/NEWS index 85102bcd9..170f54b46 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,7 @@ Bug fixes - fixed automatic return receipts crash when not in the recepient list (#2965) - fixed support for Sieve folder encoding parameter (#2622) - fixed rename of subscribed addressbooks + - sanitize strings before escaping them when using EAS 2.2.9a (2014-09-29) ------------------- From e08dd3f9eb16bdf122a398fd46a725ec33c55226 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 6 Nov 2014 10:16:47 -0500 Subject: [PATCH 065/198] Fix for bug #2978 --- ActiveSync/iCalEvent+ActiveSync.m | 28 ++++++++++++++++++++-------- NEWS | 1 + 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ActiveSync/iCalEvent+ActiveSync.m b/ActiveSync/iCalEvent+ActiveSync.m index a54178e53..6d4d4ad4d 100644 --- a/ActiveSync/iCalEvent+ActiveSync.m +++ b/ActiveSync/iCalEvent+ActiveSync.m @@ -334,14 +334,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [o intValue]; } - // - // - // - if ((o = [theValues objectForKey: @"MeetingStatus"])) - { - [o intValue]; - } - // // 0- normal, 1- personal, 2- private and 3-confidential // @@ -482,6 +474,26 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [self setOrganizer: person]; } + // + // iOS is plain stupid here. It seends event invitations with no Organizer. + // We check this corner-case and if MeetingStatus == 1 (see http://msdn.microsoft.com/en-us/library/ee219342(v=exchg.80).aspx or details) + // and there's no organizer, we fake one. + // + if ((o = [theValues objectForKey: @"MeetingStatus"])) + { + if ([o intValue] == 1 && ![theValues objectForKey: @"Organizer_Email"]) + { + iCalPerson *person; + + person = [iCalPerson elementWithTag: @"organizer"]; + [person setEmail: [[[context activeUser] primaryIdentity] objectForKey: @"email"]]; + [person setCn: [[context activeUser] cn]]; + [person setPartStat: @"ACCEPTED"]; + [self setOrganizer: person]; + } + } + + // 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]]) diff --git a/NEWS b/NEWS index 170f54b46..fa978c04c 100644 --- a/NEWS +++ b/NEWS @@ -17,6 +17,7 @@ Bug fixes - fixed support for Sieve folder encoding parameter (#2622) - fixed rename of subscribed addressbooks - sanitize strings before escaping them when using EAS + - fixed handling of event invitations on iOS/EAS with no organizer (#2978) 2.2.9a (2014-09-29) ------------------- From 49da494260949c1f6fe022e9825f026241f0f1c1 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 6 Nov 2014 11:09:16 -0500 Subject: [PATCH 066/198] Fix for bug #2968 --- NEWS | 1 + SOPE/NGCards/TimeZones/Africa/Abidjan.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Accra.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Addis_Ababa.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Algiers.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Asmara.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Bamako.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Bangui.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Banjul.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Bissau.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Blantyre.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Brazzaville.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Bujumbura.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Cairo.ics | 14 ++++++++++--- SOPE/NGCards/TimeZones/Africa/Casablanca.ics | 20 +++++++++---------- SOPE/NGCards/TimeZones/Africa/Ceuta.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Conakry.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Dakar.ics | 2 +- .../TimeZones/Africa/Dar_es_Salaam.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Djibouti.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Douala.ics | 2 +- SOPE/NGCards/TimeZones/Africa/El_Aaiun.ics | 14 ++++++++++--- SOPE/NGCards/TimeZones/Africa/Freetown.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Gaborone.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Harare.ics | 2 +- .../NGCards/TimeZones/Africa/Johannesburg.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Juba.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Kampala.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Khartoum.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Kigali.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Kinshasa.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Lagos.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Libreville.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Lome.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Luanda.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Lubumbashi.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Lusaka.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Malabo.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Maputo.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Maseru.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Mbabane.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Mogadishu.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Monrovia.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Nairobi.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Ndjamena.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Niamey.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Nouakchott.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Ouagadougou.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Porto-Novo.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Sao_Tome.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Tripoli.ics | 16 ++++----------- SOPE/NGCards/TimeZones/Africa/Tunis.ics | 2 +- SOPE/NGCards/TimeZones/Africa/Windhoek.ics | 2 +- SOPE/NGCards/TimeZones/America/Adak.ics | 2 +- SOPE/NGCards/TimeZones/America/Anchorage.ics | 2 +- SOPE/NGCards/TimeZones/America/Anguilla.ics | 2 +- SOPE/NGCards/TimeZones/America/Antigua.ics | 2 +- SOPE/NGCards/TimeZones/America/Araguaina.ics | 12 ++--------- .../America/Argentina/Buenos_Aires.ics | 2 +- .../TimeZones/America/Argentina/Catamarca.ics | 2 +- .../TimeZones/America/Argentina/Cordoba.ics | 2 +- .../TimeZones/America/Argentina/Jujuy.ics | 2 +- .../TimeZones/America/Argentina/La_Rioja.ics | 2 +- .../TimeZones/America/Argentina/Mendoza.ics | 2 +- .../America/Argentina/Rio_Gallegos.ics | 2 +- .../TimeZones/America/Argentina/Salta.ics | 2 +- .../TimeZones/America/Argentina/San_Juan.ics | 2 +- .../TimeZones/America/Argentina/San_Luis.ics | 8 ++++---- .../TimeZones/America/Argentina/Tucuman.ics | 2 +- .../TimeZones/America/Argentina/Ushuaia.ics | 2 +- SOPE/NGCards/TimeZones/America/Aruba.ics | 2 +- SOPE/NGCards/TimeZones/America/Asuncion.ics | 16 +++++++-------- SOPE/NGCards/TimeZones/America/Atikokan.ics | 2 +- SOPE/NGCards/TimeZones/America/Bahia.ics | 2 +- .../TimeZones/America/Bahia_Banderas.ics | 2 +- SOPE/NGCards/TimeZones/America/Barbados.ics | 2 +- SOPE/NGCards/TimeZones/America/Belem.ics | 2 +- SOPE/NGCards/TimeZones/America/Belize.ics | 2 +- .../TimeZones/America/Blanc-Sablon.ics | 2 +- SOPE/NGCards/TimeZones/America/Boa_Vista.ics | 2 +- SOPE/NGCards/TimeZones/America/Bogota.ics | 2 +- SOPE/NGCards/TimeZones/America/Boise.ics | 2 +- .../TimeZones/America/Cambridge_Bay.ics | 2 +- .../TimeZones/America/Campo_Grande.ics | 2 +- SOPE/NGCards/TimeZones/America/Cancun.ics | 2 +- SOPE/NGCards/TimeZones/America/Caracas.ics | 2 +- SOPE/NGCards/TimeZones/America/Cayenne.ics | 2 +- SOPE/NGCards/TimeZones/America/Cayman.ics | 2 +- SOPE/NGCards/TimeZones/America/Chicago.ics | 2 +- SOPE/NGCards/TimeZones/America/Chihuahua.ics | 2 +- SOPE/NGCards/TimeZones/America/Costa_Rica.ics | 2 +- SOPE/NGCards/TimeZones/America/Creston.ics | 2 +- SOPE/NGCards/TimeZones/America/Cuiaba.ics | 2 +- SOPE/NGCards/TimeZones/America/Curacao.ics | 2 +- .../TimeZones/America/Danmarkshavn.ics | 2 +- SOPE/NGCards/TimeZones/America/Dawson.ics | 2 +- .../TimeZones/America/Dawson_Creek.ics | 2 +- SOPE/NGCards/TimeZones/America/Denver.ics | 2 +- SOPE/NGCards/TimeZones/America/Detroit.ics | 2 +- SOPE/NGCards/TimeZones/America/Dominica.ics | 2 +- SOPE/NGCards/TimeZones/America/Edmonton.ics | 2 +- SOPE/NGCards/TimeZones/America/Eirunepe.ics | 8 ++++---- .../NGCards/TimeZones/America/El_Salvador.ics | 2 +- SOPE/NGCards/TimeZones/America/Fortaleza.ics | 2 +- SOPE/NGCards/TimeZones/America/Glace_Bay.ics | 2 +- SOPE/NGCards/TimeZones/America/Godthab.ics | 2 +- SOPE/NGCards/TimeZones/America/Goose_Bay.ics | 2 +- SOPE/NGCards/TimeZones/America/Grand_Turk.ics | 2 +- SOPE/NGCards/TimeZones/America/Grenada.ics | 2 +- SOPE/NGCards/TimeZones/America/Guadeloupe.ics | 2 +- SOPE/NGCards/TimeZones/America/Guatemala.ics | 2 +- SOPE/NGCards/TimeZones/America/Guayaquil.ics | 2 +- SOPE/NGCards/TimeZones/America/Guyana.ics | 2 +- SOPE/NGCards/TimeZones/America/Halifax.ics | 2 +- SOPE/NGCards/TimeZones/America/Havana.ics | 2 +- SOPE/NGCards/TimeZones/America/Hermosillo.ics | 2 +- .../America/Indiana/Indianapolis.ics | 2 +- .../TimeZones/America/Indiana/Knox.ics | 2 +- .../TimeZones/America/Indiana/Marengo.ics | 2 +- .../TimeZones/America/Indiana/Petersburg.ics | 2 +- .../TimeZones/America/Indiana/Tell_City.ics | 2 +- .../TimeZones/America/Indiana/Vevay.ics | 2 +- .../TimeZones/America/Indiana/Vincennes.ics | 2 +- .../TimeZones/America/Indiana/Winamac.ics | 2 +- SOPE/NGCards/TimeZones/America/Inuvik.ics | 2 +- SOPE/NGCards/TimeZones/America/Iqaluit.ics | 2 +- SOPE/NGCards/TimeZones/America/Jamaica.ics | 2 +- SOPE/NGCards/TimeZones/America/Juneau.ics | 2 +- .../TimeZones/America/Kentucky/Louisville.ics | 2 +- .../TimeZones/America/Kentucky/Monticello.ics | 2 +- SOPE/NGCards/TimeZones/America/Kralendijk.ics | 2 +- SOPE/NGCards/TimeZones/America/La_Paz.ics | 2 +- SOPE/NGCards/TimeZones/America/Lima.ics | 2 +- .../NGCards/TimeZones/America/Los_Angeles.ics | 2 +- .../TimeZones/America/Lower_Princes.ics | 2 +- SOPE/NGCards/TimeZones/America/Maceio.ics | 2 +- SOPE/NGCards/TimeZones/America/Managua.ics | 2 +- SOPE/NGCards/TimeZones/America/Manaus.ics | 2 +- SOPE/NGCards/TimeZones/America/Marigot.ics | 2 +- SOPE/NGCards/TimeZones/America/Martinique.ics | 2 +- SOPE/NGCards/TimeZones/America/Matamoros.ics | 2 +- SOPE/NGCards/TimeZones/America/Mazatlan.ics | 2 +- SOPE/NGCards/TimeZones/America/Menominee.ics | 2 +- SOPE/NGCards/TimeZones/America/Merida.ics | 2 +- SOPE/NGCards/TimeZones/America/Metlakatla.ics | 2 +- .../NGCards/TimeZones/America/Mexico_City.ics | 2 +- SOPE/NGCards/TimeZones/America/Miquelon.ics | 2 +- SOPE/NGCards/TimeZones/America/Moncton.ics | 2 +- SOPE/NGCards/TimeZones/America/Monterrey.ics | 2 +- SOPE/NGCards/TimeZones/America/Montevideo.ics | 2 +- SOPE/NGCards/TimeZones/America/Montreal.ics | 2 +- SOPE/NGCards/TimeZones/America/Montserrat.ics | 2 +- SOPE/NGCards/TimeZones/America/Nassau.ics | 2 +- SOPE/NGCards/TimeZones/America/New_York.ics | 2 +- SOPE/NGCards/TimeZones/America/Nipigon.ics | 2 +- SOPE/NGCards/TimeZones/America/Nome.ics | 2 +- SOPE/NGCards/TimeZones/America/Noronha.ics | 2 +- .../TimeZones/America/North_Dakota/Beulah.ics | 2 +- .../TimeZones/America/North_Dakota/Center.ics | 2 +- .../America/North_Dakota/New_Salem.ics | 2 +- SOPE/NGCards/TimeZones/America/Ojinaga.ics | 2 +- SOPE/NGCards/TimeZones/America/Panama.ics | 2 +- .../NGCards/TimeZones/America/Pangnirtung.ics | 2 +- SOPE/NGCards/TimeZones/America/Paramaribo.ics | 2 +- SOPE/NGCards/TimeZones/America/Phoenix.ics | 2 +- .../TimeZones/America/Port-au-Prince.ics | 14 ++++++++++--- .../TimeZones/America/Port_of_Spain.ics | 2 +- .../NGCards/TimeZones/America/Porto_Velho.ics | 2 +- .../NGCards/TimeZones/America/Puerto_Rico.ics | 2 +- .../NGCards/TimeZones/America/Rainy_River.ics | 2 +- .../TimeZones/America/Rankin_Inlet.ics | 2 +- SOPE/NGCards/TimeZones/America/Recife.ics | 2 +- SOPE/NGCards/TimeZones/America/Regina.ics | 2 +- SOPE/NGCards/TimeZones/America/Resolute.ics | 2 +- SOPE/NGCards/TimeZones/America/Rio_Branco.ics | 8 ++++---- .../TimeZones/America/Santa_Isabel.ics | 2 +- SOPE/NGCards/TimeZones/America/Santarem.ics | 2 +- SOPE/NGCards/TimeZones/America/Santiago.ics | 10 +++++----- .../TimeZones/America/Santo_Domingo.ics | 2 +- SOPE/NGCards/TimeZones/America/Sao_Paulo.ics | 2 +- .../TimeZones/America/Scoresbysund.ics | 2 +- SOPE/NGCards/TimeZones/America/Sitka.ics | 2 +- .../TimeZones/America/St_Barthelemy.ics | 2 +- SOPE/NGCards/TimeZones/America/St_Johns.ics | 2 +- SOPE/NGCards/TimeZones/America/St_Kitts.ics | 2 +- SOPE/NGCards/TimeZones/America/St_Lucia.ics | 2 +- SOPE/NGCards/TimeZones/America/St_Thomas.ics | 2 +- SOPE/NGCards/TimeZones/America/St_Vincent.ics | 2 +- .../TimeZones/America/Swift_Current.ics | 2 +- .../NGCards/TimeZones/America/Tegucigalpa.ics | 2 +- SOPE/NGCards/TimeZones/America/Thule.ics | 2 +- .../NGCards/TimeZones/America/Thunder_Bay.ics | 2 +- SOPE/NGCards/TimeZones/America/Tijuana.ics | 2 +- SOPE/NGCards/TimeZones/America/Toronto.ics | 2 +- SOPE/NGCards/TimeZones/America/Tortola.ics | 2 +- SOPE/NGCards/TimeZones/America/Vancouver.ics | 2 +- SOPE/NGCards/TimeZones/America/Whitehorse.ics | 2 +- SOPE/NGCards/TimeZones/America/Winnipeg.ics | 2 +- SOPE/NGCards/TimeZones/America/Yakutat.ics | 2 +- .../NGCards/TimeZones/America/Yellowknife.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Casey.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Davis.ics | 2 +- .../TimeZones/Antarctica/DumontDUrville.ics | 2 +- .../TimeZones/Antarctica/Macquarie.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Mawson.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/McMurdo.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Palmer.ics | 10 +++++----- SOPE/NGCards/TimeZones/Antarctica/Rothera.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Syowa.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Vostok.ics | 2 +- .../NGCards/TimeZones/Arctic/Longyearbyen.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Aden.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Almaty.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Amman.ics | 16 +++++++-------- SOPE/NGCards/TimeZones/Asia/Anadyr.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Aqtau.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Aqtobe.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Ashgabat.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Baghdad.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Bahrain.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Baku.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Bangkok.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Beirut.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Bishkek.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Brunei.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Choibalsan.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Chongqing.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Colombo.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Damascus.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Dhaka.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Dili.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Dubai.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Dushanbe.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Gaza.ics | 14 ++++++++++--- SOPE/NGCards/TimeZones/Asia/Harbin.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Hebron.ics | 14 ++++++++++--- SOPE/NGCards/TimeZones/Asia/Ho_Chi_Minh.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Hong_Kong.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Hovd.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Irkutsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Istanbul.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Jakarta.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Jayapura.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Jerusalem.ics | 8 ++++---- SOPE/NGCards/TimeZones/Asia/Kabul.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kamchatka.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Karachi.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kashgar.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kathmandu.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kolkata.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kuala_Lumpur.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kuching.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Kuwait.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Macau.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Magadan.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Makassar.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Manila.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Muscat.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Nicosia.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Omsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Oral.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Phnom_Penh.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Pontianak.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Pyongyang.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Qatar.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Qyzylorda.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Rangoon.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Riyadh.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Sakhalin.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Samarkand.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Seoul.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Shanghai.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Singapore.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Taipei.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Tashkent.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Tbilisi.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Tehran.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Thimphu.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Tokyo.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Ulaanbaatar.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Urumqi.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Vientiane.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Vladivostok.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Yakutsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Yerevan.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Azores.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Bermuda.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Canary.ics | 2 +- .../NGCards/TimeZones/Atlantic/Cape_Verde.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Faroe.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Madeira.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Reykjavik.ics | 2 +- .../TimeZones/Atlantic/South_Georgia.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/St_Helena.ics | 2 +- SOPE/NGCards/TimeZones/Atlantic/Stanley.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Adelaide.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Brisbane.ics | 2 +- .../TimeZones/Australia/Broken_Hill.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Currie.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Darwin.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Eucla.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Hobart.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Lindeman.ics | 2 +- .../NGCards/TimeZones/Australia/Lord_Howe.ics | 2 +- .../NGCards/TimeZones/Australia/Melbourne.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Perth.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Sydney.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Amsterdam.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Andorra.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Athens.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Belgrade.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Berlin.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Bratislava.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Brussels.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Bucharest.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Budapest.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Chisinau.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Copenhagen.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Dublin.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Gibraltar.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Guernsey.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Helsinki.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Isle_of_Man.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Istanbul.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Jersey.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Kiev.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Lisbon.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Ljubljana.ics | 2 +- SOPE/NGCards/TimeZones/Europe/London.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Luxembourg.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Madrid.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Malta.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Mariehamn.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Minsk.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Monaco.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Moscow.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Nicosia.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Oslo.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Paris.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Podgorica.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Prague.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Riga.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Rome.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Samara.ics | 2 +- SOPE/NGCards/TimeZones/Europe/San_Marino.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Sarajevo.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Simferopol.ics | 18 +++++------------ SOPE/NGCards/TimeZones/Europe/Skopje.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Sofia.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Stockholm.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Tallinn.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Tirane.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Uzhgorod.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Vaduz.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Vatican.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Vienna.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Vilnius.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Volgograd.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Warsaw.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Zagreb.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Zaporozhye.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Zurich.ics | 2 +- .../NGCards/TimeZones/Indian/Antananarivo.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Chagos.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Christmas.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Cocos.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Comoro.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Kerguelen.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Mahe.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Maldives.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Mauritius.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Mayotte.ics | 2 +- SOPE/NGCards/TimeZones/Indian/Reunion.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Apia.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Auckland.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Chatham.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Chuuk.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Easter.ics | 10 +++++----- SOPE/NGCards/TimeZones/Pacific/Efate.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Enderbury.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Fakaofo.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Fiji.ics | 6 +++--- SOPE/NGCards/TimeZones/Pacific/Funafuti.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Galapagos.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Gambier.ics | 2 +- .../NGCards/TimeZones/Pacific/Guadalcanal.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Guam.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Honolulu.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Johnston.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Kiritimati.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Kosrae.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Kwajalein.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Majuro.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Marquesas.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Midway.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Nauru.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Niue.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Norfolk.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Noumea.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Pago_Pago.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Palau.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Pitcairn.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Pohnpei.ics | 2 +- .../TimeZones/Pacific/Port_Moresby.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Rarotonga.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Saipan.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Tahiti.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Tarawa.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Tongatapu.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Wake.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Wallis.ics | 2 +- 416 files changed, 527 insertions(+), 510 deletions(-) diff --git a/NEWS b/NEWS index fa978c04c..5a468e029 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Enhancements - no longer leaking database passwords in the logs (#2953) - added support for multiple calendars and address books over ActiveSync + - updated timezone information (#2968) Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) diff --git a/SOPE/NGCards/TimeZones/Africa/Abidjan.ics b/SOPE/NGCards/TimeZones/Africa/Abidjan.ics index b4a41bae5..2d0886e72 100644 --- a/SOPE/NGCards/TimeZones/Africa/Abidjan.ics +++ b/SOPE/NGCards/TimeZones/Africa/Abidjan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Abidjan diff --git a/SOPE/NGCards/TimeZones/Africa/Accra.ics b/SOPE/NGCards/TimeZones/Africa/Accra.ics index fbe1a81f4..089fb6353 100644 --- a/SOPE/NGCards/TimeZones/Africa/Accra.ics +++ b/SOPE/NGCards/TimeZones/Africa/Accra.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Accra diff --git a/SOPE/NGCards/TimeZones/Africa/Addis_Ababa.ics b/SOPE/NGCards/TimeZones/Africa/Addis_Ababa.ics index b9d52ae7d..66b60542d 100644 --- a/SOPE/NGCards/TimeZones/Africa/Addis_Ababa.ics +++ b/SOPE/NGCards/TimeZones/Africa/Addis_Ababa.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Addis_Ababa diff --git a/SOPE/NGCards/TimeZones/Africa/Algiers.ics b/SOPE/NGCards/TimeZones/Africa/Algiers.ics index e08496a8a..13b2d9e5b 100644 --- a/SOPE/NGCards/TimeZones/Africa/Algiers.ics +++ b/SOPE/NGCards/TimeZones/Africa/Algiers.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Algiers diff --git a/SOPE/NGCards/TimeZones/Africa/Asmara.ics b/SOPE/NGCards/TimeZones/Africa/Asmara.ics index 192c874df..a456a3b7d 100644 --- a/SOPE/NGCards/TimeZones/Africa/Asmara.ics +++ b/SOPE/NGCards/TimeZones/Africa/Asmara.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Asmara diff --git a/SOPE/NGCards/TimeZones/Africa/Bamako.ics b/SOPE/NGCards/TimeZones/Africa/Bamako.ics index eb06bf6b0..f8e989c75 100644 --- a/SOPE/NGCards/TimeZones/Africa/Bamako.ics +++ b/SOPE/NGCards/TimeZones/Africa/Bamako.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Bamako diff --git a/SOPE/NGCards/TimeZones/Africa/Bangui.ics b/SOPE/NGCards/TimeZones/Africa/Bangui.ics index dd2902b84..03e755b73 100644 --- a/SOPE/NGCards/TimeZones/Africa/Bangui.ics +++ b/SOPE/NGCards/TimeZones/Africa/Bangui.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Bangui diff --git a/SOPE/NGCards/TimeZones/Africa/Banjul.ics b/SOPE/NGCards/TimeZones/Africa/Banjul.ics index a41cc58f9..e9d579e60 100644 --- a/SOPE/NGCards/TimeZones/Africa/Banjul.ics +++ b/SOPE/NGCards/TimeZones/Africa/Banjul.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Banjul diff --git a/SOPE/NGCards/TimeZones/Africa/Bissau.ics b/SOPE/NGCards/TimeZones/Africa/Bissau.ics index 1e90a3eab..14fb6511f 100644 --- a/SOPE/NGCards/TimeZones/Africa/Bissau.ics +++ b/SOPE/NGCards/TimeZones/Africa/Bissau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Bissau diff --git a/SOPE/NGCards/TimeZones/Africa/Blantyre.ics b/SOPE/NGCards/TimeZones/Africa/Blantyre.ics index 26f666278..98dc53b74 100644 --- a/SOPE/NGCards/TimeZones/Africa/Blantyre.ics +++ b/SOPE/NGCards/TimeZones/Africa/Blantyre.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Blantyre diff --git a/SOPE/NGCards/TimeZones/Africa/Brazzaville.ics b/SOPE/NGCards/TimeZones/Africa/Brazzaville.ics index 40bd02fd2..5dcffaf53 100644 --- a/SOPE/NGCards/TimeZones/Africa/Brazzaville.ics +++ b/SOPE/NGCards/TimeZones/Africa/Brazzaville.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Brazzaville diff --git a/SOPE/NGCards/TimeZones/Africa/Bujumbura.ics b/SOPE/NGCards/TimeZones/Africa/Bujumbura.ics index 0b8471e74..214abc48e 100644 --- a/SOPE/NGCards/TimeZones/Africa/Bujumbura.ics +++ b/SOPE/NGCards/TimeZones/Africa/Bujumbura.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Bujumbura diff --git a/SOPE/NGCards/TimeZones/Africa/Cairo.ics b/SOPE/NGCards/TimeZones/Africa/Cairo.ics index d7ada8472..cb946a0ac 100644 --- a/SOPE/NGCards/TimeZones/Africa/Cairo.ics +++ b/SOPE/NGCards/TimeZones/Africa/Cairo.ics @@ -1,14 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Cairo X-LIC-LOCATION:Africa/Cairo BEGIN:STANDARD -TZOFFSETFROM:+0200 +TZOFFSETFROM:+0300 TZOFFSETTO:+0200 TZNAME:EET -DTSTART:19700101T000000 +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 diff --git a/SOPE/NGCards/TimeZones/Africa/Casablanca.ics b/SOPE/NGCards/TimeZones/Africa/Casablanca.ics index 37b853064..2424b03fd 100644 --- a/SOPE/NGCards/TimeZones/Africa/Casablanca.ics +++ b/SOPE/NGCards/TimeZones/Africa/Casablanca.ics @@ -1,22 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Casablanca X-LIC-LOCATION:Africa/Casablanca -BEGIN:DAYLIGHT -TZOFFSETFROM:+0000 -TZOFFSETTO:+0100 -TZNAME:WEST -DTSTART:19700426T020000 -RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU -END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0100 TZOFFSETTO:+0000 TZNAME:WET -DTSTART:19700927T030000 -RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +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 diff --git a/SOPE/NGCards/TimeZones/Africa/Ceuta.ics b/SOPE/NGCards/TimeZones/Africa/Ceuta.ics index 526241708..237024157 100644 --- a/SOPE/NGCards/TimeZones/Africa/Ceuta.ics +++ b/SOPE/NGCards/TimeZones/Africa/Ceuta.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Ceuta diff --git a/SOPE/NGCards/TimeZones/Africa/Conakry.ics b/SOPE/NGCards/TimeZones/Africa/Conakry.ics index 4ed6bc0c5..72a68faa2 100644 --- a/SOPE/NGCards/TimeZones/Africa/Conakry.ics +++ b/SOPE/NGCards/TimeZones/Africa/Conakry.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Conakry diff --git a/SOPE/NGCards/TimeZones/Africa/Dakar.ics b/SOPE/NGCards/TimeZones/Africa/Dakar.ics index 2485cf464..eb55e58ba 100644 --- a/SOPE/NGCards/TimeZones/Africa/Dakar.ics +++ b/SOPE/NGCards/TimeZones/Africa/Dakar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Dakar diff --git a/SOPE/NGCards/TimeZones/Africa/Dar_es_Salaam.ics b/SOPE/NGCards/TimeZones/Africa/Dar_es_Salaam.ics index c45ed6520..154b826ba 100644 --- a/SOPE/NGCards/TimeZones/Africa/Dar_es_Salaam.ics +++ b/SOPE/NGCards/TimeZones/Africa/Dar_es_Salaam.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Dar_es_Salaam diff --git a/SOPE/NGCards/TimeZones/Africa/Djibouti.ics b/SOPE/NGCards/TimeZones/Africa/Djibouti.ics index 82cef5d55..7fefeb4b0 100644 --- a/SOPE/NGCards/TimeZones/Africa/Djibouti.ics +++ b/SOPE/NGCards/TimeZones/Africa/Djibouti.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Djibouti diff --git a/SOPE/NGCards/TimeZones/Africa/Douala.ics b/SOPE/NGCards/TimeZones/Africa/Douala.ics index 8a3a7b82e..249062f5f 100644 --- a/SOPE/NGCards/TimeZones/Africa/Douala.ics +++ b/SOPE/NGCards/TimeZones/Africa/Douala.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Douala diff --git a/SOPE/NGCards/TimeZones/Africa/El_Aaiun.ics b/SOPE/NGCards/TimeZones/Africa/El_Aaiun.ics index daa9fa21f..18bb12608 100644 --- a/SOPE/NGCards/TimeZones/Africa/El_Aaiun.ics +++ b/SOPE/NGCards/TimeZones/Africa/El_Aaiun.ics @@ -1,14 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +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:+0000 +TZOFFSETFROM:+0100 TZOFFSETTO:+0000 TZNAME:WET -DTSTART:19700101T000000 +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 diff --git a/SOPE/NGCards/TimeZones/Africa/Freetown.ics b/SOPE/NGCards/TimeZones/Africa/Freetown.ics index 2b689ba56..c7daed840 100644 --- a/SOPE/NGCards/TimeZones/Africa/Freetown.ics +++ b/SOPE/NGCards/TimeZones/Africa/Freetown.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Freetown diff --git a/SOPE/NGCards/TimeZones/Africa/Gaborone.ics b/SOPE/NGCards/TimeZones/Africa/Gaborone.ics index 27a91098f..0f94ca8bd 100644 --- a/SOPE/NGCards/TimeZones/Africa/Gaborone.ics +++ b/SOPE/NGCards/TimeZones/Africa/Gaborone.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Gaborone diff --git a/SOPE/NGCards/TimeZones/Africa/Harare.ics b/SOPE/NGCards/TimeZones/Africa/Harare.ics index 7fe0c6302..543e49ad1 100644 --- a/SOPE/NGCards/TimeZones/Africa/Harare.ics +++ b/SOPE/NGCards/TimeZones/Africa/Harare.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Harare diff --git a/SOPE/NGCards/TimeZones/Africa/Johannesburg.ics b/SOPE/NGCards/TimeZones/Africa/Johannesburg.ics index 57f55cdc7..91edd0aab 100644 --- a/SOPE/NGCards/TimeZones/Africa/Johannesburg.ics +++ b/SOPE/NGCards/TimeZones/Africa/Johannesburg.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Johannesburg diff --git a/SOPE/NGCards/TimeZones/Africa/Juba.ics b/SOPE/NGCards/TimeZones/Africa/Juba.ics index 02563da06..99f7b0002 100644 --- a/SOPE/NGCards/TimeZones/Africa/Juba.ics +++ b/SOPE/NGCards/TimeZones/Africa/Juba.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Juba diff --git a/SOPE/NGCards/TimeZones/Africa/Kampala.ics b/SOPE/NGCards/TimeZones/Africa/Kampala.ics index b64e6654f..96ad293b3 100644 --- a/SOPE/NGCards/TimeZones/Africa/Kampala.ics +++ b/SOPE/NGCards/TimeZones/Africa/Kampala.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Kampala diff --git a/SOPE/NGCards/TimeZones/Africa/Khartoum.ics b/SOPE/NGCards/TimeZones/Africa/Khartoum.ics index 3754dfb68..75badb8b0 100644 --- a/SOPE/NGCards/TimeZones/Africa/Khartoum.ics +++ b/SOPE/NGCards/TimeZones/Africa/Khartoum.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Khartoum diff --git a/SOPE/NGCards/TimeZones/Africa/Kigali.ics b/SOPE/NGCards/TimeZones/Africa/Kigali.ics index 5a170e256..0226b6a12 100644 --- a/SOPE/NGCards/TimeZones/Africa/Kigali.ics +++ b/SOPE/NGCards/TimeZones/Africa/Kigali.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Kigali diff --git a/SOPE/NGCards/TimeZones/Africa/Kinshasa.ics b/SOPE/NGCards/TimeZones/Africa/Kinshasa.ics index 232d7dad0..99221a229 100644 --- a/SOPE/NGCards/TimeZones/Africa/Kinshasa.ics +++ b/SOPE/NGCards/TimeZones/Africa/Kinshasa.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Kinshasa diff --git a/SOPE/NGCards/TimeZones/Africa/Lagos.ics b/SOPE/NGCards/TimeZones/Africa/Lagos.ics index 19b6f1ea5..c2486ac7f 100644 --- a/SOPE/NGCards/TimeZones/Africa/Lagos.ics +++ b/SOPE/NGCards/TimeZones/Africa/Lagos.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Lagos diff --git a/SOPE/NGCards/TimeZones/Africa/Libreville.ics b/SOPE/NGCards/TimeZones/Africa/Libreville.ics index 1845ba537..2765b0c6f 100644 --- a/SOPE/NGCards/TimeZones/Africa/Libreville.ics +++ b/SOPE/NGCards/TimeZones/Africa/Libreville.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Libreville diff --git a/SOPE/NGCards/TimeZones/Africa/Lome.ics b/SOPE/NGCards/TimeZones/Africa/Lome.ics index 6549bb42a..227946eed 100644 --- a/SOPE/NGCards/TimeZones/Africa/Lome.ics +++ b/SOPE/NGCards/TimeZones/Africa/Lome.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Lome diff --git a/SOPE/NGCards/TimeZones/Africa/Luanda.ics b/SOPE/NGCards/TimeZones/Africa/Luanda.ics index 0de494b95..324a08b53 100644 --- a/SOPE/NGCards/TimeZones/Africa/Luanda.ics +++ b/SOPE/NGCards/TimeZones/Africa/Luanda.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Luanda diff --git a/SOPE/NGCards/TimeZones/Africa/Lubumbashi.ics b/SOPE/NGCards/TimeZones/Africa/Lubumbashi.ics index 5c8ec090a..c5703a198 100644 --- a/SOPE/NGCards/TimeZones/Africa/Lubumbashi.ics +++ b/SOPE/NGCards/TimeZones/Africa/Lubumbashi.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Lubumbashi diff --git a/SOPE/NGCards/TimeZones/Africa/Lusaka.ics b/SOPE/NGCards/TimeZones/Africa/Lusaka.ics index b3e362b8c..5d792086e 100644 --- a/SOPE/NGCards/TimeZones/Africa/Lusaka.ics +++ b/SOPE/NGCards/TimeZones/Africa/Lusaka.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Lusaka diff --git a/SOPE/NGCards/TimeZones/Africa/Malabo.ics b/SOPE/NGCards/TimeZones/Africa/Malabo.ics index 2fbef4fbf..a3f0ab84c 100644 --- a/SOPE/NGCards/TimeZones/Africa/Malabo.ics +++ b/SOPE/NGCards/TimeZones/Africa/Malabo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Malabo diff --git a/SOPE/NGCards/TimeZones/Africa/Maputo.ics b/SOPE/NGCards/TimeZones/Africa/Maputo.ics index 30df05d2b..40e26f1c7 100644 --- a/SOPE/NGCards/TimeZones/Africa/Maputo.ics +++ b/SOPE/NGCards/TimeZones/Africa/Maputo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Maputo diff --git a/SOPE/NGCards/TimeZones/Africa/Maseru.ics b/SOPE/NGCards/TimeZones/Africa/Maseru.ics index d9f6fa83c..10a504381 100644 --- a/SOPE/NGCards/TimeZones/Africa/Maseru.ics +++ b/SOPE/NGCards/TimeZones/Africa/Maseru.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Maseru diff --git a/SOPE/NGCards/TimeZones/Africa/Mbabane.ics b/SOPE/NGCards/TimeZones/Africa/Mbabane.ics index c6e73fa22..8b2a2da1e 100644 --- a/SOPE/NGCards/TimeZones/Africa/Mbabane.ics +++ b/SOPE/NGCards/TimeZones/Africa/Mbabane.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Mbabane diff --git a/SOPE/NGCards/TimeZones/Africa/Mogadishu.ics b/SOPE/NGCards/TimeZones/Africa/Mogadishu.ics index 70b8639e8..c25678f5b 100644 --- a/SOPE/NGCards/TimeZones/Africa/Mogadishu.ics +++ b/SOPE/NGCards/TimeZones/Africa/Mogadishu.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Mogadishu diff --git a/SOPE/NGCards/TimeZones/Africa/Monrovia.ics b/SOPE/NGCards/TimeZones/Africa/Monrovia.ics index 0f2d6a54e..c509dd137 100644 --- a/SOPE/NGCards/TimeZones/Africa/Monrovia.ics +++ b/SOPE/NGCards/TimeZones/Africa/Monrovia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Monrovia diff --git a/SOPE/NGCards/TimeZones/Africa/Nairobi.ics b/SOPE/NGCards/TimeZones/Africa/Nairobi.ics index 552822a8f..167681055 100644 --- a/SOPE/NGCards/TimeZones/Africa/Nairobi.ics +++ b/SOPE/NGCards/TimeZones/Africa/Nairobi.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Nairobi diff --git a/SOPE/NGCards/TimeZones/Africa/Ndjamena.ics b/SOPE/NGCards/TimeZones/Africa/Ndjamena.ics index b536d06c3..77316d953 100644 --- a/SOPE/NGCards/TimeZones/Africa/Ndjamena.ics +++ b/SOPE/NGCards/TimeZones/Africa/Ndjamena.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Ndjamena diff --git a/SOPE/NGCards/TimeZones/Africa/Niamey.ics b/SOPE/NGCards/TimeZones/Africa/Niamey.ics index fa4d2e567..b8cba64d7 100644 --- a/SOPE/NGCards/TimeZones/Africa/Niamey.ics +++ b/SOPE/NGCards/TimeZones/Africa/Niamey.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Niamey diff --git a/SOPE/NGCards/TimeZones/Africa/Nouakchott.ics b/SOPE/NGCards/TimeZones/Africa/Nouakchott.ics index 8d31a7c36..c8f8041d0 100644 --- a/SOPE/NGCards/TimeZones/Africa/Nouakchott.ics +++ b/SOPE/NGCards/TimeZones/Africa/Nouakchott.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Nouakchott diff --git a/SOPE/NGCards/TimeZones/Africa/Ouagadougou.ics b/SOPE/NGCards/TimeZones/Africa/Ouagadougou.ics index 5b6bf4c0c..ace03e7ad 100644 --- a/SOPE/NGCards/TimeZones/Africa/Ouagadougou.ics +++ b/SOPE/NGCards/TimeZones/Africa/Ouagadougou.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Ouagadougou diff --git a/SOPE/NGCards/TimeZones/Africa/Porto-Novo.ics b/SOPE/NGCards/TimeZones/Africa/Porto-Novo.ics index 1361b6cb5..d85ecc0e2 100644 --- a/SOPE/NGCards/TimeZones/Africa/Porto-Novo.ics +++ b/SOPE/NGCards/TimeZones/Africa/Porto-Novo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Porto-Novo diff --git a/SOPE/NGCards/TimeZones/Africa/Sao_Tome.ics b/SOPE/NGCards/TimeZones/Africa/Sao_Tome.ics index 9c85867e4..75313f5d0 100644 --- a/SOPE/NGCards/TimeZones/Africa/Sao_Tome.ics +++ b/SOPE/NGCards/TimeZones/Africa/Sao_Tome.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Sao_Tome diff --git a/SOPE/NGCards/TimeZones/Africa/Tripoli.ics b/SOPE/NGCards/TimeZones/Africa/Tripoli.ics index d3d9850bf..11493be4b 100644 --- a/SOPE/NGCards/TimeZones/Africa/Tripoli.ics +++ b/SOPE/NGCards/TimeZones/Africa/Tripoli.ics @@ -1,22 +1,14 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Tripoli X-LIC-LOCATION:Africa/Tripoli -BEGIN:DAYLIGHT -TZOFFSETFROM:+0100 -TZOFFSETTO:+0200 -TZNAME:CEST -DTSTART:19700327T010000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR -END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 -TZOFFSETTO:+0100 -TZNAME:CET -DTSTART:19701030T020000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Africa/Tunis.ics b/SOPE/NGCards/TimeZones/Africa/Tunis.ics index cc54ccc3d..122673252 100644 --- a/SOPE/NGCards/TimeZones/Africa/Tunis.ics +++ b/SOPE/NGCards/TimeZones/Africa/Tunis.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Tunis diff --git a/SOPE/NGCards/TimeZones/Africa/Windhoek.ics b/SOPE/NGCards/TimeZones/Africa/Windhoek.ics index c8c875f4f..24dcb86cf 100644 --- a/SOPE/NGCards/TimeZones/Africa/Windhoek.ics +++ b/SOPE/NGCards/TimeZones/Africa/Windhoek.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Africa/Windhoek diff --git a/SOPE/NGCards/TimeZones/America/Adak.ics b/SOPE/NGCards/TimeZones/America/Adak.ics index e379b2438..3fc727426 100644 --- a/SOPE/NGCards/TimeZones/America/Adak.ics +++ b/SOPE/NGCards/TimeZones/America/Adak.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Adak diff --git a/SOPE/NGCards/TimeZones/America/Anchorage.ics b/SOPE/NGCards/TimeZones/America/Anchorage.ics index 2fb246172..a34fc0846 100644 --- a/SOPE/NGCards/TimeZones/America/Anchorage.ics +++ b/SOPE/NGCards/TimeZones/America/Anchorage.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Anchorage diff --git a/SOPE/NGCards/TimeZones/America/Anguilla.ics b/SOPE/NGCards/TimeZones/America/Anguilla.ics index d3ab3cd33..6e60dfcbc 100644 --- a/SOPE/NGCards/TimeZones/America/Anguilla.ics +++ b/SOPE/NGCards/TimeZones/America/Anguilla.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Anguilla diff --git a/SOPE/NGCards/TimeZones/America/Antigua.ics b/SOPE/NGCards/TimeZones/America/Antigua.ics index 6db7cec91..9da6564bb 100644 --- a/SOPE/NGCards/TimeZones/America/Antigua.ics +++ b/SOPE/NGCards/TimeZones/America/Antigua.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Antigua diff --git a/SOPE/NGCards/TimeZones/America/Araguaina.ics b/SOPE/NGCards/TimeZones/America/Araguaina.ics index 9a9bf4af2..0bd4ae909 100644 --- a/SOPE/NGCards/TimeZones/America/Araguaina.ics +++ b/SOPE/NGCards/TimeZones/America/Araguaina.ics @@ -1,22 +1,14 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Araguaina X-LIC-LOCATION:America/Araguaina -BEGIN:DAYLIGHT -TZOFFSETFROM:-0300 -TZOFFSETTO:-0200 -TZNAME:BRST -DTSTART:19701018T000000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=3SU -END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0300 TZNAME:BRT -DTSTART:19700215T000000 -RRULE:FREQ=YEARLY;BYMONTH=2;BYDAY=3SU +DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Buenos_Aires.ics b/SOPE/NGCards/TimeZones/America/Argentina/Buenos_Aires.ics index 55fef3e99..61b28250a 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Buenos_Aires.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Buenos_Aires.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Buenos_Aires diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Catamarca.ics b/SOPE/NGCards/TimeZones/America/Argentina/Catamarca.ics index cbcc43fdd..f24fce6bb 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Catamarca.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Catamarca.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Catamarca diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Cordoba.ics b/SOPE/NGCards/TimeZones/America/Argentina/Cordoba.ics index 808afe05e..963a40b9b 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Cordoba.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Cordoba.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Cordoba diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Jujuy.ics b/SOPE/NGCards/TimeZones/America/Argentina/Jujuy.ics index 753f0132a..44de9c6b4 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Jujuy.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Jujuy.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Jujuy diff --git a/SOPE/NGCards/TimeZones/America/Argentina/La_Rioja.ics b/SOPE/NGCards/TimeZones/America/Argentina/La_Rioja.ics index a8f88c0d9..da14dc26d 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/La_Rioja.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/La_Rioja.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/La_Rioja diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Mendoza.ics b/SOPE/NGCards/TimeZones/America/Argentina/Mendoza.ics index 75e30b63f..1793f5084 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Mendoza.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Mendoza.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Mendoza diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Rio_Gallegos.ics b/SOPE/NGCards/TimeZones/America/Argentina/Rio_Gallegos.ics index 4662a010f..497600fc4 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Rio_Gallegos.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Rio_Gallegos.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Rio_Gallegos diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Salta.ics b/SOPE/NGCards/TimeZones/America/Argentina/Salta.ics index 156724be8..79a267dee 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Salta.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Salta.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Salta diff --git a/SOPE/NGCards/TimeZones/America/Argentina/San_Juan.ics b/SOPE/NGCards/TimeZones/America/Argentina/San_Juan.ics index 4113f2d58..cc1ffd11c 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/San_Juan.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/San_Juan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/San_Juan diff --git a/SOPE/NGCards/TimeZones/America/Argentina/San_Luis.ics b/SOPE/NGCards/TimeZones/America/Argentina/San_Luis.ics index 336916215..018d19757 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/San_Luis.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/San_Luis.ics @@ -1,13 +1,13 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +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:-0400 -TZOFFSETTO:-0400 -TZNAME:WART +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Tucuman.ics b/SOPE/NGCards/TimeZones/America/Argentina/Tucuman.ics index d99d46e2c..eb16b9ca3 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Tucuman.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Tucuman.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Tucuman diff --git a/SOPE/NGCards/TimeZones/America/Argentina/Ushuaia.ics b/SOPE/NGCards/TimeZones/America/Argentina/Ushuaia.ics index 9b6ccd44b..cac913d74 100644 --- a/SOPE/NGCards/TimeZones/America/Argentina/Ushuaia.ics +++ b/SOPE/NGCards/TimeZones/America/Argentina/Ushuaia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Argentina/Ushuaia diff --git a/SOPE/NGCards/TimeZones/America/Aruba.ics b/SOPE/NGCards/TimeZones/America/Aruba.ics index 34200cbca..e4cd0ea60 100644 --- a/SOPE/NGCards/TimeZones/America/Aruba.ics +++ b/SOPE/NGCards/TimeZones/America/Aruba.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Aruba diff --git a/SOPE/NGCards/TimeZones/America/Asuncion.ics b/SOPE/NGCards/TimeZones/America/Asuncion.ics index 267a9441f..fa6aa014b 100644 --- a/SOPE/NGCards/TimeZones/America/Asuncion.ics +++ b/SOPE/NGCards/TimeZones/America/Asuncion.ics @@ -1,16 +1,9 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Asuncion X-LIC-LOCATION:America/Asuncion -BEGIN:STANDARD -TZOFFSETFROM:-0300 -TZOFFSETTO:-0400 -TZNAME:PYT -DTSTART:19700412T000000 -RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=2SU -END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 @@ -18,5 +11,12 @@ 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 diff --git a/SOPE/NGCards/TimeZones/America/Atikokan.ics b/SOPE/NGCards/TimeZones/America/Atikokan.ics index 1ed82ff8b..c2442a65a 100644 --- a/SOPE/NGCards/TimeZones/America/Atikokan.ics +++ b/SOPE/NGCards/TimeZones/America/Atikokan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Atikokan diff --git a/SOPE/NGCards/TimeZones/America/Bahia.ics b/SOPE/NGCards/TimeZones/America/Bahia.ics index e47aa2f1d..1c8ae0570 100644 --- a/SOPE/NGCards/TimeZones/America/Bahia.ics +++ b/SOPE/NGCards/TimeZones/America/Bahia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Bahia diff --git a/SOPE/NGCards/TimeZones/America/Bahia_Banderas.ics b/SOPE/NGCards/TimeZones/America/Bahia_Banderas.ics index 0915e90e6..c147b0731 100644 --- a/SOPE/NGCards/TimeZones/America/Bahia_Banderas.ics +++ b/SOPE/NGCards/TimeZones/America/Bahia_Banderas.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Bahia_Banderas diff --git a/SOPE/NGCards/TimeZones/America/Barbados.ics b/SOPE/NGCards/TimeZones/America/Barbados.ics index acad2983c..7c745bb3b 100644 --- a/SOPE/NGCards/TimeZones/America/Barbados.ics +++ b/SOPE/NGCards/TimeZones/America/Barbados.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Barbados diff --git a/SOPE/NGCards/TimeZones/America/Belem.ics b/SOPE/NGCards/TimeZones/America/Belem.ics index a459b609d..adea76075 100644 --- a/SOPE/NGCards/TimeZones/America/Belem.ics +++ b/SOPE/NGCards/TimeZones/America/Belem.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Belem diff --git a/SOPE/NGCards/TimeZones/America/Belize.ics b/SOPE/NGCards/TimeZones/America/Belize.ics index dfaccb159..a52b7a6fa 100644 --- a/SOPE/NGCards/TimeZones/America/Belize.ics +++ b/SOPE/NGCards/TimeZones/America/Belize.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Belize diff --git a/SOPE/NGCards/TimeZones/America/Blanc-Sablon.ics b/SOPE/NGCards/TimeZones/America/Blanc-Sablon.ics index 02bee4e1e..2c59dd830 100644 --- a/SOPE/NGCards/TimeZones/America/Blanc-Sablon.ics +++ b/SOPE/NGCards/TimeZones/America/Blanc-Sablon.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Blanc-Sablon diff --git a/SOPE/NGCards/TimeZones/America/Boa_Vista.ics b/SOPE/NGCards/TimeZones/America/Boa_Vista.ics index 0e3566b6f..54ea7bd8a 100644 --- a/SOPE/NGCards/TimeZones/America/Boa_Vista.ics +++ b/SOPE/NGCards/TimeZones/America/Boa_Vista.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Boa_Vista diff --git a/SOPE/NGCards/TimeZones/America/Bogota.ics b/SOPE/NGCards/TimeZones/America/Bogota.ics index c2227451f..c2f04f930 100644 --- a/SOPE/NGCards/TimeZones/America/Bogota.ics +++ b/SOPE/NGCards/TimeZones/America/Bogota.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Bogota diff --git a/SOPE/NGCards/TimeZones/America/Boise.ics b/SOPE/NGCards/TimeZones/America/Boise.ics index 7ead8d0e3..be1d85579 100644 --- a/SOPE/NGCards/TimeZones/America/Boise.ics +++ b/SOPE/NGCards/TimeZones/America/Boise.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Boise diff --git a/SOPE/NGCards/TimeZones/America/Cambridge_Bay.ics b/SOPE/NGCards/TimeZones/America/Cambridge_Bay.ics index 7471ac2de..494f653cc 100644 --- a/SOPE/NGCards/TimeZones/America/Cambridge_Bay.ics +++ b/SOPE/NGCards/TimeZones/America/Cambridge_Bay.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Cambridge_Bay diff --git a/SOPE/NGCards/TimeZones/America/Campo_Grande.ics b/SOPE/NGCards/TimeZones/America/Campo_Grande.ics index 5c13e8dd6..539ba63d6 100644 --- a/SOPE/NGCards/TimeZones/America/Campo_Grande.ics +++ b/SOPE/NGCards/TimeZones/America/Campo_Grande.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Campo_Grande diff --git a/SOPE/NGCards/TimeZones/America/Cancun.ics b/SOPE/NGCards/TimeZones/America/Cancun.ics index 0950198db..4d5ce11a9 100644 --- a/SOPE/NGCards/TimeZones/America/Cancun.ics +++ b/SOPE/NGCards/TimeZones/America/Cancun.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Cancun diff --git a/SOPE/NGCards/TimeZones/America/Caracas.ics b/SOPE/NGCards/TimeZones/America/Caracas.ics index 72457440d..8dfe62b36 100644 --- a/SOPE/NGCards/TimeZones/America/Caracas.ics +++ b/SOPE/NGCards/TimeZones/America/Caracas.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Caracas diff --git a/SOPE/NGCards/TimeZones/America/Cayenne.ics b/SOPE/NGCards/TimeZones/America/Cayenne.ics index 0589583be..d17dacfca 100644 --- a/SOPE/NGCards/TimeZones/America/Cayenne.ics +++ b/SOPE/NGCards/TimeZones/America/Cayenne.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Cayenne diff --git a/SOPE/NGCards/TimeZones/America/Cayman.ics b/SOPE/NGCards/TimeZones/America/Cayman.ics index a0f44a40a..1671f0a90 100644 --- a/SOPE/NGCards/TimeZones/America/Cayman.ics +++ b/SOPE/NGCards/TimeZones/America/Cayman.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Cayman diff --git a/SOPE/NGCards/TimeZones/America/Chicago.ics b/SOPE/NGCards/TimeZones/America/Chicago.ics index 305323687..647e7b591 100644 --- a/SOPE/NGCards/TimeZones/America/Chicago.ics +++ b/SOPE/NGCards/TimeZones/America/Chicago.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Chicago diff --git a/SOPE/NGCards/TimeZones/America/Chihuahua.ics b/SOPE/NGCards/TimeZones/America/Chihuahua.ics index a6a8ed52c..be2e7c453 100644 --- a/SOPE/NGCards/TimeZones/America/Chihuahua.ics +++ b/SOPE/NGCards/TimeZones/America/Chihuahua.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Chihuahua diff --git a/SOPE/NGCards/TimeZones/America/Costa_Rica.ics b/SOPE/NGCards/TimeZones/America/Costa_Rica.ics index 2ef1f13c1..1d71073f0 100644 --- a/SOPE/NGCards/TimeZones/America/Costa_Rica.ics +++ b/SOPE/NGCards/TimeZones/America/Costa_Rica.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Costa_Rica diff --git a/SOPE/NGCards/TimeZones/America/Creston.ics b/SOPE/NGCards/TimeZones/America/Creston.ics index 5c18503ca..6bf5af18f 100644 --- a/SOPE/NGCards/TimeZones/America/Creston.ics +++ b/SOPE/NGCards/TimeZones/America/Creston.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Creston diff --git a/SOPE/NGCards/TimeZones/America/Cuiaba.ics b/SOPE/NGCards/TimeZones/America/Cuiaba.ics index d1f808753..ea7004e99 100644 --- a/SOPE/NGCards/TimeZones/America/Cuiaba.ics +++ b/SOPE/NGCards/TimeZones/America/Cuiaba.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Cuiaba diff --git a/SOPE/NGCards/TimeZones/America/Curacao.ics b/SOPE/NGCards/TimeZones/America/Curacao.ics index fc3148201..3a930c39d 100644 --- a/SOPE/NGCards/TimeZones/America/Curacao.ics +++ b/SOPE/NGCards/TimeZones/America/Curacao.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Curacao diff --git a/SOPE/NGCards/TimeZones/America/Danmarkshavn.ics b/SOPE/NGCards/TimeZones/America/Danmarkshavn.ics index aa9c3f0f3..8505200ea 100644 --- a/SOPE/NGCards/TimeZones/America/Danmarkshavn.ics +++ b/SOPE/NGCards/TimeZones/America/Danmarkshavn.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Danmarkshavn diff --git a/SOPE/NGCards/TimeZones/America/Dawson.ics b/SOPE/NGCards/TimeZones/America/Dawson.ics index e03e0219f..a1586af7f 100644 --- a/SOPE/NGCards/TimeZones/America/Dawson.ics +++ b/SOPE/NGCards/TimeZones/America/Dawson.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Dawson diff --git a/SOPE/NGCards/TimeZones/America/Dawson_Creek.ics b/SOPE/NGCards/TimeZones/America/Dawson_Creek.ics index 329235787..fc82b7c98 100644 --- a/SOPE/NGCards/TimeZones/America/Dawson_Creek.ics +++ b/SOPE/NGCards/TimeZones/America/Dawson_Creek.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Dawson_Creek diff --git a/SOPE/NGCards/TimeZones/America/Denver.ics b/SOPE/NGCards/TimeZones/America/Denver.ics index 59713abad..2997a961d 100644 --- a/SOPE/NGCards/TimeZones/America/Denver.ics +++ b/SOPE/NGCards/TimeZones/America/Denver.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Denver diff --git a/SOPE/NGCards/TimeZones/America/Detroit.ics b/SOPE/NGCards/TimeZones/America/Detroit.ics index 8b0177c31..68ec9beea 100644 --- a/SOPE/NGCards/TimeZones/America/Detroit.ics +++ b/SOPE/NGCards/TimeZones/America/Detroit.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Detroit diff --git a/SOPE/NGCards/TimeZones/America/Dominica.ics b/SOPE/NGCards/TimeZones/America/Dominica.ics index e7f5a4239..9f15f3a4c 100644 --- a/SOPE/NGCards/TimeZones/America/Dominica.ics +++ b/SOPE/NGCards/TimeZones/America/Dominica.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Dominica diff --git a/SOPE/NGCards/TimeZones/America/Edmonton.ics b/SOPE/NGCards/TimeZones/America/Edmonton.ics index 1f40d2fdd..e4ec742ca 100644 --- a/SOPE/NGCards/TimeZones/America/Edmonton.ics +++ b/SOPE/NGCards/TimeZones/America/Edmonton.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Edmonton diff --git a/SOPE/NGCards/TimeZones/America/Eirunepe.ics b/SOPE/NGCards/TimeZones/America/Eirunepe.ics index 9856cf0d5..11b67a599 100644 --- a/SOPE/NGCards/TimeZones/America/Eirunepe.ics +++ b/SOPE/NGCards/TimeZones/America/Eirunepe.ics @@ -1,13 +1,13 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Eirunepe X-LIC-LOCATION:America/Eirunepe BEGIN:STANDARD -TZOFFSETFROM:-0400 -TZOFFSETTO:-0400 -TZNAME:AMT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:ACT DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/America/El_Salvador.ics b/SOPE/NGCards/TimeZones/America/El_Salvador.ics index 0cd1fcc97..f56f0c2ac 100644 --- a/SOPE/NGCards/TimeZones/America/El_Salvador.ics +++ b/SOPE/NGCards/TimeZones/America/El_Salvador.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/El_Salvador diff --git a/SOPE/NGCards/TimeZones/America/Fortaleza.ics b/SOPE/NGCards/TimeZones/America/Fortaleza.ics index 1fd2e54bf..c5d319a74 100644 --- a/SOPE/NGCards/TimeZones/America/Fortaleza.ics +++ b/SOPE/NGCards/TimeZones/America/Fortaleza.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Fortaleza diff --git a/SOPE/NGCards/TimeZones/America/Glace_Bay.ics b/SOPE/NGCards/TimeZones/America/Glace_Bay.ics index 2f6f93eb9..79348fd10 100644 --- a/SOPE/NGCards/TimeZones/America/Glace_Bay.ics +++ b/SOPE/NGCards/TimeZones/America/Glace_Bay.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Glace_Bay diff --git a/SOPE/NGCards/TimeZones/America/Godthab.ics b/SOPE/NGCards/TimeZones/America/Godthab.ics index a8b8e32e9..2a92ffd1e 100644 --- a/SOPE/NGCards/TimeZones/America/Godthab.ics +++ b/SOPE/NGCards/TimeZones/America/Godthab.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Godthab diff --git a/SOPE/NGCards/TimeZones/America/Goose_Bay.ics b/SOPE/NGCards/TimeZones/America/Goose_Bay.ics index f058578c5..7360db74c 100644 --- a/SOPE/NGCards/TimeZones/America/Goose_Bay.ics +++ b/SOPE/NGCards/TimeZones/America/Goose_Bay.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Goose_Bay diff --git a/SOPE/NGCards/TimeZones/America/Grand_Turk.ics b/SOPE/NGCards/TimeZones/America/Grand_Turk.ics index 16307344d..e699c2a5b 100644 --- a/SOPE/NGCards/TimeZones/America/Grand_Turk.ics +++ b/SOPE/NGCards/TimeZones/America/Grand_Turk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Grand_Turk diff --git a/SOPE/NGCards/TimeZones/America/Grenada.ics b/SOPE/NGCards/TimeZones/America/Grenada.ics index 0eeb64336..59e7f12b8 100644 --- a/SOPE/NGCards/TimeZones/America/Grenada.ics +++ b/SOPE/NGCards/TimeZones/America/Grenada.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Grenada diff --git a/SOPE/NGCards/TimeZones/America/Guadeloupe.ics b/SOPE/NGCards/TimeZones/America/Guadeloupe.ics index 9408b8c5d..98891c960 100644 --- a/SOPE/NGCards/TimeZones/America/Guadeloupe.ics +++ b/SOPE/NGCards/TimeZones/America/Guadeloupe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Guadeloupe diff --git a/SOPE/NGCards/TimeZones/America/Guatemala.ics b/SOPE/NGCards/TimeZones/America/Guatemala.ics index 0d330f70e..96b04a78c 100644 --- a/SOPE/NGCards/TimeZones/America/Guatemala.ics +++ b/SOPE/NGCards/TimeZones/America/Guatemala.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Guatemala diff --git a/SOPE/NGCards/TimeZones/America/Guayaquil.ics b/SOPE/NGCards/TimeZones/America/Guayaquil.ics index 60d50cf6b..d293fb044 100644 --- a/SOPE/NGCards/TimeZones/America/Guayaquil.ics +++ b/SOPE/NGCards/TimeZones/America/Guayaquil.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Guayaquil diff --git a/SOPE/NGCards/TimeZones/America/Guyana.ics b/SOPE/NGCards/TimeZones/America/Guyana.ics index 263dbd7d5..fabbccd6d 100644 --- a/SOPE/NGCards/TimeZones/America/Guyana.ics +++ b/SOPE/NGCards/TimeZones/America/Guyana.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Guyana diff --git a/SOPE/NGCards/TimeZones/America/Halifax.ics b/SOPE/NGCards/TimeZones/America/Halifax.ics index 174e87efc..6a05f08da 100644 --- a/SOPE/NGCards/TimeZones/America/Halifax.ics +++ b/SOPE/NGCards/TimeZones/America/Halifax.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Halifax diff --git a/SOPE/NGCards/TimeZones/America/Havana.ics b/SOPE/NGCards/TimeZones/America/Havana.ics index aafe5237b..59fe09946 100644 --- a/SOPE/NGCards/TimeZones/America/Havana.ics +++ b/SOPE/NGCards/TimeZones/America/Havana.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Havana diff --git a/SOPE/NGCards/TimeZones/America/Hermosillo.ics b/SOPE/NGCards/TimeZones/America/Hermosillo.ics index 26045065d..c9e1f9259 100644 --- a/SOPE/NGCards/TimeZones/America/Hermosillo.ics +++ b/SOPE/NGCards/TimeZones/America/Hermosillo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Hermosillo diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Indianapolis.ics b/SOPE/NGCards/TimeZones/America/Indiana/Indianapolis.ics index bb0926256..3c8d99c5c 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Indianapolis.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Indianapolis.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Indianapolis diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Knox.ics b/SOPE/NGCards/TimeZones/America/Indiana/Knox.ics index ff54c8ea0..c80b4ff0b 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Knox.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Knox.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Knox diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Marengo.ics b/SOPE/NGCards/TimeZones/America/Indiana/Marengo.ics index 94d2cfee1..128e7a87f 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Marengo.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Marengo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Marengo diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Petersburg.ics b/SOPE/NGCards/TimeZones/America/Indiana/Petersburg.ics index 16fcc67ab..7d764ac74 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Petersburg.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Petersburg.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Petersburg diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Tell_City.ics b/SOPE/NGCards/TimeZones/America/Indiana/Tell_City.ics index ff0e23bf6..557ddcf6f 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Tell_City.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Tell_City.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Tell_City diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Vevay.ics b/SOPE/NGCards/TimeZones/America/Indiana/Vevay.ics index 8e6c9418e..50440311d 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Vevay.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Vevay.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Vevay diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Vincennes.ics b/SOPE/NGCards/TimeZones/America/Indiana/Vincennes.ics index 065049a31..2552a33dc 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Vincennes.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Vincennes.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Vincennes diff --git a/SOPE/NGCards/TimeZones/America/Indiana/Winamac.ics b/SOPE/NGCards/TimeZones/America/Indiana/Winamac.ics index 60caf1ffe..a9f90e6a0 100644 --- a/SOPE/NGCards/TimeZones/America/Indiana/Winamac.ics +++ b/SOPE/NGCards/TimeZones/America/Indiana/Winamac.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Indiana/Winamac diff --git a/SOPE/NGCards/TimeZones/America/Inuvik.ics b/SOPE/NGCards/TimeZones/America/Inuvik.ics index eecad3d41..66bfa1b5f 100644 --- a/SOPE/NGCards/TimeZones/America/Inuvik.ics +++ b/SOPE/NGCards/TimeZones/America/Inuvik.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Inuvik diff --git a/SOPE/NGCards/TimeZones/America/Iqaluit.ics b/SOPE/NGCards/TimeZones/America/Iqaluit.ics index b30414740..82fa44511 100644 --- a/SOPE/NGCards/TimeZones/America/Iqaluit.ics +++ b/SOPE/NGCards/TimeZones/America/Iqaluit.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Iqaluit diff --git a/SOPE/NGCards/TimeZones/America/Jamaica.ics b/SOPE/NGCards/TimeZones/America/Jamaica.ics index ac8551c59..82b8cc916 100644 --- a/SOPE/NGCards/TimeZones/America/Jamaica.ics +++ b/SOPE/NGCards/TimeZones/America/Jamaica.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Jamaica diff --git a/SOPE/NGCards/TimeZones/America/Juneau.ics b/SOPE/NGCards/TimeZones/America/Juneau.ics index 5f70c8f96..49b06041b 100644 --- a/SOPE/NGCards/TimeZones/America/Juneau.ics +++ b/SOPE/NGCards/TimeZones/America/Juneau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Juneau diff --git a/SOPE/NGCards/TimeZones/America/Kentucky/Louisville.ics b/SOPE/NGCards/TimeZones/America/Kentucky/Louisville.ics index 60dc836cf..276d4bb82 100644 --- a/SOPE/NGCards/TimeZones/America/Kentucky/Louisville.ics +++ b/SOPE/NGCards/TimeZones/America/Kentucky/Louisville.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Kentucky/Louisville diff --git a/SOPE/NGCards/TimeZones/America/Kentucky/Monticello.ics b/SOPE/NGCards/TimeZones/America/Kentucky/Monticello.ics index 9ad8f20a1..441494304 100644 --- a/SOPE/NGCards/TimeZones/America/Kentucky/Monticello.ics +++ b/SOPE/NGCards/TimeZones/America/Kentucky/Monticello.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Kentucky/Monticello diff --git a/SOPE/NGCards/TimeZones/America/Kralendijk.ics b/SOPE/NGCards/TimeZones/America/Kralendijk.ics index 1990a171b..d18d4ed33 100644 --- a/SOPE/NGCards/TimeZones/America/Kralendijk.ics +++ b/SOPE/NGCards/TimeZones/America/Kralendijk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Kralendijk diff --git a/SOPE/NGCards/TimeZones/America/La_Paz.ics b/SOPE/NGCards/TimeZones/America/La_Paz.ics index aa1f4d470..740e54e8e 100644 --- a/SOPE/NGCards/TimeZones/America/La_Paz.ics +++ b/SOPE/NGCards/TimeZones/America/La_Paz.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/La_Paz diff --git a/SOPE/NGCards/TimeZones/America/Lima.ics b/SOPE/NGCards/TimeZones/America/Lima.ics index 60901a3a0..6760635a7 100644 --- a/SOPE/NGCards/TimeZones/America/Lima.ics +++ b/SOPE/NGCards/TimeZones/America/Lima.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Lima diff --git a/SOPE/NGCards/TimeZones/America/Los_Angeles.ics b/SOPE/NGCards/TimeZones/America/Los_Angeles.ics index dab4d9928..3cd58e02e 100644 --- a/SOPE/NGCards/TimeZones/America/Los_Angeles.ics +++ b/SOPE/NGCards/TimeZones/America/Los_Angeles.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Los_Angeles diff --git a/SOPE/NGCards/TimeZones/America/Lower_Princes.ics b/SOPE/NGCards/TimeZones/America/Lower_Princes.ics index 3600f7918..1b0fed302 100644 --- a/SOPE/NGCards/TimeZones/America/Lower_Princes.ics +++ b/SOPE/NGCards/TimeZones/America/Lower_Princes.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Lower_Princes diff --git a/SOPE/NGCards/TimeZones/America/Maceio.ics b/SOPE/NGCards/TimeZones/America/Maceio.ics index 71ccaced1..8886a31fb 100644 --- a/SOPE/NGCards/TimeZones/America/Maceio.ics +++ b/SOPE/NGCards/TimeZones/America/Maceio.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Maceio diff --git a/SOPE/NGCards/TimeZones/America/Managua.ics b/SOPE/NGCards/TimeZones/America/Managua.ics index 35e074fff..b8b484e09 100644 --- a/SOPE/NGCards/TimeZones/America/Managua.ics +++ b/SOPE/NGCards/TimeZones/America/Managua.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Managua diff --git a/SOPE/NGCards/TimeZones/America/Manaus.ics b/SOPE/NGCards/TimeZones/America/Manaus.ics index 056420b02..a27c9b1c4 100644 --- a/SOPE/NGCards/TimeZones/America/Manaus.ics +++ b/SOPE/NGCards/TimeZones/America/Manaus.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Manaus diff --git a/SOPE/NGCards/TimeZones/America/Marigot.ics b/SOPE/NGCards/TimeZones/America/Marigot.ics index effaf29fd..786c00bf1 100644 --- a/SOPE/NGCards/TimeZones/America/Marigot.ics +++ b/SOPE/NGCards/TimeZones/America/Marigot.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Marigot diff --git a/SOPE/NGCards/TimeZones/America/Martinique.ics b/SOPE/NGCards/TimeZones/America/Martinique.ics index e6824f4c0..d2290f780 100644 --- a/SOPE/NGCards/TimeZones/America/Martinique.ics +++ b/SOPE/NGCards/TimeZones/America/Martinique.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Martinique diff --git a/SOPE/NGCards/TimeZones/America/Matamoros.ics b/SOPE/NGCards/TimeZones/America/Matamoros.ics index 0697f2fb3..fd7175a18 100644 --- a/SOPE/NGCards/TimeZones/America/Matamoros.ics +++ b/SOPE/NGCards/TimeZones/America/Matamoros.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Matamoros diff --git a/SOPE/NGCards/TimeZones/America/Mazatlan.ics b/SOPE/NGCards/TimeZones/America/Mazatlan.ics index 0c6b624c8..6101020b6 100644 --- a/SOPE/NGCards/TimeZones/America/Mazatlan.ics +++ b/SOPE/NGCards/TimeZones/America/Mazatlan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Mazatlan diff --git a/SOPE/NGCards/TimeZones/America/Menominee.ics b/SOPE/NGCards/TimeZones/America/Menominee.ics index 28e7d2aa2..1e0f8c829 100644 --- a/SOPE/NGCards/TimeZones/America/Menominee.ics +++ b/SOPE/NGCards/TimeZones/America/Menominee.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Menominee diff --git a/SOPE/NGCards/TimeZones/America/Merida.ics b/SOPE/NGCards/TimeZones/America/Merida.ics index 8cd04956a..c51e74f12 100644 --- a/SOPE/NGCards/TimeZones/America/Merida.ics +++ b/SOPE/NGCards/TimeZones/America/Merida.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Merida diff --git a/SOPE/NGCards/TimeZones/America/Metlakatla.ics b/SOPE/NGCards/TimeZones/America/Metlakatla.ics index 337e51e45..1c6f8f005 100644 --- a/SOPE/NGCards/TimeZones/America/Metlakatla.ics +++ b/SOPE/NGCards/TimeZones/America/Metlakatla.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Metlakatla diff --git a/SOPE/NGCards/TimeZones/America/Mexico_City.ics b/SOPE/NGCards/TimeZones/America/Mexico_City.ics index df38186de..8ec190747 100644 --- a/SOPE/NGCards/TimeZones/America/Mexico_City.ics +++ b/SOPE/NGCards/TimeZones/America/Mexico_City.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Mexico_City diff --git a/SOPE/NGCards/TimeZones/America/Miquelon.ics b/SOPE/NGCards/TimeZones/America/Miquelon.ics index d80a89732..41f693456 100644 --- a/SOPE/NGCards/TimeZones/America/Miquelon.ics +++ b/SOPE/NGCards/TimeZones/America/Miquelon.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Miquelon diff --git a/SOPE/NGCards/TimeZones/America/Moncton.ics b/SOPE/NGCards/TimeZones/America/Moncton.ics index 8bd77ddd5..dd879d0c4 100644 --- a/SOPE/NGCards/TimeZones/America/Moncton.ics +++ b/SOPE/NGCards/TimeZones/America/Moncton.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Moncton diff --git a/SOPE/NGCards/TimeZones/America/Monterrey.ics b/SOPE/NGCards/TimeZones/America/Monterrey.ics index 214088d9c..122f7f86c 100644 --- a/SOPE/NGCards/TimeZones/America/Monterrey.ics +++ b/SOPE/NGCards/TimeZones/America/Monterrey.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Monterrey diff --git a/SOPE/NGCards/TimeZones/America/Montevideo.ics b/SOPE/NGCards/TimeZones/America/Montevideo.ics index 3a4c37b91..4c40c05ed 100644 --- a/SOPE/NGCards/TimeZones/America/Montevideo.ics +++ b/SOPE/NGCards/TimeZones/America/Montevideo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Montevideo diff --git a/SOPE/NGCards/TimeZones/America/Montreal.ics b/SOPE/NGCards/TimeZones/America/Montreal.ics index 9db0a3437..295e6ecb5 100644 --- a/SOPE/NGCards/TimeZones/America/Montreal.ics +++ b/SOPE/NGCards/TimeZones/America/Montreal.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Montreal diff --git a/SOPE/NGCards/TimeZones/America/Montserrat.ics b/SOPE/NGCards/TimeZones/America/Montserrat.ics index df15bb319..5fa11de22 100644 --- a/SOPE/NGCards/TimeZones/America/Montserrat.ics +++ b/SOPE/NGCards/TimeZones/America/Montserrat.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Montserrat diff --git a/SOPE/NGCards/TimeZones/America/Nassau.ics b/SOPE/NGCards/TimeZones/America/Nassau.ics index 309baa304..42ab8b6a7 100644 --- a/SOPE/NGCards/TimeZones/America/Nassau.ics +++ b/SOPE/NGCards/TimeZones/America/Nassau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Nassau diff --git a/SOPE/NGCards/TimeZones/America/New_York.ics b/SOPE/NGCards/TimeZones/America/New_York.ics index 24e1655f3..d481d1ab5 100644 --- a/SOPE/NGCards/TimeZones/America/New_York.ics +++ b/SOPE/NGCards/TimeZones/America/New_York.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/New_York diff --git a/SOPE/NGCards/TimeZones/America/Nipigon.ics b/SOPE/NGCards/TimeZones/America/Nipigon.ics index 5a093da50..beadac97b 100644 --- a/SOPE/NGCards/TimeZones/America/Nipigon.ics +++ b/SOPE/NGCards/TimeZones/America/Nipigon.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Nipigon diff --git a/SOPE/NGCards/TimeZones/America/Nome.ics b/SOPE/NGCards/TimeZones/America/Nome.ics index b73852a83..1f238457a 100644 --- a/SOPE/NGCards/TimeZones/America/Nome.ics +++ b/SOPE/NGCards/TimeZones/America/Nome.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Nome diff --git a/SOPE/NGCards/TimeZones/America/Noronha.ics b/SOPE/NGCards/TimeZones/America/Noronha.ics index 803d376ac..1b9d4e1d3 100644 --- a/SOPE/NGCards/TimeZones/America/Noronha.ics +++ b/SOPE/NGCards/TimeZones/America/Noronha.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Noronha diff --git a/SOPE/NGCards/TimeZones/America/North_Dakota/Beulah.ics b/SOPE/NGCards/TimeZones/America/North_Dakota/Beulah.ics index 60cfb74bd..07e2a5b43 100644 --- a/SOPE/NGCards/TimeZones/America/North_Dakota/Beulah.ics +++ b/SOPE/NGCards/TimeZones/America/North_Dakota/Beulah.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/North_Dakota/Beulah diff --git a/SOPE/NGCards/TimeZones/America/North_Dakota/Center.ics b/SOPE/NGCards/TimeZones/America/North_Dakota/Center.ics index be2928061..a65e9b433 100644 --- a/SOPE/NGCards/TimeZones/America/North_Dakota/Center.ics +++ b/SOPE/NGCards/TimeZones/America/North_Dakota/Center.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/North_Dakota/Center diff --git a/SOPE/NGCards/TimeZones/America/North_Dakota/New_Salem.ics b/SOPE/NGCards/TimeZones/America/North_Dakota/New_Salem.ics index 73cd7bbe5..1e9a1830b 100644 --- a/SOPE/NGCards/TimeZones/America/North_Dakota/New_Salem.ics +++ b/SOPE/NGCards/TimeZones/America/North_Dakota/New_Salem.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/North_Dakota/New_Salem diff --git a/SOPE/NGCards/TimeZones/America/Ojinaga.ics b/SOPE/NGCards/TimeZones/America/Ojinaga.ics index 55bee6678..f5c05cc28 100644 --- a/SOPE/NGCards/TimeZones/America/Ojinaga.ics +++ b/SOPE/NGCards/TimeZones/America/Ojinaga.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Ojinaga diff --git a/SOPE/NGCards/TimeZones/America/Panama.ics b/SOPE/NGCards/TimeZones/America/Panama.ics index a69835531..b16383a1b 100644 --- a/SOPE/NGCards/TimeZones/America/Panama.ics +++ b/SOPE/NGCards/TimeZones/America/Panama.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Panama diff --git a/SOPE/NGCards/TimeZones/America/Pangnirtung.ics b/SOPE/NGCards/TimeZones/America/Pangnirtung.ics index 7be99b8e4..fbad12d5d 100644 --- a/SOPE/NGCards/TimeZones/America/Pangnirtung.ics +++ b/SOPE/NGCards/TimeZones/America/Pangnirtung.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Pangnirtung diff --git a/SOPE/NGCards/TimeZones/America/Paramaribo.ics b/SOPE/NGCards/TimeZones/America/Paramaribo.ics index 5c2a7fabd..3936d9ded 100644 --- a/SOPE/NGCards/TimeZones/America/Paramaribo.ics +++ b/SOPE/NGCards/TimeZones/America/Paramaribo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Paramaribo diff --git a/SOPE/NGCards/TimeZones/America/Phoenix.ics b/SOPE/NGCards/TimeZones/America/Phoenix.ics index 1aa6a6faa..5782a75f4 100644 --- a/SOPE/NGCards/TimeZones/America/Phoenix.ics +++ b/SOPE/NGCards/TimeZones/America/Phoenix.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Phoenix diff --git a/SOPE/NGCards/TimeZones/America/Port-au-Prince.ics b/SOPE/NGCards/TimeZones/America/Port-au-Prince.ics index 3691bc2cb..98c108e00 100644 --- a/SOPE/NGCards/TimeZones/America/Port-au-Prince.ics +++ b/SOPE/NGCards/TimeZones/America/Port-au-Prince.ics @@ -1,14 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Port-au-Prince X-LIC-LOCATION:America/Port-au-Prince -BEGIN:STANDARD +BEGIN:DAYLIGHT TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19700308T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 TZOFFSETTO:-0500 TZNAME:EST -DTSTART:19700101T000000 +DTSTART:19701101T020000 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/America/Port_of_Spain.ics b/SOPE/NGCards/TimeZones/America/Port_of_Spain.ics index 92fc99984..3c292806a 100644 --- a/SOPE/NGCards/TimeZones/America/Port_of_Spain.ics +++ b/SOPE/NGCards/TimeZones/America/Port_of_Spain.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Port_of_Spain diff --git a/SOPE/NGCards/TimeZones/America/Porto_Velho.ics b/SOPE/NGCards/TimeZones/America/Porto_Velho.ics index ae951be97..b1346e61a 100644 --- a/SOPE/NGCards/TimeZones/America/Porto_Velho.ics +++ b/SOPE/NGCards/TimeZones/America/Porto_Velho.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Porto_Velho diff --git a/SOPE/NGCards/TimeZones/America/Puerto_Rico.ics b/SOPE/NGCards/TimeZones/America/Puerto_Rico.ics index 8ac44189a..6173826fa 100644 --- a/SOPE/NGCards/TimeZones/America/Puerto_Rico.ics +++ b/SOPE/NGCards/TimeZones/America/Puerto_Rico.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Puerto_Rico diff --git a/SOPE/NGCards/TimeZones/America/Rainy_River.ics b/SOPE/NGCards/TimeZones/America/Rainy_River.ics index e2b884054..cd03d763c 100644 --- a/SOPE/NGCards/TimeZones/America/Rainy_River.ics +++ b/SOPE/NGCards/TimeZones/America/Rainy_River.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Rainy_River diff --git a/SOPE/NGCards/TimeZones/America/Rankin_Inlet.ics b/SOPE/NGCards/TimeZones/America/Rankin_Inlet.ics index 198d44182..6d010c951 100644 --- a/SOPE/NGCards/TimeZones/America/Rankin_Inlet.ics +++ b/SOPE/NGCards/TimeZones/America/Rankin_Inlet.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Rankin_Inlet diff --git a/SOPE/NGCards/TimeZones/America/Recife.ics b/SOPE/NGCards/TimeZones/America/Recife.ics index 6e2ea9df2..485d87bbe 100644 --- a/SOPE/NGCards/TimeZones/America/Recife.ics +++ b/SOPE/NGCards/TimeZones/America/Recife.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Recife diff --git a/SOPE/NGCards/TimeZones/America/Regina.ics b/SOPE/NGCards/TimeZones/America/Regina.ics index 96460126f..92994ed4c 100644 --- a/SOPE/NGCards/TimeZones/America/Regina.ics +++ b/SOPE/NGCards/TimeZones/America/Regina.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Regina diff --git a/SOPE/NGCards/TimeZones/America/Resolute.ics b/SOPE/NGCards/TimeZones/America/Resolute.ics index d524b185c..00145bb9a 100644 --- a/SOPE/NGCards/TimeZones/America/Resolute.ics +++ b/SOPE/NGCards/TimeZones/America/Resolute.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Resolute diff --git a/SOPE/NGCards/TimeZones/America/Rio_Branco.ics b/SOPE/NGCards/TimeZones/America/Rio_Branco.ics index f638561e0..cddae8895 100644 --- a/SOPE/NGCards/TimeZones/America/Rio_Branco.ics +++ b/SOPE/NGCards/TimeZones/America/Rio_Branco.ics @@ -1,13 +1,13 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Rio_Branco X-LIC-LOCATION:America/Rio_Branco BEGIN:STANDARD -TZOFFSETFROM:-0400 -TZOFFSETTO:-0400 -TZNAME:AMT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:ACT DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/America/Santa_Isabel.ics b/SOPE/NGCards/TimeZones/America/Santa_Isabel.ics index c8e421ab9..1468e443c 100644 --- a/SOPE/NGCards/TimeZones/America/Santa_Isabel.ics +++ b/SOPE/NGCards/TimeZones/America/Santa_Isabel.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Santa_Isabel diff --git a/SOPE/NGCards/TimeZones/America/Santarem.ics b/SOPE/NGCards/TimeZones/America/Santarem.ics index ba8ff63a2..d6d2c1b09 100644 --- a/SOPE/NGCards/TimeZones/America/Santarem.ics +++ b/SOPE/NGCards/TimeZones/America/Santarem.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Santarem diff --git a/SOPE/NGCards/TimeZones/America/Santiago.ics b/SOPE/NGCards/TimeZones/America/Santiago.ics index 8b0acbfd0..68eb0bc9a 100644 --- a/SOPE/NGCards/TimeZones/America/Santiago.ics +++ b/SOPE/NGCards/TimeZones/America/Santiago.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Santiago @@ -8,15 +8,15 @@ BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0400 TZNAME:CLT -DTSTART:19700315T000000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU +DTSTART:19700426T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 TZNAME:CLST -DTSTART:19701011T000000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=2SU +DTSTART:19700906T000000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU END:DAYLIGHT END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/America/Santo_Domingo.ics b/SOPE/NGCards/TimeZones/America/Santo_Domingo.ics index 349670b6d..0587a50a1 100644 --- a/SOPE/NGCards/TimeZones/America/Santo_Domingo.ics +++ b/SOPE/NGCards/TimeZones/America/Santo_Domingo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Santo_Domingo diff --git a/SOPE/NGCards/TimeZones/America/Sao_Paulo.ics b/SOPE/NGCards/TimeZones/America/Sao_Paulo.ics index 758a423eb..7fc832d3e 100644 --- a/SOPE/NGCards/TimeZones/America/Sao_Paulo.ics +++ b/SOPE/NGCards/TimeZones/America/Sao_Paulo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Sao_Paulo diff --git a/SOPE/NGCards/TimeZones/America/Scoresbysund.ics b/SOPE/NGCards/TimeZones/America/Scoresbysund.ics index 08094020b..4bc9794e3 100644 --- a/SOPE/NGCards/TimeZones/America/Scoresbysund.ics +++ b/SOPE/NGCards/TimeZones/America/Scoresbysund.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Scoresbysund diff --git a/SOPE/NGCards/TimeZones/America/Sitka.ics b/SOPE/NGCards/TimeZones/America/Sitka.ics index 3134ecf82..0ccb73e46 100644 --- a/SOPE/NGCards/TimeZones/America/Sitka.ics +++ b/SOPE/NGCards/TimeZones/America/Sitka.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Sitka diff --git a/SOPE/NGCards/TimeZones/America/St_Barthelemy.ics b/SOPE/NGCards/TimeZones/America/St_Barthelemy.ics index 4e88bf89d..06e9c14d7 100644 --- a/SOPE/NGCards/TimeZones/America/St_Barthelemy.ics +++ b/SOPE/NGCards/TimeZones/America/St_Barthelemy.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Barthelemy diff --git a/SOPE/NGCards/TimeZones/America/St_Johns.ics b/SOPE/NGCards/TimeZones/America/St_Johns.ics index be3d8b134..030fd285e 100644 --- a/SOPE/NGCards/TimeZones/America/St_Johns.ics +++ b/SOPE/NGCards/TimeZones/America/St_Johns.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Johns diff --git a/SOPE/NGCards/TimeZones/America/St_Kitts.ics b/SOPE/NGCards/TimeZones/America/St_Kitts.ics index 20dc45a56..f51516d86 100644 --- a/SOPE/NGCards/TimeZones/America/St_Kitts.ics +++ b/SOPE/NGCards/TimeZones/America/St_Kitts.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Kitts diff --git a/SOPE/NGCards/TimeZones/America/St_Lucia.ics b/SOPE/NGCards/TimeZones/America/St_Lucia.ics index f99308a15..e21f6d2b4 100644 --- a/SOPE/NGCards/TimeZones/America/St_Lucia.ics +++ b/SOPE/NGCards/TimeZones/America/St_Lucia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Lucia diff --git a/SOPE/NGCards/TimeZones/America/St_Thomas.ics b/SOPE/NGCards/TimeZones/America/St_Thomas.ics index ceaf36bd5..8f7537117 100644 --- a/SOPE/NGCards/TimeZones/America/St_Thomas.ics +++ b/SOPE/NGCards/TimeZones/America/St_Thomas.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Thomas diff --git a/SOPE/NGCards/TimeZones/America/St_Vincent.ics b/SOPE/NGCards/TimeZones/America/St_Vincent.ics index 6820a0943..ef4162747 100644 --- a/SOPE/NGCards/TimeZones/America/St_Vincent.ics +++ b/SOPE/NGCards/TimeZones/America/St_Vincent.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/St_Vincent diff --git a/SOPE/NGCards/TimeZones/America/Swift_Current.ics b/SOPE/NGCards/TimeZones/America/Swift_Current.ics index 63a0f4193..494e0de5b 100644 --- a/SOPE/NGCards/TimeZones/America/Swift_Current.ics +++ b/SOPE/NGCards/TimeZones/America/Swift_Current.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Swift_Current diff --git a/SOPE/NGCards/TimeZones/America/Tegucigalpa.ics b/SOPE/NGCards/TimeZones/America/Tegucigalpa.ics index d3e267870..1fa6cdcbb 100644 --- a/SOPE/NGCards/TimeZones/America/Tegucigalpa.ics +++ b/SOPE/NGCards/TimeZones/America/Tegucigalpa.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Tegucigalpa diff --git a/SOPE/NGCards/TimeZones/America/Thule.ics b/SOPE/NGCards/TimeZones/America/Thule.ics index 808440609..b2d49d98c 100644 --- a/SOPE/NGCards/TimeZones/America/Thule.ics +++ b/SOPE/NGCards/TimeZones/America/Thule.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Thule diff --git a/SOPE/NGCards/TimeZones/America/Thunder_Bay.ics b/SOPE/NGCards/TimeZones/America/Thunder_Bay.ics index 9e0bd1458..90464ef84 100644 --- a/SOPE/NGCards/TimeZones/America/Thunder_Bay.ics +++ b/SOPE/NGCards/TimeZones/America/Thunder_Bay.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Thunder_Bay diff --git a/SOPE/NGCards/TimeZones/America/Tijuana.ics b/SOPE/NGCards/TimeZones/America/Tijuana.ics index 04769a097..473e4af9a 100644 --- a/SOPE/NGCards/TimeZones/America/Tijuana.ics +++ b/SOPE/NGCards/TimeZones/America/Tijuana.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Tijuana diff --git a/SOPE/NGCards/TimeZones/America/Toronto.ics b/SOPE/NGCards/TimeZones/America/Toronto.ics index 789aeefdd..c53d26b88 100644 --- a/SOPE/NGCards/TimeZones/America/Toronto.ics +++ b/SOPE/NGCards/TimeZones/America/Toronto.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Toronto diff --git a/SOPE/NGCards/TimeZones/America/Tortola.ics b/SOPE/NGCards/TimeZones/America/Tortola.ics index 999ca9654..c39aa8c85 100644 --- a/SOPE/NGCards/TimeZones/America/Tortola.ics +++ b/SOPE/NGCards/TimeZones/America/Tortola.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Tortola diff --git a/SOPE/NGCards/TimeZones/America/Vancouver.ics b/SOPE/NGCards/TimeZones/America/Vancouver.ics index 0954c1ee9..80eb33716 100644 --- a/SOPE/NGCards/TimeZones/America/Vancouver.ics +++ b/SOPE/NGCards/TimeZones/America/Vancouver.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Vancouver diff --git a/SOPE/NGCards/TimeZones/America/Whitehorse.ics b/SOPE/NGCards/TimeZones/America/Whitehorse.ics index 0774e6106..0f553b0d6 100644 --- a/SOPE/NGCards/TimeZones/America/Whitehorse.ics +++ b/SOPE/NGCards/TimeZones/America/Whitehorse.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Whitehorse diff --git a/SOPE/NGCards/TimeZones/America/Winnipeg.ics b/SOPE/NGCards/TimeZones/America/Winnipeg.ics index 19fa04852..df2ca6e03 100644 --- a/SOPE/NGCards/TimeZones/America/Winnipeg.ics +++ b/SOPE/NGCards/TimeZones/America/Winnipeg.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Winnipeg diff --git a/SOPE/NGCards/TimeZones/America/Yakutat.ics b/SOPE/NGCards/TimeZones/America/Yakutat.ics index 0e9fc4c7b..ba457acca 100644 --- a/SOPE/NGCards/TimeZones/America/Yakutat.ics +++ b/SOPE/NGCards/TimeZones/America/Yakutat.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Yakutat diff --git a/SOPE/NGCards/TimeZones/America/Yellowknife.ics b/SOPE/NGCards/TimeZones/America/Yellowknife.ics index 17d884a7d..390959b93 100644 --- a/SOPE/NGCards/TimeZones/America/Yellowknife.ics +++ b/SOPE/NGCards/TimeZones/America/Yellowknife.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Yellowknife diff --git a/SOPE/NGCards/TimeZones/Antarctica/Casey.ics b/SOPE/NGCards/TimeZones/Antarctica/Casey.ics index a15ec0529..874809b0d 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Casey.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Casey.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Casey diff --git a/SOPE/NGCards/TimeZones/Antarctica/Davis.ics b/SOPE/NGCards/TimeZones/Antarctica/Davis.ics index c7d1ae2d2..27eced8f9 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Davis.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Davis.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Davis diff --git a/SOPE/NGCards/TimeZones/Antarctica/DumontDUrville.ics b/SOPE/NGCards/TimeZones/Antarctica/DumontDUrville.ics index 84c41de6b..3fdc300d2 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/DumontDUrville.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/DumontDUrville.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/DumontDUrville diff --git a/SOPE/NGCards/TimeZones/Antarctica/Macquarie.ics b/SOPE/NGCards/TimeZones/Antarctica/Macquarie.ics index cc7fa92e3..faa991e60 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Macquarie.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Macquarie.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Macquarie diff --git a/SOPE/NGCards/TimeZones/Antarctica/Mawson.ics b/SOPE/NGCards/TimeZones/Antarctica/Mawson.ics index 3daa4ee13..9331d91fd 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Mawson.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Mawson.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Mawson diff --git a/SOPE/NGCards/TimeZones/Antarctica/McMurdo.ics b/SOPE/NGCards/TimeZones/Antarctica/McMurdo.ics index 155b1e10b..9eeee120e 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/McMurdo.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/McMurdo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/McMurdo diff --git a/SOPE/NGCards/TimeZones/Antarctica/Palmer.ics b/SOPE/NGCards/TimeZones/Antarctica/Palmer.ics index d14dce814..1e565d30a 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Palmer.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Palmer.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Palmer @@ -8,15 +8,15 @@ BEGIN:STANDARD TZOFFSETFROM:-0300 TZOFFSETTO:-0400 TZNAME:CLT -DTSTART:19700315T000000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU +DTSTART:19700426T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0400 TZOFFSETTO:-0300 TZNAME:CLST -DTSTART:19701011T000000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=2SU +DTSTART:19700906T000000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SU END:DAYLIGHT END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Antarctica/Rothera.ics b/SOPE/NGCards/TimeZones/Antarctica/Rothera.ics index fb6bdb448..0638f9265 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Rothera.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Rothera.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Rothera diff --git a/SOPE/NGCards/TimeZones/Antarctica/Syowa.ics b/SOPE/NGCards/TimeZones/Antarctica/Syowa.ics index a12a1ce0a..d31a6e5f3 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Syowa.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Syowa.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Syowa diff --git a/SOPE/NGCards/TimeZones/Antarctica/Vostok.ics b/SOPE/NGCards/TimeZones/Antarctica/Vostok.ics index cbb1b01a7..ad4637ced 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Vostok.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Vostok.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Antarctica/Vostok diff --git a/SOPE/NGCards/TimeZones/Arctic/Longyearbyen.ics b/SOPE/NGCards/TimeZones/Arctic/Longyearbyen.ics index 7616d4a85..6b665b635 100644 --- a/SOPE/NGCards/TimeZones/Arctic/Longyearbyen.ics +++ b/SOPE/NGCards/TimeZones/Arctic/Longyearbyen.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Arctic/Longyearbyen diff --git a/SOPE/NGCards/TimeZones/Asia/Aden.ics b/SOPE/NGCards/TimeZones/Asia/Aden.ics index 9e76f377b..bbcc8c4ce 100644 --- a/SOPE/NGCards/TimeZones/Asia/Aden.ics +++ b/SOPE/NGCards/TimeZones/Asia/Aden.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Aden diff --git a/SOPE/NGCards/TimeZones/Asia/Almaty.ics b/SOPE/NGCards/TimeZones/Asia/Almaty.ics index 00b432ed7..850dd152e 100644 --- a/SOPE/NGCards/TimeZones/Asia/Almaty.ics +++ b/SOPE/NGCards/TimeZones/Asia/Almaty.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Almaty diff --git a/SOPE/NGCards/TimeZones/Asia/Amman.ics b/SOPE/NGCards/TimeZones/Asia/Amman.ics index 1b475278d..d869aa5a4 100644 --- a/SOPE/NGCards/TimeZones/Asia/Amman.ics +++ b/SOPE/NGCards/TimeZones/Asia/Amman.ics @@ -1,16 +1,9 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Amman X-LIC-LOCATION:Asia/Amman -BEGIN:STANDARD -TZOFFSETFROM:+0300 -TZOFFSETTO:+0200 -TZNAME:EET -DTSTART:19701030T010000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR -END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+0200 TZOFFSETTO:+0300 @@ -18,5 +11,12 @@ TZNAME:EEST DTSTART:19700326T235959 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19701030T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1FR +END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Anadyr.ics b/SOPE/NGCards/TimeZones/Asia/Anadyr.ics index 9e2472b42..e7cbc61ff 100644 --- a/SOPE/NGCards/TimeZones/Asia/Anadyr.ics +++ b/SOPE/NGCards/TimeZones/Asia/Anadyr.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Anadyr diff --git a/SOPE/NGCards/TimeZones/Asia/Aqtau.ics b/SOPE/NGCards/TimeZones/Asia/Aqtau.ics index d3fd5bcd5..02a825733 100644 --- a/SOPE/NGCards/TimeZones/Asia/Aqtau.ics +++ b/SOPE/NGCards/TimeZones/Asia/Aqtau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Aqtau diff --git a/SOPE/NGCards/TimeZones/Asia/Aqtobe.ics b/SOPE/NGCards/TimeZones/Asia/Aqtobe.ics index 125fbf8f8..9a49eaf06 100644 --- a/SOPE/NGCards/TimeZones/Asia/Aqtobe.ics +++ b/SOPE/NGCards/TimeZones/Asia/Aqtobe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Aqtobe diff --git a/SOPE/NGCards/TimeZones/Asia/Ashgabat.ics b/SOPE/NGCards/TimeZones/Asia/Ashgabat.ics index 844cd4762..9f029bc2d 100644 --- a/SOPE/NGCards/TimeZones/Asia/Ashgabat.ics +++ b/SOPE/NGCards/TimeZones/Asia/Ashgabat.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Ashgabat diff --git a/SOPE/NGCards/TimeZones/Asia/Baghdad.ics b/SOPE/NGCards/TimeZones/Asia/Baghdad.ics index 2677e7723..64367d789 100644 --- a/SOPE/NGCards/TimeZones/Asia/Baghdad.ics +++ b/SOPE/NGCards/TimeZones/Asia/Baghdad.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Baghdad diff --git a/SOPE/NGCards/TimeZones/Asia/Bahrain.ics b/SOPE/NGCards/TimeZones/Asia/Bahrain.ics index 141fe7ece..395ca403e 100644 --- a/SOPE/NGCards/TimeZones/Asia/Bahrain.ics +++ b/SOPE/NGCards/TimeZones/Asia/Bahrain.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Bahrain diff --git a/SOPE/NGCards/TimeZones/Asia/Baku.ics b/SOPE/NGCards/TimeZones/Asia/Baku.ics index 50280e026..c0dc191c7 100644 --- a/SOPE/NGCards/TimeZones/Asia/Baku.ics +++ b/SOPE/NGCards/TimeZones/Asia/Baku.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Baku diff --git a/SOPE/NGCards/TimeZones/Asia/Bangkok.ics b/SOPE/NGCards/TimeZones/Asia/Bangkok.ics index 1f002532e..e501819c5 100644 --- a/SOPE/NGCards/TimeZones/Asia/Bangkok.ics +++ b/SOPE/NGCards/TimeZones/Asia/Bangkok.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Bangkok diff --git a/SOPE/NGCards/TimeZones/Asia/Beirut.ics b/SOPE/NGCards/TimeZones/Asia/Beirut.ics index 0629652de..edc258d31 100644 --- a/SOPE/NGCards/TimeZones/Asia/Beirut.ics +++ b/SOPE/NGCards/TimeZones/Asia/Beirut.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Beirut diff --git a/SOPE/NGCards/TimeZones/Asia/Bishkek.ics b/SOPE/NGCards/TimeZones/Asia/Bishkek.ics index a4b212f77..e1da4ed81 100644 --- a/SOPE/NGCards/TimeZones/Asia/Bishkek.ics +++ b/SOPE/NGCards/TimeZones/Asia/Bishkek.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Bishkek diff --git a/SOPE/NGCards/TimeZones/Asia/Brunei.ics b/SOPE/NGCards/TimeZones/Asia/Brunei.ics index 79e886dd2..66ba22436 100644 --- a/SOPE/NGCards/TimeZones/Asia/Brunei.ics +++ b/SOPE/NGCards/TimeZones/Asia/Brunei.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Brunei diff --git a/SOPE/NGCards/TimeZones/Asia/Choibalsan.ics b/SOPE/NGCards/TimeZones/Asia/Choibalsan.ics index d03a8c603..f14b157ff 100644 --- a/SOPE/NGCards/TimeZones/Asia/Choibalsan.ics +++ b/SOPE/NGCards/TimeZones/Asia/Choibalsan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Choibalsan diff --git a/SOPE/NGCards/TimeZones/Asia/Chongqing.ics b/SOPE/NGCards/TimeZones/Asia/Chongqing.ics index 5ec12f610..10174f2fa 100644 --- a/SOPE/NGCards/TimeZones/Asia/Chongqing.ics +++ b/SOPE/NGCards/TimeZones/Asia/Chongqing.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Chongqing diff --git a/SOPE/NGCards/TimeZones/Asia/Colombo.ics b/SOPE/NGCards/TimeZones/Asia/Colombo.ics index 71bc4f566..73ebaa6d9 100644 --- a/SOPE/NGCards/TimeZones/Asia/Colombo.ics +++ b/SOPE/NGCards/TimeZones/Asia/Colombo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Colombo diff --git a/SOPE/NGCards/TimeZones/Asia/Damascus.ics b/SOPE/NGCards/TimeZones/Asia/Damascus.ics index 5269285e3..fc6ea1f52 100644 --- a/SOPE/NGCards/TimeZones/Asia/Damascus.ics +++ b/SOPE/NGCards/TimeZones/Asia/Damascus.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Damascus diff --git a/SOPE/NGCards/TimeZones/Asia/Dhaka.ics b/SOPE/NGCards/TimeZones/Asia/Dhaka.ics index 035a6a911..57066e539 100644 --- a/SOPE/NGCards/TimeZones/Asia/Dhaka.ics +++ b/SOPE/NGCards/TimeZones/Asia/Dhaka.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Dhaka diff --git a/SOPE/NGCards/TimeZones/Asia/Dili.ics b/SOPE/NGCards/TimeZones/Asia/Dili.ics index 4d2450b9a..1ba76b60e 100644 --- a/SOPE/NGCards/TimeZones/Asia/Dili.ics +++ b/SOPE/NGCards/TimeZones/Asia/Dili.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Dili diff --git a/SOPE/NGCards/TimeZones/Asia/Dubai.ics b/SOPE/NGCards/TimeZones/Asia/Dubai.ics index 0fa8f1667..f71c46ba3 100644 --- a/SOPE/NGCards/TimeZones/Asia/Dubai.ics +++ b/SOPE/NGCards/TimeZones/Asia/Dubai.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Dubai diff --git a/SOPE/NGCards/TimeZones/Asia/Dushanbe.ics b/SOPE/NGCards/TimeZones/Asia/Dushanbe.ics index fcc829d36..cad5fb2cb 100644 --- a/SOPE/NGCards/TimeZones/Asia/Dushanbe.ics +++ b/SOPE/NGCards/TimeZones/Asia/Dushanbe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Dushanbe diff --git a/SOPE/NGCards/TimeZones/Asia/Gaza.ics b/SOPE/NGCards/TimeZones/Asia/Gaza.ics index 848e37dca..4774d9010 100644 --- a/SOPE/NGCards/TimeZones/Asia/Gaza.ics +++ b/SOPE/NGCards/TimeZones/Asia/Gaza.ics @@ -1,14 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Gaza X-LIC-LOCATION:Asia/Gaza -BEGIN:STANDARD +BEGIN:DAYLIGHT TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19700326T235959 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 TZOFFSETTO:+0200 TZNAME:EET -DTSTART:19700101T000000 +DTSTART:19700925T000000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1FR END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Harbin.ics b/SOPE/NGCards/TimeZones/Asia/Harbin.ics index 702f4e8e9..339c58f0d 100644 --- a/SOPE/NGCards/TimeZones/Asia/Harbin.ics +++ b/SOPE/NGCards/TimeZones/Asia/Harbin.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Harbin diff --git a/SOPE/NGCards/TimeZones/Asia/Hebron.ics b/SOPE/NGCards/TimeZones/Asia/Hebron.ics index 4865c4ac6..b7ed636f4 100644 --- a/SOPE/NGCards/TimeZones/Asia/Hebron.ics +++ b/SOPE/NGCards/TimeZones/Asia/Hebron.ics @@ -1,14 +1,22 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Hebron X-LIC-LOCATION:Asia/Hebron -BEGIN:STANDARD +BEGIN:DAYLIGHT TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19700326T235959 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 TZOFFSETTO:+0200 TZNAME:EET -DTSTART:19700101T000000 +DTSTART:19700925T000000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1FR END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Ho_Chi_Minh.ics b/SOPE/NGCards/TimeZones/Asia/Ho_Chi_Minh.ics index 9dc7a02dd..6a6b76734 100644 --- a/SOPE/NGCards/TimeZones/Asia/Ho_Chi_Minh.ics +++ b/SOPE/NGCards/TimeZones/Asia/Ho_Chi_Minh.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Ho_Chi_Minh diff --git a/SOPE/NGCards/TimeZones/Asia/Hong_Kong.ics b/SOPE/NGCards/TimeZones/Asia/Hong_Kong.ics index 69e376e26..370c1c58e 100644 --- a/SOPE/NGCards/TimeZones/Asia/Hong_Kong.ics +++ b/SOPE/NGCards/TimeZones/Asia/Hong_Kong.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Hong_Kong diff --git a/SOPE/NGCards/TimeZones/Asia/Hovd.ics b/SOPE/NGCards/TimeZones/Asia/Hovd.ics index 29cc1be54..4edacf30c 100644 --- a/SOPE/NGCards/TimeZones/Asia/Hovd.ics +++ b/SOPE/NGCards/TimeZones/Asia/Hovd.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Hovd diff --git a/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics b/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics index 22bce1e15..986c30034 100644 --- a/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Irkutsk diff --git a/SOPE/NGCards/TimeZones/Asia/Istanbul.ics b/SOPE/NGCards/TimeZones/Asia/Istanbul.ics index 804de5b1b..101552931 100644 --- a/SOPE/NGCards/TimeZones/Asia/Istanbul.ics +++ b/SOPE/NGCards/TimeZones/Asia/Istanbul.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Istanbul diff --git a/SOPE/NGCards/TimeZones/Asia/Jakarta.ics b/SOPE/NGCards/TimeZones/Asia/Jakarta.ics index 36d91bfaa..1b5c0932a 100644 --- a/SOPE/NGCards/TimeZones/Asia/Jakarta.ics +++ b/SOPE/NGCards/TimeZones/Asia/Jakarta.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Jakarta @@ -7,7 +7,7 @@ X-LIC-LOCATION:Asia/Jakarta BEGIN:STANDARD TZOFFSETFROM:+0700 TZOFFSETTO:+0700 -TZNAME:WIT +TZNAME:WIB DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Jayapura.ics b/SOPE/NGCards/TimeZones/Asia/Jayapura.ics index da1273060..fbc00784c 100644 --- a/SOPE/NGCards/TimeZones/Asia/Jayapura.ics +++ b/SOPE/NGCards/TimeZones/Asia/Jayapura.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Jayapura @@ -7,7 +7,7 @@ X-LIC-LOCATION:Asia/Jayapura BEGIN:STANDARD TZOFFSETFROM:+0900 TZOFFSETTO:+0900 -TZNAME:EIT +TZNAME:WIT DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Jerusalem.ics b/SOPE/NGCards/TimeZones/Asia/Jerusalem.ics index 07cd14b37..dcbf988cf 100644 --- a/SOPE/NGCards/TimeZones/Asia/Jerusalem.ics +++ b/SOPE/NGCards/TimeZones/Asia/Jerusalem.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Jerusalem @@ -12,11 +12,11 @@ DTSTART:19700327T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1FR END:DAYLIGHT BEGIN:STANDARD -TZOFFSETFROM:+0200 +TZOFFSETFROM:+0300 TZOFFSETTO:+0200 TZNAME:IST -DTSTART:19701004T020000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU +DTSTART:19701025T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Kabul.ics b/SOPE/NGCards/TimeZones/Asia/Kabul.ics index 782574233..72cd088f9 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kabul.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kabul.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kabul diff --git a/SOPE/NGCards/TimeZones/Asia/Kamchatka.ics b/SOPE/NGCards/TimeZones/Asia/Kamchatka.ics index bb739dfc2..4dff1e192 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kamchatka.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kamchatka.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kamchatka diff --git a/SOPE/NGCards/TimeZones/Asia/Karachi.ics b/SOPE/NGCards/TimeZones/Asia/Karachi.ics index cf453fbd7..e6fb05d55 100644 --- a/SOPE/NGCards/TimeZones/Asia/Karachi.ics +++ b/SOPE/NGCards/TimeZones/Asia/Karachi.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Karachi diff --git a/SOPE/NGCards/TimeZones/Asia/Kashgar.ics b/SOPE/NGCards/TimeZones/Asia/Kashgar.ics index 9bdcb4577..0640cd0c3 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kashgar.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kashgar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kashgar diff --git a/SOPE/NGCards/TimeZones/Asia/Kathmandu.ics b/SOPE/NGCards/TimeZones/Asia/Kathmandu.ics index c1274a577..63c5df266 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kathmandu.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kathmandu.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kathmandu diff --git a/SOPE/NGCards/TimeZones/Asia/Kolkata.ics b/SOPE/NGCards/TimeZones/Asia/Kolkata.ics index 5cf13334e..b6ba22d3d 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kolkata.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kolkata.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kolkata diff --git a/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics b/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics index 276e43b18..4e502d496 100644 --- a/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Krasnoyarsk diff --git a/SOPE/NGCards/TimeZones/Asia/Kuala_Lumpur.ics b/SOPE/NGCards/TimeZones/Asia/Kuala_Lumpur.ics index c4de7b39c..7bf14910d 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kuala_Lumpur.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kuala_Lumpur.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kuala_Lumpur diff --git a/SOPE/NGCards/TimeZones/Asia/Kuching.ics b/SOPE/NGCards/TimeZones/Asia/Kuching.ics index d08a28f64..e1fc44674 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kuching.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kuching.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kuching diff --git a/SOPE/NGCards/TimeZones/Asia/Kuwait.ics b/SOPE/NGCards/TimeZones/Asia/Kuwait.ics index 16a660077..a4d31b96b 100644 --- a/SOPE/NGCards/TimeZones/Asia/Kuwait.ics +++ b/SOPE/NGCards/TimeZones/Asia/Kuwait.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Kuwait diff --git a/SOPE/NGCards/TimeZones/Asia/Macau.ics b/SOPE/NGCards/TimeZones/Asia/Macau.ics index dc7a62967..d437cbe58 100644 --- a/SOPE/NGCards/TimeZones/Asia/Macau.ics +++ b/SOPE/NGCards/TimeZones/Asia/Macau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Macau diff --git a/SOPE/NGCards/TimeZones/Asia/Magadan.ics b/SOPE/NGCards/TimeZones/Asia/Magadan.ics index 9bacf7804..9a8e24169 100644 --- a/SOPE/NGCards/TimeZones/Asia/Magadan.ics +++ b/SOPE/NGCards/TimeZones/Asia/Magadan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Magadan diff --git a/SOPE/NGCards/TimeZones/Asia/Makassar.ics b/SOPE/NGCards/TimeZones/Asia/Makassar.ics index 2c0329db6..995f6fbfb 100644 --- a/SOPE/NGCards/TimeZones/Asia/Makassar.ics +++ b/SOPE/NGCards/TimeZones/Asia/Makassar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Makassar @@ -7,7 +7,7 @@ X-LIC-LOCATION:Asia/Makassar BEGIN:STANDARD TZOFFSETFROM:+0800 TZOFFSETTO:+0800 -TZNAME:CIT +TZNAME:WITA DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Manila.ics b/SOPE/NGCards/TimeZones/Asia/Manila.ics index ea4fc2c35..1283ed083 100644 --- a/SOPE/NGCards/TimeZones/Asia/Manila.ics +++ b/SOPE/NGCards/TimeZones/Asia/Manila.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Manila diff --git a/SOPE/NGCards/TimeZones/Asia/Muscat.ics b/SOPE/NGCards/TimeZones/Asia/Muscat.ics index 92257be82..103cf8e00 100644 --- a/SOPE/NGCards/TimeZones/Asia/Muscat.ics +++ b/SOPE/NGCards/TimeZones/Asia/Muscat.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Muscat diff --git a/SOPE/NGCards/TimeZones/Asia/Nicosia.ics b/SOPE/NGCards/TimeZones/Asia/Nicosia.ics index 5d7390266..e935fc316 100644 --- a/SOPE/NGCards/TimeZones/Asia/Nicosia.ics +++ b/SOPE/NGCards/TimeZones/Asia/Nicosia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Nicosia diff --git a/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics b/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics index bd39547ae..d862fc84b 100644 --- a/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Novokuznetsk diff --git a/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics b/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics index c6ead1abb..329d0507b 100644 --- a/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Novosibirsk diff --git a/SOPE/NGCards/TimeZones/Asia/Omsk.ics b/SOPE/NGCards/TimeZones/Asia/Omsk.ics index 8f979338f..6428765ad 100644 --- a/SOPE/NGCards/TimeZones/Asia/Omsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Omsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Omsk diff --git a/SOPE/NGCards/TimeZones/Asia/Oral.ics b/SOPE/NGCards/TimeZones/Asia/Oral.ics index dd73bf3a2..8966be533 100644 --- a/SOPE/NGCards/TimeZones/Asia/Oral.ics +++ b/SOPE/NGCards/TimeZones/Asia/Oral.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Oral diff --git a/SOPE/NGCards/TimeZones/Asia/Phnom_Penh.ics b/SOPE/NGCards/TimeZones/Asia/Phnom_Penh.ics index 67cb44e24..a555365de 100644 --- a/SOPE/NGCards/TimeZones/Asia/Phnom_Penh.ics +++ b/SOPE/NGCards/TimeZones/Asia/Phnom_Penh.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Phnom_Penh diff --git a/SOPE/NGCards/TimeZones/Asia/Pontianak.ics b/SOPE/NGCards/TimeZones/Asia/Pontianak.ics index 77e0ff294..c81e4f09f 100644 --- a/SOPE/NGCards/TimeZones/Asia/Pontianak.ics +++ b/SOPE/NGCards/TimeZones/Asia/Pontianak.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Pontianak @@ -7,7 +7,7 @@ X-LIC-LOCATION:Asia/Pontianak BEGIN:STANDARD TZOFFSETFROM:+0700 TZOFFSETTO:+0700 -TZNAME:WIT +TZNAME:WIB DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Pyongyang.ics b/SOPE/NGCards/TimeZones/Asia/Pyongyang.ics index 76f09c97e..891d34b52 100644 --- a/SOPE/NGCards/TimeZones/Asia/Pyongyang.ics +++ b/SOPE/NGCards/TimeZones/Asia/Pyongyang.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Pyongyang diff --git a/SOPE/NGCards/TimeZones/Asia/Qatar.ics b/SOPE/NGCards/TimeZones/Asia/Qatar.ics index 16a258049..73c54bc8c 100644 --- a/SOPE/NGCards/TimeZones/Asia/Qatar.ics +++ b/SOPE/NGCards/TimeZones/Asia/Qatar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Qatar diff --git a/SOPE/NGCards/TimeZones/Asia/Qyzylorda.ics b/SOPE/NGCards/TimeZones/Asia/Qyzylorda.ics index 5afde0859..b80f4c994 100644 --- a/SOPE/NGCards/TimeZones/Asia/Qyzylorda.ics +++ b/SOPE/NGCards/TimeZones/Asia/Qyzylorda.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Qyzylorda diff --git a/SOPE/NGCards/TimeZones/Asia/Rangoon.ics b/SOPE/NGCards/TimeZones/Asia/Rangoon.ics index 5152279f2..9dfd88f04 100644 --- a/SOPE/NGCards/TimeZones/Asia/Rangoon.ics +++ b/SOPE/NGCards/TimeZones/Asia/Rangoon.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Rangoon diff --git a/SOPE/NGCards/TimeZones/Asia/Riyadh.ics b/SOPE/NGCards/TimeZones/Asia/Riyadh.ics index 065817eea..99e4095e2 100644 --- a/SOPE/NGCards/TimeZones/Asia/Riyadh.ics +++ b/SOPE/NGCards/TimeZones/Asia/Riyadh.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Riyadh diff --git a/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics b/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics index ef0988617..432ce25cd 100644 --- a/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics +++ b/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Sakhalin diff --git a/SOPE/NGCards/TimeZones/Asia/Samarkand.ics b/SOPE/NGCards/TimeZones/Asia/Samarkand.ics index 9d26335d6..98d868047 100644 --- a/SOPE/NGCards/TimeZones/Asia/Samarkand.ics +++ b/SOPE/NGCards/TimeZones/Asia/Samarkand.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Samarkand diff --git a/SOPE/NGCards/TimeZones/Asia/Seoul.ics b/SOPE/NGCards/TimeZones/Asia/Seoul.ics index b6162ab09..639a652b3 100644 --- a/SOPE/NGCards/TimeZones/Asia/Seoul.ics +++ b/SOPE/NGCards/TimeZones/Asia/Seoul.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Seoul diff --git a/SOPE/NGCards/TimeZones/Asia/Shanghai.ics b/SOPE/NGCards/TimeZones/Asia/Shanghai.ics index 5fb8506ca..d3608584f 100644 --- a/SOPE/NGCards/TimeZones/Asia/Shanghai.ics +++ b/SOPE/NGCards/TimeZones/Asia/Shanghai.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Shanghai diff --git a/SOPE/NGCards/TimeZones/Asia/Singapore.ics b/SOPE/NGCards/TimeZones/Asia/Singapore.ics index 11ccf7e42..ad8c12528 100644 --- a/SOPE/NGCards/TimeZones/Asia/Singapore.ics +++ b/SOPE/NGCards/TimeZones/Asia/Singapore.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Singapore diff --git a/SOPE/NGCards/TimeZones/Asia/Taipei.ics b/SOPE/NGCards/TimeZones/Asia/Taipei.ics index 6b32f8266..0e2da0469 100644 --- a/SOPE/NGCards/TimeZones/Asia/Taipei.ics +++ b/SOPE/NGCards/TimeZones/Asia/Taipei.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Taipei diff --git a/SOPE/NGCards/TimeZones/Asia/Tashkent.ics b/SOPE/NGCards/TimeZones/Asia/Tashkent.ics index d9616b716..a413b5dab 100644 --- a/SOPE/NGCards/TimeZones/Asia/Tashkent.ics +++ b/SOPE/NGCards/TimeZones/Asia/Tashkent.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Tashkent diff --git a/SOPE/NGCards/TimeZones/Asia/Tbilisi.ics b/SOPE/NGCards/TimeZones/Asia/Tbilisi.ics index 529648d01..dc2ce7654 100644 --- a/SOPE/NGCards/TimeZones/Asia/Tbilisi.ics +++ b/SOPE/NGCards/TimeZones/Asia/Tbilisi.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Tbilisi diff --git a/SOPE/NGCards/TimeZones/Asia/Tehran.ics b/SOPE/NGCards/TimeZones/Asia/Tehran.ics index 353382091..5d4fe700f 100644 --- a/SOPE/NGCards/TimeZones/Asia/Tehran.ics +++ b/SOPE/NGCards/TimeZones/Asia/Tehran.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Tehran diff --git a/SOPE/NGCards/TimeZones/Asia/Thimphu.ics b/SOPE/NGCards/TimeZones/Asia/Thimphu.ics index e0fc77b18..a910c1e15 100644 --- a/SOPE/NGCards/TimeZones/Asia/Thimphu.ics +++ b/SOPE/NGCards/TimeZones/Asia/Thimphu.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Thimphu diff --git a/SOPE/NGCards/TimeZones/Asia/Tokyo.ics b/SOPE/NGCards/TimeZones/Asia/Tokyo.ics index 901af164e..9bafe558d 100644 --- a/SOPE/NGCards/TimeZones/Asia/Tokyo.ics +++ b/SOPE/NGCards/TimeZones/Asia/Tokyo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Tokyo diff --git a/SOPE/NGCards/TimeZones/Asia/Ulaanbaatar.ics b/SOPE/NGCards/TimeZones/Asia/Ulaanbaatar.ics index 75ab91a82..7f9841450 100644 --- a/SOPE/NGCards/TimeZones/Asia/Ulaanbaatar.ics +++ b/SOPE/NGCards/TimeZones/Asia/Ulaanbaatar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Ulaanbaatar diff --git a/SOPE/NGCards/TimeZones/Asia/Urumqi.ics b/SOPE/NGCards/TimeZones/Asia/Urumqi.ics index 659eae551..1d9e782ed 100644 --- a/SOPE/NGCards/TimeZones/Asia/Urumqi.ics +++ b/SOPE/NGCards/TimeZones/Asia/Urumqi.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Urumqi diff --git a/SOPE/NGCards/TimeZones/Asia/Vientiane.ics b/SOPE/NGCards/TimeZones/Asia/Vientiane.ics index db6511537..c203d40d3 100644 --- a/SOPE/NGCards/TimeZones/Asia/Vientiane.ics +++ b/SOPE/NGCards/TimeZones/Asia/Vientiane.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Vientiane diff --git a/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics b/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics index d92e88ed8..99e5dbee0 100644 --- a/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics +++ b/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Vladivostok diff --git a/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics b/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics index 1396c45ff..bd1b8b698 100644 --- a/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Yakutsk diff --git a/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics b/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics index 8eb26bc5e..6f6bb6f13 100644 --- a/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics +++ b/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Yekaterinburg diff --git a/SOPE/NGCards/TimeZones/Asia/Yerevan.ics b/SOPE/NGCards/TimeZones/Asia/Yerevan.ics index c9965e090..6cd99027b 100644 --- a/SOPE/NGCards/TimeZones/Asia/Yerevan.ics +++ b/SOPE/NGCards/TimeZones/Asia/Yerevan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Asia/Yerevan diff --git a/SOPE/NGCards/TimeZones/Atlantic/Azores.ics b/SOPE/NGCards/TimeZones/Atlantic/Azores.ics index 21b9ab9fb..773a6066a 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Azores.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Azores.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Azores diff --git a/SOPE/NGCards/TimeZones/Atlantic/Bermuda.ics b/SOPE/NGCards/TimeZones/Atlantic/Bermuda.ics index e7bb1e618..5d97b738c 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Bermuda.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Bermuda.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Bermuda diff --git a/SOPE/NGCards/TimeZones/Atlantic/Canary.ics b/SOPE/NGCards/TimeZones/Atlantic/Canary.ics index 4bad5b47d..32a3a98cb 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Canary.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Canary.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Canary diff --git a/SOPE/NGCards/TimeZones/Atlantic/Cape_Verde.ics b/SOPE/NGCards/TimeZones/Atlantic/Cape_Verde.ics index 873e22548..01d628ba5 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Cape_Verde.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Cape_Verde.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Cape_Verde diff --git a/SOPE/NGCards/TimeZones/Atlantic/Faroe.ics b/SOPE/NGCards/TimeZones/Atlantic/Faroe.ics index f4a311925..dabaca66f 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Faroe.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Faroe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Faroe diff --git a/SOPE/NGCards/TimeZones/Atlantic/Madeira.ics b/SOPE/NGCards/TimeZones/Atlantic/Madeira.ics index a91fa1210..5ee088c5c 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Madeira.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Madeira.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Madeira diff --git a/SOPE/NGCards/TimeZones/Atlantic/Reykjavik.ics b/SOPE/NGCards/TimeZones/Atlantic/Reykjavik.ics index 22933a425..0e559492f 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Reykjavik.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Reykjavik.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Reykjavik diff --git a/SOPE/NGCards/TimeZones/Atlantic/South_Georgia.ics b/SOPE/NGCards/TimeZones/Atlantic/South_Georgia.ics index ea25f37ef..d3722b4ba 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/South_Georgia.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/South_Georgia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/South_Georgia diff --git a/SOPE/NGCards/TimeZones/Atlantic/St_Helena.ics b/SOPE/NGCards/TimeZones/Atlantic/St_Helena.ics index 73f201155..7a68d92f3 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/St_Helena.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/St_Helena.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/St_Helena diff --git a/SOPE/NGCards/TimeZones/Atlantic/Stanley.ics b/SOPE/NGCards/TimeZones/Atlantic/Stanley.ics index fd6963380..51b3953c7 100644 --- a/SOPE/NGCards/TimeZones/Atlantic/Stanley.ics +++ b/SOPE/NGCards/TimeZones/Atlantic/Stanley.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Atlantic/Stanley diff --git a/SOPE/NGCards/TimeZones/Australia/Adelaide.ics b/SOPE/NGCards/TimeZones/Australia/Adelaide.ics index b18150ef1..285d9d374 100644 --- a/SOPE/NGCards/TimeZones/Australia/Adelaide.ics +++ b/SOPE/NGCards/TimeZones/Australia/Adelaide.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Adelaide diff --git a/SOPE/NGCards/TimeZones/Australia/Brisbane.ics b/SOPE/NGCards/TimeZones/Australia/Brisbane.ics index 41d7d128e..0944788c0 100644 --- a/SOPE/NGCards/TimeZones/Australia/Brisbane.ics +++ b/SOPE/NGCards/TimeZones/Australia/Brisbane.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Brisbane diff --git a/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics b/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics index 1596260f2..99d4120d1 100644 --- a/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics +++ b/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Broken_Hill diff --git a/SOPE/NGCards/TimeZones/Australia/Currie.ics b/SOPE/NGCards/TimeZones/Australia/Currie.ics index bf8ebfdb3..d2fcdad77 100644 --- a/SOPE/NGCards/TimeZones/Australia/Currie.ics +++ b/SOPE/NGCards/TimeZones/Australia/Currie.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Currie diff --git a/SOPE/NGCards/TimeZones/Australia/Darwin.ics b/SOPE/NGCards/TimeZones/Australia/Darwin.ics index 1adf7de3d..dc9690961 100644 --- a/SOPE/NGCards/TimeZones/Australia/Darwin.ics +++ b/SOPE/NGCards/TimeZones/Australia/Darwin.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Darwin diff --git a/SOPE/NGCards/TimeZones/Australia/Eucla.ics b/SOPE/NGCards/TimeZones/Australia/Eucla.ics index 557d522d4..1d00525e5 100644 --- a/SOPE/NGCards/TimeZones/Australia/Eucla.ics +++ b/SOPE/NGCards/TimeZones/Australia/Eucla.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Eucla diff --git a/SOPE/NGCards/TimeZones/Australia/Hobart.ics b/SOPE/NGCards/TimeZones/Australia/Hobart.ics index 87636b62f..f49a1aca8 100644 --- a/SOPE/NGCards/TimeZones/Australia/Hobart.ics +++ b/SOPE/NGCards/TimeZones/Australia/Hobart.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Hobart diff --git a/SOPE/NGCards/TimeZones/Australia/Lindeman.ics b/SOPE/NGCards/TimeZones/Australia/Lindeman.ics index eebac0d60..490d46f5a 100644 --- a/SOPE/NGCards/TimeZones/Australia/Lindeman.ics +++ b/SOPE/NGCards/TimeZones/Australia/Lindeman.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Lindeman diff --git a/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics b/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics index e3d6fc1d6..eca262031 100644 --- a/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics +++ b/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Lord_Howe diff --git a/SOPE/NGCards/TimeZones/Australia/Melbourne.ics b/SOPE/NGCards/TimeZones/Australia/Melbourne.ics index 289ac67a6..262e2c272 100644 --- a/SOPE/NGCards/TimeZones/Australia/Melbourne.ics +++ b/SOPE/NGCards/TimeZones/Australia/Melbourne.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Melbourne diff --git a/SOPE/NGCards/TimeZones/Australia/Perth.ics b/SOPE/NGCards/TimeZones/Australia/Perth.ics index 5a8ae1b33..d5744a6cf 100644 --- a/SOPE/NGCards/TimeZones/Australia/Perth.ics +++ b/SOPE/NGCards/TimeZones/Australia/Perth.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Perth diff --git a/SOPE/NGCards/TimeZones/Australia/Sydney.ics b/SOPE/NGCards/TimeZones/Australia/Sydney.ics index 636dc54c1..aa6d6534c 100644 --- a/SOPE/NGCards/TimeZones/Australia/Sydney.ics +++ b/SOPE/NGCards/TimeZones/Australia/Sydney.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Australia/Sydney diff --git a/SOPE/NGCards/TimeZones/Europe/Amsterdam.ics b/SOPE/NGCards/TimeZones/Europe/Amsterdam.ics index 9a38a036b..c468d8849 100644 --- a/SOPE/NGCards/TimeZones/Europe/Amsterdam.ics +++ b/SOPE/NGCards/TimeZones/Europe/Amsterdam.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Amsterdam diff --git a/SOPE/NGCards/TimeZones/Europe/Andorra.ics b/SOPE/NGCards/TimeZones/Europe/Andorra.ics index 310d7f10d..b446891e2 100644 --- a/SOPE/NGCards/TimeZones/Europe/Andorra.ics +++ b/SOPE/NGCards/TimeZones/Europe/Andorra.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Andorra diff --git a/SOPE/NGCards/TimeZones/Europe/Athens.ics b/SOPE/NGCards/TimeZones/Europe/Athens.ics index 99fe600e4..8f8950747 100644 --- a/SOPE/NGCards/TimeZones/Europe/Athens.ics +++ b/SOPE/NGCards/TimeZones/Europe/Athens.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Athens diff --git a/SOPE/NGCards/TimeZones/Europe/Belgrade.ics b/SOPE/NGCards/TimeZones/Europe/Belgrade.ics index b74f4b374..ecdf3d673 100644 --- a/SOPE/NGCards/TimeZones/Europe/Belgrade.ics +++ b/SOPE/NGCards/TimeZones/Europe/Belgrade.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Belgrade diff --git a/SOPE/NGCards/TimeZones/Europe/Berlin.ics b/SOPE/NGCards/TimeZones/Europe/Berlin.ics index 8da1441c8..51eb7c836 100644 --- a/SOPE/NGCards/TimeZones/Europe/Berlin.ics +++ b/SOPE/NGCards/TimeZones/Europe/Berlin.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Berlin diff --git a/SOPE/NGCards/TimeZones/Europe/Bratislava.ics b/SOPE/NGCards/TimeZones/Europe/Bratislava.ics index 36367fe1d..cde22cd0c 100644 --- a/SOPE/NGCards/TimeZones/Europe/Bratislava.ics +++ b/SOPE/NGCards/TimeZones/Europe/Bratislava.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Bratislava diff --git a/SOPE/NGCards/TimeZones/Europe/Brussels.ics b/SOPE/NGCards/TimeZones/Europe/Brussels.ics index d8a7ad167..034580c65 100644 --- a/SOPE/NGCards/TimeZones/Europe/Brussels.ics +++ b/SOPE/NGCards/TimeZones/Europe/Brussels.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Brussels diff --git a/SOPE/NGCards/TimeZones/Europe/Bucharest.ics b/SOPE/NGCards/TimeZones/Europe/Bucharest.ics index eab94c225..66b13bd17 100644 --- a/SOPE/NGCards/TimeZones/Europe/Bucharest.ics +++ b/SOPE/NGCards/TimeZones/Europe/Bucharest.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Bucharest diff --git a/SOPE/NGCards/TimeZones/Europe/Budapest.ics b/SOPE/NGCards/TimeZones/Europe/Budapest.ics index d17453032..41d932e30 100644 --- a/SOPE/NGCards/TimeZones/Europe/Budapest.ics +++ b/SOPE/NGCards/TimeZones/Europe/Budapest.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Budapest diff --git a/SOPE/NGCards/TimeZones/Europe/Chisinau.ics b/SOPE/NGCards/TimeZones/Europe/Chisinau.ics index 314ee030d..c9da246f5 100644 --- a/SOPE/NGCards/TimeZones/Europe/Chisinau.ics +++ b/SOPE/NGCards/TimeZones/Europe/Chisinau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Chisinau diff --git a/SOPE/NGCards/TimeZones/Europe/Copenhagen.ics b/SOPE/NGCards/TimeZones/Europe/Copenhagen.ics index 74c948781..bfb4640a4 100644 --- a/SOPE/NGCards/TimeZones/Europe/Copenhagen.ics +++ b/SOPE/NGCards/TimeZones/Europe/Copenhagen.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Copenhagen diff --git a/SOPE/NGCards/TimeZones/Europe/Dublin.ics b/SOPE/NGCards/TimeZones/Europe/Dublin.ics index cef88f036..d092758e5 100644 --- a/SOPE/NGCards/TimeZones/Europe/Dublin.ics +++ b/SOPE/NGCards/TimeZones/Europe/Dublin.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Dublin diff --git a/SOPE/NGCards/TimeZones/Europe/Gibraltar.ics b/SOPE/NGCards/TimeZones/Europe/Gibraltar.ics index 004937430..3f250f1dc 100644 --- a/SOPE/NGCards/TimeZones/Europe/Gibraltar.ics +++ b/SOPE/NGCards/TimeZones/Europe/Gibraltar.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Gibraltar diff --git a/SOPE/NGCards/TimeZones/Europe/Guernsey.ics b/SOPE/NGCards/TimeZones/Europe/Guernsey.ics index f0aa154d6..38c31ffe6 100644 --- a/SOPE/NGCards/TimeZones/Europe/Guernsey.ics +++ b/SOPE/NGCards/TimeZones/Europe/Guernsey.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Guernsey diff --git a/SOPE/NGCards/TimeZones/Europe/Helsinki.ics b/SOPE/NGCards/TimeZones/Europe/Helsinki.ics index 9fcf261de..0f1c42aaf 100644 --- a/SOPE/NGCards/TimeZones/Europe/Helsinki.ics +++ b/SOPE/NGCards/TimeZones/Europe/Helsinki.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Helsinki diff --git a/SOPE/NGCards/TimeZones/Europe/Isle_of_Man.ics b/SOPE/NGCards/TimeZones/Europe/Isle_of_Man.ics index abc5f4e7d..85e670b14 100644 --- a/SOPE/NGCards/TimeZones/Europe/Isle_of_Man.ics +++ b/SOPE/NGCards/TimeZones/Europe/Isle_of_Man.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Isle_of_Man diff --git a/SOPE/NGCards/TimeZones/Europe/Istanbul.ics b/SOPE/NGCards/TimeZones/Europe/Istanbul.ics index 1b0870509..a7642f5fb 100644 --- a/SOPE/NGCards/TimeZones/Europe/Istanbul.ics +++ b/SOPE/NGCards/TimeZones/Europe/Istanbul.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Istanbul diff --git a/SOPE/NGCards/TimeZones/Europe/Jersey.ics b/SOPE/NGCards/TimeZones/Europe/Jersey.ics index d4d8d9aed..a009202f9 100644 --- a/SOPE/NGCards/TimeZones/Europe/Jersey.ics +++ b/SOPE/NGCards/TimeZones/Europe/Jersey.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Jersey diff --git a/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics b/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics index fb43f6611..8beeff138 100644 --- a/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics +++ b/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Kaliningrad diff --git a/SOPE/NGCards/TimeZones/Europe/Kiev.ics b/SOPE/NGCards/TimeZones/Europe/Kiev.ics index 1e2eb04c4..1c0abd3ae 100644 --- a/SOPE/NGCards/TimeZones/Europe/Kiev.ics +++ b/SOPE/NGCards/TimeZones/Europe/Kiev.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Kiev diff --git a/SOPE/NGCards/TimeZones/Europe/Lisbon.ics b/SOPE/NGCards/TimeZones/Europe/Lisbon.ics index af75a9757..91f6d448a 100644 --- a/SOPE/NGCards/TimeZones/Europe/Lisbon.ics +++ b/SOPE/NGCards/TimeZones/Europe/Lisbon.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Lisbon diff --git a/SOPE/NGCards/TimeZones/Europe/Ljubljana.ics b/SOPE/NGCards/TimeZones/Europe/Ljubljana.ics index 983520411..f4976327d 100644 --- a/SOPE/NGCards/TimeZones/Europe/Ljubljana.ics +++ b/SOPE/NGCards/TimeZones/Europe/Ljubljana.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Ljubljana diff --git a/SOPE/NGCards/TimeZones/Europe/London.ics b/SOPE/NGCards/TimeZones/Europe/London.ics index f95dea6eb..7927a158c 100644 --- a/SOPE/NGCards/TimeZones/Europe/London.ics +++ b/SOPE/NGCards/TimeZones/Europe/London.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/London diff --git a/SOPE/NGCards/TimeZones/Europe/Luxembourg.ics b/SOPE/NGCards/TimeZones/Europe/Luxembourg.ics index 90b8b9593..5fc71f540 100644 --- a/SOPE/NGCards/TimeZones/Europe/Luxembourg.ics +++ b/SOPE/NGCards/TimeZones/Europe/Luxembourg.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Luxembourg diff --git a/SOPE/NGCards/TimeZones/Europe/Madrid.ics b/SOPE/NGCards/TimeZones/Europe/Madrid.ics index 0ad3e4f05..3ee66e256 100644 --- a/SOPE/NGCards/TimeZones/Europe/Madrid.ics +++ b/SOPE/NGCards/TimeZones/Europe/Madrid.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Madrid diff --git a/SOPE/NGCards/TimeZones/Europe/Malta.ics b/SOPE/NGCards/TimeZones/Europe/Malta.ics index 88e52df2f..c7c56589a 100644 --- a/SOPE/NGCards/TimeZones/Europe/Malta.ics +++ b/SOPE/NGCards/TimeZones/Europe/Malta.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Malta diff --git a/SOPE/NGCards/TimeZones/Europe/Mariehamn.ics b/SOPE/NGCards/TimeZones/Europe/Mariehamn.ics index f51889b79..44f3ffa8f 100644 --- a/SOPE/NGCards/TimeZones/Europe/Mariehamn.ics +++ b/SOPE/NGCards/TimeZones/Europe/Mariehamn.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Mariehamn diff --git a/SOPE/NGCards/TimeZones/Europe/Minsk.ics b/SOPE/NGCards/TimeZones/Europe/Minsk.ics index 06eee1b1e..67ee843bb 100644 --- a/SOPE/NGCards/TimeZones/Europe/Minsk.ics +++ b/SOPE/NGCards/TimeZones/Europe/Minsk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Minsk diff --git a/SOPE/NGCards/TimeZones/Europe/Monaco.ics b/SOPE/NGCards/TimeZones/Europe/Monaco.ics index 307e8f812..2862287c1 100644 --- a/SOPE/NGCards/TimeZones/Europe/Monaco.ics +++ b/SOPE/NGCards/TimeZones/Europe/Monaco.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Monaco diff --git a/SOPE/NGCards/TimeZones/Europe/Moscow.ics b/SOPE/NGCards/TimeZones/Europe/Moscow.ics index a90dea87b..98d09649f 100644 --- a/SOPE/NGCards/TimeZones/Europe/Moscow.ics +++ b/SOPE/NGCards/TimeZones/Europe/Moscow.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Moscow diff --git a/SOPE/NGCards/TimeZones/Europe/Nicosia.ics b/SOPE/NGCards/TimeZones/Europe/Nicosia.ics index c4b107b4b..53d126c94 100644 --- a/SOPE/NGCards/TimeZones/Europe/Nicosia.ics +++ b/SOPE/NGCards/TimeZones/Europe/Nicosia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Nicosia diff --git a/SOPE/NGCards/TimeZones/Europe/Oslo.ics b/SOPE/NGCards/TimeZones/Europe/Oslo.ics index 984df709a..98a06d9c6 100644 --- a/SOPE/NGCards/TimeZones/Europe/Oslo.ics +++ b/SOPE/NGCards/TimeZones/Europe/Oslo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Oslo diff --git a/SOPE/NGCards/TimeZones/Europe/Paris.ics b/SOPE/NGCards/TimeZones/Europe/Paris.ics index 1cf338d2f..fb3ab55cc 100644 --- a/SOPE/NGCards/TimeZones/Europe/Paris.ics +++ b/SOPE/NGCards/TimeZones/Europe/Paris.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Paris diff --git a/SOPE/NGCards/TimeZones/Europe/Podgorica.ics b/SOPE/NGCards/TimeZones/Europe/Podgorica.ics index 9c4e90ac8..9d00f19d5 100644 --- a/SOPE/NGCards/TimeZones/Europe/Podgorica.ics +++ b/SOPE/NGCards/TimeZones/Europe/Podgorica.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Podgorica diff --git a/SOPE/NGCards/TimeZones/Europe/Prague.ics b/SOPE/NGCards/TimeZones/Europe/Prague.ics index 42171d5c2..0d937be30 100644 --- a/SOPE/NGCards/TimeZones/Europe/Prague.ics +++ b/SOPE/NGCards/TimeZones/Europe/Prague.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Prague diff --git a/SOPE/NGCards/TimeZones/Europe/Riga.ics b/SOPE/NGCards/TimeZones/Europe/Riga.ics index d47d3c7fd..8a8832a54 100644 --- a/SOPE/NGCards/TimeZones/Europe/Riga.ics +++ b/SOPE/NGCards/TimeZones/Europe/Riga.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Riga diff --git a/SOPE/NGCards/TimeZones/Europe/Rome.ics b/SOPE/NGCards/TimeZones/Europe/Rome.ics index f4d52060d..2c782178b 100644 --- a/SOPE/NGCards/TimeZones/Europe/Rome.ics +++ b/SOPE/NGCards/TimeZones/Europe/Rome.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Rome diff --git a/SOPE/NGCards/TimeZones/Europe/Samara.ics b/SOPE/NGCards/TimeZones/Europe/Samara.ics index c195879af..986aee23b 100644 --- a/SOPE/NGCards/TimeZones/Europe/Samara.ics +++ b/SOPE/NGCards/TimeZones/Europe/Samara.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Samara diff --git a/SOPE/NGCards/TimeZones/Europe/San_Marino.ics b/SOPE/NGCards/TimeZones/Europe/San_Marino.ics index 3618bea41..4454142bd 100644 --- a/SOPE/NGCards/TimeZones/Europe/San_Marino.ics +++ b/SOPE/NGCards/TimeZones/Europe/San_Marino.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/San_Marino diff --git a/SOPE/NGCards/TimeZones/Europe/Sarajevo.ics b/SOPE/NGCards/TimeZones/Europe/Sarajevo.ics index 5396845fc..69920c271 100644 --- a/SOPE/NGCards/TimeZones/Europe/Sarajevo.ics +++ b/SOPE/NGCards/TimeZones/Europe/Sarajevo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Sarajevo diff --git a/SOPE/NGCards/TimeZones/Europe/Simferopol.ics b/SOPE/NGCards/TimeZones/Europe/Simferopol.ics index 2480f4f12..55e053c80 100644 --- a/SOPE/NGCards/TimeZones/Europe/Simferopol.ics +++ b/SOPE/NGCards/TimeZones/Europe/Simferopol.ics @@ -1,22 +1,14 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Simferopol X-LIC-LOCATION:Europe/Simferopol BEGIN:STANDARD -TZOFFSETFROM:+0300 -TZOFFSETTO:+0200 -TZNAME:EET -DTSTART:19701025T040000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:MSK +DTSTART:19700101T000000 END:STANDARD -BEGIN:DAYLIGHT -TZOFFSETFROM:+0200 -TZOFFSETTO:+0300 -TZNAME:EEST -DTSTART:19700329T030000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU -END:DAYLIGHT END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Europe/Skopje.ics b/SOPE/NGCards/TimeZones/Europe/Skopje.ics index 2bb8d2eed..3cf4a4f3b 100644 --- a/SOPE/NGCards/TimeZones/Europe/Skopje.ics +++ b/SOPE/NGCards/TimeZones/Europe/Skopje.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Skopje diff --git a/SOPE/NGCards/TimeZones/Europe/Sofia.ics b/SOPE/NGCards/TimeZones/Europe/Sofia.ics index b4c2ffb54..b91c00f7d 100644 --- a/SOPE/NGCards/TimeZones/Europe/Sofia.ics +++ b/SOPE/NGCards/TimeZones/Europe/Sofia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Sofia diff --git a/SOPE/NGCards/TimeZones/Europe/Stockholm.ics b/SOPE/NGCards/TimeZones/Europe/Stockholm.ics index 38e92dd9f..ae003f724 100644 --- a/SOPE/NGCards/TimeZones/Europe/Stockholm.ics +++ b/SOPE/NGCards/TimeZones/Europe/Stockholm.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Stockholm diff --git a/SOPE/NGCards/TimeZones/Europe/Tallinn.ics b/SOPE/NGCards/TimeZones/Europe/Tallinn.ics index 94cbacce4..804511728 100644 --- a/SOPE/NGCards/TimeZones/Europe/Tallinn.ics +++ b/SOPE/NGCards/TimeZones/Europe/Tallinn.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Tallinn diff --git a/SOPE/NGCards/TimeZones/Europe/Tirane.ics b/SOPE/NGCards/TimeZones/Europe/Tirane.ics index 26b413331..f4a2140b4 100644 --- a/SOPE/NGCards/TimeZones/Europe/Tirane.ics +++ b/SOPE/NGCards/TimeZones/Europe/Tirane.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Tirane diff --git a/SOPE/NGCards/TimeZones/Europe/Uzhgorod.ics b/SOPE/NGCards/TimeZones/Europe/Uzhgorod.ics index ab6f52ef5..0257039ec 100644 --- a/SOPE/NGCards/TimeZones/Europe/Uzhgorod.ics +++ b/SOPE/NGCards/TimeZones/Europe/Uzhgorod.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Uzhgorod diff --git a/SOPE/NGCards/TimeZones/Europe/Vaduz.ics b/SOPE/NGCards/TimeZones/Europe/Vaduz.ics index c7ccf697d..48653e682 100644 --- a/SOPE/NGCards/TimeZones/Europe/Vaduz.ics +++ b/SOPE/NGCards/TimeZones/Europe/Vaduz.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Vaduz diff --git a/SOPE/NGCards/TimeZones/Europe/Vatican.ics b/SOPE/NGCards/TimeZones/Europe/Vatican.ics index a9e0c6123..84e07243b 100644 --- a/SOPE/NGCards/TimeZones/Europe/Vatican.ics +++ b/SOPE/NGCards/TimeZones/Europe/Vatican.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Vatican diff --git a/SOPE/NGCards/TimeZones/Europe/Vienna.ics b/SOPE/NGCards/TimeZones/Europe/Vienna.ics index eb9834d8f..6852c3e81 100644 --- a/SOPE/NGCards/TimeZones/Europe/Vienna.ics +++ b/SOPE/NGCards/TimeZones/Europe/Vienna.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Vienna diff --git a/SOPE/NGCards/TimeZones/Europe/Vilnius.ics b/SOPE/NGCards/TimeZones/Europe/Vilnius.ics index 313e7d86a..365303f11 100644 --- a/SOPE/NGCards/TimeZones/Europe/Vilnius.ics +++ b/SOPE/NGCards/TimeZones/Europe/Vilnius.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Vilnius diff --git a/SOPE/NGCards/TimeZones/Europe/Volgograd.ics b/SOPE/NGCards/TimeZones/Europe/Volgograd.ics index 8718cc5d6..c3e398073 100644 --- a/SOPE/NGCards/TimeZones/Europe/Volgograd.ics +++ b/SOPE/NGCards/TimeZones/Europe/Volgograd.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Volgograd diff --git a/SOPE/NGCards/TimeZones/Europe/Warsaw.ics b/SOPE/NGCards/TimeZones/Europe/Warsaw.ics index 6f9c7ab46..879258a5b 100644 --- a/SOPE/NGCards/TimeZones/Europe/Warsaw.ics +++ b/SOPE/NGCards/TimeZones/Europe/Warsaw.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Warsaw diff --git a/SOPE/NGCards/TimeZones/Europe/Zagreb.ics b/SOPE/NGCards/TimeZones/Europe/Zagreb.ics index 316b08ba1..0f0a56e85 100644 --- a/SOPE/NGCards/TimeZones/Europe/Zagreb.ics +++ b/SOPE/NGCards/TimeZones/Europe/Zagreb.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Zagreb diff --git a/SOPE/NGCards/TimeZones/Europe/Zaporozhye.ics b/SOPE/NGCards/TimeZones/Europe/Zaporozhye.ics index cc8a04b6d..f0d7746ee 100644 --- a/SOPE/NGCards/TimeZones/Europe/Zaporozhye.ics +++ b/SOPE/NGCards/TimeZones/Europe/Zaporozhye.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Zaporozhye diff --git a/SOPE/NGCards/TimeZones/Europe/Zurich.ics b/SOPE/NGCards/TimeZones/Europe/Zurich.ics index 82d6b02ff..44ae49e75 100644 --- a/SOPE/NGCards/TimeZones/Europe/Zurich.ics +++ b/SOPE/NGCards/TimeZones/Europe/Zurich.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Europe/Zurich diff --git a/SOPE/NGCards/TimeZones/Indian/Antananarivo.ics b/SOPE/NGCards/TimeZones/Indian/Antananarivo.ics index 8c8bd4c33..3549d11ec 100644 --- a/SOPE/NGCards/TimeZones/Indian/Antananarivo.ics +++ b/SOPE/NGCards/TimeZones/Indian/Antananarivo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Antananarivo diff --git a/SOPE/NGCards/TimeZones/Indian/Chagos.ics b/SOPE/NGCards/TimeZones/Indian/Chagos.ics index a702621bc..8b137f28f 100644 --- a/SOPE/NGCards/TimeZones/Indian/Chagos.ics +++ b/SOPE/NGCards/TimeZones/Indian/Chagos.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Chagos diff --git a/SOPE/NGCards/TimeZones/Indian/Christmas.ics b/SOPE/NGCards/TimeZones/Indian/Christmas.ics index da05a5258..bd46774a5 100644 --- a/SOPE/NGCards/TimeZones/Indian/Christmas.ics +++ b/SOPE/NGCards/TimeZones/Indian/Christmas.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Christmas diff --git a/SOPE/NGCards/TimeZones/Indian/Cocos.ics b/SOPE/NGCards/TimeZones/Indian/Cocos.ics index 0182fd350..553323e87 100644 --- a/SOPE/NGCards/TimeZones/Indian/Cocos.ics +++ b/SOPE/NGCards/TimeZones/Indian/Cocos.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Cocos diff --git a/SOPE/NGCards/TimeZones/Indian/Comoro.ics b/SOPE/NGCards/TimeZones/Indian/Comoro.ics index fe0fe7429..867bca442 100644 --- a/SOPE/NGCards/TimeZones/Indian/Comoro.ics +++ b/SOPE/NGCards/TimeZones/Indian/Comoro.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Comoro diff --git a/SOPE/NGCards/TimeZones/Indian/Kerguelen.ics b/SOPE/NGCards/TimeZones/Indian/Kerguelen.ics index 770d4bc48..55aa7516e 100644 --- a/SOPE/NGCards/TimeZones/Indian/Kerguelen.ics +++ b/SOPE/NGCards/TimeZones/Indian/Kerguelen.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Kerguelen diff --git a/SOPE/NGCards/TimeZones/Indian/Mahe.ics b/SOPE/NGCards/TimeZones/Indian/Mahe.ics index 3fcdd199e..dbbe8976b 100644 --- a/SOPE/NGCards/TimeZones/Indian/Mahe.ics +++ b/SOPE/NGCards/TimeZones/Indian/Mahe.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Mahe diff --git a/SOPE/NGCards/TimeZones/Indian/Maldives.ics b/SOPE/NGCards/TimeZones/Indian/Maldives.ics index ad81069d3..e3f755414 100644 --- a/SOPE/NGCards/TimeZones/Indian/Maldives.ics +++ b/SOPE/NGCards/TimeZones/Indian/Maldives.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Maldives diff --git a/SOPE/NGCards/TimeZones/Indian/Mauritius.ics b/SOPE/NGCards/TimeZones/Indian/Mauritius.ics index a109de782..835717da7 100644 --- a/SOPE/NGCards/TimeZones/Indian/Mauritius.ics +++ b/SOPE/NGCards/TimeZones/Indian/Mauritius.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Mauritius diff --git a/SOPE/NGCards/TimeZones/Indian/Mayotte.ics b/SOPE/NGCards/TimeZones/Indian/Mayotte.ics index 63f714303..bde743401 100644 --- a/SOPE/NGCards/TimeZones/Indian/Mayotte.ics +++ b/SOPE/NGCards/TimeZones/Indian/Mayotte.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Mayotte diff --git a/SOPE/NGCards/TimeZones/Indian/Reunion.ics b/SOPE/NGCards/TimeZones/Indian/Reunion.ics index 306f8f3de..ae4c185b7 100644 --- a/SOPE/NGCards/TimeZones/Indian/Reunion.ics +++ b/SOPE/NGCards/TimeZones/Indian/Reunion.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Indian/Reunion diff --git a/SOPE/NGCards/TimeZones/Pacific/Apia.ics b/SOPE/NGCards/TimeZones/Pacific/Apia.ics index 6b5560239..67abe5629 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Apia.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Apia.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Apia diff --git a/SOPE/NGCards/TimeZones/Pacific/Auckland.ics b/SOPE/NGCards/TimeZones/Pacific/Auckland.ics index fc67f9868..3f8b6eca9 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Auckland.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Auckland.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Auckland diff --git a/SOPE/NGCards/TimeZones/Pacific/Chatham.ics b/SOPE/NGCards/TimeZones/Pacific/Chatham.ics index 7025715a7..4e75651f2 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Chatham.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Chatham.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Chatham diff --git a/SOPE/NGCards/TimeZones/Pacific/Chuuk.ics b/SOPE/NGCards/TimeZones/Pacific/Chuuk.ics index 4412052d6..1ae8cd371 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Chuuk.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Chuuk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Chuuk diff --git a/SOPE/NGCards/TimeZones/Pacific/Easter.ics b/SOPE/NGCards/TimeZones/Pacific/Easter.ics index 82c622fec..17df2232c 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Easter.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Easter.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Easter @@ -8,15 +8,15 @@ BEGIN:STANDARD TZOFFSETFROM:-0500 TZOFFSETTO:-0600 TZNAME:EAST -DTSTART:19700314T220000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SA +DTSTART:19700425T220000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=4SA END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:-0600 TZOFFSETTO:-0500 TZNAME:EASST -DTSTART:19701010T220000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=2SA +DTSTART:19700905T220000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=1SA END:DAYLIGHT END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Pacific/Efate.ics b/SOPE/NGCards/TimeZones/Pacific/Efate.ics index b81aaf7a9..d75d14c6c 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Efate.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Efate.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Efate diff --git a/SOPE/NGCards/TimeZones/Pacific/Enderbury.ics b/SOPE/NGCards/TimeZones/Pacific/Enderbury.ics index ea38ccf20..2a87dd0e8 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Enderbury.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Enderbury.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Enderbury diff --git a/SOPE/NGCards/TimeZones/Pacific/Fakaofo.ics b/SOPE/NGCards/TimeZones/Pacific/Fakaofo.ics index d655879f4..53e4ca6fe 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Fakaofo.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Fakaofo.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Fakaofo diff --git a/SOPE/NGCards/TimeZones/Pacific/Fiji.ics b/SOPE/NGCards/TimeZones/Pacific/Fiji.ics index c38d96763..543cbad38 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Fiji.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Fiji.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Fiji @@ -8,14 +8,14 @@ BEGIN:DAYLIGHT TZOFFSETFROM:+1200 TZOFFSETTO:+1300 TZNAME:FJST -DTSTART:19701018T020000 +DTSTART:19701025T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+1300 TZOFFSETTO:+1200 TZNAME:FJT -DTSTART:19700118T030000 +DTSTART:19700118T020000 RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=-1SU END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Pacific/Funafuti.ics b/SOPE/NGCards/TimeZones/Pacific/Funafuti.ics index b0ae3f620..973850a9c 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Funafuti.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Funafuti.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Funafuti diff --git a/SOPE/NGCards/TimeZones/Pacific/Galapagos.ics b/SOPE/NGCards/TimeZones/Pacific/Galapagos.ics index deb928773..eca405da5 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Galapagos.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Galapagos.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Galapagos diff --git a/SOPE/NGCards/TimeZones/Pacific/Gambier.ics b/SOPE/NGCards/TimeZones/Pacific/Gambier.ics index 4c6f1bf45..3e5c08aef 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Gambier.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Gambier.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Gambier diff --git a/SOPE/NGCards/TimeZones/Pacific/Guadalcanal.ics b/SOPE/NGCards/TimeZones/Pacific/Guadalcanal.ics index e9328d410..ec474a766 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Guadalcanal.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Guadalcanal.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Guadalcanal diff --git a/SOPE/NGCards/TimeZones/Pacific/Guam.ics b/SOPE/NGCards/TimeZones/Pacific/Guam.ics index 74b9a134d..109a53abb 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Guam.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Guam.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Guam diff --git a/SOPE/NGCards/TimeZones/Pacific/Honolulu.ics b/SOPE/NGCards/TimeZones/Pacific/Honolulu.ics index 3e3079804..3a2c729e8 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Honolulu.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Honolulu.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Honolulu diff --git a/SOPE/NGCards/TimeZones/Pacific/Johnston.ics b/SOPE/NGCards/TimeZones/Pacific/Johnston.ics index 6e658946e..2f1b3d66e 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Johnston.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Johnston.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Johnston diff --git a/SOPE/NGCards/TimeZones/Pacific/Kiritimati.ics b/SOPE/NGCards/TimeZones/Pacific/Kiritimati.ics index be6338aba..cdbf23939 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Kiritimati.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Kiritimati.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Kiritimati diff --git a/SOPE/NGCards/TimeZones/Pacific/Kosrae.ics b/SOPE/NGCards/TimeZones/Pacific/Kosrae.ics index 48e924058..8e763d826 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Kosrae.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Kosrae.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Kosrae diff --git a/SOPE/NGCards/TimeZones/Pacific/Kwajalein.ics b/SOPE/NGCards/TimeZones/Pacific/Kwajalein.ics index 1b0a700bc..33f479337 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Kwajalein.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Kwajalein.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Kwajalein diff --git a/SOPE/NGCards/TimeZones/Pacific/Majuro.ics b/SOPE/NGCards/TimeZones/Pacific/Majuro.ics index ec61f9043..bbc050402 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Majuro.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Majuro.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Majuro diff --git a/SOPE/NGCards/TimeZones/Pacific/Marquesas.ics b/SOPE/NGCards/TimeZones/Pacific/Marquesas.ics index 1b6e90549..09c32491b 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Marquesas.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Marquesas.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Marquesas diff --git a/SOPE/NGCards/TimeZones/Pacific/Midway.ics b/SOPE/NGCards/TimeZones/Pacific/Midway.ics index 1e7526cc6..3a0114f2a 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Midway.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Midway.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Midway diff --git a/SOPE/NGCards/TimeZones/Pacific/Nauru.ics b/SOPE/NGCards/TimeZones/Pacific/Nauru.ics index 2e5aaceab..f95f1bdae 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Nauru.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Nauru.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Nauru diff --git a/SOPE/NGCards/TimeZones/Pacific/Niue.ics b/SOPE/NGCards/TimeZones/Pacific/Niue.ics index e54772e00..809002904 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Niue.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Niue.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Niue diff --git a/SOPE/NGCards/TimeZones/Pacific/Norfolk.ics b/SOPE/NGCards/TimeZones/Pacific/Norfolk.ics index 0e4ab1c0f..bf29b647e 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Norfolk.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Norfolk.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Norfolk diff --git a/SOPE/NGCards/TimeZones/Pacific/Noumea.ics b/SOPE/NGCards/TimeZones/Pacific/Noumea.ics index a843996e4..b2993c61d 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Noumea.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Noumea.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Noumea diff --git a/SOPE/NGCards/TimeZones/Pacific/Pago_Pago.ics b/SOPE/NGCards/TimeZones/Pacific/Pago_Pago.ics index a8422a1e0..8b0cdcd2d 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Pago_Pago.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Pago_Pago.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Pago_Pago diff --git a/SOPE/NGCards/TimeZones/Pacific/Palau.ics b/SOPE/NGCards/TimeZones/Pacific/Palau.ics index d20da0487..fedb561b8 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Palau.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Palau.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Palau diff --git a/SOPE/NGCards/TimeZones/Pacific/Pitcairn.ics b/SOPE/NGCards/TimeZones/Pacific/Pitcairn.ics index 3cd8ae58f..6715340a0 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Pitcairn.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Pitcairn.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Pitcairn diff --git a/SOPE/NGCards/TimeZones/Pacific/Pohnpei.ics b/SOPE/NGCards/TimeZones/Pacific/Pohnpei.ics index 171078c1b..dea718b8b 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Pohnpei.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Pohnpei.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Pohnpei diff --git a/SOPE/NGCards/TimeZones/Pacific/Port_Moresby.ics b/SOPE/NGCards/TimeZones/Pacific/Port_Moresby.ics index 7c6bd5ab3..77adeae18 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Port_Moresby.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Port_Moresby.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Port_Moresby diff --git a/SOPE/NGCards/TimeZones/Pacific/Rarotonga.ics b/SOPE/NGCards/TimeZones/Pacific/Rarotonga.ics index 5d338ace2..67150a539 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Rarotonga.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Rarotonga.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Rarotonga diff --git a/SOPE/NGCards/TimeZones/Pacific/Saipan.ics b/SOPE/NGCards/TimeZones/Pacific/Saipan.ics index 9e2657025..d807627d0 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Saipan.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Saipan.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Saipan diff --git a/SOPE/NGCards/TimeZones/Pacific/Tahiti.ics b/SOPE/NGCards/TimeZones/Pacific/Tahiti.ics index 49f65f443..47a0a65a2 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Tahiti.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Tahiti.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Tahiti diff --git a/SOPE/NGCards/TimeZones/Pacific/Tarawa.ics b/SOPE/NGCards/TimeZones/Pacific/Tarawa.ics index 95ec5c0ba..891bf4473 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Tarawa.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Tarawa.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Tarawa diff --git a/SOPE/NGCards/TimeZones/Pacific/Tongatapu.ics b/SOPE/NGCards/TimeZones/Pacific/Tongatapu.ics index f76bd985b..f1b447586 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Tongatapu.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Tongatapu.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Tongatapu diff --git a/SOPE/NGCards/TimeZones/Pacific/Wake.ics b/SOPE/NGCards/TimeZones/Pacific/Wake.ics index 3b1440224..21cc1f0c9 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Wake.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Wake.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Wake diff --git a/SOPE/NGCards/TimeZones/Pacific/Wallis.ics b/SOPE/NGCards/TimeZones/Pacific/Wallis.ics index 39005411b..7823e2d40 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Wallis.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Wallis.ics @@ -1,5 +1,5 @@ BEGIN:VCALENDAR -PRODID:-//Inverse inc.//NONSGML Olson 2012j//EN +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific/Wallis From 54d8aa88870f585ba9bb6422ed7dc68d8a980ea5 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 6 Nov 2014 11:10:31 -0500 Subject: [PATCH 067/198] Added new zone files --- SOPE/NGCards/TimeZones/Antarctica/Troll.ics | 22 +++++++++++++++++++++ SOPE/NGCards/TimeZones/Asia/Khandyga.ics | 14 +++++++++++++ SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics | 14 +++++++++++++ SOPE/NGCards/TimeZones/Europe/Busingen.ics | 22 +++++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 SOPE/NGCards/TimeZones/Antarctica/Troll.ics create mode 100644 SOPE/NGCards/TimeZones/Asia/Khandyga.ics create mode 100644 SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics create mode 100644 SOPE/NGCards/TimeZones/Europe/Busingen.ics diff --git a/SOPE/NGCards/TimeZones/Antarctica/Troll.ics b/SOPE/NGCards/TimeZones/Antarctica/Troll.ics new file mode 100644 index 000000000..e560dec5b --- /dev/null +++ b/SOPE/NGCards/TimeZones/Antarctica/Troll.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Antarctica/Troll +X-LIC-LOCATION:Antarctica/Troll +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19700329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0000 +TZNAME:UTC +DTSTART:19701025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Khandyga.ics b/SOPE/NGCards/TimeZones/Asia/Khandyga.ics new file mode 100644 index 000000000..58f9af4b5 --- /dev/null +++ b/SOPE/NGCards/TimeZones/Asia/Khandyga.ics @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Asia/Khandyga +X-LIC-LOCATION:Asia/Khandyga +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:YAKT +DTSTART:19700101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics b/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics new file mode 100644 index 000000000..cb3177715 --- /dev/null +++ b/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Asia/Ust-Nera +X-LIC-LOCATION:Asia/Ust-Nera +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1100 +TZNAME:VLAT +DTSTART:19700101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Europe/Busingen.ics b/SOPE/NGCards/TimeZones/Europe/Busingen.ics new file mode 100644 index 000000000..f95294d59 --- /dev/null +++ b/SOPE/NGCards/TimeZones/Europe/Busingen.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Europe/Busingen +X-LIC-LOCATION:Europe/Busingen +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 From 11a4c1358d6c1b9f6e5bb0fef63572a90d34ff16 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 6 Nov 2014 11:23:34 -0500 Subject: [PATCH 068/198] Fixed corrupted PNG files (#2975) --- NEWS | 1 + UI/WebServerResources/arrow-left.png | Bin 261 -> 264 bytes UI/WebServerResources/arrow-right.png | Bin 279 -> 263 bytes UI/WebServerResources/minus.png | Bin 2710 -> 2703 bytes UI/WebServerResources/plus.png | Bin 2726 -> 2704 bytes 5 files changed, 1 insertion(+) diff --git a/NEWS b/NEWS index 5a468e029..129582eaf 100644 --- a/NEWS +++ b/NEWS @@ -19,6 +19,7 @@ Bug fixes - fixed rename of subscribed addressbooks - sanitize strings before escaping them when using EAS - fixed handling of event invitations on iOS/EAS with no organizer (#2978) + - fixed corrupted png files (#2975) 2.2.9a (2014-09-29) ------------------- diff --git a/UI/WebServerResources/arrow-left.png b/UI/WebServerResources/arrow-left.png index 32f22f15def742c79ac2c089c872892f2ab5fbee..0a02a6232ef5eef39df0b663352d086bb613c742 100644 GIT binary patch delta 208 zcmZo=>R_56$-&IPz)f_=Ld?%TB#D4tX|=lzGzz0I%ufjR|Bg8YJkG%{ds@Lg2_ z6kts9c6SkcwAFSOkYnTN;uyklJ+#M=ufagzFpsXS#zNaC|JSFUIP&B~7mq{ibH)#P xE19>ZY`q|r6THpzM(TgwuTLf~WeX^`(yZ?}!gOQnw6HvoHJ+}1F6*2Ung9u~RNw#r delta 205 zcmV;;05boG0)+yQ85#xv002Up%q0K-00v@9M??Vc0Pq0w!nZpIks&L8l1W5CR0!9F z(6J4|Fc3!JcZVe>6-Y1*BV>S7?7%GSK;;240!uJMB&sA1#-;!wh$C_B_pbSc*)`1x z%Nmb|>wwJA7G~#(cL2K3q2He$JYPZrU`(&zjr<^>su<@Sb~R==MP=C{DJ&v@_WhP5 zhQr>-Vo=vL{?UTUVx#~lRdr+tw=9Y=W;;-@0Zr2m@^8r}1@TG|n^6qh00000NkvXX Hu0mjf`4v+^ diff --git a/UI/WebServerResources/arrow-right.png b/UI/WebServerResources/arrow-right.png index ef4378f4261aebb0ed8cc0381db86f8e6c38534a..0b04f17c3cfacb4dad58b0d06eed1a5c49ffe580 100644 GIT binary patch delta 207 zcmbQv)Xp?Pl7pFnfuYpZMtq{NcD-4EPlzj!ziQR0&6}rhSvPgdmTB82PTaO(`nGKo zw{4rbciV!!JD2R+ws7B$1^ad_+_!5fP&}z_&ifCadz)YR19b|N1o;I6X=K3O;Jc~< zD8QKH?d~G@XshimAjjI%#W95AdT5U)AAn7CYAa%)j(TH0h+O(Hgtl--#293k1y{_n+sk;bl&078d!*00f?{elF{r5}E){ Cx+Q`D diff --git a/UI/WebServerResources/plus.png b/UI/WebServerResources/plus.png index bf37a17df5679f41182a13cc7e1e7166a25d594b..7a0ae732fcfd6429ed0741cb7496c56074e716a2 100644 GIT binary patch delta 198 zcmV;%06G7r6_6E>83+Ra007rd_9C$%z6pOnP)t-s|Ns90004W8!h4LvdyT|=jKh45 z#C?v$s^i6qXcq79yjjY<)VlK2Ya)#Gs`jn+U}1aX8Hy6Wvc~Kx;x-{FA-ra z&~$)lflL0xM*G6TG@p&bq>hUI6CtWQ&~!2)mmq_+3OanE%&Vo!w7yQh9U{2j&+SM{ zutDS;Jkbkc9S8}cM!BknkBB&(3o?D2z=HByIqVQ!oS=9ZzY9Au)jRROJ83UlFZm6a W=5&c)-e1!I0000 Date: Fri, 7 Nov 2014 10:06:53 -0500 Subject: [PATCH 069/198] Fix borken ORGANIZER fields during the PUT action --- SoObjects/Appointments/SOGoAppointmentObject.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index 620900854..b10ce0c59 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -1768,6 +1768,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent * Verify vCalendar for any inconsistency or missing attributes. * Currently only check if the events have an end date or a duration. * We also check for the default transparency parameters. + * We also check for broken ORGANIZER such as "ORGANIZER;:mailto:sogo3@example.com" * @param rq the HTTP PUT request */ - (void) _adjustEventsInRequestCalendar: (iCalCalendar *) rqCalendar @@ -1792,7 +1793,10 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent [self warnWithFormat: @"Invalid event: no end date; setting duration to %@", [event duration]]; } - + if ([event organizer] && ![[[event organizer] cn] length]) + { + [[event organizer] setCn: [[event organizer] rfc822Email]]; + } } } From 395a8ddcfefbd0a897274aa278f30c3fc545f4ac Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 7 Nov 2014 10:36:11 -0500 Subject: [PATCH 070/198] Updated once more the tz and added missing zones --- SOPE/NGCards/TimeZones/America/Grand_Turk.ics | 14 +++----------- SOPE/NGCards/TimeZones/America/Metlakatla.ics | 2 +- SOPE/NGCards/TimeZones/Antarctica/Casey.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Chita.ics | 14 ++++++++++++++ SOPE/NGCards/TimeZones/Asia/Irkutsk.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Khandyga.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Magadan.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics | 2 +- SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Omsk.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Sakhalin.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Srednekolymsk.ics | 14 ++++++++++++++ SOPE/NGCards/TimeZones/Asia/Urumqi.ics | 6 +++--- SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Vladivostok.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Yakutsk.ics | 4 ++-- SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Adelaide.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Brisbane.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Currie.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Darwin.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Eucla.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Hobart.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Lindeman.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Melbourne.ics | 4 ++-- SOPE/NGCards/TimeZones/Australia/Perth.ics | 2 +- SOPE/NGCards/TimeZones/Australia/Sydney.ics | 4 ++-- SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics | 6 +++--- SOPE/NGCards/TimeZones/Europe/Minsk.ics | 2 +- SOPE/NGCards/TimeZones/Europe/Moscow.ics | 4 ++-- SOPE/NGCards/TimeZones/Europe/Simferopol.ics | 4 ++-- SOPE/NGCards/TimeZones/Europe/Volgograd.ics | 6 +++--- SOPE/NGCards/TimeZones/Pacific/Apia.ics | 2 +- SOPE/NGCards/TimeZones/Pacific/Bougainville.ics | 14 ++++++++++++++ SOPE/NGCards/TimeZones/Pacific/Fiji.ics | 6 +++--- SOPE/NGCards/TimeZones/UPDATING | 4 ++-- 39 files changed, 108 insertions(+), 74 deletions(-) create mode 100644 SOPE/NGCards/TimeZones/Asia/Chita.ics create mode 100644 SOPE/NGCards/TimeZones/Asia/Srednekolymsk.ics create mode 100644 SOPE/NGCards/TimeZones/Pacific/Bougainville.ics diff --git a/SOPE/NGCards/TimeZones/America/Grand_Turk.ics b/SOPE/NGCards/TimeZones/America/Grand_Turk.ics index e699c2a5b..c3a986d75 100644 --- a/SOPE/NGCards/TimeZones/America/Grand_Turk.ics +++ b/SOPE/NGCards/TimeZones/America/Grand_Turk.ics @@ -4,19 +4,11 @@ VERSION:2.0 BEGIN:VTIMEZONE TZID:America/Grand_Turk X-LIC-LOCATION:America/Grand_Turk -BEGIN:DAYLIGHT -TZOFFSETFROM:-0500 -TZOFFSETTO:-0400 -TZNAME:EDT -DTSTART:19700308T020000 -RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU -END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:-0400 -TZOFFSETTO:-0500 -TZNAME:EST -DTSTART:19701101T020000 -RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/America/Metlakatla.ics b/SOPE/NGCards/TimeZones/America/Metlakatla.ics index 1c6f8f005..a01939128 100644 --- a/SOPE/NGCards/TimeZones/America/Metlakatla.ics +++ b/SOPE/NGCards/TimeZones/America/Metlakatla.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:America/Metlakatla BEGIN:STANDARD TZOFFSETFROM:-0800 TZOFFSETTO:-0800 -TZNAME:MeST +TZNAME:PST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Antarctica/Casey.ics b/SOPE/NGCards/TimeZones/Antarctica/Casey.ics index 874809b0d..5615ec486 100644 --- a/SOPE/NGCards/TimeZones/Antarctica/Casey.ics +++ b/SOPE/NGCards/TimeZones/Antarctica/Casey.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Antarctica/Casey BEGIN:STANDARD TZOFFSETFROM:+0800 TZOFFSETTO:+0800 -TZNAME:WST +TZNAME:AWST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Chita.ics b/SOPE/NGCards/TimeZones/Asia/Chita.ics new file mode 100644 index 000000000..0a2dc2847 --- /dev/null +++ b/SOPE/NGCards/TimeZones/Asia/Chita.ics @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Asia/Chita +X-LIC-LOCATION:Asia/Chita +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:IRKT +DTSTART:19700101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics b/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics index 986c30034..34d6aec6f 100644 --- a/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Irkutsk.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Irkutsk X-LIC-LOCATION:Asia/Irkutsk BEGIN:STANDARD -TZOFFSETFROM:+0900 -TZOFFSETTO:+0900 +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 TZNAME:IRKT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Khandyga.ics b/SOPE/NGCards/TimeZones/Asia/Khandyga.ics index 58f9af4b5..c6748f928 100644 --- a/SOPE/NGCards/TimeZones/Asia/Khandyga.ics +++ b/SOPE/NGCards/TimeZones/Asia/Khandyga.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Khandyga X-LIC-LOCATION:Asia/Khandyga BEGIN:STANDARD -TZOFFSETFROM:+1000 -TZOFFSETTO:+1000 +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 TZNAME:YAKT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics b/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics index 4e502d496..0e6b6866b 100644 --- a/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Krasnoyarsk.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Krasnoyarsk X-LIC-LOCATION:Asia/Krasnoyarsk BEGIN:STANDARD -TZOFFSETFROM:+0800 -TZOFFSETTO:+0800 +TZOFFSETFROM:+0700 +TZOFFSETTO:+0700 TZNAME:KRAT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Magadan.ics b/SOPE/NGCards/TimeZones/Asia/Magadan.ics index 9a8e24169..f6f1831fe 100644 --- a/SOPE/NGCards/TimeZones/Asia/Magadan.ics +++ b/SOPE/NGCards/TimeZones/Asia/Magadan.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Magadan X-LIC-LOCATION:Asia/Magadan BEGIN:STANDARD -TZOFFSETFROM:+1200 -TZOFFSETTO:+1200 +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 TZNAME:MAGT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics b/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics index d862fc84b..44fab38ff 100644 --- a/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Novokuznetsk.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Asia/Novokuznetsk BEGIN:STANDARD TZOFFSETFROM:+0700 TZOFFSETTO:+0700 -TZNAME:NOVT +TZNAME:KRAT DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics b/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics index 329d0507b..b990bac67 100644 --- a/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Novosibirsk.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Novosibirsk X-LIC-LOCATION:Asia/Novosibirsk BEGIN:STANDARD -TZOFFSETFROM:+0700 -TZOFFSETTO:+0700 +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 TZNAME:NOVT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Omsk.ics b/SOPE/NGCards/TimeZones/Asia/Omsk.ics index 6428765ad..6b1dc7288 100644 --- a/SOPE/NGCards/TimeZones/Asia/Omsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Omsk.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Omsk X-LIC-LOCATION:Asia/Omsk BEGIN:STANDARD -TZOFFSETFROM:+0700 -TZOFFSETTO:+0700 +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 TZNAME:OMST DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics b/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics index 432ce25cd..b5a09f49c 100644 --- a/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics +++ b/SOPE/NGCards/TimeZones/Asia/Sakhalin.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Sakhalin X-LIC-LOCATION:Asia/Sakhalin BEGIN:STANDARD -TZOFFSETFROM:+1100 -TZOFFSETTO:+1100 +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 TZNAME:SAKT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Srednekolymsk.ics b/SOPE/NGCards/TimeZones/Asia/Srednekolymsk.ics new file mode 100644 index 000000000..923d7119b --- /dev/null +++ b/SOPE/NGCards/TimeZones/Asia/Srednekolymsk.ics @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Asia/Srednekolymsk +X-LIC-LOCATION:Asia/Srednekolymsk +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1100 +TZNAME:SRET +DTSTART:19700101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Asia/Urumqi.ics b/SOPE/NGCards/TimeZones/Asia/Urumqi.ics index 1d9e782ed..aac45f973 100644 --- a/SOPE/NGCards/TimeZones/Asia/Urumqi.ics +++ b/SOPE/NGCards/TimeZones/Asia/Urumqi.ics @@ -5,9 +5,9 @@ BEGIN:VTIMEZONE TZID:Asia/Urumqi X-LIC-LOCATION:Asia/Urumqi BEGIN:STANDARD -TZOFFSETFROM:+0800 -TZOFFSETTO:+0800 -TZNAME:CST +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:XJT DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics b/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics index cb3177715..f2074d8c5 100644 --- a/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics +++ b/SOPE/NGCards/TimeZones/Asia/Ust-Nera.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Ust-Nera X-LIC-LOCATION:Asia/Ust-Nera BEGIN:STANDARD -TZOFFSETFROM:+1100 -TZOFFSETTO:+1100 +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 TZNAME:VLAT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics b/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics index 99e5dbee0..0a2d901de 100644 --- a/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics +++ b/SOPE/NGCards/TimeZones/Asia/Vladivostok.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Vladivostok X-LIC-LOCATION:Asia/Vladivostok BEGIN:STANDARD -TZOFFSETFROM:+1100 -TZOFFSETTO:+1100 +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 TZNAME:VLAT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics b/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics index bd1b8b698..735464d28 100644 --- a/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics +++ b/SOPE/NGCards/TimeZones/Asia/Yakutsk.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Yakutsk X-LIC-LOCATION:Asia/Yakutsk BEGIN:STANDARD -TZOFFSETFROM:+1000 -TZOFFSETTO:+1000 +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 TZNAME:YAKT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics b/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics index 6f6bb6f13..5aa0e25ea 100644 --- a/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics +++ b/SOPE/NGCards/TimeZones/Asia/Yekaterinburg.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Asia/Yekaterinburg X-LIC-LOCATION:Asia/Yekaterinburg BEGIN:STANDARD -TZOFFSETFROM:+0600 -TZOFFSETTO:+0600 +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 TZNAME:YEKT DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Australia/Adelaide.ics b/SOPE/NGCards/TimeZones/Australia/Adelaide.ics index 285d9d374..66b3ac307 100644 --- a/SOPE/NGCards/TimeZones/Australia/Adelaide.ics +++ b/SOPE/NGCards/TimeZones/Australia/Adelaide.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Adelaide BEGIN:STANDARD TZOFFSETFROM:+1030 TZOFFSETTO:+0930 -TZNAME:CST +TZNAME:ACST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+0930 TZOFFSETTO:+1030 -TZNAME:CST +TZNAME:ACDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT diff --git a/SOPE/NGCards/TimeZones/Australia/Brisbane.ics b/SOPE/NGCards/TimeZones/Australia/Brisbane.ics index 0944788c0..7a45ea91c 100644 --- a/SOPE/NGCards/TimeZones/Australia/Brisbane.ics +++ b/SOPE/NGCards/TimeZones/Australia/Brisbane.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Australia/Brisbane BEGIN:STANDARD TZOFFSETFROM:+1000 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics b/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics index 99d4120d1..907cc1e5e 100644 --- a/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics +++ b/SOPE/NGCards/TimeZones/Australia/Broken_Hill.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Broken_Hill BEGIN:STANDARD TZOFFSETFROM:+1030 TZOFFSETTO:+0930 -TZNAME:CST +TZNAME:ACST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+0930 TZOFFSETTO:+1030 -TZNAME:CST +TZNAME:ACDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT diff --git a/SOPE/NGCards/TimeZones/Australia/Currie.ics b/SOPE/NGCards/TimeZones/Australia/Currie.ics index d2fcdad77..ef930e5b9 100644 --- a/SOPE/NGCards/TimeZones/Australia/Currie.ics +++ b/SOPE/NGCards/TimeZones/Australia/Currie.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Currie BEGIN:DAYLIGHT TZOFFSETFROM:+1000 TZOFFSETTO:+1100 -TZNAME:EST +TZNAME:AEDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+1100 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Australia/Darwin.ics b/SOPE/NGCards/TimeZones/Australia/Darwin.ics index dc9690961..7fa76ef0b 100644 --- a/SOPE/NGCards/TimeZones/Australia/Darwin.ics +++ b/SOPE/NGCards/TimeZones/Australia/Darwin.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Australia/Darwin BEGIN:STANDARD TZOFFSETFROM:+0930 TZOFFSETTO:+0930 -TZNAME:CST +TZNAME:ACST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Australia/Eucla.ics b/SOPE/NGCards/TimeZones/Australia/Eucla.ics index 1d00525e5..6005ce50b 100644 --- a/SOPE/NGCards/TimeZones/Australia/Eucla.ics +++ b/SOPE/NGCards/TimeZones/Australia/Eucla.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Australia/Eucla BEGIN:STANDARD TZOFFSETFROM:+0845 TZOFFSETTO:+0845 -TZNAME:CWST +TZNAME:ACWST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Australia/Hobart.ics b/SOPE/NGCards/TimeZones/Australia/Hobart.ics index f49a1aca8..978063408 100644 --- a/SOPE/NGCards/TimeZones/Australia/Hobart.ics +++ b/SOPE/NGCards/TimeZones/Australia/Hobart.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Hobart BEGIN:DAYLIGHT TZOFFSETFROM:+1000 TZOFFSETTO:+1100 -TZNAME:EST +TZNAME:AEDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+1100 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Australia/Lindeman.ics b/SOPE/NGCards/TimeZones/Australia/Lindeman.ics index 490d46f5a..cfe9cdf50 100644 --- a/SOPE/NGCards/TimeZones/Australia/Lindeman.ics +++ b/SOPE/NGCards/TimeZones/Australia/Lindeman.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Australia/Lindeman BEGIN:STANDARD TZOFFSETFROM:+1000 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics b/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics index eca262031..3340d9e96 100644 --- a/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics +++ b/SOPE/NGCards/TimeZones/Australia/Lord_Howe.ics @@ -14,7 +14,7 @@ END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+1030 TZOFFSETTO:+1100 -TZNAME:LHST +TZNAME:LHDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT diff --git a/SOPE/NGCards/TimeZones/Australia/Melbourne.ics b/SOPE/NGCards/TimeZones/Australia/Melbourne.ics index 262e2c272..a7bb35647 100644 --- a/SOPE/NGCards/TimeZones/Australia/Melbourne.ics +++ b/SOPE/NGCards/TimeZones/Australia/Melbourne.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Melbourne BEGIN:STANDARD TZOFFSETFROM:+1100 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+1000 TZOFFSETTO:+1100 -TZNAME:EST +TZNAME:AEDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT diff --git a/SOPE/NGCards/TimeZones/Australia/Perth.ics b/SOPE/NGCards/TimeZones/Australia/Perth.ics index d5744a6cf..ec00a350c 100644 --- a/SOPE/NGCards/TimeZones/Australia/Perth.ics +++ b/SOPE/NGCards/TimeZones/Australia/Perth.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Australia/Perth BEGIN:STANDARD TZOFFSETFROM:+0800 TZOFFSETTO:+0800 -TZNAME:WST +TZNAME:AWST DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Australia/Sydney.ics b/SOPE/NGCards/TimeZones/Australia/Sydney.ics index aa6d6534c..0a0642f03 100644 --- a/SOPE/NGCards/TimeZones/Australia/Sydney.ics +++ b/SOPE/NGCards/TimeZones/Australia/Sydney.ics @@ -7,14 +7,14 @@ X-LIC-LOCATION:Australia/Sydney BEGIN:STANDARD TZOFFSETFROM:+1100 TZOFFSETTO:+1000 -TZNAME:EST +TZNAME:AEST DTSTART:19700405T030000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD BEGIN:DAYLIGHT TZOFFSETFROM:+1000 TZOFFSETTO:+1100 -TZNAME:EST +TZNAME:AEDT DTSTART:19701004T020000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=1SU END:DAYLIGHT diff --git a/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics b/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics index 8beeff138..366fe4a5a 100644 --- a/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics +++ b/SOPE/NGCards/TimeZones/Europe/Kaliningrad.ics @@ -5,9 +5,9 @@ BEGIN:VTIMEZONE TZID:Europe/Kaliningrad X-LIC-LOCATION:Europe/Kaliningrad BEGIN:STANDARD -TZOFFSETFROM:+0300 -TZOFFSETTO:+0300 -TZNAME:FET +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Europe/Minsk.ics b/SOPE/NGCards/TimeZones/Europe/Minsk.ics index 67ee843bb..b33e610ee 100644 --- a/SOPE/NGCards/TimeZones/Europe/Minsk.ics +++ b/SOPE/NGCards/TimeZones/Europe/Minsk.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Europe/Minsk BEGIN:STANDARD TZOFFSETFROM:+0300 TZOFFSETTO:+0300 -TZNAME:FET +TZNAME:MSK DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Europe/Moscow.ics b/SOPE/NGCards/TimeZones/Europe/Moscow.ics index 98d09649f..f0e62dbc5 100644 --- a/SOPE/NGCards/TimeZones/Europe/Moscow.ics +++ b/SOPE/NGCards/TimeZones/Europe/Moscow.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Europe/Moscow X-LIC-LOCATION:Europe/Moscow BEGIN:STANDARD -TZOFFSETFROM:+0400 -TZOFFSETTO:+0400 +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 TZNAME:MSK DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Europe/Simferopol.ics b/SOPE/NGCards/TimeZones/Europe/Simferopol.ics index 55e053c80..68d857fc4 100644 --- a/SOPE/NGCards/TimeZones/Europe/Simferopol.ics +++ b/SOPE/NGCards/TimeZones/Europe/Simferopol.ics @@ -5,8 +5,8 @@ BEGIN:VTIMEZONE TZID:Europe/Simferopol X-LIC-LOCATION:Europe/Simferopol BEGIN:STANDARD -TZOFFSETFROM:+0400 -TZOFFSETTO:+0400 +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 TZNAME:MSK DTSTART:19700101T000000 END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Europe/Volgograd.ics b/SOPE/NGCards/TimeZones/Europe/Volgograd.ics index c3e398073..64490487a 100644 --- a/SOPE/NGCards/TimeZones/Europe/Volgograd.ics +++ b/SOPE/NGCards/TimeZones/Europe/Volgograd.ics @@ -5,9 +5,9 @@ BEGIN:VTIMEZONE TZID:Europe/Volgograd X-LIC-LOCATION:Europe/Volgograd BEGIN:STANDARD -TZOFFSETFROM:+0400 -TZOFFSETTO:+0400 -TZNAME:VOLT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK DTSTART:19700101T000000 END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/Pacific/Apia.ics b/SOPE/NGCards/TimeZones/Pacific/Apia.ics index 67abe5629..9b1853a34 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Apia.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Apia.ics @@ -7,7 +7,7 @@ X-LIC-LOCATION:Pacific/Apia BEGIN:STANDARD TZOFFSETFROM:+1400 TZOFFSETTO:+1300 -TZNAME:WST +TZNAME:WSST DTSTART:19700405T040000 RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU END:STANDARD diff --git a/SOPE/NGCards/TimeZones/Pacific/Bougainville.ics b/SOPE/NGCards/TimeZones/Pacific/Bougainville.ics new file mode 100644 index 000000000..2b97b3bd2 --- /dev/null +++ b/SOPE/NGCards/TimeZones/Pacific/Bougainville.ics @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +PRODID:-//Inverse inc.//NONSGML Olson 2014g//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:Pacific/Bougainville +X-LIC-LOCATION:Pacific/Bougainville +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1100 +TZNAME:BST +DTSTART:19700101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/SOPE/NGCards/TimeZones/Pacific/Fiji.ics b/SOPE/NGCards/TimeZones/Pacific/Fiji.ics index 543cbad38..224450303 100644 --- a/SOPE/NGCards/TimeZones/Pacific/Fiji.ics +++ b/SOPE/NGCards/TimeZones/Pacific/Fiji.ics @@ -8,14 +8,14 @@ BEGIN:DAYLIGHT TZOFFSETFROM:+1200 TZOFFSETTO:+1300 TZNAME:FJST -DTSTART:19701025T020000 -RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +DTSTART:19701101T020000 +RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+1300 TZOFFSETTO:+1200 TZNAME:FJT -DTSTART:19700118T020000 +DTSTART:19700118T030000 RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=-1SU END:STANDARD END:VTIMEZONE diff --git a/SOPE/NGCards/TimeZones/UPDATING b/SOPE/NGCards/TimeZones/UPDATING index ad8e4b6cd..d8a436434 100644 --- a/SOPE/NGCards/TimeZones/UPDATING +++ b/SOPE/NGCards/TimeZones/UPDATING @@ -7,8 +7,8 @@ To updated the timezone files: mkdir /tmp/zones cd /tmp/zones - wget ftp://munnari.oz.au/pub/oldtz/tzdata2012j.tar.gz - tar -zxvf tzdata2012j.tar.gz + wget http://www.iana.org/time-zones/repository/releases/tzdata2014i.tar.gz + tar -zxvf tzdata2014i.tar.gz 3- run the conversion tool From 624af1c0fb494abbf16fc4b8620b13f5e3bf4e7c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 10 Nov 2014 08:58:30 -0500 Subject: [PATCH 071/198] Fixed test --- Tests/Integration/test-davacl.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Integration/test-davacl.py b/Tests/Integration/test-davacl.py index a8a1a5bac..e155966c2 100755 --- a/Tests/Integration/test-davacl.py +++ b/Tests/Integration/test-davacl.py @@ -683,12 +683,12 @@ class DAVCalendarAclTest(DAVAclTest): if right == "r": exp_event = event_template % {"class": icsClass, "filename": filename, - "organizer_line": "ORGANIZER:mailto:nobody@somewhere.com\n", + "organizer_line": "ORGANIZER;CN=nobody@somewhere.com:mailto:nobody@somewhere.com\n", "attendee_line": att_line} else: exp_event = event_template % {"class": icsClass, "filename": filename, - "organizer_line": "ORGANIZER:mailto:someone@nowhere.com\n", + "organizer_line": "ORGANIZER;CN=someone@nowhere.com:mailto:someone@nowhere.com\n", "attendee_line": att_line} event = self._getEvent(event_class, True) ics_diff = utilities.ics_compare(exp_event, event) From df648c920467773b0871fde538f5003113ca7aab Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 10 Nov 2014 13:51:38 -0500 Subject: [PATCH 072/198] Add 'zip' to packages dependencies Fixes #2963 --- packaging/debian-multiarch/control | 2 +- packaging/debian/control | 2 +- packaging/rhel/sogo.spec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packaging/debian-multiarch/control b/packaging/debian-multiarch/control index 6b2ecab3d..1c142936f 100644 --- a/packaging/debian-multiarch/control +++ b/packaging/debian-multiarch/control @@ -10,7 +10,7 @@ Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same Section: web Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3 +Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3, zip Recommends: memcached Suggests: nginx Description: a modern and scalable groupware diff --git a/packaging/debian/control b/packaging/debian/control index ce0b019df..e60b86803 100644 --- a/packaging/debian/control +++ b/packaging/debian/control @@ -8,7 +8,7 @@ Standards-Version: 3.9.1 Package: sogo Section: web Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3 +Depends: ${shlibs:Depends}, ${misc:Depends}, tmpreaper, sope4.9-libxmlsaxdriver, sope4.9-db-connector, gnustep-make, libcurl3, zip Recommends: memcached Suggests: nginx Description: a modern and scalable groupware diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index c9321c0da..1eb88d82c 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -28,7 +28,7 @@ Group: Productivity/Groupware Source: SOGo-%{sogo_version}.tar.gz Prefix: /usr AutoReqProv: off -Requires: gnustep-base >= 1.23, sope%{sope_major_version}%{sope_minor_version}-core, httpd, sope%{sope_major_version}%{sope_minor_version}-core, sope%{sope_major_version}%{sope_minor_version}-appserver, sope%{sope_major_version}%{sope_minor_version}-ldap, sope%{sope_major_version}%{sope_minor_version}-cards >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-sbjson, libmemcached, memcached, tmpwatch +Requires: gnustep-base >= 1.23, sope%{sope_major_version}%{sope_minor_version}-core, httpd, sope%{sope_major_version}%{sope_minor_version}-core, sope%{sope_major_version}%{sope_minor_version}-appserver, sope%{sope_major_version}%{sope_minor_version}-ldap, sope%{sope_major_version}%{sope_minor_version}-cards >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-gdl1-contentstore >= %{sogo_version}, sope%{sope_major_version}%{sope_minor_version}-sbjson, libmemcached, memcached, tmpwatch, zip BuildRoot: %{_tmppath}/%{name}-%{version}-%{release} BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{sope_minor_version}-appserver-devel sope%{sope_major_version}%{sope_minor_version}-core-devel sope%{sope_major_version}%{sope_minor_version}-ldap-devel sope%{sope_major_version}%{sope_minor_version}-mime-devel sope%{sope_major_version}%{sope_minor_version}-xml-devel sope%{sope_major_version}%{sope_minor_version}-gdl1-devel sope%{sope_major_version}%{sope_minor_version}-sbjson-devel libmemcached-devel sed %{?oc_build_depends} From cb8b0b028ed852bc0877237bf76296ee17aaa1d8 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 10 Nov 2014 16:15:05 -0500 Subject: [PATCH 073/198] Disable lasso for RHEL7 for now --- packaging/rhel/sogo.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 1eb88d82c..32c5b314a 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -42,6 +42,7 @@ BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{so # saml is enabled everywhere except on el5 since its glib2 is prehistoric %define saml2_cfg_opts "--enable-saml2" %{?el5:%define saml2_cfg_opts ""} +%{?el7:%define saml2_cfg_opts ""} %{?!el5:Requires: lasso} %{?!el5:BuildRequires: lasso-devel} From d8e6447fcc6f41687668fdd3649f4b58478bdcff Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 10 Nov 2014 16:17:06 -0500 Subject: [PATCH 074/198] More disable lasso --- packaging/rhel/sogo.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 32c5b314a..42114f575 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -43,8 +43,8 @@ BuildRequires: gcc-objc gnustep-base gnustep-make sope%{sope_major_version}%{so %define saml2_cfg_opts "--enable-saml2" %{?el5:%define saml2_cfg_opts ""} %{?el7:%define saml2_cfg_opts ""} -%{?!el5:Requires: lasso} -%{?!el5:BuildRequires: lasso-devel} +%{?el6:Requires: lasso} +%{?el6:BuildRequires: lasso-devel} %description SOGo is a groupware server built around OpenGroupware.org (OGo) and From 5284b57340d917417ed489875cffbdc5fcbb00e7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 10 Nov 2014 16:19:10 -0500 Subject: [PATCH 075/198] More EL7 fixes --- packaging/rhel/sogo.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 42114f575..55196b2a1 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -174,7 +174,11 @@ rm -fr ${RPM_BUILD_ROOT} # ****************************** build ******************************** %build +%if %{el7} +. /usr/lib64/GNUstep/Makefiles/GNUstep.sh +%else . /usr/share/GNUstep/Makefiles/GNUstep.sh +%endif ./configure %saml2_cfg_opts case %{_target_platform} in From c159d5461bbb26edbe8485ca4461de62f008107c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 10:02:04 -0500 Subject: [PATCH 076/198] disable rpm-check-build for now --- packaging/rhel/sogo.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 55196b2a1..4c64faea0 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -201,6 +201,8 @@ make CC="$cc" LDFLAGS="$ldflags" messages=yes # ****************************** install ****************************** %install +QA_SKIP_BUILD_ROOT=1 +export QA_SKIP_BUILD_ROOT case %{_target_platform} in ppc64-*) From 715999edc80fa434f2bf882e666a47111c5d2c39 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 12:54:07 -0500 Subject: [PATCH 077/198] Avoid compilation failures on non-RHEL 7 distros --- packaging/rhel/sogo.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 4c64faea0..46e7fea59 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -174,7 +174,7 @@ rm -fr ${RPM_BUILD_ROOT} # ****************************** build ******************************** %build -%if %{el7} +%if %0{?el7} . /usr/lib64/GNUstep/Makefiles/GNUstep.sh %else . /usr/share/GNUstep/Makefiles/GNUstep.sh From 8e1dc0ecb06b899b20336bb2928050f93c80fc5a Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 12:56:34 -0500 Subject: [PATCH 078/198] Typo in previous commit --- packaging/rhel/sogo.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/rhel/sogo.spec b/packaging/rhel/sogo.spec index 46e7fea59..8f275e956 100644 --- a/packaging/rhel/sogo.spec +++ b/packaging/rhel/sogo.spec @@ -174,7 +174,7 @@ rm -fr ${RPM_BUILD_ROOT} # ****************************** build ******************************** %build -%if %0{?el7} +%if 0%{?el7} . /usr/lib64/GNUstep/Makefiles/GNUstep.sh %else . /usr/share/GNUstep/Makefiles/GNUstep.sh From d25fe1a58b23e012e83b52979ce98020b4bd5f63 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 14:57:54 -0500 Subject: [PATCH 079/198] Dramatically improved BSON deserialization speed by avoiding tz name lookups --- SoObjects/SOGo/BSONCodec.m | 39 +++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/SoObjects/SOGo/BSONCodec.m b/SoObjects/SOGo/BSONCodec.m index 58625a59f..a55eede3c 100644 --- a/SoObjects/SOGo/BSONCodec.m +++ b/SoObjects/SOGo/BSONCodec.m @@ -11,6 +11,8 @@ #import #import +static NSMutableDictionary *timezoneCache = nil; + #define BSONTYPE(tag,className) [className class], [NSNumber numberWithChar: (tag)] #ifndef objc_msgSend @@ -579,11 +581,38 @@ static NSDictionary *BSONTypes() + (id) BSONFragment: (NSData *) data at: (const void **) base ofType: (uint8_t) typeID { - NSString *v; - - v = [NSString BSONFragment: data at: base ofType: 0x02]; + NSTimeZone *tz; + NSString *key; - return [NSCalendarDate dateWithString: v - calendarFormat: @"%Y-%m-%d %H:%M:%S %Z"]; + unsigned int year, month, day, hour, minute, second; + char timezone[64]; + const char *v; + + if (!timezoneCache) + timezoneCache = [[NSMutableDictionary alloc] init]; + + v = [[NSString BSONFragment: data at: base ofType: 0x02] cStringUsingEncoding: NSASCIIStringEncoding]; + + sscanf(v, "%d-%d-%d %d:%d:%d %s", &year, &month, &day, &hour, &minute, &second, timezone); + + key = [NSString stringWithFormat: @"%s", timezone]; + + if (!(tz = [timezoneCache objectForKey: key])) + { + tz = [NSTimeZone timeZoneWithAbbreviation: key]; + + if (tz) + [timezoneCache setObject: tz forKey: key]; + else + NSLog(@"ERROR: timezone (%@) not found when deserializing BSON data", key); + } + + return [NSCalendarDate dateWithYear: year + month: month + day: day + hour: hour + minute: minute + second: second + timeZone: tz]; } @end From ea43f4a635124fc012f994a02b95a9f277d4345e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 15:05:05 -0500 Subject: [PATCH 080/198] Comment improvement --- ActiveSync/SOGoActiveSyncDispatcher.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 58c58e455..cc57836c8 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -2401,7 +2401,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } else { - // Ping command with empty body + // Ping or Sync command with empty body cmdName = [NSString stringWithFormat: @"process%@:inResponse:", cmdName]; } From c0f0f2023c09352179251c9158d9014d9fab55a7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 12 Nov 2014 15:09:26 -0500 Subject: [PATCH 081/198] added NEWS entry for BSON goodie --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index 129582eaf..027a5fd67 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,7 @@ Bug fixes - sanitize strings before escaping them when using EAS - fixed handling of event invitations on iOS/EAS with no organizer (#2978) - fixed corrupted png files (#2975) + - improved dramatically the BSON decoding speed 2.2.9a (2014-09-29) ------------------- From b3cd609ae76414237db120fd76545afe11f6346b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 14 Nov 2014 09:13:14 -0500 Subject: [PATCH 082/198] Added WindowSize support for GCS collections --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 200 +++++++++++++++------ NEWS | 1 + 2 files changed, 149 insertions(+), 52 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 86a2e5c89..1c15f37e6 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -29,11 +29,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #import "SOGoActiveSyncDispatcher+Sync.h" - #import #import #import #import +#import #import #import #import @@ -122,7 +122,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [o setObjectType: ActiveSyncFolderCacheObject]; [o setTableUrl: [self folderTableURL]]; [o reloadIfNeeded]; - + [[o properties] removeObjectForKey: @"SyncKey"]; [[o properties] removeObjectForKey: @"SyncCache"]; [[o properties] removeObjectForKey: @"DateCache"]; @@ -147,6 +147,29 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. return [o properties]; } +- (NSString *) _getNameInCache: (id) theCollection withType: (SOGoMicrosoftActiveSyncFolderType) theFolderType +{ + NSString *nameInCache; + + if (theFolderType == ActiveSyncMailFolder) + nameInCache= [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]; + else + { + NSString *component_name; + if (theFolderType == ActiveSyncContactFolder) + component_name = @"vcard"; + else if (theFolderType == ActiveSyncEventFolder) + component_name = @"vevent"; + else + component_name = @"vtodo"; + + nameInCache= [NSString stringWithFormat: @"%@/%@", component_name, [theCollection nameInContainer]]; + } + + return nameInCache; +} + + // // @@ -190,7 +213,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. withType: (SOGoMicrosoftActiveSyncFolderType) theFolderType inBuffer: (NSMutableString *) theBuffer { - NSMutableDictionary *allValues; + NSMutableDictionary *folderMetadata, *dateCache, *syncCache, *allValues; NSString *clientId, *serverId; NSArray *additions; @@ -276,6 +299,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [theBuffer appendFormat: @"%@", serverId]; [theBuffer appendFormat: @"%d", 1]; [theBuffer appendString: @""]; + + // Update syncCache + folderMetadata = [self _folderMetadataForKey: [self _getNameInCache: theCollection withType: theFolderType]]; + + syncCache = [folderMetadata objectForKey: @"SyncCache"]; + dateCache = [folderMetadata objectForKey: @"DateCache"]; + + [syncCache setObject: [folderMetadata objectForKey: @"SyncKey"] forKey: serverId]; + [dateCache setObject: [NSCalendarDate date] forKey: serverId]; + + [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]]; } } } @@ -440,6 +474,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [theBuffer appendFormat: @"%@", serverId]; [theBuffer appendFormat: @"%d", 1]; [theBuffer appendString: @""]; + + // update syncCache + NSMutableDictionary *folderMetadata, *dateCache, *syncCache; + folderMetadata = [self _folderMetadataForKey: [self _getNameInCache: theCollection withType: theFolderType]]; + + syncCache = [folderMetadata objectForKey: @"SyncCache"]; + dateCache = [folderMetadata objectForKey: @"DateCache"]; + + [syncCache removeObjectForKey: serverId]; + [dateCache removeObjectForKey: serverId]; + + [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]]; } } } @@ -497,19 +543,30 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. more_available = NO; - if (theFolderType == ActiveSyncMailFolder && !([theSyncKey isEqualToString: @"-1"]) && theFilterType) + folderMetadata = [self _folderMetadataForKey: [self _getNameInCache: theCollection withType: theFolderType]]; + + // If this is a new sync operation, DateCache and SyncCache needs to be deleted + if ([theSyncKey isEqualToString: @"-1"]) + { + [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"SyncCache"]; + [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"DateCache"]; + } + + syncCache = [folderMetadata objectForKey: @"SyncCache"]; + dateCache = [folderMetadata objectForKey: @"DateCache"]; + + if ((theFolderType == ActiveSyncMailFolder || theFolderType == ActiveSyncEventFolder || theFolderType == ActiveSyncTaskFolder) && + !([folderMetadata objectForKey: @"MoreAvailable"]) && // previous sync operation reached the windowSize + !([theSyncKey isEqualToString: @"-1"]) && // new sync operation + theFilterType) { NSArray *allKeys; NSString *key; + int softdelete_count; softdelete_count = 0; - folderMetadata = [self _folderMetadataForKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; - - dateCache = [folderMetadata objectForKey: @"DateCache"]; - syncCache = [folderMetadata objectForKey: @"SyncCache"]; - allKeys = [dateCache allKeys]; for (i = 0; i < [allKeys count]; i++) { @@ -520,7 +577,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [s appendString: @""]; [s appendFormat: @"%@", key]; [s appendString: @""]; - + [syncCache removeObjectForKey: key]; [dateCache removeObjectForKey: key]; @@ -530,7 +587,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (softdelete_count >= theWindowSize) { [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; - [self _setFolderMetadata: folderMetadata forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; + [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]]; more_available = YES; *theLastServerKey = theSyncKey; @@ -542,7 +599,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } [folderMetadata removeObjectForKey: @"MoreAvailable"]; - [self _setFolderMetadata: folderMetadata forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; + [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]]; } // @@ -567,7 +624,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NSArray *allComponents; BOOL updated; - int deleted; + int deleted, return_count; if (theFolderType == ActiveSyncContactFolder) component_name = @"vcard"; @@ -577,19 +634,26 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. component_name = @"vtodo"; allComponents = [theCollection syncTokenFieldsWithProperties: nil matchingSyncToken: theSyncKey fromDate: theFilterType]; + allComponents = [allComponents sortedArrayUsingDescriptors: [NSArray arrayWithObjects: [[NSSortDescriptor alloc] initWithKey: @"c_lastmodified" ascending:YES], nil]]; // Check for the WindowSize max = [allComponents count]; - // Disabled for now for GCS folders. - // if (max > theWindowSize) - // { - // max = theWindowSize; - // more_available = YES; - // } - + return_count = 0; + for (i = 0; i < max; i++) { + // Check for the WindowSize and slice accordingly + if (return_count >= theWindowSize) + { + more_available = YES; + + // -1 to make sure that we miss no event in case there are more with the same c_lastmodified + *theLastServerKey = [NSString stringWithFormat: @"%d", [[component objectForKey: @"c_lastmodified"] intValue] - 1]; + + break; + } + component = [allComponents objectAtIndex: i]; deleted = [[component objectForKey: @"c_deleted"] intValue]; @@ -600,17 +664,28 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (deleted) { - [s appendString: @""]; - [s appendFormat: @"%@", uid]; - [s appendString: @""]; + if ([syncCache objectForKey: uid]) + { + [s appendString: @""]; + [s appendFormat: @"%@", uid]; + [s appendString: @""]; + + [syncCache removeObjectForKey: uid]; + [dateCache removeObjectForKey: uid]; + return_count++; + } } else { updated = YES; - if ([[component objectForKey: @"c_creationdate"] intValue] > [theSyncKey intValue]) + if (![syncCache objectForKey: uid]) updated = NO; + else if ([[component objectForKey: @"c_lastmodified"] intValue] == [[syncCache objectForKey: uid] intValue]) + continue; + return_count++; + sogoObject = [theCollection lookupName: [uid sanitizedServerIdWithType: theFolderType] inContext: context acquire: 0]; @@ -645,11 +720,19 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. continue; } } + + [syncCache setObject: [component objectForKey: @"c_lastmodified"] forKey: uid]; if (updated) [s appendString: @""]; else + { + // no need to set dateCache for Contacts + if ((theFolderType == ActiveSyncEventFolder || theFolderType == ActiveSyncTaskFolder)) + [dateCache setObject: [componentObject startDate] ? [componentObject startDate] : [NSCalendarDate date] forKey: uid]; // FIXME: need to set proper date for recurring events - softDelete + [s appendString: @""]; + } [s appendFormat: @"%@", uid]; [s appendString: @""]; @@ -662,11 +745,22 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [s appendString: @""]; else [s appendString: @""]; + + return_count++; } } // for ... - folderMetadata = [NSDictionary dictionaryWithObject: [theCollection davCollectionTag] - forKey: @"SyncKey"]; + if (more_available) + { + [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; + [folderMetadata setObject: *theLastServerKey forKey: @"SyncKey"]; + } + else + { + [folderMetadata removeObjectForKey: @"MoreAvailable"]; + [folderMetadata setObject: [theCollection davCollectionTag] forKey: @"SyncKey"]; + } + [self _setFolderMetadata: folderMetadata forKey: [NSString stringWithFormat: @"%@/%@", component_name, [theCollection nameInContainer]]]; } @@ -695,18 +789,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. sequence: [[[allMessages objectAtIndex: i] allValues] lastObject]]]; } - // If it's a new Sync operation, DateCache and SyncCache need to be deleted - folderMetadata = [self _folderMetadataForKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; - - if ([theSyncKey isEqualToString: @"-1"]) - { - [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"SyncCache"]; - [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"DateCache"]; - } - - syncCache = [folderMetadata objectForKey: @"SyncCache"]; - dateCache = [folderMetadata objectForKey: @"DateCache"]; - sortedBySequence = [[NSMutableArray alloc] initWithDictionary: syncCache]; [sortedBySequence sortUsingSelector: @selector(compareSequence:)]; [sortedBySequence autorelease]; @@ -850,8 +932,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [folderMetadata setObject: [theCollection davCollectionTag] forKey: @"SyncKey"]; } - [self _setFolderMetadata: folderMetadata - forKey: [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]]]; + [self _setFolderMetadata: folderMetadata forKey: [self _getNameInCache: theCollection withType: theFolderType]]; } // default: break; } // switch (folderType) ... @@ -863,9 +944,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [theBuffer appendString: @""]; [theBuffer appendString: s]; [theBuffer appendString: @""]; - - if (more_available) - [theBuffer appendString: @""]; } } @@ -950,13 +1028,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. inBuffer: (NSMutableString *) theBuffer changeDetected: (BOOL *) changeDetected { - NSString *collectionId, *realCollectionId, *syncKey, *davCollectionTag, *bodyPreferenceType, *lastServerKey, *nameInCache; + NSString *collectionId, *realCollectionId, *syncKey, *davCollectionTag, *bodyPreferenceType, *lastServerKey; SOGoMicrosoftActiveSyncFolderType folderType; id collection, value; NSMutableString *changeBuffer, *commandsBuffer; BOOL getChanges, first_sync; - unsigned int windowSize, v; + unsigned int windowSize, v, status; changeBuffer = [NSMutableString string]; commandsBuffer = [NSMutableString string]; @@ -993,6 +1071,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. windowSize = v; lastServerKey = nil; + status = 1; // From the documention, if GetChanges is missing, we must assume it's a YES. // See http://msdn.microsoft.com/en-us/library/gg675447(v=exchg.80).aspx for all details. @@ -1010,6 +1089,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. first_sync = YES; *changeDetected = YES; } + else if ((![syncKey isEqualToString: @"-1"]) && !([[self _folderMetadataForKey: [self _getNameInCache: collection withType: folderType]] objectForKey: @"SyncCache"])) + { + //NSLog(@"Reset folder: %@", [collection nameInContainer]); + davCollectionTag = @"0"; + first_sync = YES; + *changeDetected = YES; + + if (!([[self _folderMetadataForKey: [self _getNameInCache: collection withType: folderType]] objectForKey: @"displayName"])) + status = 13; // need folderSync + else + status = 3; // do a complete resync + } // We check our sync preferences and we stash them bodyPreferenceType = [[(id)[[(id)[theDocumentElement getElementsByTagName: @"BodyPreference"] lastObject] getElementsByTagName: @"Type"] lastObject] textValue]; @@ -1019,7 +1110,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [context setObject: bodyPreferenceType forKey: @"BodyPreferenceType"]; - // We generate the commands, if any, for the response. We might also have // generated some in processSyncCommand:inResponse: as we could have // received a Fetch command @@ -1028,9 +1118,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [self processSyncGetChanges: theDocumentElement inCollection: collection withWindowSize: windowSize + //withWindowSize: 5 withSyncKey: syncKey withFolderType: folderType withFilterType: [NSCalendarDate dateFromFilterType: [[(id)[theDocumentElement getElementsByTagName: @"FilterType"] lastObject] textValue]] + //withFilterType: [NSCalendarDate dateFromFilterType: @"7"] inBuffer: changeBuffer lastServerKey: &lastServerKey]; } @@ -1066,12 +1158,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. davCollectionTag = lastServerKey; else { - if (folderType == ActiveSyncMailFolder) - nameInCache = [[[collection mailAccountFolder] imapFolderGUIDs] objectForKey: [collection nameInContainer]]; - else - nameInCache = [collection nameInContainer]; + // Use the SyncKey saved by processSyncGetChanges - if processSyncGetChanges is not called (because of getChanges=false) + // SyncKey has the value of the previous sync operation. + davCollectionTag = [[self _folderMetadataForKey: [self _getNameInCache: collection withType: folderType]] objectForKey: @"SyncKey"]; - if (![[self _folderMetadataForKey: nameInCache] objectForKey: @"MoreAvailable"]) + if (!davCollectionTag) davCollectionTag = [collection davCollectionTag]; } @@ -1097,7 +1188,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [theBuffer appendFormat: @"%@", davCollectionTag]; [theBuffer appendFormat: @"%@", collectionId]; - [theBuffer appendFormat: @"%d", 1]; + [theBuffer appendFormat: @"%d", status]; + + // MoreAvailable breaks Windows Mobile devices if not between and + // https://social.msdn.microsoft.com/Forums/en-US/040b254e-f47e-4cc1-a397-6d8393cdb819/airsyncmoreavailable-breaks-windows-mobile-devices-what-am-i-doing-wrong?forum=os_exchangeprotocols + if ([[self _folderMetadataForKey: [self _getNameInCache: collection withType: folderType]] objectForKey: @"MoreAvailable"]) + [theBuffer appendString: @""]; [theBuffer appendString: commandsBuffer]; [theBuffer appendString: changeBuffer]; diff --git a/NEWS b/NEWS index 027a5fd67..6c5d0b038 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,7 @@ Bug fixes - fixed handling of event invitations on iOS/EAS with no organizer (#2978) - fixed corrupted png files (#2975) - improved dramatically the BSON decoding speed + - added WindowSize support for GCS collections when using EAS 2.2.9a (2014-09-29) ------------------- From 3872341a85c4e54a5671bde5e414c58c1ebca19e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 14 Nov 2014 10:34:36 -0500 Subject: [PATCH 083/198] Added required patch for previous commit --- SoObjects/SOGo/SOGoGCSFolder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index bf042a2e4..921d312c0 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -1194,7 +1194,7 @@ static NSArray *childRecordFields = nil; qualifier = [EOQualifier qualifierWithQualifierFormat: @"c_lastmodified > %d and c_deleted == 1", syncTokenInt]; - fields = [NSMutableArray arrayWithObjects: @"c_name", @"c_deleted", nil]; + fields = [NSMutableArray arrayWithObjects: @"c_name", @"c_lastmodified", @"c_deleted", nil]; [mRecords addObjectsFromArray: [self _fetchFields: fields withQualifier: qualifier ignoreDeleted: NO]]; From 1f167d9e821e5d4b54323c048e744c657dc4dd48 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 17 Nov 2014 11:49:56 -0500 Subject: [PATCH 084/198] Fixed IMAP searches with non-ASCII folder names --- NEWS | 1 + UI/MailerUI/UIxMailSearch.m | 33 ++++++++---- UI/Templates/MailerUI/UIxMailSearch.wox | 7 ++- UI/WebServerResources/UIxMailSearch.js | 72 ++++++++++++------------- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/NEWS b/NEWS index 6c5d0b038..18a4a3fe5 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,7 @@ Bug fixes - fixed corrupted png files (#2975) - improved dramatically the BSON decoding speed - added WindowSize support for GCS collections when using EAS + - fixed IMAP search with non-ASCII folder names 2.2.9a (2014-09-29) ------------------- diff --git a/UI/MailerUI/UIxMailSearch.m b/UI/MailerUI/UIxMailSearch.m index a89467df2..92a1ef427 100644 --- a/UI/MailerUI/UIxMailSearch.m +++ b/UI/MailerUI/UIxMailSearch.m @@ -40,26 +40,38 @@ - (void) dealloc { [item release]; + [super dealloc]; } -- (void) setItem: (NSString *) newItem +- (void) setItem: (id) newItem { ASSIGN(item, newItem); } -- (NSString *) item +- (id) item { return item; } +- (NSString *) currentFolderDisplayName +{ + return [[item allValues] lastObject]; +} + +- (NSString *) currentFolderPath +{ + return [[item allKeys] lastObject]; +} + - (NSArray *) mailAccountsList { - SOGoMailAccount *mAccount; + NSDictionary *accountName, *mailbox; + NSString *userName, *aString; SOGoMailAccounts *mAccounts; - NSString *userName, *option, *aString; + SOGoMailAccount *mAccount; NSArray *accountFolders; NSMutableArray *mailboxes; - NSDictionary *accountName; + int nbMailboxes, nbMailAccounts, i, j; // Number of accounts linked with the current user @@ -78,14 +90,17 @@ // Number of mailboxes inside the current account nbMailboxes = [accountFolders count]; - [mailboxes addObject:accountName]; + [mailboxes addObject: [NSDictionary dictionaryWithObject: accountName forKey: accountName]]; + for (j = 0; j < nbMailboxes; j++) { - option = [NSString stringWithFormat:@"%@%@", userName, [[accountFolders objectAtIndex:j] objectForKey:@"displayName"]]; - [mailboxes addObject:option]; + mailbox = [NSDictionary dictionaryWithObject: [NSString stringWithFormat:@"%@%@", userName, [[accountFolders objectAtIndex:j] objectForKey: @"displayName"]] + forKey: [[accountFolders objectAtIndex:j] objectForKey: @"path"]]; + [mailboxes addObject: mailbox]; } } + return mailboxes; } -@end \ No newline at end of file +@end diff --git a/UI/Templates/MailerUI/UIxMailSearch.wox b/UI/Templates/MailerUI/UIxMailSearch.wox index f26233de5..669bd6d02 100644 --- a/UI/Templates/MailerUI/UIxMailSearch.wox +++ b/UI/Templates/MailerUI/UIxMailSearch.wox @@ -24,7 +24,12 @@ - + diff --git a/UI/WebServerResources/UIxMailSearch.js b/UI/WebServerResources/UIxMailSearch.js index 7c25bdd78..46e966acd 100644 --- a/UI/WebServerResources/UIxMailSearch.js +++ b/UI/WebServerResources/UIxMailSearch.js @@ -30,7 +30,7 @@ function onSearchClick() { } } - for (i = 0; i < filterRows.length; i++){ + for (i = 0; i < filterRows.length; i++) { // Get the information from every filter row before triggering the AJAX call var filter = {}; var searchByOptions = filterRows[i].down(".searchByList").options; @@ -72,47 +72,47 @@ function searchMails() { var optionsList = $("mailAccountsList").options; var nbOptions = optionsList.length; var selectedIndex = optionsList.selectedIndex; - var accountNumber, accountUser, folderPath, folderName; + var accountNumber, folderPath, folderName; var mailAccountIndex = mailAccounts.indexOf(searchParams.searchLocation); + var root = false; if (mailAccountIndex != -1) { accountNumber = "/" + mailAccountIndex; - folderName = accountNumber + "/folderINBOX"; - accountUser = userNames[mailAccountIndex]; - folderPath = accountUser; + folderName = "INBOX"; + folderPath = accountNumber + "/folderINBOX"; + root = true; } else { var searchLocation = searchParams.searchLocation.split("/"); - accountUser = searchLocation[0]; - accountNumber = "/" + userNames.indexOf(accountUser); + accountNumber = "/" + userNames.indexOf(searchLocation[0]); + folderName = optionsList[optionsList.selectedIndex].text.split("/").pop(); - var position = searchLocation.length; - folderName = accountNumber + "/folder" + searchLocation[1].asCSSIdentifier(); - for (i = 2; i < position; i++) - folderName += "/folder" + searchLocation[i]; - - folderPath = optionsList[selectedIndex].innerHTML; + var paths = optionsList[optionsList.selectedIndex].value.split("/"); + folderPath = accountNumber; + for (j = 1; j < paths.length; j++) { + folderPath += "/folder" + paths[j]; + } } var subfolders = []; if (searchParams.subfolder === true) { - for (i = 0; i < nbOptions; i++) { - if ((optionsList[i].innerHTML.search(folderPath) != -1) && (i != selectedIndex)) { - var splitArray = optionsList[i].innerHTML.split("/"); - // Remove the user information since it is not required - splitArray.splice(0, 1); - var subfolder = []; - var level = splitArray.length; - for(j = 0; j < level; j++) { - subfolder += "/folder" + splitArray[j]; - } - subfolders.push(accountNumber + subfolder); + for (i = 1; i < nbOptions; i++) { + var paths = optionsList[i].value.split("/"); + var subfolder = accountNumber; + for (j = 1; j < paths.length; j++) { + subfolder += "/folder" + paths[j]; + } + + if (root || subfolder.indexOf(folderPath) == 0) { + var keypair = {"folderPath" : subfolder, + "folderName" : optionsList[i].text.split("/").pop() }; + subfolders.push(keypair); } } } - var urlstr = (ApplicationBaseURL + folderName + "/uids"); - var callbackData = {"folderName" : folderName, "subfolders" : subfolders, "newSearch" : true}; + var urlstr = (ApplicationBaseURL + folderPath + "/uids"); + var callbackData = {"folderName" : folderName, "folderPath" : folderPath, "subfolders" : subfolders, "newSearch" : true}; var object = {"filters":searchParams.filters, "sortingAttributes":{"match":searchParams.filterMatching}}; var content = Object.toJSON(object); document.searchMailsAjaxRequest = triggerAjaxRequest(urlstr, searchMailsCallback, callbackData, content, {"content-type": "application/json"}); @@ -130,8 +130,6 @@ function searchMailsCallback(http) { for (var x = count; x >= 0; x--){ $(oldEntries[x]).remove(); } - - } // ["To", "Attachment", "Flagged", "Subject", "From", "Unread", "Priority", "Date", "Size", "rowClasses", "labels", "rowID", "uid"] @@ -143,7 +141,7 @@ function searchMailsCallback(http) { var row = document.createElement("tr"); Element.addClassName(row, "resultsRow"); row.setAttribute("uid", response.headers[i][12]); - row.setAttribute("folderName", http.callbackData.folderName); + row.setAttribute("folderPath", http.callbackData.folderPath); var cell1 = document.createElement("td"); Element.addClassName(cell1, "td_table_1"); @@ -168,10 +166,7 @@ function searchMailsCallback(http) { var cell5 = document.createElement("td"); Element.addClassName(cell5, "td_table_5"); cell5.setAttribute("colspan", "2"); - var folderPath = http.callbackData.folderName.split("/"); - var folderLocation = folderPath[folderPath.length - 1]; // get the last element of the array (location) - folderLocation = folderLocation.substr(6); // strip down the prefix folder - cell5.innerHTML = folderLocation; + cell5.innerHTML = http.callbackData.folderName; row.appendChild(cell5); table.appendChild(row); @@ -192,12 +187,13 @@ function searchMailsCallback(http) { } if (http.callbackData.subfolders.length > 0) { - var folderName = http.callbackData.subfolders[0]; + var folderName = http.callbackData.subfolders[0].folderName; + var folderPath = http.callbackData.subfolders[0].folderPath; var subfolders = http.callbackData.subfolders; subfolders.splice(0, 1); - var urlstr = (ApplicationBaseURL + folderName + "/uids"); - var callbackData = {"folderName" : folderName, "subfolders" : subfolders, "newSearch" : false}; + var urlstr = (ApplicationBaseURL + folderPath + "/uids"); + var callbackData = {"folderName" : folderName, "folderPath" : folderPath, "subfolders" : subfolders, "newSearch" : false}; // TODO - need to add these following contents ; asc, no-headers, sort var object = {"filters":searchParams.filters, "sortingAttributes":{"match":searchParams.filterMatching}}; @@ -338,10 +334,10 @@ function onOpenClick(event) { // This function is linked with the openButton and the doubleClick on a message var selectedRow = $("searchMailFooter").down("._selected"); var msguid = selectedRow.getAttribute("uid"); - var folderName = selectedRow.getAttribute("folderName"); + var folderPath = selectedRow.getAttribute("folderPath"); var accountUser = userNames[0]; - var url = "/SOGo/so/" + accountUser + "/Mail" + folderName + "/" + msguid + "/popupview"; + var url = "/SOGo/so/" + accountUser + "/Mail" + folderPath + "/" + msguid + "/popupview"; if (selectedRow) { openMessageWindow(msguid, url); } From 3d18c94789235c50a8028d209b5cbf0203cb5dce Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 17 Nov 2014 14:24:14 -0500 Subject: [PATCH 085/198] Fix extraction of email addresses in some cases Fixes #2945 --- NEWS | 1 + UI/WebServerResources/UIxMailToSelection.js | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 18a4a3fe5..54edfe468 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ Bug fixes - improved dramatically the BSON decoding speed - added WindowSize support for GCS collections when using EAS - fixed IMAP search with non-ASCII folder names + - fixed extraction of email addresses when pasting text with tabs (#2945) 2.2.9a (2014-09-29) ------------------- diff --git a/UI/WebServerResources/UIxMailToSelection.js b/UI/WebServerResources/UIxMailToSelection.js index f9f97a304..19d837937 100644 --- a/UI/WebServerResources/UIxMailToSelection.js +++ b/UI/WebServerResources/UIxMailToSelection.js @@ -159,7 +159,10 @@ function addressFieldChanged(event) { if (addresses.length > 0) { var first = true; for (var i = 0; i < addresses.length; i++) { - var words = addresses[i].split(' '); + var words = addresses[i] + .replace('\t', ' ') + .replace(/,(?! )/, ', ') + .split(' '); var phrase = new Array(); for (var j = 0; j < words.length; j++) { var word = words[j].strip().replace(/<(.+)>/, "$1").replace(',', ''); From 19221beb1fc0aab45c0b7bcc5fb9ccd9e7561f73 Mon Sep 17 00:00:00 2001 From: Jens Erat Date: Sun, 9 Nov 2014 22:11:37 +0100 Subject: [PATCH 086/198] Removed erroneous backslash in documentation --- Documentation/SOGoInstallationGuide.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/SOGoInstallationGuide.asciidoc b/Documentation/SOGoInstallationGuide.asciidoc index ea6bd8757..757055903 100644 --- a/Documentation/SOGoInstallationGuide.asciidoc +++ b/Documentation/SOGoInstallationGuide.asciidoc @@ -258,13 +258,13 @@ In SOGo, the user's applications settings are stored in `/etc/sogo/sogo.conf`. You can use your favourite text editor to modify the file. -The +sogo.conf+ file is a serialized _property list_. This simple format +The `sogo.conf` file is a serialized _property list_. This simple format encapsulates four basic data types: arrays, dictionaries (or hashes), strings and numbers. Numbers are represented as-is, except for booleans which can take the unquoted values `YES` and `NO`. Strings are not mandatorily quoted, but doing so will avoid you many problems. A dictionary is a sequence of key and value pairs separated in their -middle with a `=` sign. It starts with a `\{` and ends with a +middle with a `=` sign. It starts with a `{` and ends with a corresponding `}`. Each value definition in a dictionary ends with a semicolon. An array is a chain of values starting with `(` and ending with `)`, where the values are separated with a `,`. Also, the file From ac55509aea982d07c02d429f88131d8da468181b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 18 Nov 2014 12:45:15 -0500 Subject: [PATCH 087/198] Updated NEWS file regarding the SOPE commit for bug #2957 --- NEWS | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS b/NEWS index 54edfe468..edaf30532 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ Bug fixes - added WindowSize support for GCS collections when using EAS - fixed IMAP search with non-ASCII folder names - fixed extraction of email addresses when pasting text with tabs (#2945) + - fixed Outlook attachment corruption issues when using AES (#2957) 2.2.9a (2014-09-29) ------------------- From 6bbaf58d437a1233519800758711624dc8f9a998 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 18 Nov 2014 16:56:45 -0500 Subject: [PATCH 088/198] Initial pass of the doc for v2.2.10 on Debian/Ubuntu --- ...GoNativeOutlookConfigurationGuide.asciidoc | 165 ++++++++++++------ 1 file changed, 111 insertions(+), 54 deletions(-) diff --git a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc index 75eb4eb86..5833691df 100644 --- a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc +++ b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc @@ -233,13 +233,12 @@ Installation This section will guide you through the installation of the native Microsoft Outlook compatibility layer SOGo offers. -Red Hat Enterprise Linux v5 and v6 +Red Hat Enterprise Linux v6 x86_64 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you are using Red Hat Enterprise Linux (or CentOS) version 5 or -version 6, packages for Samba 4, OpenChange and SOGo and the SOGo -OpenChange backend are available from SOGo's web site. Please follow the -instructions from +If you are using Red Hat Enterprise Linux version 6 x86_64, packages +for Samba 4, OpenChange and SOGo and the SOGo OpenChange backend are +available from SOGo's web site. Please follow the instructions from http://www.sogo.nu/english/downloads/backend_nightly.html. In order to satisfy certain dependencies, you should also add the EPEL @@ -263,43 +262,32 @@ yum install samba4 \ Once the packages are installed, refer to the _Configuration_ chapter from this guide. -Debian 6.0 (Squeeze) and Ubuntu 12.04 (Precise Pangolin) +Debian 7.0 (Wheezy) and Ubuntu 12.04 (Precise Pangolin) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Samba 4, OpenChange, SOGo and the SOGo OpenChange backend are now +SOGo, OpenChange and the SOGo OpenChange backend are now available from SOGo's web site. Please follow the instructions from -http://www.sogo.nu/english/downloads/backend_nightly.html to setup your +http://www.sogo.nu/english/downloads/backend.html to setup your apt sources. -Debian Squeeze ships an older version of some libraries required by -Samba 4. In order to workaround this, users of this distribution will -have to use the _squeeze-backports_ repository. To do so, create +For Samba 4, you need to use the _wheezy-backports_ repository. To do so, create `/etc/apt/sources.list.d/backports.list`: - deb http://backports.debian.org/debian-backports squeeze-backports main + deb http://http.debian.net/debian wheezy-backports main -Then install the dependencies on Debian Squeeze, do: +On Ubuntu 12.04, you will also have to add the Wheezy sources: ----- -apt-get update -apt-get install -t squeeze-backports libwbclient-dev samba-common smbclient libsmbclient libsmbclient-dev ----- + deb http://ftp.us.debian.org/debian wheezy main + deb http://security.debian.org/ wheezy/updates main -Once ready, install the `samba4` package on top of an existing SOGo +Then install Samba 4 on top of an existing SOGo installation: ---- apt-get update -apt-get install samba4 +apt-get -t wheezy-backports install samba samba-dev ---- -The current post installation script shipped with the Samba 4 package is -far from perfect and might fail even on a fresh install. The following -command is needed to let dpkg know that everything is fine about Samba 4 -if the post install script fails. - - sed --in-place 'N; s/Package: samba4\nStatus: install ok half-configured/Package: samba4\nStatus: install ok installed/;' /var/lib/dpkg/status - Once completed, install the packages related to OpenChange and the SOGo provider: @@ -307,13 +295,53 @@ provider: apt-get install openchangeserver \ sogo-openchange \ openchangeproxy \ - openchange-ocsmanager \ - openchange-rpcproxy + python-ocsmanager \ + mysql-server \ + python-mysqldb ---- Once the packages are installed, refer to the _Configuration_ chapter from this guide. +[NOTE] +On Ubuntu 12.04, the Samba init scripts need to be modified to +disable the upstart check. More more details, refer to: +https://wiki.samba.org/index.php/Samba4/InitScript + + +Ubuntu 14.04 (Trusty Tahr) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For Ubuntu 14.04, you must not use the Debian Wheezy backports. + +Please follow the instructions from +http://www.sogo.nu/english/downloads/backend.html to setup your +apt sources. + +Then install Samba 4 on top of an existing SOGo +installation: + +---- +apt-get update +apt-get install samba samba-dev +---- + +Once completed, install the packages related to OpenChange and the SOGo +provider: + +---- +apt-get install openchangeserver \ + sogo-openchange \ + openchangeproxy \ + python-ocsmanager \ + mysql-server \ + python-mysqldb +---- + +Once the packages are installed, refer to the _Configuration_ chapter +from this guide. + + Configuration ------------- @@ -349,16 +377,14 @@ You might consider changing the realm and domain used, to suit your enviroment. You might also have to -remove `/etc/samba4/smb.conf` (or `/etc/samba/smb.conf` on Debian-based -distributions) prior running this command. +remove `/etc/samba/smb.conf` prior running this command. Add the following parameters to the `[global]` section of the -`/etc/samba4/smb.conf` (`/samba/smb.conf` if you use a Debian-based -distribution) configuration file: +`/etc/samba/smb.conf` configuration file: ---- ### Configuration required by OpenChange server ### -dcerpc endpoint servers = +epmapper, +mapiproxy +dcerpc endpoint servers = epmapper, mapiproxy, dnsserver dcerpc_mapiproxy:server = true dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr ### Configuration required by OpenChange server ### @@ -392,11 +418,22 @@ Your Samba 4 configuration file should look like this: OpenChange Configuration ~~~~~~~~~~~~~~~~~~~~~~~~ +OpenChange 2.2 stores its metadata in MySQL so you need to have it installed. + +First, create the OpenChange MySQL user: + +--- +$ mysql -u root -p +mysql> CREATE USER 'openchange-user'@'localhost' IDENTIFIED BY 'openchange$123'; +mysql> GRANT ALL PRIVILEGES ON `openchange`.* TO 'openchange-user'@'localhost' WITH GRANT OPTION; +mysql> FLUSH PRIVILEGES; +--- + The Samba AD schema needs to be filled with additional object definitions by running the following commands:  ---- -openchange_provision +openchange_provision --standalone NOTE: This operation can take several minutes [+] Step 1: Register Exchange OIDs @@ -410,38 +447,59 @@ NOTE: This operation can take several minutes [+] Step 9: Add Exchange classes to Samba schema [+] Step 10: Add possSuperior attributes to Exchange classes [+] Step 11: Extend existing Samba classes and attributes -[+] Step 12: Exchange Samba with Exchange configuration objects +[+] Step 12: Generic Exchange configuration objects +[+] Step 13: Finalize generic Exchange configuration objects +[SUCCESS] Done! +[+] Step 1: Exchange Samba registration +[SUCCESS] Done! +[+] Step 1: Register Exchange Samba as the main server [SUCCESS] Done! ---- -You can safely ignore the "`ERROR: no subClassOf 'serviceAdministrationPoint' for 'rRASAdministrationConnectionPoint'`" message when running the `openchange_provision` command. - -Provision the OpenChange database:  +Create the OpenChange database:  ---- -openchange_provision --openchangedb +openchange_provision --openchangedb --openchangedb-uri 'mysql://openchange-user:openchange$123@localhost/openchange' Setting up openchange db [+] Public Folders =================== - * Public Folder Root 0x0100000000000001 - * IPM_SUBTREE 0x0200000000000001 - * NON_IPM_SUBTREE 0x0300000000000001 - * EFORMS REGISTRY 0x0400000000000001 - * OFFLINE ADDRESS BOOK 0x0500000000000001 - * /o=First Organization/cn=addrlists/cn=oabs/cn=Default Offline Address Book 0x0600000000000001 - * SCHEDULE+ FREE BUSY 0x0700000000000001 - * EX:/o=First Organization/ou=Exchange Administrative Group (UBUNTU-OC) 0x0800000000000001 - * Events Root 0x0900000000000001 + * Public Folder Root : 0x0100000000000001 (72057594037927937) + * IPM_SUBTREE : 0x0200000000000001 (144115188075855873) + * NON_IPM_SUBTREE : 0x0300000000000001 (216172782113783809) + * EFORMS REGISTRY : 0x0400000000000001 (288230376151711745) + * OFFLINE ADDRESS BOOK : 0x0500000000000001 (360287970189639681) + * /o=First Organization/cn=addrlists/cn=oabs/cn=Default Offline Address Book: 0x0600000000000001 (432345564227567617) + * SCHEDULE+ FREE BUSY : 0x0700000000000001 (504403158265495553) + * EX:/o=first organization/ou=first administrative group: 0x0800000000000001 (576460752303423489) + * Events Root : 0x0900000000000001 (648518346341351425) ---- +Finally, modify `/etc/samba/smb.conf` to specify OpenChange connection information +for its indexing database. Add the following at the end of the `[global]` section: + +--- +mapistore:namedproperties = mysql +namedproperties:mysql_user = openchange-user +namedproperties:mysql_pass = openchange$123 +namedproperties:mysql_host = localhost +namedproperties:mysql_db = openchange + +mapistore:indexing_backend = mysql://openchange-user:openchange$123@localhost/openchange +mapiproxy:openchangedb = mysql://openchange-user:openchange$123@localhost/openchange +--- + On RHEL, make sure SELinux is disabled: setenforce 0 -Next, you can start Samba using the usual command : +Next, you can start Samba using the usual command: - /etc/init.d/samba4 start + /etc/init.d/samba start + +On upstart-based distributions, use: + + start samba-ad-dc You can also launch the OpenChange web services: @@ -540,14 +598,13 @@ samba-tool domain passwordsettings set --complexity=off samba-tool domain passwordsettings set --min-pwd-length=1 samba-tool user add samba-tool user setexpiry --noexpiry -# create user in openchange+ +openchange_newuser --create +# create user in openchange +openchange_newuser --create ---- If you don't have a trust between your IMAP server and SOGo, you must at this point set the cleartext password of the newly created user in -`/var/lib/samba4/private/mapistore/ Date: Tue, 18 Nov 2014 18:36:59 -0500 Subject: [PATCH 089/198] More doc fixes for v2.2.10 --- ...OGoNativeOutlookConfigurationGuide.asciidoc | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc index 5833691df..682efbdda 100644 --- a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc +++ b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc @@ -252,7 +252,7 @@ installation: ---- yum clean all && yum makecache -yum install samba4 \ +yum install samba \ openchange \ sogo-openchange-backend \ openchange-ocsmanager \ @@ -262,8 +262,12 @@ yum install samba4 \ Once the packages are installed, refer to the _Configuration_ chapter from this guide. +[NOTE] +Samba4/OpenChange are not available for now on CentOS 5 i386/x86_64, +CentOS 6 i386 and CentOS 7. + Debian 7.0 (Wheezy) and Ubuntu 12.04 (Precise Pangolin) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SOGo, OpenChange and the SOGo OpenChange backend are now available from SOGo's web site. Please follow the instructions from @@ -310,7 +314,7 @@ https://wiki.samba.org/index.php/Samba4/InitScript Ubuntu 14.04 (Trusty Tahr) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~ For Ubuntu 14.04, you must not use the Debian Wheezy backports. @@ -478,7 +482,7 @@ Setting up openchange db Finally, modify `/etc/samba/smb.conf` to specify OpenChange connection information for its indexing database. Add the following at the end of the `[global]` section: ---- +---- mapistore:namedproperties = mysql namedproperties:mysql_user = openchange-user namedproperties:mysql_pass = openchange$123 @@ -487,7 +491,7 @@ namedproperties:mysql_db = openchange mapistore:indexing_backend = mysql://openchange-user:openchange$123@localhost/openchange mapiproxy:openchangedb = mysql://openchange-user:openchange$123@localhost/openchange ---- +---- On RHEL, make sure SELinux is disabled: @@ -561,6 +565,10 @@ On Debian-based distributions, do: update-rc.d apache2 defaults && /etc/init.d/apache2 restart +[NOTE] +Debian-based distributions are not supported anymore for +OCSManager/rpcproxy. Support will soon resume. + Name Service Configuration for Web Services ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From b4718f363bd439b5521ef1f13946a20ffe5cd408 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 19 Nov 2014 12:06:44 -0500 Subject: [PATCH 090/198] More documentation fixes for v2.2.10 --- .../SOGoNativeOutlookConfigurationGuide.asciidoc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc index 682efbdda..7614c98d3 100644 --- a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc +++ b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc @@ -256,7 +256,9 @@ yum install samba \ openchange \ sogo-openchange-backend \ openchange-ocsmanager \ - openchange-rpcproxy + openchange-rpcproxy \ + mysql-server \ + MySQL-python ---- Once the packages are installed, refer to the _Configuration_ chapter @@ -426,12 +428,12 @@ OpenChange 2.2 stores its metadata in MySQL so you need to have it installed. First, create the OpenChange MySQL user: ---- +---- $ mysql -u root -p mysql> CREATE USER 'openchange-user'@'localhost' IDENTIFIED BY 'openchange$123'; mysql> GRANT ALL PRIVILEGES ON `openchange`.* TO 'openchange-user'@'localhost' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; ---- +---- The Samba AD schema needs to be filled with additional object definitions by running the following commands:  From 327147f7162c1df4f37ff96f6ce815e48cab9bf7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 19 Nov 2014 12:07:50 -0500 Subject: [PATCH 091/198] Fixed typo --- Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc index 7614c98d3..99efb47fe 100644 --- a/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc +++ b/Documentation/SOGoNativeOutlookConfigurationGuide.asciidoc @@ -311,7 +311,7 @@ from this guide. [NOTE] On Ubuntu 12.04, the Samba init scripts need to be modified to -disable the upstart check. More more details, refer to: +disable the upstart check. For more details, refer to: https://wiki.samba.org/index.php/Samba4/InitScript From f7935c6084e0ba5e933c639f115120177e68534c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 21 Nov 2014 08:29:25 -0500 Subject: [PATCH 092/198] Bumped version numbers for the releasex --- Documentation/docinfo.xml | 6 +++--- Documentation/includes/global-attributes.asciidoc | 2 +- NEWS | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Documentation/docinfo.xml b/Documentation/docinfo.xml index ade228dca..76b82caf2 100644 --- a/Documentation/docinfo.xml +++ b/Documentation/docinfo.xml @@ -1,7 +1,7 @@ -Version 2.2.9 - September 2014 -for version 2.2.9 -2014-09-26 +Version 2.2.10 - November 2014 +for version 2.2.10 +2014-11-21 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". diff --git a/Documentation/includes/global-attributes.asciidoc b/Documentation/includes/global-attributes.asciidoc index b5707df1b..62d2f66df 100644 --- a/Documentation/includes/global-attributes.asciidoc +++ b/Documentation/includes/global-attributes.asciidoc @@ -13,6 +13,6 @@ // TODO have the build system take care of this -:release_version: 2.2.9 +:release_version: 2.2.10 // vim: set syntax=asciidoc tabstop=2 shiftwidth=2 expandtab: diff --git a/NEWS b/NEWS index edaf30532..e6007c2b3 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -2.2.10 (2014-xx-xx) +2.2.10 (2014-11-21) ------------------- Enhancements From 78ea1473834b84f4cb06656a50b58fc8cf50c2a7 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 21 Nov 2014 08:52:52 -0500 Subject: [PATCH 093/198] Update translations --- NEWS | 2 + .../Localizable.strings | 1 + .../Localizable.strings | 1 + .../Localizable.strings | 1 + .../Localizable.strings | 2 +- .../Localizable.strings | 2 +- .../Localizable.strings | 6 +-- .../Localizable.strings | 2 +- .../Localizable.strings | 11 +++- .../Localizable.strings | 2 + .../Localizable.strings | 2 +- .../Localizable.strings | 27 ++++++++-- .../Localizable.strings | 17 ++++++- .../Localizable.strings | 6 +-- .../Localizable.strings | 50 ++++++++++++------- .../Czech.lproj/Localizable.strings | 1 + .../Dutch.lproj/Localizable.strings | 1 + .../Finnish.lproj/Localizable.strings | 1 + .../French.lproj/Localizable.strings | 1 + .../German.lproj/Localizable.strings | 1 + .../Hungarian.lproj/Localizable.strings | 1 + .../Polish.lproj/Localizable.strings | 1 + .../Russian.lproj/Localizable.strings | 33 ++++++------ .../Localizable.strings | 24 +++++---- .../SpanishSpain.lproj/Localizable.strings | 1 + .../Localizable.strings | 28 +++++++++-- .../Localizable.strings | 12 +++-- 27 files changed, 171 insertions(+), 66 deletions(-) diff --git a/NEWS b/NEWS index e6007c2b3..1cdba208e 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ Enhancements - no longer leaking database passwords in the logs (#2953) - added support for multiple calendars and address books over ActiveSync - updated timezone information (#2968) + - updated Brazilian Portuguese, Czech, Dutch, Finnish, French, German, Hungarian, Polish, + Russian, Spanish (Argentina), and Spanish (Spain) translations Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) diff --git a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings index c9dcbb802..f6117f8ef 100644 --- a/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings +++ b/SoObjects/Appointments/BrazilianPortuguese.lproj/Localizable.strings @@ -1,3 +1,4 @@ +"Inviting the following persons is prohibited:" = "Convidando as seguintes pessoas é proibido:"; "Personal Calendar" = "Calendário Pessoal"; vevent_class0 = "(Evento Público)"; vevent_class1 = "(Evento Privado)"; diff --git a/SoObjects/Appointments/SpanishArgentina.lproj/Localizable.strings b/SoObjects/Appointments/SpanishArgentina.lproj/Localizable.strings index 6bd6cc294..cdc39f607 100644 --- a/SoObjects/Appointments/SpanishArgentina.lproj/Localizable.strings +++ b/SoObjects/Appointments/SpanishArgentina.lproj/Localizable.strings @@ -1,3 +1,4 @@ +"Inviting the following persons is prohibited:" = "No está permitido invitar a las siguientes personas:"; "Personal Calendar" = "Calendario personal"; vevent_class0 = "(Evento público)"; vevent_class1 = "(Evento privado)"; diff --git a/SoObjects/Contacts/BrazilianPortuguese.lproj/Localizable.strings b/SoObjects/Contacts/BrazilianPortuguese.lproj/Localizable.strings index 6dca00edd..8923eae93 100644 --- a/SoObjects/Contacts/BrazilianPortuguese.lproj/Localizable.strings +++ b/SoObjects/Contacts/BrazilianPortuguese.lproj/Localizable.strings @@ -1 +1,2 @@ "Personal Address Book" = "Livro de Endereços Pessoais"; +"Collected Address Book" = "Catálogos Coletados"; diff --git a/SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings b/SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings index 1476e55c4..c7e4f1213 100644 --- a/SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings +++ b/SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings @@ -1,2 +1,2 @@ -"SieveFolderName" = "Filtros"; "OtherUsersFolderName" = "Outros Usuários"; +"SharedFoldersName" = "Pastas Compartilhadas"; diff --git a/UI/AdministrationUI/SpanishArgentina.lproj/Localizable.strings b/UI/AdministrationUI/SpanishArgentina.lproj/Localizable.strings index 6a13728f5..b10c86a79 100644 --- a/UI/AdministrationUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/AdministrationUI/SpanishArgentina.lproj/Localizable.strings @@ -9,7 +9,7 @@ "ACLs" = "ACL's"; /* Modules titles */ -"ACLs_title" = "Gestión de ALC's para carpetas de usuarios"; +"ACLs_title" = "Gestión de ALC's de las carpetas de usuarios"; /* Modules descriptions */ "ACLs_description" = "

El módulo de administración de Listas de Control de Acceso (ACL) permite cambiar las ACL's del Calendario o de la Libreta de Direcciones de cada usuario

Para modificar las ACL's de la carpeta de un usuario, ingrese el nombre del usuario en el cuadro de búsqueda ubicado en la parte superior de la ventana y haga dobe click en la carpeta deseada.

"; diff --git a/UI/Common/BrazilianPortuguese.lproj/Localizable.strings b/UI/Common/BrazilianPortuguese.lproj/Localizable.strings index 606594535..dabc4b454 100644 --- a/UI/Common/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/Common/BrazilianPortuguese.lproj/Localizable.strings @@ -69,6 +69,7 @@ "You cannot create a list in a shared address book." = "Você não pode criar uma lista em um catálogo público"; "Warning" = "Aviso"; +"Can't contact server" = "Um erro ocorreu na conexão com o servidor. Por favor, tente mais tarde."; "You are not allowed to access this module or this system. Please contact your system administrator." = "Você não está liberado para acessar este módulo ou este sistema. Por favor, contate seu administrador de sistemas."; @@ -87,7 +88,7 @@ "30 minutes" = "30 minutes"; "45 minutes" = "45 minutos"; "1 hour" = "1 hora"; - +"1 day" = "1 dia"; /* common buttons */ "OK" = "OK"; @@ -101,10 +102,9 @@ "Due Date:" = "Data:"; "Location:" = "Localização:"; -/* Mail labels */ +/* mail labels */ "Important" = "Importante"; "Work" = "Trabalho"; -"Work" = "Trabalho"; "Personal" = "Pessoal"; "To Do" = "Tarefa"; "Later" = "Adiar"; diff --git a/UI/Common/SpanishArgentina.lproj/Localizable.strings b/UI/Common/SpanishArgentina.lproj/Localizable.strings index 11ddb4d91..29f239af2 100644 --- a/UI/Common/SpanishArgentina.lproj/Localizable.strings +++ b/UI/Common/SpanishArgentina.lproj/Localizable.strings @@ -88,7 +88,7 @@ "30 minutes" = "30 minutos"; "45 minutes" = "45 minutos"; "1 hour" = "1 hora"; - +"1 day" = "1 día"; /* common buttons */ "OK" = "OK"; diff --git a/UI/Contacts/BrazilianPortuguese.lproj/Localizable.strings b/UI/Contacts/BrazilianPortuguese.lproj/Localizable.strings index da9156772..934456c1c 100644 --- a/UI/Contacts/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/Contacts/BrazilianPortuguese.lproj/Localizable.strings @@ -36,7 +36,6 @@ "delete" = "apagar"; "edit" = "editar"; "invalidemailwarn" = "O email informado é inválido"; -"invaliddatewarn" = "The specified date is invalid."; "new" = "novo"; "Preferred Phone" = "Telefone Preferencial"; @@ -64,6 +63,7 @@ "New Card" = "Novo Contato"; "New List" = "Nova Lista"; +"Edit" = "Editar"; "Properties" = "Propriedades"; "Sharing..." = "Localizando..."; "Write" = "Escrever"; @@ -147,7 +147,7 @@ "You cannot delete the card of \"%{0}\"." = "Você não pode apagar o contato de \"%{0}\"."; -"Address Book Name" = "Nome do Catálogo"; + "You cannot subscribe to a folder that you own!" = "Você não pode inscrever-se em uma pasta que você é dono."; @@ -206,3 +206,10 @@ "A total of %{0} cards were imported in the addressbook." = "A total of %{0} cards were imported in the addressbook."; "Reload" = "Atualizar"; + +/* Properties window */ +"Address Book Name:" = "Nome do Catálogo:"; +"Links to this Address Book" = "Link para este Catálogo"; +"Authenticated User Access" = "Acesso de Usuário Autenticado"; +"CardDAV URL: " = "CardDAV URL:"; + diff --git a/UI/MailPartViewers/BrazilianPortuguese.lproj/Localizable.strings b/UI/MailPartViewers/BrazilianPortuguese.lproj/Localizable.strings index 0c23cafd0..d038b316d 100644 --- a/UI/MailPartViewers/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/MailPartViewers/BrazilianPortuguese.lproj/Localizable.strings @@ -12,6 +12,8 @@ publish_info_text = "O solicitante lhe informa sobre um evento anexo."; cancel_info_text = "Seu convite ou evento foi cancelado."; request_info_no_attendee = "está propondo um reunião aos participantes. Você está recebendo este email como uma notificação, você não está agendado como um particiopante."; Appointment = "Apontamento"; +"Status Update" = "Status da Atualização"; +was = "foi"; Organizer = "Organizador"; Time = "Hora"; diff --git a/UI/MailPartViewers/SpanishArgentina.lproj/Localizable.strings b/UI/MailPartViewers/SpanishArgentina.lproj/Localizable.strings index 1a906cff4..7fa91fcd6 100644 --- a/UI/MailPartViewers/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MailPartViewers/SpanishArgentina.lproj/Localizable.strings @@ -31,7 +31,7 @@ Tentative = "Tentativo"; "delegated from" = "delegado de"; reply_info_no_attendee = "Ha recibido una respuesta a una invitación de evento pero el remitente no aparece como un participante."; -reply_info = "Esta es la respuesta a una invitación a un evento hecha que Usted ha organizado."; +reply_info = "Esta es la respuesta a una invitación a un evento que Usted ha organizado."; "to" = "para"; diff --git a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings index f23eb5b69..b07718473 100644 --- a/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings @@ -13,6 +13,7 @@ "Print" = "Imprimir"; "Stop" = "Parar"; "Write" = "Escrever"; +"Search" = "Pesquisar"; "Send" = "Enviar"; "Contacts" = "Contatos"; @@ -41,6 +42,7 @@ "Attachment" = "Anexos"; "Unread" = "Não Lido"; "Flagged" = "Sinalizado"; +"Search multiple mailboxes" = "Pesquisar múltiplas caixas de correio"; /* Main Frame */ @@ -79,7 +81,7 @@ "Remove this folder" = "Apagar esta pasta"; "Erase mails from this folder" = "Apagar emails desta pasta"; "Expunge this folder" = "Expurgar esta pasta"; -"Archive This Folder" = "Archive This Folder"; +"Export This Folder" = "Exportar esta pasta"; "Modify the acl of this folder" = "Modificar os direitos desta pasta"; "Saved Messages.zip" = "Mensagens Salvas.zip"; @@ -94,14 +96,16 @@ "To" = "Para"; "Cc" = "Cc"; "Bcc" = "Bcc"; -"Reply-To" = "Responder-Para"; +"Reply-To" = "Responder-Para"; "Add address" = "Adicionar endereço"; +"Body" = "Corpo"; -"Attachments:" = "Anexos:"; "Open" = "Abrir"; "Select All" = "Selecionar Tudo"; "Attach Web Page..." = "Anexar Página Web..."; -"Attach File(s)..." = "Anexar Arquivo(s)..."; +"file" = "arquivo"; +"files" = "arquivos"; +"Save all" = "Salvar tudo"; "to" = "Para"; "cc" = "Cc"; @@ -236,6 +240,18 @@ "As Not Junk" = "Como Não é Lixo Eletrônico"; "Run Junk Mail Controls" = "Executar Controle de Lixo Eletrônico"; +"Search messages in:" = "Pesquisar mensagens em:"; +"Search" = "Pesquisar"; +"Search subfolders" = "Pesquisar sub-pastas"; +"Match any of the following" = "Combinar qualquer uma das seguintes"; +"Match all of the following" = "Combinar todas as seguintes"; +"contains" = "contêm"; +"does not contain" = "não contêm"; +"No matches found" = "Nenhuma combinação encontrada"; +"results found" = "Resultados encontrados"; +"result found" = "Resultado encontrado"; +"Please specify at least one filter" = "Por favor, especifique pelo menos um filtro"; + /* Folder operations */ "Name :" = "Nome :"; "Enter the new name of your folder :" @@ -278,6 +294,9 @@ "error_missingsubject" = "Está faltando o Assunto"; "error_missingrecipients" = "Sem destinatários selecionados"; "Send Anyway" = "Enviar assim mesmo"; +"Error while saving the draft:" = "Erro ao salvar o rascunho:"; +"Error while uploading the file \"%{0}\":" = "Erro ao carregar o arquivo \"%{0}\":"; +"There is an active file upload. Closing the window will interrupt it." = "Este arquivo está sendo carregado. Fechando a janela irá interromper o processo."; /* Message sending */ "cannot send message: (smtp) all recipients discarded" = "Não é possível enviar a mensagem: todos os destinatários são inválidos."; diff --git a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings index 101bcfa44..697ab2374 100644 --- a/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MailerUI/SpanishArgentina.lproj/Localizable.strings @@ -13,6 +13,7 @@ "Print" = "Imprimir"; "Stop" = "Detener"; "Write" = "Redactar"; +"Search" = "Buscar"; "Send" = "Enviar"; "Contacts" = "Contactos"; @@ -41,6 +42,7 @@ "Attachment" = "Adjunto"; "Unread" = "No leído"; "Flagged" = "Marcado"; +"Search multiple mailboxes" = "Buscar en múltiples carpetas"; /* Main Frame */ @@ -94,8 +96,9 @@ "To" = "Para"; "Cc" = "Cc"; "Bcc" = "CCo"; -"Reply-To" = "Responder a"; +"Reply-To" = "Responder a"; "Add address" = "Añadir dirección"; +"Body" = "Cuerpo del mensaje"; "Open" = "Abrir"; "Select All" = "Seleccionar todo"; @@ -237,6 +240,18 @@ "As Not Junk" = "Como correo normal"; "Run Junk Mail Controls" = "Ejecutar controles de correo basura"; +"Search messages in:" = "Buscar mensajes en:"; +"Search" = "Buscar"; +"Search subfolders" = "Buscar en subcarpetas"; +"Match any of the following" = "Coincidir con cualquiera de los siguientes"; +"Match all of the following" = "Coincidir con alguno de los siguientes"; +"contains" = "contiene"; +"does not contain" = "no contiene"; +"No matches found" = "No se encontraron coincidencias"; +"results found" = "resultados encontrados"; +"result found" = "resultado encontrado"; +"Please specify at least one filter" = "Por favor especifique por lo menos un filtro"; + /* Folder operations */ "Name :" = "Nombre: "; "Enter the new name of your folder :" diff --git a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings index 99f0cdbee..cd3c336be 100644 --- a/UI/MainUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/MainUI/SpanishArgentina.lproj/Localizable.strings @@ -10,9 +10,9 @@ "Connect" = "Conectar"; "Wrong username or password." = "Nombre de usuario o contraseña incorrectos."; -"cookiesNotEnabled" = "No se puede conectar dado que su navegador no acepta cookies. Por favor, habilite las cookies en la configuración de su navegador y pruebe de nuevo."; +"cookiesNotEnabled" = "No se puede conectar debido a que su navegador no acepta cookies. Por favor, habilite las cookies en la configuración de su navegador y pruebe de nuevo."; -"browserNotCompatible" = "Hemos detectado que éste sistema no soporta su versión del navegador. Recomendamos usar Firefox. Haga click en el siguiente enlace para descargar la versión más reciente de este navegador."; +"browserNotCompatible" = "Hemos detectado que éste sistema no soporta la versión de su navegador. Recomendamos usar Firefox. Haga click en el siguiente enlace para descargar la versión más reciente de este navegador."; "alternativeBrowsers" = "Como alternativa, también puede usar uno se los siguientes navegadores compatibles: "; "alternativeBrowserSafari" = "Como alternativa, puede usar Safari."; "Download" = "Descarga"; @@ -44,7 +44,7 @@ "Welsh" = "Cymraeg"; "About" = "Acerca de"; -"AboutBox" = "Desarrollado por Inverse, SOGo es un servidor groupware (software colaborativo) con todas las características necesarias con un focus para simlicidad y capacidad de ampliación.

\nSOGo facilita una interface web rica basada en AJAX Web y soporta una multitud de clientes a través del soporte de protocolos estándares como CalDAV y CardDAV.

\nSOGo esta distribuido bajo
GNU GPL versión 2 o siguiente, y partes bajo la licencia GNU LGPL versión 2. Esto es software libre: esta autorizado el cambio y la redistribución del mismo. No hay garantías, dentro del límite de la ley.

\nVer esta página para las diferentes opciones de soporte."; +"AboutBox" = "SOGo, una herramienta desarrollada por Inverse, es un servidor con múltiples funcionalidades para facilitar el trabajo en grupo. El enfoque de SOGo es la sencillez y la escalabilidad.

\nSOGo provee una potente interfaz Web basada en AJAX y soporta una amplia variedad de clientes nativos mediante el uso de protocólos estándar como CalDAV y CarDAV.

\nSOGO se distribuye bajo la licencia GNU GPL versión 2 o superior. Algunas partes se distribuyen bajo la licencia GNU LGPL version 2. SOGo es software libre: Usted es libre de modificarlo y redistribuirlo. SOGo se distribuye SIN NINGUNA GARANTIA según los alcances permitidos por la ley.

\nConsulte esta página para conocer varias opciones de soporte."; "Your account was locked due to too many failed attempts." = "Su cuenta ha sido bloqueada debido a un número excesivo de errores de conexión."; "Your account was locked due to an expired password." = "Su cuenta ha sido bloqueada debido a una contraseña caducada."; diff --git a/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings b/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings index eae77b19b..7e3c88b2d 100644 --- a/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/PreferencesUI/BrazilianPortuguese.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Encaminhar"; "Password" = "Senha"; "Categories" = "Categorias"; +"Appointments invitations" = "Convites de Compromissos"; "Name" = "Nome"; "Color" = "Cor"; "Add" = "Adicionar"; @@ -97,44 +98,43 @@ "Show time as busy outside working hours" = "Exibir horas como ocupadas quando fora do horário de serviço"; "First week of year :" = "Primeira semana do ano :"; "Enable reminders for Calendar items" = "Habilitar lembretes para os itens do Calendário"; -"Play a sound when a reminder comes due" -= "Executar um som quando existir um lembrete"; +"Play a sound when a reminder comes due" = "Executar um som quando existir um lembrete"; "Default reminder :" = "Lembrete padrão :"; "firstWeekOfYear_January1" = "Inicia em 01 de janeiro"; "firstWeekOfYear_First4DayWeek" = "Primeira semana com 4 dias"; "firstWeekOfYear_FirstFullWeek" = "Primeira semana com 5 dias"; +"Prevent from being invited to appointments" = "Impedir de ser convidado para um compromisso"; +"White list for appointment invitations:" = "Lista branca para convites de compromissos:"; +"Contacts Names" = "Nomes de Contatos"; + /* Default Calendar */ "Default calendar :" = "Calendário Padrão"; "selectedCalendar" = "Calendário selecionado"; "personalCalendar" = "Calendário pessoal"; "firstCalendar" = "Calendário habilizado pela primeira vez"; +"reminder_NONE" = "Não lembrar"; "reminder_5_MINUTES_BEFORE" = "5 minutos"; "reminder_10_MINUTES_BEFORE" = "10 minutos"; "reminder_15_MINUTES_BEFORE" = "15 minutos"; "reminder_30_MINUTES_BEFORE" = "30 minutos"; +"reminder_45_MINUTES_BEFORE" = "45 minutos antes"; "reminder_1_HOUR_BEFORE" = "1 hora"; "reminder_2_HOURS_BEFORE" = "2 horas"; -"reminder_5_HOURS_BEFORE"= "5 horas"; -"reminder_15_HOURS_BEFORE"= "15 horas"; +"reminder_5_HOURS_BEFORE" = "5 horas"; +"reminder_15_HOURS_BEFORE" = "15 horas"; "reminder_1_DAY_BEFORE" = "1 dia"; "reminder_2_DAYS_BEFORE" = "2 dias"; +"reminder_1_WEEK_BEFORE" = "1 semana antes"; /* Mailer */ +"Labels" = "Etiquetas"; "Label" = "Etiqueta"; "Show subscribed mailboxes only" = "Exibir somente caixas de correio inscritas"; "Sort messages by threads" = "Ordenar mensagens por tópicos"; -"Check for new mail:" = "Checar novos emails:"; -"refreshview_manually" = "Manualmente"; -"refreshview_every_minute" = "A cada minuto"; -"refreshview_every_2_minutes" = "A cada 2 minutos"; -"refreshview_every_5_minutes" = "A cada 5 minutos"; -"refreshview_every_10_minutes" = "A cada 10 minutos"; -"refreshview_every_20_minutes" = "A cada 20 minutos"; -"refreshview_every_30_minutes" = "A cada 30 minutos"; -"refreshview_once_per_hour" = "Uma vez por hora"; +"When sending mail, add unknown recipients to my" = "Ao enviar e-mail, adicionar destinatários desconhecidos ao meu"; "Forward messages:" = "Encaminhar mensagens:"; "messageforward_inline" = "No corpo da mensagem"; @@ -153,6 +153,10 @@ "displayremoteinlineimages_never" = "Nunca"; "displayremoteinlineimages_always" = "Sempre"; +/* Contact */ +"Personal Address Book" = "Catálogo Pessoal"; +"Collected Address Book" = "Catálogo Coletado"; + /* IMAP Accounts */ "New Mail Account" = "Nova conta de e-mail"; @@ -200,6 +204,7 @@ "Mail" = "Correio"; "Last" = "Último usado"; "Default Module :" = "Módulo Padrão:"; +"SOGo Version :" = "Versão SOGo:"; "Language :" = "Idioma :"; "choose" = "Escolha ..."; @@ -227,6 +232,16 @@ "Ukrainian" = "Українська"; "Welsh" = "Cymraeg"; +"Refresh View :" = "Atualizar a Visualização:"; +"refreshview_manually" = "Manualmente"; +"refreshview_every_minute" = "A cada minuto"; +"refreshview_every_2_minutes" = "A cada 2 minutos"; +"refreshview_every_5_minutes" = "A cada 5 minutos"; +"refreshview_every_10_minutes" = "A cada 10 minutos"; +"refreshview_every_20_minutes" = "A cada 20 minutos"; +"refreshview_every_30_minutes" = "A cada 30 minutos"; +"refreshview_once_per_hour" = "Uma vez por hora"; + /* Return receipts */ "When I receive a request for a return receipt:" = "Quando eu receber uma confirmação de leitura:"; "Never send a return receipt" = "Nunca enviar confirmação"; @@ -244,6 +259,8 @@ "Active" = "Ativo"; "Move Up" = "Mover para cima"; "Move Down" = "Move para baixo"; +"Connection error" = "Erro de conexão"; +"Service temporarily unavailable" = "Serviço temporariamente indisponível"; /* Filters - UIxFilterEditor */ "Filter name:" = "Nome do filtro:"; @@ -261,6 +278,7 @@ "To or Cc" = "Para ou Cc"; "Size (Kb)" = "Tamanho (Kb)"; "Header" = "Cabeçalho"; +"Body" = "Corpo"; "Flag the message with:" = "Marcar a mensagem com:"; "Discard the message" = "Discate a mensagem"; "File the message in:" = "Arquivo da mensagem em:"; @@ -287,12 +305,8 @@ "Flagged" = "Marcado"; "Junk" = "Lixo"; "Not Junk" = "Não é Lixo"; -"Label 1" = "Rótulo 1"; -"Label 2" = "Rótulo 2"; -"Label 3" = "Rótulo 3"; -"Label 4" = "Rótulo 4"; -"Label 5" = "Rótulo 5"; +/* Password policy */ "The password was changed successfully." = "Senha alterada com sucesso."; "Password must not be empty." = "Le mot de passe ne doit pas être vide."; "The passwords do not match. Please try again." = "Les mots de passe ne sont pas identiques. Essayez de nouveau."; diff --git a/UI/PreferencesUI/Czech.lproj/Localizable.strings b/UI/PreferencesUI/Czech.lproj/Localizable.strings index 2d36eb27a..4a4b15302 100644 --- a/UI/PreferencesUI/Czech.lproj/Localizable.strings +++ b/UI/PreferencesUI/Czech.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Přeposílání"; "Password" = "Heslo"; "Categories" = "Kategorie"; +"Appointments invitations" = "Pozvání na schůzky"; "Name" = "Jméno"; "Color" = "Barva"; "Add" = "Přidat"; diff --git a/UI/PreferencesUI/Dutch.lproj/Localizable.strings b/UI/PreferencesUI/Dutch.lproj/Localizable.strings index 38d208cfe..ad1a94ffd 100644 --- a/UI/PreferencesUI/Dutch.lproj/Localizable.strings +++ b/UI/PreferencesUI/Dutch.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Doorsturen"; "Password" = "Wachtwoord"; "Categories" = "Categorieën"; +"Appointments invitations" = "Uitnodigingen voor afspraken"; "Name" = "Naam"; "Color" = "Kleur"; "Add" = "Toevoegen"; diff --git a/UI/PreferencesUI/Finnish.lproj/Localizable.strings b/UI/PreferencesUI/Finnish.lproj/Localizable.strings index 0b4525532..c7ab17780 100644 --- a/UI/PreferencesUI/Finnish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Finnish.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Edelleenlähetys"; "Password" = "Salasana"; "Categories" = "Luokat"; +"Appointments invitations" = "Kalenterikutsut"; "Name" = "Nimi"; "Color" = "Väri"; "Add" = "Lisää"; diff --git a/UI/PreferencesUI/French.lproj/Localizable.strings b/UI/PreferencesUI/French.lproj/Localizable.strings index 58218f0e6..c4a1c5e00 100644 --- a/UI/PreferencesUI/French.lproj/Localizable.strings +++ b/UI/PreferencesUI/French.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Transfert"; "Password" = "Mot de passe"; "Categories" = "Catégories"; +"Appointments invitations" = "Invitations"; "Name" = "Nom"; "Color" = "Couleur"; "Add" = "Ajouter"; diff --git a/UI/PreferencesUI/German.lproj/Localizable.strings b/UI/PreferencesUI/German.lproj/Localizable.strings index 050f7c3a5..71cea96b0 100644 --- a/UI/PreferencesUI/German.lproj/Localizable.strings +++ b/UI/PreferencesUI/German.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Weiterleitung"; "Password" = "Passwort"; "Categories" = "Kategorien"; +"Appointments invitations" = "Einladungen zu Terminen"; "Name" = "Name"; "Color" = "Farbe"; "Add" = "Hinzufügen"; diff --git a/UI/PreferencesUI/Hungarian.lproj/Localizable.strings b/UI/PreferencesUI/Hungarian.lproj/Localizable.strings index 97c5be583..6bff739fb 100644 --- a/UI/PreferencesUI/Hungarian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Hungarian.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Továbbítás"; "Password" = "Jelszó"; "Categories" = "Kategóriák"; +"Appointments invitations" = "Találkozó meghívók"; "Name" = "Név"; "Color" = "Szín"; "Add" = "Hozzáadás"; diff --git a/UI/PreferencesUI/Polish.lproj/Localizable.strings b/UI/PreferencesUI/Polish.lproj/Localizable.strings index df1126f96..7bf185c5e 100644 --- a/UI/PreferencesUI/Polish.lproj/Localizable.strings +++ b/UI/PreferencesUI/Polish.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Przekazywanie"; "Password" = "Hasło"; "Categories" = "Kategorie"; +"Appointments invitations" = "Ograniczanie zaproszeń"; "Name" = "Nazwa"; "Color" = "Kolor"; "Add" = "Dodaj"; diff --git a/UI/PreferencesUI/Russian.lproj/Localizable.strings b/UI/PreferencesUI/Russian.lproj/Localizable.strings index 493e39f58..0dc61be59 100644 --- a/UI/PreferencesUI/Russian.lproj/Localizable.strings +++ b/UI/PreferencesUI/Russian.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Переслать"; "Password" = "Пароль"; "Categories" = "Категории"; +"Appointments invitations" = "Цель приглашения"; "Name" = "Имя"; "Color" = "Цвет"; "Add" = "Добавить"; @@ -90,10 +91,10 @@ "timeFmt_4" = ""; /* calendar */ -"Week begins on :" = "Неделя начинается с :"; -"Day start time :" = "Рабочий день начинается в :"; +"Week begins on :" = "Неделя начинается с:"; +"Day start time :" = "Рабочий день начинается в:"; "Day end time :" = "Рабочий день заканчивается в :"; -"Day start time must be prior to day end time." = "Day start time must be prior to day end time."; +"Day start time must be prior to day end time." = "Время начала дня должно быть перед временем его окончания."; "Show time as busy outside working hours" = "Показывать время, как занятое, если оно за границами рабочего времени."; "First week of year :" = "Первая неделя года :"; "Enable reminders for Calendar items" = "Включить напоминания для событий календаря"; @@ -124,8 +125,8 @@ "reminder_2_HOURS_BEFORE" = "2 часа"; "reminder_5_HOURS_BEFORE" = "5 часа"; "reminder_15_HOURS_BEFORE" = "15 часов"; -"reminder_1_DAY_BEFORE" = "1 день"; -"reminder_2_DAYS_BEFORE" = "2 дня"; +"reminder_1_DAY_BEFORE" = "1 день назад"; +"reminder_2_DAYS_BEFORE" = "2 дня назад"; "reminder_1_WEEK_BEFORE" = "За 1 неделю"; /* Mailer */ @@ -145,7 +146,7 @@ "And place my signature" = "И поместить мою подпись"; "signatureplacement_above" = "под ответом"; "signatureplacement_below" = "под цитируемым текстом письма"; -"Compose messages in" = "Compose messages in"; +"Compose messages in" = "Составлять сообщения в"; "composemessagestype_html" = "HTML"; "composemessagestype_text" = "Plain text"; "Display remote inline images" = "Показать встроенные изображения из сети"; @@ -159,11 +160,11 @@ /* IMAP Accounts */ "New Mail Account" = "New Mail Account"; -"Server Name:" = "Server Name:"; -"Port:" = "Port:"; +"Server Name:" = "Имя сервера:"; +"Port:" = "Порт:"; "Encryption:" = "Шифрование:"; "None" = "Нет"; -"User Name:" = "User Name:"; +"User Name:" = "Имя пользователя:"; "Password:" = "Пароль:"; "Full Name:" = "Full Name:"; @@ -173,7 +174,7 @@ "(Click to create)" = "(Click to create)"; "Signature" = "Подпись"; -"Please enter your signature below:" = "Please enter your signature below:"; +"Please enter your signature below:" = "Введите вашу подпись ниже:"; "Please specify a valid sender address." = "Пожалуйста укажите правильный адрес отправителя."; "Please specify a valid reply-to address." = "Пожалуйста укажите правильный адрес для ответа."; @@ -194,7 +195,7 @@ "PRIVATE_item" = "Private"; /* Event+task categories */ -"category_none" = "None"; +"category_none" = "Нет"; "calendar_category_labels" = "Годовщина,День рождения,Деловые,Звонки,Клиенты,Конкуренты,Потребители,Избранное,Вслед за,Подарки,Праздники,Идеи,Встречи,Проблемы,Разное,Персональное,Проекты,Государственный праздник,Статус,Поставщики,Путешествия,Отпуск"; /* Default module */ @@ -202,10 +203,10 @@ "Contacts" = "Адресная книга"; "Mail" = "Почта"; "Last" = "Последнее использование"; -"Default Module :" = "Модуль по умолчанию :"; +"Default Module :" = "Модуль по умолчанию:"; "SOGo Version :" = "Версия SOGo:"; -"Language :" = "Язык :"; +"Language :" = "Язык:"; "choose" = "Выбрать ..."; "Arabic" = "العربية"; "Catalan" = "Català"; @@ -271,12 +272,12 @@ "Untitled Filter" = "Фильтр без названия"; "Subject" = "Subject"; -"From" = "From"; +"From" = "От"; "To" = "To"; "Cc" = "Cc"; "To or Cc" = "To or Cc"; -"Size (Kb)" = "Size (Kb)"; -"Header" = "Header"; +"Size (Kb)" = "Размер (кБ)"; +"Header" = "Заголовок"; "Body" = "Тело письма"; "Flag the message with:" = "Пометить сообщение с:"; "Discard the message" = "Уничтожить сообщение"; diff --git a/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings b/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings index 98f09d019..45ccd63df 100644 --- a/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings +++ b/UI/PreferencesUI/SpanishArgentina.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Desvío"; "Password" = "Contraseña"; "Categories" = "Categorías"; +"Appointments invitations" = "Invitaciones a eventos"; "Name" = "Nombre"; "Color" = "Color"; "Add" = "Añadir"; @@ -104,6 +105,10 @@ "firstWeekOfYear_First4DayWeek" = "Primera semana del año de 4 días"; "firstWeekOfYear_FirstFullWeek" = "Primera semana del año completa"; +"Prevent from being invited to appointments" = "No permitir que otros me inviten a eventos"; +"White list for appointment invitations:" = "Lista de excepciones para invitación a eventos:"; +"Contacts Names" = "Nombre de los contactos"; + /* Default Calendar */ "Default calendar :" = "Calendario por defecto"; "selectedCalendar" = "Calendario seleccionado"; @@ -130,15 +135,6 @@ "Show subscribed mailboxes only" = "Mostrar sólo buzones suscritos"; "Sort messages by threads" = "Ordenar mensajes por conversaciones"; "When sending mail, add unknown recipients to my" = "Al enviar correos, agregar destinatarios desconocidos a mi"; -"Check for new mail:" = "Comprobar si hay nuevos correos: "; -"refreshview_manually" = "Manualmente"; -"refreshview_every_minute" = "Cada minuto"; -"refreshview_every_2_minutes" = "Cada 2 minutos"; -"refreshview_every_5_minutes" = "Cada 5 minutos"; -"refreshview_every_10_minutes" = "Cada 10 minutos"; -"refreshview_every_20_minutes" = "Cada 20 minutos"; -"refreshview_every_30_minutes" = "Cada 30 minutos"; -"refreshview_once_per_hour" = "Cada hora"; "Forward messages:" = "Reenviar mensajes:"; "messageforward_inline" = "Incorporado"; @@ -236,6 +232,16 @@ "Ukrainian" = "Українська"; "Welsh" = "Cymraeg"; +"Refresh View :" = "Actualizar la vista:"; +"refreshview_manually" = "Manualmente"; +"refreshview_every_minute" = "Cada minuto"; +"refreshview_every_2_minutes" = "Cada 2 minutos"; +"refreshview_every_5_minutes" = "Cada 5 minutos"; +"refreshview_every_10_minutes" = "Cada 10 minutos"; +"refreshview_every_20_minutes" = "Cada 20 minutos"; +"refreshview_every_30_minutes" = "Cada 30 minutos"; +"refreshview_once_per_hour" = "Cada hora"; + /* Return receipts */ "When I receive a request for a return receipt:" = "Cuando reciba una petición de un acuse de recibo:"; "Never send a return receipt" = "Nunca enviar un acuse de recibo"; diff --git a/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings b/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings index ebad76559..cb59f9ee5 100644 --- a/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings +++ b/UI/PreferencesUI/SpanishSpain.lproj/Localizable.strings @@ -12,6 +12,7 @@ "Forward" = "Desvío"; "Password" = "Contraseña"; "Categories" = "Categorías"; +"Appointments invitations" = "Avisos de Eventos"; "Name" = "Nombre"; "Color" = "Color"; "Add" = "Añadir"; diff --git a/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings b/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings index a2c92dfe9..3c5891e81 100644 --- a/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings +++ b/UI/Scheduler/BrazilianPortuguese.lproj/Localizable.strings @@ -5,6 +5,7 @@ "Create a new event" = "Criar um novo evento"; "Create a new task" = "Criar uma nova tarefa"; "Edit this event or task" = "Editar este evento ou tarefa"; +"Print the current calendar view" = "Imprimir a visualização do calendário atual"; "Delete this event or task" = "Apagar este evento ou tarefa"; "Go to today" = "Vai para hoje"; "Switch to day view" = "Visualizar Dia"; @@ -117,7 +118,7 @@ "Name of the Calendar" = "Nome deste Calendário"; "new" = "Novo"; -"printview" = "Visualizar Impressão"; +"Print view" = "Visualização de Impressão"; "edit" = "Editar"; "delete" = "Apagar"; "proposal" = "Proposta"; @@ -145,6 +146,20 @@ "Hide already accepted and rejected appointments" = "Ocultar apontamentos já aceitos e rejeitados"; "Show already accepted and rejected appointments" = "Exibir apontamentos já aceitos e rejeitados"; +/* Print view */ + +"LIST" = "Lista"; +"Print Settings" = "Configurações de Impressão"; +"Title:" = "Título:"; +"Layout:" = "Layout:"; +"What to Print" = "O que imprimir"; +"Options" = "Opções"; +"Tasks with no due date" = "Tarefas sem data de vencimento"; +"Display working hours only" = "Exibir somente o horário de trabalho"; +"Completed tasks" = "Tarefas Completadas"; +"Display events and tasks colors" = "Exibir eventos e tarefas com cores"; +"Borders" = "Fronteiras"; +"Backgrounds" = "Segundo plano"; /* Appointments */ @@ -225,8 +240,13 @@ "view_future" = "Todos os Eventos Futuros"; "view_selectedday" = "Dia Selecionado"; +"view_not_started" = "Tarefas não iniciadas"; +"view_overdue" = "Tarefas em atraso"; +"view_incomplete" = "Tarefas incompletas"; + "View:" = "Visão:"; -"Title or Description" = "Título ou Descrição"; +"Title, category or location" = "Título, categoria ou localização"; +"Entire content" = "Todo o conteúdo"; "Search" = "Pesquisar"; "Search attendees" = "Pesquisar participantes"; @@ -506,7 +526,7 @@ vtodo_class2 = "(Tarefa Confidencial)"; "Links to this Calendar" = "Links para este Calendário"; "Authenticated User Access" = "Acesso a Usuário Autenticado"; -"CalDAV URL" = "CalDAV url"; +"CalDAV URL" = "CalDAV URL:"; "WebDAV ICS URL" = "WebDAV ICS URL"; "WebDAV XML URL" = "WebDAV XML URL"; @@ -526,6 +546,8 @@ vtodo_class2 = "(Tarefa Confidencial)"; "tagWasRemoved" = "Se você remover este calendário da sincronização, será necessário sincronizar novamente seus dados no dispositivo móvel.\nContinuar?"; "DestinationCalendarError" = "Os calendários de origem e destino são os mesmos. Por favor, tente copiar para outro calendário diferente."; "EventCopyError" = "A cópia falhou. Por favor, tente copiar para um calendário diferente."; +"Please select at least one calendar" = "Por favor, selecione pelo menos um calendário"; + "Open Task..." = "Abrir Tarefa..."; "Mark Completed" = "Marcar como Concluída"; diff --git a/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings b/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings index 893f9d4dd..a987dcfbf 100644 --- a/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings +++ b/UI/Scheduler/SpanishArgentina.lproj/Localizable.strings @@ -29,7 +29,7 @@ /* Week */ "Week" = "Semana"; -"this week" = "ésta semana"; +"this week" = "esta semana"; "Week %d" = "Semana %d"; @@ -38,14 +38,14 @@ /* Month */ -"this month" = "éste mes"; +"this month" = "este mes"; "Previous Month" = "Mes anterior"; "Next Month" = "Próximo mes"; /* Year */ -"this year" = "éste año"; +"this year" = "este año"; /* Menu */ @@ -155,7 +155,11 @@ "What to Print" = "Qué imprimir"; "Options" = "Opciones"; "Tasks with no due date" = "Tareas sin fecha de vencimiento"; +"Display working hours only" = "Mostrar solo las horas laborables"; "Completed tasks" = "Tareas completadas"; +"Display events and tasks colors" = "Mostrar los colores de los eventos y las tareas"; +"Borders" = "Bordes"; +"Backgrounds" = "Fondos"; /* Appointments */ @@ -542,6 +546,8 @@ vtodo_class2 = "(Tarea confidencial)"; "tagWasRemoved" = "Si quita este calendario de la sincronización, necesitará recargar los datos en su teléfono móvil.\n¿Continuar?"; "DestinationCalendarError" = "El calendario de origen y el de destino son iguales. Por favor, intente copiar a otro calendario."; "EventCopyError" = "La copia falló. Por favor, intente copiar a un calendario distinto."; +"Please select at least one calendar" = "Por favor, seleccione al menos un calendario"; + "Open Task..." = "Abrir tarea..."; "Mark Completed" = "Marcar como completo"; From f7f78eaba6ac5304df937f5b26f5d21979657787 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Fri, 21 Nov 2014 09:07:39 -0500 Subject: [PATCH 094/198] Update CKEditor to version 4.4.5 --- NEWS | 1 + .../ckeditor/build-config.js | 14 +- UI/WebServerResources/ckeditor/ckeditor.js | 1052 +++++++++-------- UI/WebServerResources/ckeditor/lang/ar.js | 2 +- UI/WebServerResources/ckeditor/lang/ca.js | 2 +- UI/WebServerResources/ckeditor/lang/cs.js | 2 +- UI/WebServerResources/ckeditor/lang/cy.js | 2 +- UI/WebServerResources/ckeditor/lang/da.js | 2 +- UI/WebServerResources/ckeditor/lang/de.js | 2 +- UI/WebServerResources/ckeditor/lang/es.js | 2 +- UI/WebServerResources/ckeditor/lang/fi.js | 2 +- UI/WebServerResources/ckeditor/lang/fr.js | 2 +- UI/WebServerResources/ckeditor/lang/hu.js | 2 +- UI/WebServerResources/ckeditor/lang/is.js | 2 +- UI/WebServerResources/ckeditor/lang/it.js | 2 +- UI/WebServerResources/ckeditor/lang/nb.js | 2 +- UI/WebServerResources/ckeditor/lang/nl.js | 2 +- UI/WebServerResources/ckeditor/lang/no.js | 2 +- UI/WebServerResources/ckeditor/lang/pl.js | 2 +- UI/WebServerResources/ckeditor/lang/pt-br.js | 2 +- UI/WebServerResources/ckeditor/lang/ru.js | 2 +- UI/WebServerResources/ckeditor/lang/sk.js | 2 +- UI/WebServerResources/ckeditor/lang/sv.js | 2 +- UI/WebServerResources/ckeditor/lang/uk.js | 2 +- .../ckeditor/plugins/about/dialogs/about.js | 2 +- .../ckeditor/plugins/image/dialogs/image.js | 62 +- .../ckeditor/plugins/link/images/anchor.png | Bin 763 -> 589 bytes .../plugins/link/images/hidpi/anchor.png | Bin 1597 -> 1379 bytes .../ckeditor/skins/moono/editor_ie7.css | 2 +- .../ckeditor/skins/moono/editor_iequirks.css | 2 +- .../ckeditor/skins/moono/images/arrow.png | Bin 261 -> 191 bytes .../ckeditor/skins/moono/images/close.png | Bin 824 -> 468 bytes .../skins/moono/images/hidpi/close.png | Bin 1792 -> 1271 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 1503 -> 1329 bytes .../skins/moono/images/hidpi/lock.png | Bin 1616 -> 1299 bytes .../skins/moono/images/hidpi/refresh.png | Bin 2320 -> 1842 bytes .../ckeditor/skins/moono/images/lock-open.png | Bin 736 -> 349 bytes .../ckeditor/skins/moono/images/lock.png | Bin 728 -> 475 bytes .../ckeditor/skins/moono/images/refresh.png | Bin 953 -> 422 bytes 39 files changed, 596 insertions(+), 581 deletions(-) diff --git a/NEWS b/NEWS index 1cdba208e..3a1e23e6c 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Enhancements - updated timezone information (#2968) - updated Brazilian Portuguese, Czech, Dutch, Finnish, French, German, Hungarian, Polish, Russian, Spanish (Argentina), and Spanish (Spain) translations + - updated CKEditor to version 4.4.5 Bug fixes - fixed freebusy lookup with "Show time as busy" (#2930) diff --git a/UI/WebServerResources/ckeditor/build-config.js b/UI/WebServerResources/ckeditor/build-config.js index 57789ab8d..9f7794cc1 100644 --- a/UI/WebServerResources/ckeditor/build-config.js +++ b/UI/WebServerResources/ckeditor/build-config.js @@ -29,15 +29,19 @@ var CKBUILDER_CONFIG = { preset: 'basic', ignore: [ '.bender', - '.DS_Store', - '.gitignore', - '.gitattributes', - '.idea', - '.mailmap', 'bender.js', 'bender-err.log', 'bender-out.log', 'dev', + '.DS_Store', + '.gitattributes', + '.gitignore', + 'Gruntfile.js', + '.idea', + '.jscsrc', + '.jshintignore', + '.jshintrc', + '.mailmap', 'node_modules', 'package.json', 'README.md', diff --git a/UI/WebServerResources/ckeditor/ckeditor.js b/UI/WebServerResources/ckeditor/ckeditor.js index 54bcc9ee2..f04b99b44 100644 --- a/UI/WebServerResources/ckeditor/ckeditor.js +++ b/UI/WebServerResources/ckeditor/ckeditor.js @@ -2,463 +2,465 @@ Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ -(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a={timestamp:"E6FD",version:"4.4.3",revision:"fd4f17c",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:"unloaded",basePath:function(){var a=window.CKEDITOR_BASEPATH||"";if(!a)for(var d=document.getElementsByTagName("script"),e=0;e=0;s--)if(m[s].priority<=n){m.splice(s+1,0,h);return{removeListener:i}}m.unshift(h)}return{removeListener:i}}, -once:function(){var a=arguments[1];arguments[1]=function(d){d.removeListener();return a.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,d=function(){a=1},e=0,b=function(){e=1};return function(n,h,i){var m=c(this)[n],n=a,p=e;a=e=0;if(m){var s=m.listeners;if(s.length)for(var s=s.slice(0),x,q=0;q=0&&e.listeners.splice(b,1)}},removeAllListeners:function(){var a=c(this),d;for(d in a)delete a[d]},hasListeners:function(a){return(a=c(this)[a])&&a.listeners.length>0}}}()); -CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,c,this)},CKEDITOR.editor.prototype.fireOnce=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); -CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),c={ie:a.indexOf("trident/")>-1,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat"&&(!document.documentMode||document.documentMode<10),mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,e=window.location.hostname;return a!=e&&a!="["+e+"]"},secure:location.protocol== -"https:"};c.gecko=navigator.product=="Gecko"&&!c.webkit&&!c.ie;if(c.webkit)a.indexOf("chrome")>-1?c.chrome=true:c.safari=true;var b=0;if(c.ie){b=c.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;c.ie9Compat=b==9;c.ie8Compat=b==8;c.ie7Compat=b==7;c.ie6Compat=b<7||c.quirks}if(c.gecko){var f=a.match(/rv:([\d\.]+)/);if(f){f=f[1].split(".");b=f[0]*1E4+(f[1]||0)*100+(f[2]||0)*1}}c.air&&(b=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));c.webkit&&(b=parseFloat(a.match(/ applewebkit\/(\d+)/)[1])); -c.version=b;c.isCompatible=c.iOS&&b>=534||!c.mobile&&(c.ie&&b>6||c.gecko&&b>=2E4||c.air&&b>=1||c.webkit&&b>=522||false);c.hidpi=window.devicePixelRatio>=2;c.needsBrFiller=c.gecko||c.webkit||c.ie&&b>10;c.needsNbspFiller=c.ie&&b<11;c.cssClass="cke_browser_"+(c.ie?"ie":c.gecko?"gecko":c.webkit?"webkit":"unknown");if(c.quirks)c.cssClass=c.cssClass+" cke_browser_quirks";if(c.ie)c.cssClass=c.cssClass+(" cke_browser_ie"+(c.quirks?"6 cke_browser_iequirks":c.version));if(c.air)c.cssClass=c.cssClass+" cke_browser_air"; -if(c.iOS)c.cssClass=c.cssClass+" cke_browser_ios";if(c.hidpi)c.cssClass=c.cssClass+" cke_hidpi";return c}()); +(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,e={timestamp:"E8PB",version:"4.4.5",revision:"25cdcad",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var f=window.CKEDITOR_BASEPATH||"";if(!f)for(var d=document.getElementsByTagName("script"),c=0;c=0;t--)if(p[t].priority<=e){p.splice(t+1,0,m);return{removeListener:j}}p.unshift(m)}return{removeListener:j}}, +once:function(){var a=Array.prototype.slice.call(arguments),f=a[1];a[1]=function(a){a.removeListener();return f.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,f=function(){a=1},d=0,b=function(){d=1};return function(h,m,j){var p=e(this)[h],h=a,u=d;a=d=0;if(p){var t=p.listeners;if(t.length)for(var t=t.slice(0),y,n=0;n=0&&d.listeners.splice(b,1)}},removeAllListeners:function(){var a=e(this),f;for(f in a)delete a[f]},hasListeners:function(a){return(a=e(this)[a])&&a.listeners.length> +0}}}());CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,e){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,e,this)},CKEDITOR.editor.prototype.fireOnce=function(a,e){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,e,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)); +CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),e={ie:a.indexOf("trident/")>-1,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat"&&(!document.documentMode||document.documentMode<10),mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,d=window.location.hostname;return a!=d&&a!="["+d+"]"},secure:location.protocol== +"https:"};e.gecko=navigator.product=="Gecko"&&!e.webkit&&!e.ie;if(e.webkit)a.indexOf("chrome")>-1?e.chrome=true:e.safari=true;var b=0;if(e.ie){b=e.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;e.ie9Compat=b==9;e.ie8Compat=b==8;e.ie7Compat=b==7;e.ie6Compat=b<7||e.quirks}if(e.gecko){var c=a.match(/rv:([\d\.]+)/);if(c){c=c[1].split(".");b=c[0]*1E4+(c[1]||0)*100+(c[2]||0)*1}}e.air&&(b=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));e.webkit&&(b=parseFloat(a.match(/ applewebkit\/(\d+)/)[1])); +e.version=b;e.isCompatible=e.iOS&&b>=534||!e.mobile&&(e.ie&&b>6||e.gecko&&b>=2E4||e.air&&b>=1||e.webkit&&b>=522||false);e.hidpi=window.devicePixelRatio>=2;e.needsBrFiller=e.gecko||e.webkit||e.ie&&b>10;e.needsNbspFiller=e.ie&&b<11;e.cssClass="cke_browser_"+(e.ie?"ie":e.gecko?"gecko":e.webkit?"webkit":"unknown");if(e.quirks)e.cssClass=e.cssClass+" cke_browser_quirks";if(e.ie)e.cssClass=e.cssClass+(" cke_browser_ie"+(e.quirks?"6 cke_browser_iequirks":e.version));if(e.air)e.cssClass=e.cssClass+" cke_browser_air"; +if(e.iOS)e.cssClass=e.cssClass+" cke_browser_ios";if(e.hidpi)e.cssClass=e.cssClass+" cke_hidpi";return e}()); "unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!="basic_ready")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a= -CKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status="basic_ready";a&&a._load?a():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status="basic_loaded"}();CKEDITOR.dom={}; -(function(){var a=[],c=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,f=/>/g,d=/"+d+""):e.push('');return e.join("")}, -htmlEncode:function(a){return(""+a).replace(b,"&").replace(f,">").replace(d,"<")},htmlDecode:function(a){return a.replace(g,"&").replace(n,">").replace(h,"<")},htmlEncodeAttr:function(a){return a.replace(e,""").replace(d,"<").replace(f,">")},htmlDecodeAttr:function(a){return a.replace(i,'"').replace(h,"<").replace(n,">")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(a,d){var e=d(a);e.prototype= -a.prototype;return e},setTimeout:function(a,d,e,b,c){c||(c=window);e||(e=c);return c.setTimeout(function(){b?a.apply(e,[].concat(b)):a.apply(e)},d||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(d){return d.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(d){return d.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(d){return d.replace(a,"")}}(),indexOf:function(a,d){if(typeof d=="function")for(var e=0,b=a.length;e=0?a[e]:null},bind:function(a,d){return function(){return a.apply(d,arguments)}},createClass:function(a){var d=a.$,e=a.base,b=a.privates||a._,c=a.proto,a=a.statics;!d&&(d=function(){e&&this.base.apply(this,arguments)});if(b)var o=d,d=function(){var a=this._||(this._={}),d;for(d in b){var e=b[d];a[d]=typeof e=="function"?CKEDITOR.tools.bind(e,this):e}o.apply(this,arguments)};if(e){d.prototype= -this.prototypedCopy(e.prototype);d.prototype.constructor=d;d.base=e;d.baseProto=e.prototype;d.prototype.base=function(){this.base=e.prototype.base;e.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(d.prototype,c,true);a&&this.extend(d,a,true);return d},addFunction:function(d,e){return a.push(function(){return d.apply(e||this,arguments)})-1},removeFunction:function(d){a[d]=null},callFunction:function(d){var e=a[d];return e&&e.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a= -/^-?\d+\.?\d*px$/,d;return function(e){d=CKEDITOR.tools.trim(e+"")+"px";return a.test(d)?d:e||""}}(),convertToPx:function(){var a;return function(d){if(!a){a=CKEDITOR.dom.element.createFromHtml('
',CKEDITOR.document);CKEDITOR.document.getBody().append(a)}if(!/%$/.test(d)){a.setStyle("width",d);return a.$.clientWidth}return d}}(),repeat:function(a,d){return Array(d+1).join(a)},tryThese:function(){for(var a, -d=0,e=arguments.length;d/g,f=/"+f+""):d.push('');return d.join("")}, +htmlEncode:function(a){return(""+a).replace(b,"&").replace(c,">").replace(f,"<")},htmlDecode:function(a){return a.replace(g,"&").replace(h,">").replace(m,"<")},htmlEncodeAttr:function(a){return a.replace(d,""").replace(f,"<").replace(c,">")},htmlDecodeAttr:function(a){return a.replace(j,'"').replace(m,"<").replace(h,">")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(a,f){var d=f(a);d.prototype= +a.prototype;return d},setTimeout:function(a,f,d,b,c){c||(c=window);d||(d=c);return c.setTimeout(function(){b?a.apply(d,[].concat(b)):a.apply(d)},f||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(f){return f.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(f){return f.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(f){return f.replace(a,"")}}(),indexOf:function(a,f){if(typeof f=="function")for(var d=0,b=a.length;d=0?a[d]:null},bind:function(a,f){return function(){return a.apply(f,arguments)}},createClass:function(a){var f=a.$,d=a.base,b=a.privates||a._,c=a.proto,a=a.statics;!f&&(f=function(){d&&this.base.apply(this,arguments)});if(b)var e=f,f=function(){var a=this._||(this._={}),f;for(f in b){var d=b[f];a[f]=typeof d=="function"?CKEDITOR.tools.bind(d,this):d}e.apply(this,arguments)};if(d){f.prototype= +this.prototypedCopy(d.prototype);f.prototype.constructor=f;f.base=d;f.baseProto=d.prototype;f.prototype.base=function(){this.base=d.prototype.base;d.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(f.prototype,c,true);a&&this.extend(f,a,true);return f},addFunction:function(f,d){return a.push(function(){return f.apply(d||this,arguments)})-1},removeFunction:function(f){a[f]=null},callFunction:function(f){var d=a[f];return d&&d.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a= +/^-?\d+\.?\d*px$/,f;return function(d){f=CKEDITOR.tools.trim(d+"")+"px";return a.test(f)?f:d||""}}(),convertToPx:function(){var a;return function(f){if(!a){a=CKEDITOR.dom.element.createFromHtml('
',CKEDITOR.document);CKEDITOR.document.getBody().append(a)}if(!/%$/.test(f)){a.setStyle("width",f);return a.$.clientWidth}return f}}(),repeat:function(a,f){return Array(f+1).join(a)},tryThese:function(){for(var a, +f=0,d=arguments.length;f8)&&c)a=c+":"+a;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];return a= -a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*]*?>)|^/i,'$&\n