From 50569114acdc64e7c7cae1498635d3f821517c30 Mon Sep 17 00:00:00 2001 From: Daniel Lange Date: Mon, 7 Mar 2016 15:53:16 +0100 Subject: Initial commit of the Faster IT roundcube_calendar plugin distribution This includes: * Kolab plugins 3.2.9 (calendar and libcalendaring) * CalDAV driver 3.2.8 * .htaccess files for at least some security * SabreDAV updated to 1.8.12 (Jan 2015 release) * Support for CURLOPT_SSL_* settings to allow self-signed certificates * Small fixes & improved documentation --- calendar/print.js | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 calendar/print.js (limited to 'calendar/print.js') diff --git a/calendar/print.js b/calendar/print.js new file mode 100644 index 0000000..941d04c --- /dev/null +++ b/calendar/print.js @@ -0,0 +1,176 @@ +/** + * Print view for the Calendar plugin + * + * @author Thomas Bruederli + * + * @licstart The following is the entire license notice for the + * JavaScript code in this file. + * + * Copyright (C) 2011, Kolab Systems AG + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * @licend The above is the entire license notice + * for the JavaScript code in this file. + */ + + +/* calendar plugin printing code */ +window.rcmail && rcmail.addEventListener('init', function(evt) { + + // quote html entities + var Q = function(str) + { + return String(str).replace(//g, '>').replace(/"/g, '"'); + }; + + var rc_loading; + var showdesc = true; + var settings = $.extend(rcmail.env.calendar_settings, rcmail.env.libcal_settings); + + // create list of event sources AKA calendars + var src, event_sources = []; + var add_url = (rcmail.env.search ? '&q='+escape(rcmail.env.search) : ''); + for (var id in rcmail.env.calendars) { + if (!rcmail.env.calendars[id].active) + continue; + + source = $.extend({ + url: "./?_task=calendar&_action=load_events&source=" + escape(id) + add_url, + className: 'fc-event-cal-'+id, + id: id + }, rcmail.env.calendars[id]); + + event_sources.push(source); + } + + var viewdate = new Date(); + if (rcmail.env.date) + viewdate.setTime(rcmail.env.date * 1000); + + // initalize the fullCalendar plugin + var fc = $('#calendar').fullCalendar({ + header: { + left: '', + center: 'title', + right: 'agendaDay,agendaWeek,month,table' + }, + aspectRatio: 0.85, + ignoreTimezone: true, // will treat the given date strings as in local (browser's) timezone + date: viewdate.getDate(), + month: viewdate.getMonth(), + year: viewdate.getFullYear(), + defaultView: rcmail.env.view, + eventSources: event_sources, + monthNames : settings['months'], + monthNamesShort : settings['months_short'], + dayNames : settings['days'], + dayNamesShort : settings['days_short'], + firstDay : settings['first_day'], + firstHour : settings['first_hour'], + slotMinutes : 60/settings['timeslots'], + timeFormat: { + '': settings['time_format'], + agenda: settings['time_format'] + '{ - ' + settings['time_format'] + '}', + list: settings['time_format'] + '{ - ' + settings['time_format'] + '}', + table: settings['time_format'] + '{ - ' + settings['time_format'] + '}' + }, + axisFormat : settings['time_format'], + columnFormat: { + month: 'ddd', // Mon + week: 'ddd ' + settings['date_short'], // Mon 9/7 + day: 'dddd ' + settings['date_short'], // Monday 9/7 + list: settings['date_agenda'], + table: settings['date_agenda'] + }, + titleFormat: { + month: 'MMMM yyyy', + week: settings['dates_long'], + day: 'dddd ' + settings['date_long'], + list: settings['dates_long'], + table: settings['dates_long'] + }, + listSections: rcmail.env.listSections !== undefined ? rcmail.env.listSections : settings['agenda_sections'], + listRange: rcmail.env.listRange || settings['agenda_range'], + tableCols: ['handle', 'date', 'time', 'title', 'location'], + allDayText: rcmail.gettext('all-day', 'calendar'), + buttonText: { + day: rcmail.gettext('day', 'calendar'), + week: rcmail.gettext('week', 'calendar'), + month: rcmail.gettext('month', 'calendar'), + table: rcmail.gettext('agenda', 'calendar') + }, + listTexts: { + until: rcmail.gettext('until', 'calendar'), + past: rcmail.gettext('pastevents', 'calendar'), + today: rcmail.gettext('today', 'calendar'), + tomorrow: rcmail.gettext('tomorrow', 'calendar'), + thisWeek: rcmail.gettext('thisweek', 'calendar'), + nextWeek: rcmail.gettext('nextweek', 'calendar'), + thisMonth: rcmail.gettext('thismonth', 'calendar'), + nextMonth: rcmail.gettext('nextmonth', 'calendar'), + future: rcmail.gettext('futureevents', 'calendar'), + week: rcmail.gettext('weekofyear', 'calendar') + }, + loading: function(isLoading) { + rc_loading = rcmail.set_busy(isLoading, 'loading', rc_loading); + }, + // event rendering + eventRender: function(event, element, view) { + if (view.name != 'month' && view.name != 'table') { + var cont = element.find('.fc-event-title'); + if (event.location) { + cont.after('
@ ' + Q(event.location) + '
'); + cont = cont.next(); + } + if (event.description && showdesc) { + cont.after('
' + Q(event.description) + '
'); + } +/* TODO: create icons black on white + if (event.recurrence) + element.find('.fc-event-time').append(''); + if (event.alarms) + element.find('.fc-event-time').append(''); +*/ + } + if (view.name == 'table' && event.description && showdesc) { + var cols = element.children().css('border', 0).length; + element.after('' + Q(event.description) + ''); + } + }, + viewDisplay: function(view) { + // remove hard-coded hight and make contents visible + window.setTimeout(function(){ + if (view.name == 'table') { + $('div.fc-list-content').css('overflow', 'visible').height('auto'); + } + else { + $('div.fc-agenda-divider') + .next().css('overflow', 'visible').height('auto') + .children('div').css('overflow', 'visible').height('auto'); + } + // adjust fixed height if vertical day slots + var h = $('table.fc-agenda-slots:visible').height() + $('table.fc-agenda-allday:visible').height() + 4; + if (h) $('table.fc-agenda-days td.fc-widget-content').children('div').height(h); + }, 20); + } + }); + + // activate settings form + $('#propdescription').change(function(){ + showdesc = this.checked; + fc.fullCalendar('render'); + }); + +}); -- cgit v1.2.3