diff options
author | Manuel Jiménez Friaza <mjfriaza@openmailbox.org> | 2019-05-19 13:25:00 +0200 |
---|---|---|
committer | Manuel Jiménez Friaza <mjfriaza@openmailbox.org> | 2019-05-19 13:25:00 +0200 |
commit | 429140df97a2c273fba6974147ac2e48e7688263 (patch) | |
tree | 2e337542da1b0f4c9c383dfeb8a7d9eb63990a72 /view/tpl/cdav_calendar.tpl | |
parent | f92d2e3f7c6573bd7bab04223c7e28662605c6d8 (diff) | |
parent | af2b263bc74b16601ec7c123a58f0549613aed27 (diff) | |
download | volse-hubzilla-429140df97a2c273fba6974147ac2e48e7688263.tar.gz volse-hubzilla-429140df97a2c273fba6974147ac2e48e7688263.tar.bz2 volse-hubzilla-429140df97a2c273fba6974147ac2e48e7688263.zip |
Merge remote-tracking branch 'upstream/dev' into dev
Diffstat (limited to 'view/tpl/cdav_calendar.tpl')
-rw-r--r-- | view/tpl/cdav_calendar.tpl | 563 |
1 files changed, 409 insertions, 154 deletions
diff --git a/view/tpl/cdav_calendar.tpl b/view/tpl/cdav_calendar.tpl index b0245e853..22579227a 100644 --- a/view/tpl/cdav_calendar.tpl +++ b/view/tpl/cdav_calendar.tpl @@ -1,131 +1,273 @@ <script> - -var new_event = []; +var calendar; +var new_event = {}; var new_event_id = Math.random().toString(36).substring(7); -var views = {'month' : '{{$month}}', 'agendaWeek' : '{{$week}}', 'agendaDay' : '{{$day}}', 'listMonth' : '{{$list_month}}', 'listWeek' : '{{$list_week}}', 'listDay' : '{{$list_day}}'}; +var views = {'dayGridMonth' : '{{$month}}', 'timeGridWeek' : '{{$week}}', 'timeGridDay' : '{{$day}}', 'listMonth' : '{{$list_month}}', 'listWeek' : '{{$list_week}}', 'listDay' : '{{$list_day}}'}; + +var event_id; +var event_uri; +var event_xchan; + +var contact_allow = []; +var group_allow = []; +var contact_deny = []; +var group_deny = []; + +var resource = {{$resource}}; +var default_view = resource !== null ? 'timeGridDay' : 'dayGridMonth'; +var default_date = resource !== null ? new Date(resource.dtstart) : new Date(); $(document).ready(function() { - $('#calendar').fullCalendar({ + var calendarEl = document.getElementById('calendar'); + calendar = new FullCalendar.Calendar(calendarEl, { + plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ], eventSources: [ {{$sources}} ], + + timeZone: '{{$timezone}}', - header: false, - eventTextColor: 'white', + locale: '{{$lang}}', - lang: '{{$lang}}', + eventTextColor: 'white', + header: false, + + height: 'auto', + firstDay: {{$first_day}}, + defaultView: default_view, + defaultDate: default_date, + monthNames: aStr['monthNames'], monthNamesShort: aStr['monthNamesShort'], dayNames: aStr['dayNames'], dayNamesShort: aStr['dayNamesShort'], allDayText: aStr['allday'], - timeFormat: 'HH:mm', - timezone: 'local', - defaultTimedEventDuration: '01:00:00', snapDuration: '00:15:00', + + dateClick: function(info) { + if(new_event.id) { + var event_poi = calendar.getEventById(new_event.id); + event_poi.remove(); + new_event = {}; + } - dayClick: function(date, jsEvent, view) { - - if(new_event.length) - $('#calendar').fullCalendar( 'removeEventSource', new_event); + var dtend = new Date(info.date.toUTCString()); + if(info.view.type == 'dayGridMonth') { + dtend.setDate(dtend.getDate() + 1); + } + else{ + dtend.setHours(dtend.getHours() + 1); + } - $('#event_uri').val(''); + event_uri = ''; $('#id_title').val('New event'); + $('#id_title').attr('disabled', false); + $('#id_dtstart').attr('disabled', false); + $('#id_dtend').attr('disabled', false); + $('#id_description').attr('disabled', false); + $('#id_location').attr('disabled', false); $('#calendar_select').val($("#calendar_select option:first").val()).attr('disabled', false); - $('#id_dtstart').val(date.format()); - $('#id_dtend').val(date.hasTime() ? date.add(1, 'hours').format() : date.add(1, 'days').format()); + $('#id_dtstart').val(info.date.toUTCString()); + $('#id_dtend').val(dtend ? dtend.toUTCString() : ''); $('#id_description').val(''); $('#id_location').val(''); - $('#event_submit').val('create_event').html('Create'); + $('#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' }] - $('#calendar').fullCalendar( 'addEventSource', new_event); + new_event = { id: new_event_id, title : 'New event', start: $('#id_dtstart').val(), end: $('#id_dtend').val(), editable: true, color: '#bbb' }; + calendar.addEvent(new_event); }, + + eventClick: function(info) { + + //reset categories + $('#id_categories').tagsinput('removeAll'); + + var event = info.event._def; + var dtstart = new Date(info.event._instance.range.start); + var dtend = new Date(info.event._instance.range.end); - eventClick: function(event, jsEvent, view) { + if(event.extendedProps.plink) { + if(! $('#l2s').length) + $('#id_title_wrapper').prepend('<span id="l2s" class="float-right"></span>'); - if(event.id == new_event_id) { + $('#l2s').html('<a href="' + event.extendedProps.plink[0] + '" target="_blank"><i class="fa fa-external-link"></i> ' + event.extendedProps.plink[1] + '</a>'); + } + else { + $('#l2s').remove(); + } + + if(event.publicId == new_event_id) { + $('#calendar_select').trigger('change'); + $('#event_submit').show(); + event_id = 0; $(window).scrollTop(0); $('.section-content-tools-wrapper, #event_form_wrapper').show(); $('#recurrence_warning').hide(); $('#id_title').focus().val(''); + $('#id_title').attr('disabled', false); + $('#id_dtstart').attr('disabled', false); + $('#id_dtend').attr('disabled', false); + $('#id_description').attr('disabled', false); + $('#id_location').attr('disabled', false); + return false; } - if($('main').hasClass('fullscreen') && view.type !== 'month' && event.rw) - $('#calendar').fullCalendar('option', 'height', 'auto'); - - if(new_event.length && event.rw) { - $('#calendar').fullCalendar( 'removeEventSource', new_event); + if(new_event.id && event.extendedProps.rw) { + var event_poi = calendar.getEventById(new_event.id); + event_poi.remove(); + new_event = {}; } + + var calendar_id = ((event.extendedProps.calendar_id.constructor === Array) ? event.extendedProps.calendar_id[0] + ':' + event.extendedProps.calendar_id[1] : event.extendedProps.calendar_id); - if(!event.recurrent && event.rw) { - var start_clone = moment(event.start); - var noend_allday = start_clone.add(1, 'day').format('YYYY-MM-DD'); - + if(!event.extendedProps.recurrent) { $(window).scrollTop(0); $('.section-content-tools-wrapper, #event_form_wrapper').show(); $('#recurrence_warning').hide(); - $('#id_title').focus(); - - $('#event_uri').val(event.uri); + event_uri = event.extendedProps.uri; $('#id_title').val(event.title); - $('#calendar_select').val(event.calendar_id[0] + ':' + event.calendar_id[1]).attr('disabled', true); - $('#id_dtstart').val(event.start.format()); - $('#id_dtend').val(event.end ? event.end.format() : event.start.hasTime() ? '' : noend_allday); - $('#id_description').val(event.description); - $('#id_location').val(event.location); - $('#event_submit').val('update_event').html('Update'); - $('#event_delete').show(); + $('#calendar_select').val(calendar_id).attr('disabled', true).trigger('change'); + $('#id_categories').tagsinput('add', event.extendedProps.categories); + $('#id_dtstart').val(dtstart.toUTCString()); + $('#id_dtend').val(dtend.toUTCString()); + $('#id_description').val(event.extendedProps.description); + $('#id_location').val(event.extendedProps.location); + $('#event_submit').val('update_event').html('{{$update}}'); + $('#dbtn-acl').addClass('d-none'); + event_id = event.extendedProps.item ? event.extendedProps.item.id : 0; + event_xchan = event.extendedProps.item ? event.extendedProps.item.event_xchan : ''; + + contact_allow = event.extendedProps.contact_allow || []; + group_allow = event.extendedProps.group_allow || []; + contact_deny = event.extendedProps.contact_deny || []; + group_deny = event.extendedProps.group_deny || []; + + if(event.extendedProps.rw) { + $('#event_delete').show(); + $('#event_submit').show(); + $('#id_title').focus(); + $('#id_title').attr('disabled', false); + $('#id_dtstart').attr('disabled', false); + $('#id_dtend').attr('disabled', false); + $('#id_description').attr('disabled', false); + $('#id_location').attr('disabled', false); + + if(calendar_id === 'channel_calendar' && !event.ui.startEditable) { + $('#event_submit').hide(); + } + } + else { + $('#event_submit').hide(); + $('#event_delete').hide(); + $('#id_title').attr('disabled', true); + $('#id_dtstart').attr('disabled', true); + $('#id_dtend').attr('disabled', true); + $('#id_description').attr('disabled', true); + $('#id_location').attr('disabled', true); + } } - else if(event.recurrent && event.rw) { + else if(event.extendedProps.recurrent && event.extendedProps.rw) { $('.section-content-tools-wrapper, #recurrence_warning').show(); $('#event_form_wrapper').hide(); - $('#event_uri').val(event.uri); - $('#calendar_select').val(event.calendar_id[0] + ':' + event.calendar_id[1]).attr('disabled', true); + event_uri = event.extendedProps.uri; + $('#calendar_select').val(calendar_id).attr('disabled', true).trigger('change'); } }, + + eventResize: function(info) { - eventResize: function(event, delta, revertFunc) { - + 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(event.start.format()); - $('#id_dtend').val(event.end.format()); - - $.post( 'cdav/calendar', { - 'update': 'resize', - 'id[]': event.calendar_id, - 'uri': event.uri, - 'dtstart': event.start ? event.start.format() : '', - 'dtend': event.end ? event.end.format() : '' - }) - .fail(function() { - revertFunc(); - }); + $('#id_dtstart').val(dtstart.toUTCString()); + $('#id_dtend').val(dtend.toUTCString()); + + event_id = event.extendedProps.item ? event.extendedProps.item.id : 0; + event_xchan = event.extendedProps.item ? event.extendedProps.item.event_xchan : ''; + + if(event.extendedProps.calendar_id === 'channel_calendar') { + $.post( 'channel_calendar', { + 'event_id': event_id, + 'event_hash': event_uri, + 'xchan': event_xchan, + 'type': 'event', + 'preview': 0, + 'summary': event.title, + 'dtstart': dtstart.toUTCString(), + 'dtend': dtend.toUTCString(), + 'adjust': event.extendedProps.item.adjust, + 'categories': event.extendedProps.categories, + 'desc': event.extendedProps.description, + 'location': event.extendedProps.location, + }) + .fail(function() { + info.revert(); + }); + } + else { + $.post( 'cdav/calendar', { + 'update': 'resize', + 'id[]': event.extendedProps.calendar_id, + 'uri': event.extendedProps.uri, + 'dtstart': dtstart ? dtstart.toUTCString() : '', + 'dtend': dtend ? dtend.toUTCString() : '' + }) + .fail(function() { + info.revert(); + }); + } }, + + eventDrop: function(info) { - eventDrop: function(event, delta, revertFunc) { - - var start_clone = moment(event.start); - var noend_allday = start_clone.add(1, 'day').format('YYYY-MM-DD'); - + 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(event.start.format()); - $('#id_dtend').val(event.end ? event.end.format() : event.start.hasTime() ? '' : noend_allday); - - $.post( 'cdav/calendar', { - 'update': 'drop', - 'id[]': event.calendar_id, - 'uri': event.uri, - 'dtstart': event.start ? event.start.format() : '', - 'dtend': event.end ? event.end.format() : event.start.hasTime() ? '' : noend_allday - }) - .fail(function() { - revertFunc(); - }); + $('#id_dtstart').val(dtstart.toUTCString()); + $('#id_dtend').val(dtend.toUTCString()); + + event_id = event.extendedProps.item ? event.extendedProps.item.id : 0; + event_xchan = event.extendedProps.item ? event.extendedProps.item.event_xchan : ''; + + if(event.extendedProps.calendar_id === 'channel_calendar') { + $.post( 'channel_calendar', { + 'event_id': event_id, + 'event_hash': event_uri, + 'xchan': event_xchan, + 'type': 'event', + 'preview': 0, + 'summary': event.title, + 'dtstart': dtstart.toUTCString(), + 'dtend': dtend.toUTCString(), + 'adjust': event.extendedProps.item.adjust, + 'categories': event.extendedProps.categories, + 'desc': event.extendedProps.description, + 'location': event.extendedProps.location, + }) + .fail(function() { + info.revert(); + }); + } + else { + $.post( 'cdav/calendar', { + 'update': 'drop', + 'id[]': event.extendedProps.calendar_id, + 'uri': event.extendedProps.uri, + 'dtstart': dtstart ? dtstart.toUTCString() : '', + 'dtend': dtend ? dtend.toUTCString() : '' + }) + .fail(function() { + info.revert(); + }); + } }, loading: function(isLoading, view) { @@ -136,111 +278,205 @@ $(document).ready(function() { $('#today-btn > i').show(); } } + + }); + + calendar.render(); + + $('#title').text(calendar.view.title); + $('#view_selector').html(views[calendar.view.type]); + + $('#today-btn').on('click', function() { + calendar.today(); + $('#title').text(calendar.view.title); + }); + + $('#prev-btn').on('click', function() { + calendar.prev(); + $('#title').text(calendar.view.title); + }); + + $('#next-btn').on('click', function() { + calendar.next(); + $('#title').text(calendar.view.title); }); - // echo the title - var view = $('#calendar').fullCalendar('getView'); - - $('#title').text(view.title); - - $('#view_selector').html(views[view.name]); - + $('#calendar_select').on('change', function() { + if(this.value === 'channel_calendar') + $('#dbtn-acl, #id_categories_wrapper').removeClass('d-none'); + else + $('#dbtn-acl, #id_categories_wrapper').addClass('d-none'); + }); + $('.color-edit').colorpicker({ input: '.color-edit-input' }); - $(document).on('click','#fullscreen-btn', on_fullscreen); - $(document).on('click','#inline-btn', on_inline); - + $(document).on('click','#fullscreen-btn', updateSize); + $(document).on('click','#inline-btn', updateSize); $(document).on('click','#event_submit', on_submit); $(document).on('click','#event_more', on_more); $(document).on('click','#event_cancel, #event_cancel_recurrent', reset_form); $(document).on('click','#event_delete, #event_delete_recurrent', on_delete); -}); + if(resource !== null) { + $('.section-content-tools-wrapper, #event_form_wrapper').show(); -function changeView(action, viewName) { - $('#calendar').fullCalendar(action, viewName); - var view = $('#calendar').fullCalendar('getView'); + $('#id_title_wrapper').prepend('<span id="l2s" class="float-right"></span>'); + $('#l2s').html('<a href="' + resource.plink[0] + '" target="_blank"><i class="fa fa-external-link"></i> ' + resource.plink[1] + '</a>'); + + event_id = resource.id; + event_uri = resource.event_hash; + event_xchan = resource.event_xchan; + + $('#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_categories').tagsinput('add', '{{$categories}}'), + $('#id_description').val(resource.description); + $('#id_location').val(resource.location); - if($('main').hasClass('fullscreen')) - if(view.name !== 'month') - $('.section-content-tools-wrapper').css('display') === 'none' ? on_fullscreen() : on_inline() ; + if(event_xchan !== '{{$channel_hash}}') + $('#event_submit').hide(); else - on_fullscreen(); - else - on_inline(); + $('#event_submit').html('{{$update}}'); + } +}); + - $('#title').text(view.title); - $('#view_selector').html(views[view.name]); +function changeView(action, viewName) { + calendar.changeView(viewName); + $('#title').text(calendar.view.title); + $('#view_selector').html(views[calendar.view.type]); + return; } function add_remove_json_source(source, color, editable, status) { + var id, parts = []; + + if(source == '/channel_calendar/json') + id = 'channel_calendar' + + if(! id) { + parts = source.split('/'); + id = parts[4]; + } + + var eventSource = calendar.getEventSourceById(id); + var selector = '#calendar-btn-' + id; if(status === undefined) status = 'fa-calendar-check-o'; if(status === 'drop') { + eventSource.remove(); reset_form(); - $('#calendar').fullCalendar( 'removeEventSource', source ); return; } - var parts = source.split('/'); - var id = parts[4]; - - var selector = '#calendar-btn-' + id; - if($(selector).hasClass('fa-calendar-o')) { - $('#calendar').fullCalendar( 'addEventSource', { url: source, color: color, editable: editable }); + calendar.addEventSource({ id: id, url: source, color: color, editable: editable }); $(selector).removeClass('fa-calendar-o'); $(selector).addClass(status); $.get('/cdav/calendar/switch/' + id + '/1'); } else { - $('#calendar').fullCalendar( 'removeEventSource', source ); + eventSource.remove(); $(selector).removeClass(status); $(selector).addClass('fa-calendar-o'); $.get('/cdav/calendar/switch/' + id + '/0'); } } -function on_fullscreen() { - var view = $('#calendar').fullCalendar('getView'); - if(($('.section-content-tools-wrapper').css('display') === 'none') || ($('.section-content-tools-wrapper').css('display') !== 'none' && view.type === 'month')) - $('#calendar').fullCalendar('option', 'height', $(window).height() - $('.section-title-wrapper').outerHeight(true) - 2); // -2 is for border width (.generic-content-wrapper top and bottom) of .generic-content-wrapper -} - -function on_inline() { - var view = $('#calendar').fullCalendar('getView'); - ((view.type === 'month') ? $('#calendar').fullCalendar('option', 'height', '') : $('#calendar').fullCalendar('option', 'height', 'auto')); +function updateSize() { + calendar.updateSize(); } function on_submit() { - $.post( 'cdav/calendar', { - 'submit': $('#event_submit').val(), - 'target': $('#calendar_select').val(), - 'uri': $('#event_uri').val(), - 'title': $('#id_title').val(), - 'dtstart': $('#id_dtstart').val(), - 'dtend': $('#id_dtend').val(), - 'description': $('#id_description').val(), - 'location': $('#id_location').val() - }) - .done(function() { - $('#calendar').fullCalendar( 'refetchEventSources', [ {{$sources}} ] ); - reset_form(); - }); + if($('#calendar_select').val() === 'channel_calendar') { + if(new_event_id) { + $("input[name='contact_allow[]']").each(function() { + contact_allow.push($(this).val()); + }); + $("input[name='group_allow[]']").each(function() { + group_allow.push($(this).val()); + }); + $("input[name='contact_deny[]']").each(function() { + contact_deny.push($(this).val()); + }); + $("input[name='group_deny[]']").each(function() { + group_deny.push($(this).val()); + }); + } + + $.post( 'channel_calendar', { + 'event_id': event_id, + 'event_hash': event_uri, + 'xchan': event_xchan, + 'type': 'event', + 'preview': 0, + 'summary': $('#id_title').val(), + 'dtstart': $('#id_dtstart').val(), + 'dtend': $('#id_dtend').val(), + 'adjust': 0, + 'categories': $('#id_categories').val(), + 'desc': $('#id_description').val(), + 'location': $('#id_location').val(), + 'contact_allow[]': contact_allow, + 'group_allow[]': group_allow, + 'contact_deny[]': contact_deny, + 'group_deny[]': group_deny + + }) + .done(function() { + var eventSource = calendar.getEventSourceById('channel_calendar'); + eventSource.refetch(); + reset_form(); + + }); + + } + else { + $.post( 'cdav/calendar', { + 'submit': $('#event_submit').val(), + 'target': $('#calendar_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() + }) + .done(function() { + var parts = $('#calendar_select').val().split(':'); + var eventSource = calendar.getEventSourceById(parts[0]); + eventSource.refetch(); + reset_form(); + + }); + } } function on_delete() { - $.post( 'cdav/calendar', { - 'delete': 'delete', - 'target': $('#calendar_select').val(), - 'uri': $('#event_uri').val(), - }) - .done(function() { - $('#calendar').fullCalendar( 'refetchEventSources', [ {{$sources}} ] ); - reset_form(); - }); + if($('#calendar_select').val() === 'channel_calendar') { + $.get('channel_calendar/drop/' + event_uri, function() { + var eventSource = calendar.getEventSourceById('channel_calendar'); + eventSource.refetch(); + reset_form(); + }); + } + else { + $.post( 'cdav/calendar', { + 'delete': 'delete', + 'target': $('#calendar_select').val(), + 'uri': event_uri + }) + .done(function() { + var parts = $('#calendar_select').val().split(':'); + var eventSource = calendar.getEventSourceById(parts[0]); + eventSource.refetch(); + reset_form(); + }); + } } function reset_form() { @@ -248,19 +484,20 @@ function reset_form() { $('#event_submit').val(''); $('#calendar_select').val(''); - $('#event_uri').val(''); + event_uri = ''; $('#id_title').val(''); + $('#id_categories').tagsinput('removeAll'); $('#id_dtstart').val(''); $('#id_dtend').val(''); - if(new_event.length) - $('#calendar').fullCalendar( 'removeEventSource', new_event); - + if(new_event.id) { + var event_poi = calendar.getEventById(new_event.id); + event_poi.remove(); + new_event = {}; + } + if($('#more_block').hasClass('open')) on_more(); - - if($('main').hasClass('fullscreen')) - on_fullscreen(); } function on_more() { @@ -274,6 +511,10 @@ function on_more() { } } +function exportDate() { + window.location.href= 'channel_calendar/export'; +} + </script> <div class="generic-content-wrapper"> @@ -282,18 +523,18 @@ function on_more() { <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', 'month'); return false;">{{$month}}</a></li> - <a class="dropdown-item" href="#" onclick="changeView('changeView', 'agendaWeek'); return false;">{{$week}}</a></li> - <a class="dropdown-item" href="#" onclick="changeView('changeView', 'agendaDay'); return false;">{{$day}}</a></li> + <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> <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> </div> <div class="btn-group"> - <button class="btn btn-outline-secondary btn-sm" onclick="changeView('prev', false);" title="{{$prev}}"><i class="fa fa-backward"></i></button> - <button id="today-btn" class="btn btn-outline-secondary btn-sm" onclick="changeView('today', false);" title="{{$today}}"><div id="events-spinner" class="spinner s"></div><i class="fa fa-bullseye" style="display: none; width: 1rem;"></i></button> - <button class="btn btn-outline-secondary btn-sm" onclick="changeView('next', false);" title="{{$next}}"><i class="fa fa-forward"></i></button> + <button id="prev-btn" class="btn btn-outline-secondary btn-sm" title="{{$prev}}"><i class="fa fa-backward"></i></button> + <button id="today-btn" class="btn btn-outline-secondary btn-sm" title="{{$today}}"><div id="events-spinner" class="spinner s"></div><i class="fa fa-bullseye" style="display: none; width: 1rem;"></i></button> + <button id="next-btn" class="btn btn-outline-secondary btn-sm" title="{{$next}}"><i class="fa fa-forward"></i></button> </div> <button id="fullscreen-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button> <button id="inline-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button> @@ -313,16 +554,28 @@ function on_more() { </div> </div> <div id="event_form_wrapper" style="display: none"> - <form id="event_form" method="post" action=""> - <input id="event_uri" type="hidden" name="uri" value=""> + <form id="event_form" method="post" action="" class="acl-form" data-form_id="event_form" data-allow_cid='{{$allow_cid}}' data-allow_gid='{{$allow_gid}}' data-deny_cid='{{$deny_cid}}' data-deny_gid='{{$deny_gid}}'> {{include file="field_input.tpl" field=$title}} <label for="calendar_select">{{$calendar_select_label}}</label> <select id="calendar_select" name="target" class="form-control form-group"> + <optgroup label="{{$calendar_optiopns_label.0}}"> + {{foreach $channel_calendars as $channel_calendar}} + <option value="channel_calendar">{{$channel_calendar.displayname}}</option> + {{/foreach}} + </optgroup> + <optgroup label="{{$calendar_optiopns_label.1}}"> {{foreach $writable_calendars as $writable_calendar}} <option value="{{$writable_calendar.id.0}}:{{$writable_calendar.id.1}}">{{$writable_calendar.displayname}}{{if $writable_calendar.sharer}} ({{$writable_calendar.sharer}}){{/if}}</option> {{/foreach}} + </optgroup> </select> <div id="more_block" style="display: none;"> + {{if $catsenabled}} + <div id="id_categories_wrapper" class="form-group"> + <label id="label_categories" for="id_categories">{{$categories_label}}</label> + <input name="categories" id="id_categories" class="form-control" type="text" value="{{$categories}}" data-role="cat-tagsinput" /> + </div> + {{/if}} {{include file="field_input.tpl" field=$dtstart}} {{include file="field_input.tpl" field=$dtend}} {{include file="field_textarea.tpl" field=$description}} @@ -331,6 +584,7 @@ function on_more() { <div class="form-group"> <div class="pull-right"> <button id="event_more" type="button" class="btn btn-outline-secondary btn-sm"><i class="fa fa-caret-down"></i> {{$more}}</button> + <button id="dbtn-acl" class="btn btn-outline-secondary btn-sm d-none" type="button" data-toggle="modal" data-target="#aclModal"><i id="jot-perms-icon" class="fa fa-{{$lockstate}}"></i></button> <button id="event_submit" type="button" value="" class="btn btn-primary btn-sm"></button> </div> @@ -341,6 +595,7 @@ function on_more() { <div class="clear"></div> </div> </form> + {{$acl}} </div> </div> <div class="section-content-wrapper-np"> |