calendar merge: initial commit for timezone support

This commit is contained in:
Mario Vavti 2019-05-20 12:26:33 +02:00
parent aa120e0478
commit 34d1f79777
5 changed files with 90 additions and 83 deletions

View File

@ -271,11 +271,14 @@ class Cdav extends Controller {
if(!cdav_perms($id[0],$calendars,true)) if(!cdav_perms($id[0],$calendars,true))
return; return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$title = $_REQUEST['title']; $title = $_REQUEST['title'];
$start = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtstart']); $start = datetime_convert($tz, 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start); $dtstart = new \DateTime($start);
if($_REQUEST['dtend']) { if($_REQUEST['dtend']) {
$end = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtend']); $end = datetime_convert($tz, 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end); $dtend = new \DateTime($end);
} }
$description = $_REQUEST['description']; $description = $_REQUEST['description'];
@ -303,14 +306,14 @@ class Cdav extends Controller {
]); ]);
if($dtend) { if($dtend) {
$vcalendar->VEVENT->add('DTEND', $dtend); $vcalendar->VEVENT->add('DTEND', $dtend);
$vcalendar->VEVENT->DTEND['TZID'] = App::$timezone; $vcalendar->VEVENT->DTEND['TZID'] = $tz;
} }
if($description) if($description)
$vcalendar->VEVENT->add('DESCRIPTION', $description); $vcalendar->VEVENT->add('DESCRIPTION', $description);
if($location) if($location)
$vcalendar->VEVENT->add('LOCATION', $location); $vcalendar->VEVENT->add('LOCATION', $location);
$vcalendar->VEVENT->DTSTART['TZID'] = App::$timezone; $vcalendar->VEVENT->DTSTART['TZID'] = $tz;
$calendarData = $vcalendar->serialize(); $calendarData = $vcalendar->serialize();
@ -348,12 +351,15 @@ class Cdav extends Controller {
if(!cdav_perms($id[0],$calendars,true)) if(!cdav_perms($id[0],$calendars,true))
return; return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$uri = $_REQUEST['uri']; $uri = $_REQUEST['uri'];
$title = $_REQUEST['title']; $title = $_REQUEST['title'];
$start = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtstart']); $start = datetime_convert($tz, 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start); $dtstart = new \DateTime($start);
if($_REQUEST['dtend']) { if($_REQUEST['dtend']) {
$end = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtend']); $end = datetime_convert($tz, 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end); $dtend = new \DateTime($end);
} }
$description = $_REQUEST['description']; $description = $_REQUEST['description'];
@ -406,11 +412,14 @@ class Cdav extends Controller {
if(!cdav_perms($id[0],$calendars,true)) if(!cdav_perms($id[0],$calendars,true))
return; return;
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get());
$uri = $_REQUEST['uri']; $uri = $_REQUEST['uri'];
$start = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtstart']); $start = datetime_convert($tz, 'UTC', $_REQUEST['dtstart']);
$dtstart = new \DateTime($start); $dtstart = new \DateTime($start);
if($_REQUEST['dtend']) { if($_REQUEST['dtend']) {
$end = datetime_convert(App::$timezone, 'UTC', $_REQUEST['dtend']); $end = datetime_convert($tz, 'UTC', $_REQUEST['dtend']);
$dtend = new \DateTime($end); $dtend = new \DateTime($end);
} }
@ -915,6 +924,11 @@ class Cdav extends Controller {
xchan_query($r); xchan_query($r);
$r = fetch_post_tags($r,true); $r = fetch_post_tags($r,true);
$tz = get_iconfig($r[0], 'event', 'timezone');
if(! $tz)
$tz = 'UTC';
$r[0]['timezone'] = $tz;
$r[0]['dtstart'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $r[0]['dtstart'], 'c')); $r[0]['dtstart'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $r[0]['dtstart'], 'c'));
$r[0]['dtend'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtend'], 'c') : datetime_convert('UTC', 'UTC' ,$r[0]['dtend'], 'c')); $r[0]['dtend'] = (($r[0]['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), $r[0]['dtend'], 'c') : datetime_convert('UTC', 'UTC' ,$r[0]['dtend'], 'c'));
@ -1000,14 +1014,13 @@ class Cdav extends Controller {
//$acl = (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults), false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'))); //$acl = (($orig_event['event_xchan']) ? '' : populate_acl(((x($orig_event)) ? $orig_event : $perm_defaults), false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream')));
$acl = populate_acl($perm_defaults, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream')); $acl = populate_acl($perm_defaults, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_stream'));
//$permissions = ((x($orig_event)) ? $orig_event : $perm_defaults); $permissions = (($resource_id) ? $resource : $perm_defaults);
$permissions = $perm_defaults;
$o .= replace_macros(get_markup_template('cdav_calendar.tpl'), [ $o .= replace_macros(get_markup_template('cdav_calendar.tpl'), [
'$sources' => $sources, '$sources' => $sources,
'$color' => $color, '$color' => $color,
'$lang' => App::$language, '$lang' => App::$language,
'$timezone' => App::$timezone, '$timezone' => date_default_timezone_get(),
'$first_day' => $first_day, '$first_day' => $first_day,
'$prev' => t('Previous'), '$prev' => t('Previous'),
'$next' => t('Next'), '$next' => t('Next'),
@ -1047,7 +1060,9 @@ class Cdav extends Controller {
'$categories_label' => t('Categories'), '$categories_label' => t('Categories'),
'$resource' => json_encode($resource), '$resource' => json_encode($resource),
'$categories' => $categories '$categories' => $categories,
'$timezone_select' => ((feature_enabled(local_channel(),'event_tz_select')) ? ['timezone_select' , t('Timezone:'), date_default_timezone_get(), '', get_timezones()] : [])
]); ]);
return $o; return $o;
@ -1118,8 +1133,9 @@ class Cdav extends Controller {
'calendar_id' => $id, 'calendar_id' => $id,
'uri' => $object['uri'], 'uri' => $object['uri'],
'title' => $title, 'title' => $title,
'start' => datetime_convert($timezone, $timezone, $dtstart, 'c'), 'timezone' => $timezone,
'end' => (($dtend) ? datetime_convert($timezone, $timezone, $dtend, 'c') : ''), 'start' => datetime_convert($timezone, date_default_timezone_get(), $dtstart, 'c'),
'end' => (($dtend) ? datetime_convert($timezone, date_default_timezone_get(), $dtend, 'c') : ''),
'description' => $description, 'description' => $description,
'location' => $location, 'location' => $location,
'allDay' => $allDay, 'allDay' => $allDay,

View File

@ -23,51 +23,19 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
$xchan = ((x($_POST,'xchan')) ? dbesc($_POST['xchan']) : ''); $xchan = ((x($_POST,'xchan')) ? dbesc($_POST['xchan']) : '');
$uid = local_channel(); $uid = local_channel();
$start_text = escape_tags($_REQUEST['dtstart']); // only allow editing your own events.
$finish_text = escape_tags($_REQUEST['dtend']); if(($xchan) && ($xchan !== get_observer_hash()))
return;
$adjust = intval($_POST['adjust']);
$nofinish = intval($_POST['nofinish']);
$timezone = ((x($_POST,'timezone_select')) ? notags(trim($_POST['timezone_select'])) : '');
$timezone = ((x($_POST,'timezone_select')) ? escape_tags(trim($_POST['timezone_select'])) : '');
$tz = (($timezone) ? $timezone : date_default_timezone_get()); $tz = (($timezone) ? $timezone : date_default_timezone_get());
$categories = escape_tags(trim($_POST['categories'])); $categories = escape_tags(trim($_POST['categories']));
// only allow editing your own events. $adjust = intval($_POST['adjust']);
if(($xchan) && ($xchan !== get_observer_hash())) $start = (($adjust) ? datetime_convert($tz, 'UTC', escape_tags($_REQUEST['dtstart'])) : datetime_convert('UTC', 'UTC', escape_tags($_REQUEST['dtstart'])));
return; $finish = (($adjust) ? datetime_convert($tz, 'UTC', escape_tags($_REQUEST['dtend'])) : datetime_convert('UTC', 'UTC', escape_tags($_REQUEST['dtend'])));
if($start_text) {
$start = $start_text;
}
else {
$start = sprintf('%d-%d-%d %d:%d:0',$startyear,$startmonth,$startday,$starthour,$startminute);
}
if($finish_text) {
$finish = $finish_text;
}
else {
$finish = sprintf('%d-%d-%d %d:%d:0',$finishyear,$finishmonth,$finishday,$finishhour,$finishminute);
}
if($nofinish) {
$finish = NULL_DATE;
}
if($adjust) {
$start = datetime_convert($tz,'UTC',$start);
if(! $nofinish)
$finish = datetime_convert($tz,'UTC',$finish);
}
else {
$start = datetime_convert('UTC','UTC',$start);
if(! $nofinish)
$finish = datetime_convert('UTC','UTC',$finish);
}
$summary = escape_tags(trim($_POST['summary'])); $summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc'])); $desc = escape_tags(trim($_POST['desc']));
@ -176,7 +144,7 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
$datarray['location'] = $location; $datarray['location'] = $location;
$datarray['etype'] = $type; $datarray['etype'] = $type;
$datarray['adjust'] = $adjust; $datarray['adjust'] = $adjust;
$datarray['nofinish'] = $nofinish; $datarray['nofinish'] = 0;
$datarray['uid'] = local_channel(); $datarray['uid'] = local_channel();
$datarray['account'] = get_account_id(); $datarray['account'] = get_account_id();
$datarray['event_xchan'] = $channel['channel_hash']; $datarray['event_xchan'] = $channel['channel_hash'];
@ -188,6 +156,8 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
$datarray['id'] = $event_id; $datarray['id'] = $event_id;
$datarray['created'] = $created; $datarray['created'] = $created;
$datarray['edited'] = $edited; $datarray['edited'] = $edited;
$datarray['timezone'] = $tz;
if(intval($_REQUEST['preview'])) { if(intval($_REQUEST['preview'])) {
$html = format_event_html($datarray); $html = format_event_html($datarray);
@ -322,7 +292,6 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
$start = datetime_convert('UTC','UTC',$start); $start = datetime_convert('UTC','UTC',$start);
$finish = datetime_convert('UTC','UTC',$finish); $finish = datetime_convert('UTC','UTC',$finish);
$adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start); $adjust_start = datetime_convert('UTC', date_default_timezone_get(), $start);
$adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish); $adjust_finish = datetime_convert('UTC', date_default_timezone_get(), $finish);
@ -347,23 +316,21 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
// Ultimately the finish date shouldn't be involved in the query. // Ultimately the finish date shouldn't be involved in the query.
$r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id $r = q("SELECT event.*, item.plink, item.item_flags, item.author_xchan, item.owner_xchan, item.id as item_id
from event left join item on event.event_hash = item.resource_id from event left join item on event_hash = resource_id
where item.resource_type = 'event' and event.uid = %d and event.uid = item.uid $ignored where resource_type = 'event' and event.uid = %d and event.uid = item.uid $ignored
AND (( event.adjust = 0 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' ) AND (( adjust = 0 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )
OR ( event.adjust = 1 AND ( event.dtend >= '%s' or event.nofinish = 1 ) AND event.dtstart <= '%s' )) ", OR ( adjust = 1 AND ( dtend >= '%s' or nofinish = 1 ) AND dtstart <= '%s' )) ",
intval(local_channel()), intval(local_channel()),
dbesc($start), dbesc($start),
dbesc($finish), dbesc($finish),
dbesc($adjust_start), dbesc($adjust_start),
dbesc($adjust_finish) dbesc($adjust_finish)
); );
} }
if($r && ! $export) { if($r && ! $export) {
xchan_query($r); xchan_query($r);
$r = fetch_post_tags($r,true); $r = fetch_post_tags($r,true);
$r = sort_by_date($r); $r = sort_by_date($r);
} }
@ -373,11 +340,16 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
foreach($r as $rr) { foreach($r as $rr) {
$start = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtstart'], 'c') : datetime_convert('UTC','UTC',$rr['dtstart'],'c')); $tz = get_iconfig($rr, 'event', 'timezone');
if(! $tz)
$tz = 'UTC';
$start = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtstart'], 'c'));
if ($rr['nofinish']){ if ($rr['nofinish']){
$end = null; $end = null;
} else { } else {
$end = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['dtend'], 'c') : datetime_convert('UTC','UTC',$rr['dtend'],'c')); $end = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtend'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtend'], 'c'));
// give a fake end to birthdays so they get crammed into a // give a fake end to birthdays so they get crammed into a
// single day on the calendar // single day on the calendar
@ -416,6 +388,7 @@ class Channel_calendar extends \Zotlabs\Web\Controller {
'rw' => true, 'rw' => true,
'id'=>$rr['id'], 'id'=>$rr['id'],
'uri' => $rr['event_hash'], 'uri' => $rr['event_hash'],
'timezone' => $tz,
'start'=> $start, 'start'=> $start,
'end' => $end, 'end' => $end,
'drop' => $drop, 'drop' => $drop,

View File

@ -75,17 +75,19 @@ function format_event_obj($jobject) {
//ensure compatibility with older items - this check can be removed at a later point //ensure compatibility with older items - this check can be removed at a later point
if(array_key_exists('description', $object)) { if(array_key_exists('description', $object)) {
$tz = (($object['timezone']) ? $object['timezone'] : 'UTC');
$bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM $bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM
$event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array( $event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array(
'$title' => zidify_links(smilies(bbcode($object['title']))), '$title' => zidify_links(smilies(bbcode($object['title']))),
'$dtstart_label' => t('Starts:'), '$dtstart_label' => t('Starts:'),
'$dtstart_title' => datetime_convert('UTC', 'UTC', $object['dtstart'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )), '$dtstart_title' => datetime_convert($tz, date_default_timezone_get(), $object['dtstart'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
'$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtstart'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtstart'] , $bd_format))), '$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert($tz, date_default_timezone_get(), $object['dtstart'] , $bd_format )) : day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtstart'] , $bd_format))),
'$finish' => (($object['nofinish']) ? false : true), '$finish' => (($object['nofinish']) ? false : true),
'$dtend_label' => t('Finishes:'), '$dtend_label' => t('Finishes:'),
'$dtend_title' => datetime_convert('UTC','UTC',$object['dtend'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )), '$dtend_title' => datetime_convert($tz, date_default_timezone_get(), $object['dtend'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )),
'$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtend'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtend'] , $bd_format ))) '$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert($tz, date_default_timezone_get(), $object['dtend'] , $bd_format )) : day_translate(datetime_convert('UTC', date_default_timezone_get(), $object['dtend'] , $bd_format )))
)); ));
$event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array( $event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array(
@ -1042,6 +1044,7 @@ function event_store_item($arr, $event) {
'type' => ACTIVITY_OBJ_EVENT, 'type' => ACTIVITY_OBJ_EVENT,
'id' => z_root() . '/event/' . $r[0]['resource_id'], 'id' => z_root() . '/event/' . $r[0]['resource_id'],
'title' => $arr['summary'], 'title' => $arr['summary'],
'timezone' => $arr['timezone'],
'dtstart' => $arr['dtstart'], 'dtstart' => $arr['dtstart'],
'dtend' => $arr['dtend'], 'dtend' => $arr['dtend'],
'nofinish' => $arr['nofinish'], 'nofinish' => $arr['nofinish'],
@ -1107,6 +1110,8 @@ function event_store_item($arr, $event) {
} }
$item_id = $r[0]['id']; $item_id = $r[0]['id'];
set_iconfig($item_id, 'event', 'timezone', $arr['timezone'], true);
/** /**
* @hooks event_updated * @hooks event_updated
* Called when an event record is modified. * Called when an event record is modified.
@ -1197,6 +1202,7 @@ function event_store_item($arr, $event) {
'type' => ACTIVITY_OBJ_EVENT, 'type' => ACTIVITY_OBJ_EVENT,
'id' => z_root() . '/event/' . $event['event_hash'], 'id' => z_root() . '/event/' . $event['event_hash'],
'title' => $arr['summary'], 'title' => $arr['summary'],
'timezone' => $arr['timezone'],
'dtstart' => $arr['dtstart'], 'dtstart' => $arr['dtstart'],
'dtend' => $arr['dtend'], 'dtend' => $arr['dtend'],
'nofinish' => $arr['nofinish'], 'nofinish' => $arr['nofinish'],
@ -1223,6 +1229,7 @@ function event_store_item($arr, $event) {
// activities refer to the item message_id as the parent. // activities refer to the item message_id as the parent.
set_iconfig($item_arr, 'system','event_id',$event['event_hash'],true); set_iconfig($item_arr, 'system','event_id',$event['event_hash'],true);
set_iconfig($item_arr, 'event','timezone',$arr['timezone'],true);
$res = item_store($item_arr); $res = item_store($item_arr);

View File

@ -87,6 +87,14 @@ function get_features($filtered = true, $level = (-1)) {
t('Default is Sunday'), t('Default is Sunday'),
false, false,
get_config('feature_lock','cal_first_day') get_config('feature_lock','cal_first_day')
],
[
'event_tz_select',
t('Event Timezone Selection'),
t('Allow event creation in timezones other than your own.'),
false,
get_config('feature_lock','event_tz_select'),
] ]
], ],
@ -290,14 +298,6 @@ function get_features($filtered = true, $level = (-1)) {
t('Make birthday events timezone aware in case your friends are scattered across the planet.'), t('Make birthday events timezone aware in case your friends are scattered across the planet.'),
true, true,
get_config('feature_lock','smart_birthdays'), get_config('feature_lock','smart_birthdays'),
],
[
'event_tz_select',
t('Event Timezone Selection'),
t('Allow event creation in timezones other than your own.'),
false,
get_config('feature_lock','event_tz_select'),
] ]
], ],

View File

@ -81,7 +81,6 @@ $(document).ready(function() {
}, },
eventClick: function(info) { eventClick: function(info) {
//reset categories //reset categories
$('#id_categories').tagsinput('removeAll'); $('#id_categories').tagsinput('removeAll');
@ -131,6 +130,8 @@ $(document).ready(function() {
event_uri = event.extendedProps.uri; event_uri = event.extendedProps.uri;
$('#id_title').val(event.title); $('#id_title').val(event.title);
$('#calendar_select').val(calendar_id).attr('disabled', true).trigger('change'); $('#calendar_select').val(calendar_id).attr('disabled', true).trigger('change');
$('#id_timezone_select').val(event.extendedProps.timezone);
$('#id_location').val(event.extendedProps.location);
$('#id_categories').tagsinput('add', event.extendedProps.categories); $('#id_categories').tagsinput('add', event.extendedProps.categories);
$('#id_dtstart').val(dtstart.toUTCString()); $('#id_dtstart').val(dtstart.toUTCString());
$('#id_dtend').val(dtend.toUTCString()); $('#id_dtend').val(dtend.toUTCString());
@ -199,6 +200,7 @@ $(document).ready(function() {
'type': 'event', 'type': 'event',
'preview': 0, 'preview': 0,
'summary': event.title, 'summary': event.title,
'timezone_select': event.extendedProps.timezone,
'dtstart': dtstart.toUTCString(), 'dtstart': dtstart.toUTCString(),
'dtend': dtend.toUTCString(), 'dtend': dtend.toUTCString(),
'adjust': event.extendedProps.item.adjust, 'adjust': event.extendedProps.item.adjust,
@ -215,6 +217,7 @@ $(document).ready(function() {
'update': 'resize', 'update': 'resize',
'id[]': event.extendedProps.calendar_id, 'id[]': event.extendedProps.calendar_id,
'uri': event.extendedProps.uri, 'uri': event.extendedProps.uri,
'timezone_select': event.extendedProps.timezone,
'dtstart': dtstart ? dtstart.toUTCString() : '', 'dtstart': dtstart ? dtstart.toUTCString() : '',
'dtend': dtend ? dtend.toUTCString() : '' 'dtend': dtend ? dtend.toUTCString() : ''
}) })
@ -245,6 +248,7 @@ $(document).ready(function() {
'type': 'event', 'type': 'event',
'preview': 0, 'preview': 0,
'summary': event.title, 'summary': event.title,
'timezone_select': event.extendedProps.timezone,
'dtstart': dtstart.toUTCString(), 'dtstart': dtstart.toUTCString(),
'dtend': dtend.toUTCString(), 'dtend': dtend.toUTCString(),
'adjust': event.extendedProps.item.adjust, 'adjust': event.extendedProps.item.adjust,
@ -261,6 +265,7 @@ $(document).ready(function() {
'update': 'drop', 'update': 'drop',
'id[]': event.extendedProps.calendar_id, 'id[]': event.extendedProps.calendar_id,
'uri': event.extendedProps.uri, 'uri': event.extendedProps.uri,
'timezone_select': event.extendedProps.timezone,
'dtstart': dtstart ? dtstart.toUTCString() : '', 'dtstart': dtstart ? dtstart.toUTCString() : '',
'dtend': dtend ? dtend.toUTCString() : '' 'dtend': dtend ? dtend.toUTCString() : ''
}) })
@ -334,6 +339,7 @@ $(document).ready(function() {
$('#id_categories').tagsinput('add', '{{$categories}}'), $('#id_categories').tagsinput('add', '{{$categories}}'),
$('#id_description').val(resource.description); $('#id_description').val(resource.description);
$('#id_location').val(resource.location); $('#id_location').val(resource.location);
$('#id_timezone_select').val(resource.timezone);
if(event_xchan !== '{{$channel_hash}}') if(event_xchan !== '{{$channel_hash}}')
$('#event_submit').hide(); $('#event_submit').hide();
@ -414,10 +420,11 @@ function on_submit() {
'xchan': event_xchan, 'xchan': event_xchan,
'type': 'event', 'type': 'event',
'preview': 0, 'preview': 0,
'timezone_select': $('#id_timezone_select').val(),
'summary': $('#id_title').val(), 'summary': $('#id_title').val(),
'dtstart': $('#id_dtstart').val(), 'dtstart': $('#id_dtstart').val(),
'dtend': $('#id_dtend').val(), 'dtend': $('#id_dtend').val(),
'adjust': 0, 'adjust': 1,
'categories': $('#id_categories').val(), 'categories': $('#id_categories').val(),
'desc': $('#id_description').val(), 'desc': $('#id_description').val(),
'location': $('#id_location').val(), 'location': $('#id_location').val(),
@ -439,6 +446,7 @@ function on_submit() {
$.post( 'cdav/calendar', { $.post( 'cdav/calendar', {
'submit': $('#event_submit').val(), 'submit': $('#event_submit').val(),
'target': $('#calendar_select').val(), 'target': $('#calendar_select').val(),
'timezone_select': $('#id_timezone_select').val(),
'uri': event_uri, 'uri': event_uri,
'title': $('#id_title').val(), 'title': $('#id_title').val(),
'dtstart': $('#id_dtstart').val(), 'dtstart': $('#id_dtstart').val(),
@ -569,6 +577,9 @@ function exportDate() {
{{/foreach}} {{/foreach}}
</optgroup> </optgroup>
</select> </select>
{{if $timezone_select}}
{{include file="field_select_grouped.tpl" field=$timezone_select}}
{{/if}}
<div id="more_block" style="display: none;"> <div id="more_block" style="display: none;">
{{if $catsenabled}} {{if $catsenabled}}
<div id="id_categories_wrapper" class="form-group"> <div id="id_categories_wrapper" class="form-group">