New timezone management for importer (now working as expected ;) )
Dynamic timezone-change preview =) TODO: - complete timezone mapping list! - check exporter timezone management
This commit is contained in:
parent
7d42712f43
commit
fb426098d6
@ -1,3 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* ResponseHandler
|
||||||
|
*
|
||||||
|
* This class handles all responses from the php backend
|
||||||
|
*
|
||||||
|
* @author Christoph Haas <mail@h44z.net>
|
||||||
|
* @modified 29.12.2012
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
|
*/
|
||||||
Ext.namespace('Zarafa.plugins.calendarimporter.data');
|
Ext.namespace('Zarafa.plugins.calendarimporter.data');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,84 +1,164 @@
|
|||||||
|
/**
|
||||||
|
* Timezone class
|
||||||
|
*
|
||||||
|
* This class can handle all our timezone operations and conversions.
|
||||||
|
*
|
||||||
|
* @author Christoph Haas <mail@h44z.net>
|
||||||
|
* @modified 29.12.2012
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
|
*/
|
||||||
|
|
||||||
Ext.namespace("Zarafa.plugins.calendarimporter.data");
|
Ext.namespace("Zarafa.plugins.calendarimporter.data");
|
||||||
|
|
||||||
Zarafa.plugins.calendarimporter.data.Timezones = Ext.extend(Object, {
|
Zarafa.plugins.calendarimporter.data.Timezones = Ext.extend(Object, {
|
||||||
|
|
||||||
store : [
|
store : [
|
||||||
['Pacific/Midway','(UTC -11:00) Midway, Niue, Pago Pago'],
|
['Pacific/Midway','(UTC -11:00) Midway, Niue, Pago Pago', -660],
|
||||||
['America/Adak','(UTC -10:00) Adak'],
|
['America/Adak','(UTC -10:00) Adak', -600],
|
||||||
['Pacific/Fakaofo','(UTC -10:00) Fakaofo, Honolulu, Johnston, Rarotonga, Tahiti'],
|
['Pacific/Fakaofo','(UTC -10:00) Fakaofo, Honolulu, Johnston, Rarotonga, Tahiti', -600],
|
||||||
['Pacific/Marquesas','(UTC -10:30) Marquesas'],
|
['Pacific/Marquesas','(UTC -10:30) Marquesas', -630],
|
||||||
['America/Anchorage','(UTC -09:00) Anchorage, Juneau, Nome, Sitka, Yakutat'],
|
['America/Anchorage','(UTC -09:00) Anchorage, Juneau, Nome, Sitka, Yakutat', -540],
|
||||||
['Pacific/Gambier','(UTC -09:00) Gambier'],
|
['Pacific/Gambier','(UTC -09:00) Gambier', -540],
|
||||||
['America/Dawson','(UTC -08:00) Dawson, Los Angeles, Tijuana, Vancouver, Whitehorse'],
|
['America/Dawson','(UTC -08:00) Dawson, Los Angeles, Tijuana, Vancouver, Whitehorse', -480],
|
||||||
['America/Santa_Isabel','(UTC -08:00) Santa Isabel'],
|
['America/Santa_Isabel','(UTC -08:00) Santa Isabel', -480],
|
||||||
['America/Metlakatla','(UTC -08:00) Metlakatla, Pitcairn'],
|
['America/Metlakatla','(UTC -08:00) Metlakatla, Pitcairn', -480],
|
||||||
['America/Dawson_Creek','(UTC -07:00) Dawson Creek, Hermosillo, Phoenix'],
|
['America/Dawson_Creek','(UTC -07:00) Dawson Creek, Hermosillo, Phoenix', -420],
|
||||||
['America/Chihuahua','(UTC -07:00) Chihuahua, Mazatlan'],
|
['America/Chihuahua','(UTC -07:00) Chihuahua, Mazatlan', -420],
|
||||||
['America/Boise','(UTC -07:00) Boise, Cambridge Bay, Denver, Edmonton, Inuvik, Ojinaga, Shiprock, Yellowknife'],
|
['America/Boise','(UTC -07:00) Boise, Cambridge Bay, Denver, Edmonton, Inuvik, Ojinaga, Shiprock, Yellowknife', -420],
|
||||||
['America/Chicago','(UTC -06:00) Beulah, Center, Chicago, Knox, Matamoros, Menominee, New Salem, Rainy River, Rankin Inlet, Resolute, Tell City, Winnipeg'],
|
['America/Chicago','(UTC -06:00) Beulah, Center, Chicago, Knox, Matamoros, Menominee, New Salem, Rainy River, Rankin Inlet, Resolute, Tell City, Winnipeg', -360],
|
||||||
['America/Belize','(UTC -06:00) Belize, Costa Rica, El Salvador, Galapagos, Guatemala, Managua, Regina, Swift Current, Tegucigalpa'],
|
['America/Belize','(UTC -06:00) Belize, Costa Rica, El Salvador, Galapagos, Guatemala, Managua, Regina, Swift Current, Tegucigalpa', -360],
|
||||||
['Pacific/Easter','(UTC -06:00) Easter'],
|
['Pacific/Easter','(UTC -06:00) Easter', -360],
|
||||||
['America/Bahia_Banderas','(UTC -06:00) Bahia Banderas, Cancun, Merida, Mexico City, Monterrey'],
|
['America/Bahia_Banderas','(UTC -06:00) Bahia Banderas, Cancun, Merida, Mexico City, Monterrey', -360],
|
||||||
['America/Detroit','(UTC -05:00) Detroit, Grand Turk, Indianapolis, Iqaluit, Louisville, Marengo, Monticello, Montreal, Nassau, New York, Nipigon, Pangnirtung, Petersburg, Thunder Bay, Toronto, Vevay, Vincennes, Winamac'],
|
['America/Detroit','(UTC -05:00) Detroit, Grand Turk, Indianapolis, Iqaluit, Louisville, Marengo, Monticello, Montreal, Nassau, New York, Nipigon, Pangnirtung, Petersburg, Thunder Bay, Toronto, Vevay, Vincennes, Winamac', -300],
|
||||||
['America/Atikokan','(UTC -05:00) Atikokan, Bogota, Cayman, Guayaquil, Jamaica, Lima, Panama, Port-au-Prince'],
|
['America/Atikokan','(UTC -05:00) Atikokan, Bogota, Cayman, Guayaquil, Jamaica, Lima, Panama, Port-au-Prince', -300],
|
||||||
['America/Havana','(UTC -05:00) Havana'],
|
['America/Havana','(UTC -05:00) Havana', -300],
|
||||||
['America/Caracas','(UTC -05:30) Caracas'],
|
['America/Caracas','(UTC -05:30) Caracas', -330],
|
||||||
['America/Glace_Bay','(UTC -04:00) Bermuda, Glace Bay, Goose Bay, Halifax, Moncton, Thule'],
|
['America/Glace_Bay','(UTC -04:00) Bermuda, Glace Bay, Goose Bay, Halifax, Moncton, Thule', -240],
|
||||||
['Atlantic/Stanley','(UTC -04:00) Stanley'],
|
['Atlantic/Stanley','(UTC -04:00) Stanley', -240],
|
||||||
['America/Santiago','(UTC -04:00) Palmer, Santiago'],
|
['America/Santiago','(UTC -04:00) Palmer, Santiago', -240],
|
||||||
['America/Anguilla','(UTC -04:00) Anguilla, Antigua, Aruba, Barbados, Blanc-Sablon, Boa Vista, Curacao, Dominica, Eirunepe, Grenada, Guadeloupe, Guyana, Kralendijk, La Paz, Lower Princes, Manaus, Marigot, Martinique, Montserrat, Port of Spain, Porto Velho, Puerto Rico, Rio Branco, Santo Domingo, St Barthelemy, St Kitts, St Lucia, St Thomas, St Vincent, Tortola'],
|
['America/Anguilla','(UTC -04:00) Anguilla, Antigua, Aruba, Barbados, Blanc-Sablon, Boa Vista, Curacao, Dominica, Eirunepe, Grenada, Guadeloupe, Guyana, Kralendijk, La Paz, Lower Princes, Manaus, Marigot, Martinique, Montserrat, Port of Spain, Porto Velho, Puerto Rico, Rio Branco, Santo Domingo, St Barthelemy, St Kitts, St Lucia, St Thomas, St Vincent, Tortola', -240],
|
||||||
['America/Campo_Grande','(UTC -04:00) Campo Grande, Cuiaba'],
|
['America/Campo_Grande','(UTC -04:00) Campo Grande, Cuiaba', -240],
|
||||||
['America/Asuncion','(UTC -04:00) Asuncion'],
|
['America/Asuncion','(UTC -04:00) Asuncion', -240],
|
||||||
['America/St_Johns','(UTC -04:30) St Johns'],
|
['America/St_Johns','(UTC -04:30) St Johns', -270],
|
||||||
['America/Sao_Paulo','(UTC -03:00) Sao Paulo'],
|
['America/Sao_Paulo','(UTC -03:00) Sao Paulo', -180],
|
||||||
['America/Araguaina','(UTC -03:00) Araguaina, Bahia, Belem, Buenos Aires, Catamarca, Cayenne, Cordoba, Fortaleza, Jujuy, La Rioja, Maceio, Mendoza, Paramaribo, Recife, Rio Gallegos, Rothera, Salta, San Juan, Santarem, Tucuman, Ushuaia'],
|
['America/Araguaina','(UTC -03:00) Araguaina, Bahia, Belem, Buenos Aires, Catamarca, Cayenne, Cordoba, Fortaleza, Jujuy, La Rioja, Maceio, Mendoza, Paramaribo, Recife, Rio Gallegos, Rothera, Salta, San Juan, Santarem, Tucuman, Ushuaia', -180],
|
||||||
['America/Montevideo','(UTC -03:00) Montevideo'],
|
['America/Montevideo','(UTC -03:00) Montevideo', -180],
|
||||||
['America/Godthab','(UTC -03:00) Godthab'],
|
['America/Godthab','(UTC -03:00) Godthab', -180],
|
||||||
['America/Argentina/San_Luis','(UTC -03:00) San Luis'],
|
['America/Argentina/San_Luis','(UTC -03:00) San Luis', -180],
|
||||||
['America/Miquelon','(UTC -03:00) Miquelon'],
|
['America/Miquelon','(UTC -03:00) Miquelon', -180],
|
||||||
['America/Noronha','(UTC -02:00) Noronha, South Georgia'],
|
['America/Noronha','(UTC -02:00) Noronha, South Georgia', -120],
|
||||||
['Atlantic/Cape_Verde','(UTC -01:00) Cape Verde'],
|
['Atlantic/Cape_Verde','(UTC -01:00) Cape Verde', -60],
|
||||||
['America/Scoresbysund','(UTC -01:00) Azores, Scoresbysund'],
|
['America/Scoresbysund','(UTC -01:00) Azores, Scoresbysund', -60],
|
||||||
['Atlantic/Canary','(UTC) Canary, Dublin, Faroe, Guernsey, Isle of Man, Jersey, Lisbon, London, Madeira'],
|
['Atlantic/Canary','(UTC) Canary, Dublin, Faroe, Guernsey, Isle of Man, Jersey, Lisbon, London, Madeira', 0],
|
||||||
['Africa/Abidjan','(UTC) Abidjan, Accra, Bamako, Banjul, Bissau, Casablanca, Conakry, Dakar, Danmarkshavn, El Aaiun, Freetown, Lome, Monrovia, Nouakchott, Ouagadougou, Reykjavik, Sao Tome, St Helena'],
|
['Africa/Abidjan','(UTC) Abidjan, Accra, Bamako, Banjul, Bissau, Casablanca, Conakry, Dakar, Danmarkshavn, El Aaiun, Freetown, Lome, Monrovia, Nouakchott, Ouagadougou, Reykjavik, Sao Tome, St Helena', 0],
|
||||||
['Africa/Algiers','(UTC +01:00) Algiers, Bangui, Brazzaville, Douala, Kinshasa, Lagos, Libreville, Luanda, Malabo, Ndjamena, Niamey, Porto-Novo, Tunis'],
|
['Africa/Algiers','(UTC +01:00) Algiers, Bangui, Brazzaville, Douala, Kinshasa, Lagos, Libreville, Luanda, Malabo, Ndjamena, Niamey, Porto-Novo, Tunis', 60],
|
||||||
['Africa/Ceuta','(UTC +01:00) Amsterdam, Andorra, Belgrade, Berlin, Bratislava, Brussels, Budapest, Ceuta, Copenhagen, Gibraltar, Ljubljana, Longyearbyen, Luxembourg, Madrid, Malta, Monaco, Oslo, Paris, Podgorica, Prague, Rome, San Marino, Sarajevo, Skopje, Stockholm, Tirane, Vaduz, Vatican, Vienna, Warsaw, Zagreb, Zurich'],
|
['Africa/Ceuta','(UTC +01:00) Amsterdam, Andorra, Belgrade, Berlin, Bratislava, Brussels, Budapest, Ceuta, Copenhagen, Gibraltar, Ljubljana, Longyearbyen, Luxembourg, Madrid, Malta, Monaco, Oslo, Paris, Podgorica, Prague, Rome, San Marino, Sarajevo, Skopje, Stockholm, Tirane, Vaduz, Vatican, Vienna, Warsaw, Zagreb, Zurich', 60],
|
||||||
['Africa/Windhoek','(UTC +01:00) Windhoek'],
|
['Africa/Windhoek','(UTC +01:00) Windhoek', 60],
|
||||||
['Asia/Damascus','(UTC +02:00) Damascus'],
|
['Asia/Damascus','(UTC +02:00) Damascus', 120],
|
||||||
['Asia/Beirut','(UTC +02:00) Beirut'],
|
['Asia/Beirut','(UTC +02:00) Beirut', 120],
|
||||||
['Asia/Jerusalem','(UTC +02:00) Jerusalem'],
|
['Asia/Jerusalem','(UTC +02:00) Jerusalem', 120],
|
||||||
['Asia/Nicosia','(UTC +02:00) Athens, Bucharest, Chisinau, Helsinki, Istanbul, Mariehamn, Nicosia, Riga, Sofia, Tallinn, Vilnius'],
|
['Asia/Nicosia','(UTC +02:00) Athens, Bucharest, Chisinau, Helsinki, Istanbul, Mariehamn, Nicosia, Riga, Sofia, Tallinn, Vilnius', 120],
|
||||||
['Africa/Blantyre','(UTC +02:00) Blantyre, Bujumbura, Cairo, Gaborone, Gaza, Harare, Hebron, Johannesburg, Kigali, Lubumbashi, Lusaka, Maputo, Maseru, Mbabane, Tripoli'],
|
['Africa/Blantyre','(UTC +02:00) Blantyre, Bujumbura, Cairo, Gaborone, Gaza, Harare, Hebron, Johannesburg, Kigali, Lubumbashi, Lusaka, Maputo, Maseru, Mbabane, Tripoli', 120],
|
||||||
['Asia/Amman','(UTC +02:00) Amman'],
|
['Asia/Amman','(UTC +02:00) Amman', 120],
|
||||||
['Africa/Addis_Ababa','(UTC +03:00) Addis Ababa, Aden, Antananarivo, Asmara, Baghdad, Bahrain, Comoro, Dar es Salaam, Djibouti, Juba, Kaliningrad, Kampala, Khartoum, Kiev, Kuwait, Mayotte, Minsk, Mogadishu, Nairobi, Qatar, Riyadh, Simferopol, Syowa, Uzhgorod, Zaporozhye'],
|
['Africa/Addis_Ababa','(UTC +03:00) Addis Ababa, Aden, Antananarivo, Asmara, Baghdad, Bahrain, Comoro, Dar es Salaam, Djibouti, Juba, Kaliningrad, Kampala, Khartoum, Kiev, Kuwait, Mayotte, Minsk, Mogadishu, Nairobi, Qatar, Riyadh, Simferopol, Syowa, Uzhgorod, Zaporozhye', 180],
|
||||||
['Asia/Tehran','(UTC +03:30) Tehran'],
|
['Asia/Tehran','(UTC +03:30) Tehran', 210],
|
||||||
['Asia/Yerevan','(UTC +04:00) Yerevan'],
|
['Asia/Yerevan','(UTC +04:00) Yerevan', 240],
|
||||||
['Asia/Dubai','(UTC +04:00) Dubai, Mahe, Mauritius, Moscow, Muscat, Reunion, Samara, Tbilisi, Volgograd'],
|
['Asia/Dubai','(UTC +04:00) Dubai, Mahe, Mauritius, Moscow, Muscat, Reunion, Samara, Tbilisi, Volgograd', 240],
|
||||||
['Asia/Baku','(UTC +04:00) Baku'],
|
['Asia/Baku','(UTC +04:00) Baku', 240],
|
||||||
['Asia/Kabul','(UTC +04:30) Kabul'],
|
['Asia/Kabul','(UTC +04:30) Kabul', 270],
|
||||||
['Antarctica/Mawson','(UTC +05:00) Aqtau, Aqtobe, Ashgabat, Dushanbe, Karachi, Kerguelen, Maldives, Mawson, Oral, Samarkand, Tashkent'],
|
['Antarctica/Mawson','(UTC +05:00) Aqtau, Aqtobe, Ashgabat, Dushanbe, Karachi, Kerguelen, Maldives, Mawson, Oral, Samarkand, Tashkent', 300],
|
||||||
['Asia/Colombo','(UTC +05:30) Colombo, Kolkata'],
|
['Asia/Colombo','(UTC +05:30) Colombo, Kolkata', 330],
|
||||||
['Asia/Kathmandu','(UTC +05:45) Kathmandu'],
|
['Asia/Kathmandu','(UTC +05:45) Kathmandu', 345],
|
||||||
['Antarctica/Vostok','(UTC +06:00) Almaty, Bishkek, Chagos, Dhaka, Qyzylorda, Thimphu, Vostok, Yekaterinburg'],
|
['Antarctica/Vostok','(UTC +06:00) Almaty, Bishkek, Chagos, Dhaka, Qyzylorda, Thimphu, Vostok, Yekaterinburg', 360],
|
||||||
['Asia/Rangoon','(UTC +06:30) Cocos, Rangoon'],
|
['Asia/Rangoon','(UTC +06:30) Cocos, Rangoon', 390],
|
||||||
['Antarctica/Davis','(UTC +07:00) Bangkok, Christmas, Davis, Ho Chi Minh, Hovd, Jakarta, Novokuznetsk, Novosibirsk, Omsk, Phnom Penh, Pontianak, Vientiane'],
|
['Antarctica/Davis','(UTC +07:00) Bangkok, Christmas, Davis, Ho Chi Minh, Hovd, Jakarta, Novokuznetsk, Novosibirsk, Omsk, Phnom Penh, Pontianak, Vientiane', 420],
|
||||||
['Antarctica/Casey','(UTC +08:00) Brunei, Casey, Choibalsan, Chongqing, Harbin, Hong Kong, Kashgar, Krasnoyarsk, Kuala Lumpur, Kuching, Macau, Makassar, Manila, Perth, Shanghai, Singapore, Taipei, Ulaanbaatar, Urumqi'],
|
['Antarctica/Casey','(UTC +08:00) Brunei, Casey, Choibalsan, Chongqing, Harbin, Hong Kong, Kashgar, Krasnoyarsk, Kuala Lumpur, Kuching, Macau, Makassar, Manila, Perth, Shanghai, Singapore, Taipei, Ulaanbaatar, Urumqi', 480],
|
||||||
['Australia/Eucla','(UTC +08:45) Eucla'],
|
['Australia/Eucla','(UTC +08:45) Eucla', 525],
|
||||||
['Asia/Dili','(UTC +09:00) Dili, Irkutsk, Jayapura, Palau, Pyongyang, Seoul, Tokyo'],
|
['Asia/Dili','(UTC +09:00) Dili, Irkutsk, Jayapura, Palau, Pyongyang, Seoul, Tokyo', 540],
|
||||||
['Australia/Adelaide','(UTC +09:30) Adelaide, Broken Hill'],
|
['Australia/Adelaide','(UTC +09:30) Adelaide, Broken Hill', 570],
|
||||||
['Australia/Darwin','(UTC +09:30) Darwin'],
|
['Australia/Darwin','(UTC +09:30) Darwin', 570],
|
||||||
['Antarctica/DumontDUrville','(UTC +10:00) Brisbane, Chuuk, DumontDUrville, Guam, Lindeman, Port Moresby, Saipan, Yakutsk'],
|
['Antarctica/DumontDUrville','(UTC +10:00) Brisbane, Chuuk, DumontDUrville, Guam, Lindeman, Port Moresby, Saipan, Yakutsk', 600],
|
||||||
['Australia/Currie','(UTC +10:00) Currie, Hobart, Melbourne, Sydney'],
|
['Australia/Currie','(UTC +10:00) Currie, Hobart, Melbourne, Sydney', 600],
|
||||||
['Australia/Lord_Howe','(UTC +10:30) Lord Howe'],
|
['Australia/Lord_Howe','(UTC +10:30) Lord Howe', 630],
|
||||||
['Antarctica/Macquarie','(UTC +11:00) Efate, Guadalcanal, Kosrae, Macquarie, Noumea, Pohnpei, Sakhalin, Vladivostok'],
|
['Antarctica/Macquarie','(UTC +11:00) Efate, Guadalcanal, Kosrae, Macquarie, Noumea, Pohnpei, Sakhalin, Vladivostok', 660],
|
||||||
['Pacific/Norfolk','(UTC +11:30) Norfolk'],
|
['Pacific/Norfolk','(UTC +11:30) Norfolk', 690],
|
||||||
['Antarctica/McMurdo','(UTC +12:00) Auckland, McMurdo, South Pole'],
|
['Antarctica/McMurdo','(UTC +12:00) Auckland, McMurdo, South Pole', 720],
|
||||||
['Asia/Anadyr','(UTC +12:00) Anadyr, Fiji, Funafuti, Kamchatka, Kwajalein, Magadan, Majuro, Nauru, Tarawa, Wake, Wallis'],
|
['Asia/Anadyr','(UTC +12:00) Anadyr, Fiji, Funafuti, Kamchatka, Kwajalein, Magadan, Majuro, Nauru, Tarawa, Wake, Wallis', 720],
|
||||||
['Pacific/Chatham','(UTC +12:45) Chatham'],
|
['Pacific/Chatham','(UTC +12:45) Chatham', 765],
|
||||||
['Pacific/Enderbury','(UTC +13:00) Enderbury, Tongatapu'],
|
['Pacific/Enderbury','(UTC +13:00) Enderbury, Tongatapu', 780],
|
||||||
['Pacific/Apia','(UTC +13:00) Apia'],
|
['Pacific/Apia','(UTC +13:00) Apia', 780],
|
||||||
['Pacific/Kiritimati','(UTC +14:00) Kiritimati']
|
['Pacific/Kiritimati','(UTC +14:00) Kiritimati', 840]
|
||||||
]
|
],
|
||||||
|
|
||||||
|
/* map all citys to the above timezones */
|
||||||
|
map : {
|
||||||
|
/* Pacific */
|
||||||
|
'Pacific/Midway' : 'Pacific/Midway',
|
||||||
|
'Pacific/Niue' : 'Pacific/Midway',
|
||||||
|
'Pacific/Pago_Pago' : 'Pacific/Midway',
|
||||||
|
'Pacific/Fakaofo' : 'Pacific/Fakaofo',
|
||||||
|
'Pacific/Honolulu' : 'Pacific/Fakaofo',
|
||||||
|
'Pacific/Johnston' : 'Pacific/Fakaofo',
|
||||||
|
'Pacific/Rarotonga' : 'Pacific/Fakaofo',
|
||||||
|
'Pacific/Tahiti' : 'Pacific/Fakaofo',
|
||||||
|
'Pacific/Marquesas' : 'Pacific/Marquesas',
|
||||||
|
'Pacific/Gambier' : 'Pacific/Gambier',
|
||||||
|
'Pacific/Easter' : 'Pacific/Easter',
|
||||||
|
'Pacific/Norfolk' : 'Pacific/Norfolk',
|
||||||
|
'Pacific/Chatham' : 'Pacific/Chatham',
|
||||||
|
'Pacific/Enderbury' : 'Pacific/Enderbury',
|
||||||
|
'Pacific/Tongatapu' : 'Pacific/Enderbury',
|
||||||
|
'Pacific/Apia' : 'Pacific/Apia',
|
||||||
|
'Pacific/Kiritimati' : 'Pacific/Kiritimati',
|
||||||
|
/* America */
|
||||||
|
'America/Adak' : 'America/Adak',
|
||||||
|
'America/Anchorage' : 'America/Anchorage',
|
||||||
|
'America/Juneau' : 'America/Anchorage',
|
||||||
|
'America/Nome' : 'America/Anchorage',
|
||||||
|
'America/Sitka' : 'America/Anchorage',
|
||||||
|
'America/Yakutat' : 'America/Anchorage',
|
||||||
|
'America/Dawson' : 'America/Dawson',
|
||||||
|
'America/Los_Angeles' : 'America/Dawson',
|
||||||
|
'America/Tijuana' : 'America/Dawson',
|
||||||
|
'America/Vancouver' : 'America/Dawson',
|
||||||
|
'America/Whitehorse' : 'America/Dawson',
|
||||||
|
'America/Santa_Isabel' : 'America/Santa_Isabel',
|
||||||
|
'America/Metlakatla' : 'America/Metlakatla',
|
||||||
|
'America/Dawson_Creek' : 'America/Dawson_Creek',
|
||||||
|
'America/Hermosillo' : 'America/Dawson_Creek',
|
||||||
|
'America/Phoenix' : 'America/Dawson_Creek',
|
||||||
|
'America/Chihuahua' : 'America/Chihuahua',
|
||||||
|
'America/Mazatlan' : 'America/Chihuahua'
|
||||||
|
/* Europe */
|
||||||
|
/* Africa */
|
||||||
|
/* Australia */
|
||||||
|
/* Atlantic */
|
||||||
|
/* Antarctica */
|
||||||
|
/* Artic */
|
||||||
|
/*
|
||||||
|
/* Asia */
|
||||||
|
/* Indian */
|
||||||
|
/* Others */
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/* return unmapped timezone... */
|
||||||
|
unMap: function(timezone) {
|
||||||
|
return this.map[timezone] !== undefined ? this.map[timezone] : timezone;
|
||||||
|
},
|
||||||
|
|
||||||
|
getOffset: function(timezone) {
|
||||||
|
/* find timezone, this needs to be optimized ;) */
|
||||||
|
timezone = this.unMap(timezone);
|
||||||
|
|
||||||
|
for(i = 0; i < this.store.length; i++) {
|
||||||
|
if(this.store[i][0] == timezone) {
|
||||||
|
return (this.store[i][2] * 60000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0; // no offset found...
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Zarafa.plugins.calendarimporter.data.Timezones = new Zarafa.plugins.calendarimporter.data.Timezones();
|
Zarafa.plugins.calendarimporter.data.Timezones = new Zarafa.plugins.calendarimporter.data.Timezones();
|
@ -1,3 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* ImportContentPanel
|
||||||
|
*
|
||||||
|
* Container for the importpanel.
|
||||||
|
*
|
||||||
|
* @author Christoph Haas <mail@h44z.net>
|
||||||
|
* @modified 29.12.2012
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
|
*/
|
||||||
Ext.namespace("Zarafa.plugins.calendarimporter.dialogs");
|
Ext.namespace("Zarafa.plugins.calendarimporter.dialogs");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
/**
|
||||||
|
* ImportPanel
|
||||||
|
*
|
||||||
|
* The main Panel of the calendarimporter plugin.
|
||||||
|
*
|
||||||
|
* @author Christoph Haas <mail@h44z.net>
|
||||||
|
* @modified 29.12.2012
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
|
*/
|
||||||
Ext.namespace("Zarafa.plugins.calendarimporter.dialogs");
|
Ext.namespace("Zarafa.plugins.calendarimporter.dialogs");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,13 +88,26 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
createGrid : function(eventdata) {
|
createGrid : function(eventdata) {
|
||||||
|
|
||||||
|
/* remove the grid if it already exists because of an old calendar file */
|
||||||
|
this.remove("eventgrid");
|
||||||
|
|
||||||
var parsedData = [];
|
var parsedData = [];
|
||||||
|
var local_tz_offset = new Date().getTimezoneOffset() * 60000; // getTimezoneOffset returns minutes... we need milliseconds
|
||||||
|
var tz_offset = local_tz_offset;
|
||||||
|
|
||||||
|
if(this.timezone != null) {
|
||||||
|
tz_offset = Zarafa.plugins.calendarimporter.data.Timezones.getOffset(this.timezone);
|
||||||
|
}
|
||||||
|
|
||||||
if(eventdata !== null) {
|
if(eventdata !== null) {
|
||||||
var parsedData = new Array(eventdata.events.length);
|
var parsedData = new Array(eventdata.events.length);
|
||||||
|
|
||||||
for(var i=0; i < eventdata.events.length; i++) {
|
for(var i=0; i < eventdata.events.length; i++) {
|
||||||
parsedData[i] = new Array(eventdata.events[i]["SUMMARY"], new Date(parseInt(eventdata.events[i]["DTSTART"])), new Date(parseInt(eventdata.events[i]["DTEND"])), eventdata.events[i]["LOCATION"], eventdata.events[i]["DESCRIPTION"]);
|
parsedData[i] = new Array(eventdata.events[i]["SUMMARY"], new Date(parseInt(eventdata.events[i]["DTSTART"]) + local_tz_offset - tz_offset), new Date(parseInt(eventdata.events[i]["DTEND"]) + local_tz_offset - tz_offset), eventdata.events[i]["LOCATION"], eventdata.events[i]["DESCRIPTION"]);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the data store
|
// create the data store
|
||||||
@ -117,8 +139,8 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
|||||||
},
|
},
|
||||||
columns: [
|
columns: [
|
||||||
{id: 'Summary', header: 'Title', width: 300, sortable: true, dataIndex: 'title'},
|
{id: 'Summary', header: 'Title', width: 300, sortable: true, dataIndex: 'title'},
|
||||||
{header: 'Start', width: 150, sortable: true, dataIndex: 'start'},
|
{header: 'Start', width: 150, sortable: true, dataIndex: 'start', renderer : Zarafa.common.ui.grid.Renderers.datetime},
|
||||||
{header: 'End', width: 150, sortable: true, dataIndex: 'end'},
|
{header: 'End', width: 150, sortable: true, dataIndex: 'end', renderer : Zarafa.common.ui.grid.Renderers.datetime},
|
||||||
{header: 'Location', width: 150, sortable: true, dataIndex: 'location'},
|
{header: 'Location', width: 150, sortable: true, dataIndex: 'location'},
|
||||||
{header: 'Description', width: 150, sortable: true, dataIndex: 'description'}
|
{header: 'Description', width: 150, sortable: true, dataIndex: 'description'}
|
||||||
]
|
]
|
||||||
@ -292,10 +314,12 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
|||||||
* @param {Number} index
|
* @param {Number} index
|
||||||
*/
|
*/
|
||||||
onTimezoneSelected : function(combo, record, index) {
|
onTimezoneSelected : function(combo, record, index) {
|
||||||
// record.data.field1 == timezone
|
|
||||||
//this.remove("eventgrid");
|
|
||||||
this.timezone = record.data.field1;
|
this.timezone = record.data.field1;
|
||||||
//this.insert(this.items.length,this.createGrid(this.parsedresult));
|
|
||||||
|
if(this.parsedresult != null) {
|
||||||
|
this.add(this.createGrid(this.parsedresult));
|
||||||
|
this.doLayout();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -328,10 +352,11 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
|||||||
|
|
||||||
if(this.timezone == null) {;
|
if(this.timezone == null) {;
|
||||||
this.timezone = action.result.response.calendar["X-WR-TIMEZONE"];
|
this.timezone = action.result.response.calendar["X-WR-TIMEZONE"];
|
||||||
|
this.timezoneselector.setValue(Zarafa.plugins.calendarimporter.data.Timezones.unMap(this.timezone));
|
||||||
} else {
|
} else {
|
||||||
this.timezone = this.timezoneselector.value;
|
this.timezone = this.timezoneselector.value;
|
||||||
}
|
}
|
||||||
this.insert(this.items.length,this.createGrid(action.result.response));
|
this.add(this.createGrid(action.result.response));
|
||||||
this.doLayout();
|
this.doLayout();
|
||||||
},
|
},
|
||||||
scope : this
|
scope : this
|
||||||
@ -474,7 +499,7 @@ Zarafa.plugins.calendarimporter.dialogs.ImportPanel = Ext.extend(Ext.Panel, {
|
|||||||
groupDir: "ASC",
|
groupDir: "ASC",
|
||||||
restriction: {
|
restriction: {
|
||||||
startdate: 0,
|
startdate: 0,
|
||||||
duedate: 2145826800 // 2037... highest unix timestamp
|
duedate: 2145826800 // 2037... nearly highest unix timestamp
|
||||||
},
|
},
|
||||||
sort: [{
|
sort: [{
|
||||||
"field": "startdate",
|
"field": "startdate",
|
||||||
|
@ -1,3 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Calendarimporter
|
||||||
|
*
|
||||||
|
* Main entry point for the plugin
|
||||||
|
*
|
||||||
|
* @author Christoph Haas <mail@h44z.net>
|
||||||
|
* @modified 29.12.2012
|
||||||
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
||||||
|
*/
|
||||||
|
|
||||||
Ext.namespace("Zarafa.plugins.calendarimporter"); // Assign the right namespace
|
Ext.namespace("Zarafa.plugins.calendarimporter"); // Assign the right namespace
|
||||||
|
|
||||||
Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, { // create new import plugin
|
Zarafa.plugins.calendarimporter.ImportPlugin = Ext.extend(Zarafa.core.Plugin, { // create new import plugin
|
||||||
|
@ -4,11 +4,11 @@ VERSION:2.0
|
|||||||
CALSCALE:GREGORIAN
|
CALSCALE:GREGORIAN
|
||||||
METHOD:PUBLISH
|
METHOD:PUBLISH
|
||||||
X-WR-CALNAME:Testkalender
|
X-WR-CALNAME:Testkalender
|
||||||
X-WR-TIMEZONE:Europe/Berlin
|
X-WR-TIMEZONE:America/Detroit
|
||||||
X-WR-CALDESC:Nur zum testen vom Google Kalender
|
X-WR-CALDESC:Nur zum testen vom Google Kalender
|
||||||
BEGIN:VEVENT
|
BEGIN:VEVENT
|
||||||
DTSTART;TZID="W. Europe":20121227T100000
|
DTSTART;TZID="America/Detroit":20121227T100000
|
||||||
DTEND;TZID="W. Europe":20121227T110000Z
|
DTEND;TZID="America/Detroit":20121227T110000
|
||||||
DTSTAMP:20110121T195741Z
|
DTSTAMP:20110121T195741Z
|
||||||
UID:1koigufm110c5hnq6ln57murd4@google.com
|
UID:1koigufm110c5hnq6ln57murd4@google.com
|
||||||
CREATED:20110119T142901Z
|
CREATED:20110119T142901Z
|
||||||
|
@ -61,13 +61,12 @@ class ICal {
|
|||||||
foreach ($lines as $line) {
|
foreach ($lines as $line) {
|
||||||
$line = trim($line);
|
$line = trim($line);
|
||||||
$add = $this->keyValueFromString($line);
|
$add = $this->keyValueFromString($line);
|
||||||
error_log("line: " . $line);
|
|
||||||
if ($add === false) {
|
if ($add === false) {
|
||||||
$this->addCalendarComponentWithKeyAndValue($type, false, $line);
|
$this->addCalendarComponentWithKeyAndValue($type, false, $line);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
list($keyword, $value) = $add;
|
list($keyword, $props, $value) = $add;
|
||||||
|
|
||||||
switch ($line) {
|
switch ($line) {
|
||||||
// http://www.kanzaki.com/docs/ical/vtodo.html
|
// http://www.kanzaki.com/docs/ical/vtodo.html
|
||||||
@ -100,7 +99,7 @@ class ICal {
|
|||||||
$type = "VCALENDAR";
|
$type = "VCALENDAR";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$this->addCalendarComponentWithKeyAndValue($type, $keyword, $value);
|
$this->addCalendarComponentWithKeyAndValue($type, $keyword, $value, $props);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,14 +116,14 @@ class ICal {
|
|||||||
*
|
*
|
||||||
* @return {None}
|
* @return {None}
|
||||||
*/
|
*/
|
||||||
public function addCalendarComponentWithKeyAndValue($component, $keyword, $value) {
|
public function addCalendarComponentWithKeyAndValue($component, $keyword, $value, $props = false) {
|
||||||
if ($keyword == false) {
|
if ($keyword == false) { // multiline value
|
||||||
$keyword = $this->last_keyword;
|
$keyword = $this->last_keyword;
|
||||||
|
|
||||||
switch ($component) {
|
switch ($component) {
|
||||||
case 'VEVENT':
|
case 'VEVENT':
|
||||||
if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
||||||
$ts = $this->iCalDateToUnixTimestamp($value);
|
$ts = $this->iCalDateToUnixTimestamp($value, $props);
|
||||||
$value = $ts * 1000;
|
$value = $ts * 1000;
|
||||||
}
|
}
|
||||||
$value = str_replace("\\n", "\n", $value);
|
$value = str_replace("\\n", "\n", $value);
|
||||||
@ -138,10 +137,11 @@ class ICal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This should not be neccesary anymore*/
|
||||||
//always strip additional content....
|
//always strip additional content....
|
||||||
//if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
//if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
||||||
$keyword = explode(";", $keyword);
|
//$keyword = explode(";", $keyword);
|
||||||
$keyword = $keyword[0]; // remove additional content like VALUE=DATE
|
//$keyword = $keyword[0]; // remove additional content like VALUE=DATE
|
||||||
//}
|
//}
|
||||||
|
|
||||||
if (stristr($keyword, "TIMEZONE")) {
|
if (stristr($keyword, "TIMEZONE")) {
|
||||||
@ -155,7 +155,7 @@ class ICal {
|
|||||||
break;
|
break;
|
||||||
case "VEVENT":
|
case "VEVENT":
|
||||||
if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
if (stristr($keyword, "DTSTART") or stristr($keyword, "DTEND")) {
|
||||||
$ts = $this->iCalDateToUnixTimestamp($value);
|
$ts = $this->iCalDateToUnixTimestamp($value, $props);
|
||||||
$value = $ts * 1000;
|
$value = $ts * 1000;
|
||||||
}
|
}
|
||||||
$value = str_replace("\\n", "\n", $value);
|
$value = str_replace("\\n", "\n", $value);
|
||||||
@ -173,17 +173,16 @@ class ICal {
|
|||||||
*
|
*
|
||||||
* @param {string} $text which is like "VCALENDAR:Begin" or "LOCATION:"
|
* @param {string} $text which is like "VCALENDAR:Begin" or "LOCATION:"
|
||||||
*
|
*
|
||||||
* @return {array} array("VCALENDAR", "Begin")
|
* @return {array} array("VCALENDAR", "Begin", "Optional Props")
|
||||||
*/
|
*/
|
||||||
public function keyValueFromString($text) {
|
public function keyValueFromString($text) {
|
||||||
preg_match("/(^[^a-z:]+[;a-zA-Z=\/\"\']*)[:]([\w\W]*)/", $text, $matches);
|
preg_match("/(^[^a-z:;]+)[;a-zA-Z]*[=]*([a-zA-Z\/\"\'\.\s]*)[:]([\w\W]*)/", $text, $matches);
|
||||||
|
|
||||||
error_log("macthes: " . count($matches). " " . $text);
|
|
||||||
if (count($matches) == 0) {
|
if (count($matches) == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$matches = array_splice($matches, 1, 2);
|
$matches = array_splice($matches, 1, 3);
|
||||||
return $matches;
|
return $matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +194,12 @@ class ICal {
|
|||||||
*
|
*
|
||||||
* @return {int}
|
* @return {int}
|
||||||
*/
|
*/
|
||||||
public function iCalDateToUnixTimestamp($icalDate) {
|
public function iCalDateToUnixTimestamp($icalDate, $timezone) {
|
||||||
|
|
||||||
|
if($timezone) {
|
||||||
|
$timezone = str_replace('"', '', $timezone);
|
||||||
|
$timezone = str_replace('\'', '', $timezone);
|
||||||
|
}
|
||||||
|
|
||||||
/* timestring format */
|
/* timestring format */
|
||||||
$utc = strpos("zZ",substr($icalDate, -1)) === false ? false : true;
|
$utc = strpos("zZ",substr($icalDate, -1)) === false ? false : true;
|
||||||
@ -228,16 +232,21 @@ class ICal {
|
|||||||
(int)$date[1]);
|
(int)$date[1]);
|
||||||
|
|
||||||
|
|
||||||
if($utc) {
|
if(!$utc) {
|
||||||
$utcdate = new DateTime();
|
$tz = $this->default_timezone;
|
||||||
$utcdate->setTimestamp($timestamp);
|
if($timezone) {
|
||||||
$utcdate->setTimezone(new DateTimeZone($this->default_timezone));
|
$tz = $timezone;
|
||||||
$utcoffset = $utcdate->getOffset();
|
|
||||||
} else {
|
|
||||||
$utcoffset = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ($timestamp + $utcoffset);
|
$this_tz = new DateTimeZone($tz);
|
||||||
|
$tz_now = new DateTime("now", $this_tz);
|
||||||
|
$tz_offset = $this_tz->getOffset($tz_now);
|
||||||
|
$timestamp_utc = $timestamp + $tz_offset;
|
||||||
|
} else {
|
||||||
|
$timestamp_utc = $timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($timestamp_utc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,18 +21,12 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* This module integrates Owncloud into attachment part of emails
|
|
||||||
* @class OwncloudModule
|
|
||||||
* @extends Module
|
|
||||||
*/
|
|
||||||
|
|
||||||
include_once('mapi/class.recurrence.php');
|
include_once('mapi/class.recurrence.php');
|
||||||
include_once('plugins/calendarimporter/php/ical/class.icalcreator.php');
|
include_once('plugins/calendarimporter/php/ical/class.icalcreator.php');
|
||||||
|
|
||||||
class CalendarexporterModule extends Module {
|
class CalendarexporterModule extends Module {
|
||||||
|
|
||||||
private $DEBUG = true; // enable error_log debugging
|
private $DEBUG = false; // enable error_log debugging
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @constructor
|
* @constructor
|
||||||
|
Loading…
Reference in New Issue
Block a user