aboutsummaryrefslogtreecommitdiffstats
path: root/view/tpl/cdav_calendar.tpl
diff options
context:
space:
mode:
Diffstat (limited to 'view/tpl/cdav_calendar.tpl')
-rw-r--r--view/tpl/cdav_calendar.tpl129
1 files changed, 93 insertions, 36 deletions
diff --git a/view/tpl/cdav_calendar.tpl b/view/tpl/cdav_calendar.tpl
index 22579227a..01739dd5b 100644
--- a/view/tpl/cdav_calendar.tpl
+++ b/view/tpl/cdav_calendar.tpl
@@ -17,6 +17,8 @@ var resource = {{$resource}};
var default_view = resource !== null ? 'timeGridDay' : 'dayGridMonth';
var default_date = resource !== null ? new Date(resource.dtstart) : new Date();
+var allday;
+
$(document).ready(function() {
var calendarEl = document.getElementById('calendar');
calendar = new FullCalendar.Calendar(calendarEl, {
@@ -37,14 +39,26 @@ $(document).ready(function() {
defaultView: default_view,
defaultDate: default_date,
+ weekNumbers: true,
+ navLinks: true,
+
+ navLinkDayClick: function(date, jsEvent) {
+ calendar.gotoDate( date );
+ changeView('timeGridDay');
+ },
+
+ navLinkWeekClick: function(date, jsEvent) {
+ calendar.gotoDate( date );
+ changeView('timeGridWeek');
+ },
+
monthNames: aStr['monthNames'],
monthNamesShort: aStr['monthNamesShort'],
dayNames: aStr['dayNames'],
dayNamesShort: aStr['dayNamesShort'],
allDayText: aStr['allday'],
- defaultTimedEventDuration: '01:00:00',
- snapDuration: '00:15:00',
+ snapDuration: '00:05:00',
dateClick: function(info) {
if(new_event.id) {
@@ -53,8 +67,18 @@ $(document).ready(function() {
new_event = {};
}
+ allday = info.allDay;
+
+ if(allday) {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').hide();
+ }
+ else {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').show();
+ }
+
+
var dtend = new Date(info.date.toUTCString());
- if(info.view.type == 'dayGridMonth') {
+ if(allday) {
dtend.setDate(dtend.getDate() + 1);
}
else{
@@ -69,19 +93,18 @@ $(document).ready(function() {
$('#id_description').attr('disabled', false);
$('#id_location').attr('disabled', false);
$('#calendar_select').val($("#calendar_select option:first").val()).attr('disabled', false);
- $('#id_dtstart').val(info.date.toUTCString());
- $('#id_dtend').val(dtend ? dtend.toUTCString() : '');
+ $('#id_dtstart').val(info.date.toUTCString().slice(0, -4));
+ $('#id_dtend').val(dtend ? dtend.toUTCString().slice(0, -4) : '');
$('#id_description').val('');
$('#id_location').val('');
$('#event_submit').val('create_event').html('{{$create}}');
$('#event_delete').hide();
- new_event = { id: new_event_id, title : 'New event', start: $('#id_dtstart').val(), end: $('#id_dtend').val(), editable: true, color: '#bbb' };
+ new_event = { id: new_event_id, title: 'New event', start: info.date.toUTCString(), end: dtend ? dtend.toUTCString() : '', allDay: info.allDay, editable: true, color: '#bbb' };
calendar.addEvent(new_event);
},
-
- eventClick: function(info) {
+ eventClick: function(info) {
//reset categories
$('#id_categories').tagsinput('removeAll');
@@ -99,6 +122,13 @@ $(document).ready(function() {
$('#l2s').remove();
}
+ if(event.allDay) {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').hide();
+ }
+ else {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').show();
+ }
+
if(event.publicId == new_event_id) {
$('#calendar_select').trigger('change');
$('#event_submit').show();
@@ -131,9 +161,11 @@ $(document).ready(function() {
event_uri = event.extendedProps.uri;
$('#id_title').val(event.title);
$('#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_dtstart').val(dtstart.toUTCString());
- $('#id_dtend').val(dtend.toUTCString());
+ $('#id_dtstart').val(dtstart.toUTCString().slice(0, -4));
+ $('#id_dtend').val(dtend.toUTCString().slice(0, -4));
$('#id_description').val(event.extendedProps.description);
$('#id_location').val(event.extendedProps.location);
$('#event_submit').val('update_event').html('{{$update}}');
@@ -183,10 +215,10 @@ $(document).ready(function() {
var event = info.event._def;
var dtstart = new Date(info.event._instance.range.start);
var dtend = new Date(info.event._instance.range.end);
-
+
$('#id_title').val(event.title);
- $('#id_dtstart').val(dtstart.toUTCString());
- $('#id_dtend').val(dtend.toUTCString());
+ $('#id_dtstart').val(dtstart.toUTCString().slice(0, -4));
+ $('#id_dtend').val(dtend.toUTCString().slice(0, -4));
event_id = event.extendedProps.item ? event.extendedProps.item.id : 0;
event_xchan = event.extendedProps.item ? event.extendedProps.item.event_xchan : '';
@@ -199,9 +231,10 @@ $(document).ready(function() {
'type': 'event',
'preview': 0,
'summary': event.title,
- 'dtstart': dtstart.toUTCString(),
- 'dtend': dtend.toUTCString(),
- 'adjust': event.extendedProps.item.adjust,
+ 'timezone_select': event.extendedProps.timezone,
+ 'dtstart': dtstart.toUTCString().slice(0, -4),
+ 'dtend': dtend.toUTCString().slice(0, -4),
+ 'adjust': event.allDay ? 0 : 1,
'categories': event.extendedProps.categories,
'desc': event.extendedProps.description,
'location': event.extendedProps.location,
@@ -215,8 +248,10 @@ $(document).ready(function() {
'update': 'resize',
'id[]': event.extendedProps.calendar_id,
'uri': event.extendedProps.uri,
- 'dtstart': dtstart ? dtstart.toUTCString() : '',
- 'dtend': dtend ? dtend.toUTCString() : ''
+ 'timezone_select': event.extendedProps.timezone,
+ 'dtstart': dtstart ? dtstart.toUTCString().slice(0, -4) : '',
+ 'dtend': dtend ? dtend.toUTCString().slice(0, -4) : '',
+ 'allday': event.allDay ? 1 : 0
})
.fail(function() {
info.revert();
@@ -231,8 +266,8 @@ $(document).ready(function() {
var dtend = new Date(info.event._instance.range.end);
$('#id_title').val(event.title);
- $('#id_dtstart').val(dtstart.toUTCString());
- $('#id_dtend').val(dtend.toUTCString());
+ $('#id_dtstart').val(dtstart.toUTCString().slice(0, -4));
+ $('#id_dtend').val(dtend.toUTCString().slice(0, -4));
event_id = event.extendedProps.item ? event.extendedProps.item.id : 0;
event_xchan = event.extendedProps.item ? event.extendedProps.item.event_xchan : '';
@@ -245,9 +280,10 @@ $(document).ready(function() {
'type': 'event',
'preview': 0,
'summary': event.title,
- 'dtstart': dtstart.toUTCString(),
- 'dtend': dtend.toUTCString(),
- 'adjust': event.extendedProps.item.adjust,
+ 'timezone_select': event.extendedProps.timezone,
+ 'dtstart': dtstart.toUTCString().slice(0, -4),
+ 'dtend': dtend.toUTCString().slice(0, -4),
+ 'adjust': event.allDay ? 0 : 1,
'categories': event.extendedProps.categories,
'desc': event.extendedProps.description,
'location': event.extendedProps.location,
@@ -261,8 +297,10 @@ $(document).ready(function() {
'update': 'drop',
'id[]': event.extendedProps.calendar_id,
'uri': event.extendedProps.uri,
- 'dtstart': dtstart ? dtstart.toUTCString() : '',
- 'dtend': dtend ? dtend.toUTCString() : ''
+ 'timezone_select': event.extendedProps.timezone,
+ 'dtstart': dtstart ? dtstart.toUTCString().slice(0, -4) : '',
+ 'dtend': dtend ? dtend.toUTCString().slice(0, -4) : '',
+ 'allday': event.allDay ? 1 : 0
})
.fail(function() {
info.revert();
@@ -329,24 +367,37 @@ $(document).ready(function() {
$('#calendar_select').val('channel_calendar').attr('disabled', true);
$('#id_title').val(resource.summary);
- $('#id_dtstart').val(new Date(resource.dtstart).toUTCString());
- $('#id_dtend').val(new Date(resource.dtend).toUTCString());
+ $('#id_dtstart').val(new Date(resource.dtstart).toUTCString().slice(0, -4));
+ $('#id_dtend').val(new Date(resource.dtend).toUTCString().slice(0, -4));
$('#id_categories').tagsinput('add', '{{$categories}}'),
$('#id_description').val(resource.description);
$('#id_location').val(resource.location);
+ $('#id_timezone_select').val(resource.timezone);
if(event_xchan !== '{{$channel_hash}}')
$('#event_submit').hide();
else
$('#event_submit').html('{{$update}}');
}
+
+ if(default_view === 'dayGridMonth');
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').hide();
});
-function changeView(action, viewName) {
+function changeView(viewName) {
+
calendar.changeView(viewName);
$('#title').text(calendar.view.title);
$('#view_selector').html(views[calendar.view.type]);
+
+ if(viewName === 'dayGridMonth') {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').hide();
+ }
+ else {
+ $('#id_dtstart_wrapper, #id_dtend_wrapper, #id_timezone_select_wrapper').show();
+ }
+
return;
}
@@ -414,10 +465,11 @@ function on_submit() {
'xchan': event_xchan,
'type': 'event',
'preview': 0,
+ 'timezone_select': $('#id_timezone_select').val(),
'summary': $('#id_title').val(),
'dtstart': $('#id_dtstart').val(),
'dtend': $('#id_dtend').val(),
- 'adjust': 0,
+ 'adjust': allday ? 0 : 1,
'categories': $('#id_categories').val(),
'desc': $('#id_description').val(),
'location': $('#id_location').val(),
@@ -439,12 +491,14 @@ function on_submit() {
$.post( 'cdav/calendar', {
'submit': $('#event_submit').val(),
'target': $('#calendar_select').val(),
+ 'timezone_select': $('#id_timezone_select').val(),
'uri': event_uri,
'title': $('#id_title').val(),
'dtstart': $('#id_dtstart').val(),
'dtend': $('#id_dtend').val(),
'description': $('#id_description').val(),
- 'location': $('#id_location').val()
+ 'location': $('#id_location').val(),
+ 'allday': allday ? 1 : 0
})
.done(function() {
var parts = $('#calendar_select').val().split(':');
@@ -523,13 +577,13 @@ function exportDate() {
<div class="dropdown">
<button id="view_selector" type="button" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-toggle="dropdown"></button>
<div class="dropdown-menu">
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'dayGridMonth'); return false;">{{$month}}</a></li>
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'timeGridWeek'); return false;">{{$week}}</a></li>
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'timeGridDay'); return false;">{{$day}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('dayGridMonth'); return false;">{{$month}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('timeGridWeek'); return false;">{{$week}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('timeGridDay'); return false;">{{$day}}</a></li>
<div class="dropdown-divider"></div>
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'listMonth'); return false;">{{$list_month}}</a></li>
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'listWeek'); return false;">{{$list_week}}</a></li>
- <a class="dropdown-item" href="#" onclick="changeView('changeView', 'listDay'); return false;">{{$list_day}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('listMonth'); return false;">{{$list_month}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('listWeek'); return false;">{{$list_week}}</a></li>
+ <a class="dropdown-item" href="#" onclick="changeView('listDay'); return false;">{{$list_day}}</a></li>
</div>
<div class="btn-group">
<button id="prev-btn" class="btn btn-outline-secondary btn-sm" title="{{$prev}}"><i class="fa fa-backward"></i></button>
@@ -569,6 +623,9 @@ function exportDate() {
{{/foreach}}
</optgroup>
</select>
+ {{if $timezone_select}}
+ {{include file="field_select_grouped.tpl" field=$timezone_select}}
+ {{/if}}
<div id="more_block" style="display: none;">
{{if $catsenabled}}
<div id="id_categories_wrapper" class="form-group">