diff -urN ../calendar.orig/calendar.php ./calendar.php --- ../calendar.orig/calendar.php 2017-01-20 00:25:45.000000000 +0200 +++ ./calendar.php 2017-01-20 00:33:09.415253000 +0200 @@ -364,6 +364,7 @@ } $no_override = array_flip((array)$this->rc->config->get('dont_override')); +$p['current'] = 1; $p['blocks']['view']['name'] = $this->gettext('mainoptions'); @@ -1201,7 +1202,7 @@ private function event_save_success(&$event, $old, $action, $success) { // $success is a new event ID - if ($success !== true) { + if (($action != 'remove') and ($action != 'edit') and ($success !== true)) { // send update notification on the main event if ($event['_savemode'] == 'future' && $event['_notify'] && $old['attendees'] && $old['recurrence_id']) { $master = $this->driver->get_event(array('id' => $old['recurrence_id'], 'calendar' => $old['calendar']), 0, true); @@ -1246,7 +1247,10 @@ // only notify if data really changed (TODO: do diff check on client already) if (!$old || $action == 'remove' || self::event_diff($event, $old)) { - $sent = $this->notify_attendees($event, $old, $action, $event['_comment']); + if ($action == 'remove') + $sent = $this->notify_attendees($old, $old, $action, $event['_comment']); + else + $sent = $this->notify_attendees($event, $old, $action, $event['_comment']); if ($sent > 0) $this->rc->output->show_message('calendar.itipsendsuccess', 'confirmation'); else if ($sent < 0) diff -urN ../calendar.orig/config.inc.php ./config.inc.php --- ../calendar.orig/config.inc.php 1970-01-01 03:00:00.000000000 +0300 +++ ./config.inc.php 2020-05-10 23:06:35.905882000 +0300 @@ -0,0 +1,177 @@ +. | + | | + +-------------------------------------------------------------------------+ + | Author: Lazlo Westerhof | + | Thomas Bruederli | + +-------------------------------------------------------------------------+ +*/ + +// backend type (database, google, kolab) +$config['calendar_driver'] = "database"; + +// default calendar view (agendaDay, agendaWeek, month) +$config['calendar_default_view'] = "agendaWeek"; + +// show a birthdays calendar from the user's address book(s) +$config['calendar_contact_birthdays'] = false; + +// mapping of Roundcube date formats to calendar formats (long/short/agenda) +// should be in sync with 'date_formats' in main config +$config['calendar_date_format_sets'] = array( + 'yyyy-MM-dd' => array('MMM d yyyy', 'M-d', 'ddd MM-dd'), + 'dd-MM-yyyy' => array('d MMM yyyy', 'd-M', 'ddd dd-MM'), + 'yyyy/MM/dd' => array('MMM d yyyy', 'M/d', 'ddd MM/dd'), + 'MM/dd/yyyy' => array('MMM d yyyy', 'M/d', 'ddd MM/dd'), + 'dd/MM/yyyy' => array('d MMM yyyy', 'd/M', 'ddd dd/MM'), + 'dd.MM.yyyy' => array('dd. MMM yyyy', 'd.M', 'ddd dd.MM.'), + 'd.M.yyyy' => array('d. MMM yyyy', 'd.M', 'ddd d.MM.'), +); + +// general date format (only set if different from default date format and not user configurable) +// $config['calendar_date_format'] = "yyyy-MM-dd"; + +// time format (only set if different from default date format) +// $config['calendar_time_format'] = "HH:mm"; + +// short date format (used for column titles) +// $config['calendar_date_short'] = 'M-d'; + +// long date format (used for calendar title) +// $config['calendar_date_long'] = 'MMM d yyyy'; + +// date format used for agenda view +// $config['calendar_date_agenda'] = 'ddd MM-dd'; + +// timeslots per hour (1, 2, 3, 4, 6) +$config['calendar_timeslots'] = 2; + +// show this number of days in agenda view +$config['calendar_agenda_range'] = 60; + +// first day of the week (0-6) +$config['calendar_first_day'] = 1; + +// first hour of the calendar (0-23) +$config['calendar_first_hour'] = 6; + +// working hours begin +$config['calendar_work_start'] = 6; + +// working hours end +$config['calendar_work_end'] = 18; + +// show line at current time of the day +$config['calendar_time_indicator'] = true; + +// default alarm settings for new events. +// this is only a preset when a new event dialog opens +// possible values are , DISPLAY, EMAIL +//$config['calendar_default_alarm_type'] = ''; +$config['calendar_default_alarm_type'] = 'DISPLAY'; + +// default alarm offset for new events. +// use ical-style offset values like "-1H" (one hour before) or "+30M" (30 minutes after) +$config['calendar_default_alarm_offset'] = '-15M'; + +// how to colorize events: +// 0: according to calendar color +// 1: according to category color +// 2: calendar for outer, category for inner color +// 3: category for outer, calendar for inner color +$config['calendar_event_coloring'] = 0; + +// event categories +$config['calendar_categories'] = array( +// 'Personal' => 'c0c0c0', +// 'Work' => 'ff0000', +// 'Family' => '00ff00', +// 'Holiday' => 'ff6600', + 'Личное' => 'c0c0c0', + 'Работа' => 'ff0000', + 'Семья' => '00ff00', + 'Праздники' => 'ff6600', +); + +// enable users to invite/edit attendees for shared events organized by others +//$config['calendar_allow_invite_shared'] = false; +$config['calendar_allow_invite_shared'] = true; + +// allow users to accecpt iTip invitations who are no explicitly listed as attendee. +// this can be the case if invitations are sent to mailing lists or alias email addresses. +$config['calendar_allow_itip_uninvited'] = true; + +// controls the visibility/default of the checkbox controlling the sending of iTip invitations +// 0 = hidden + disabled +// 1 = hidden + active +// 2 = visible + unchecked +// 3 = visible + active +$config['calendar_itip_send_option'] = 3; + +// Action taken after iTip request is handled. Possible values: +// 0 - no action +// 1 - move to Trash +// 2 - delete the message +// 3 - flag as deleted +// folder_name - move the message to the specified folder +$config['calendar_itip_after_action'] = 0; + +// enable asynchronous free-busy triggering after data changed +$config['calendar_freebusy_trigger'] = false; + +// free-busy information will be displayed for user calendars if available +// 0 - no free-busy information +// 1 - enabled in all views +// 2 - only in quickview +$config['calendar_include_freebusy_data'] = 1; + +// SMTP server host used to send (anonymous) itip messages. +// Set to '' in order to use PHP's mail() function for email delivery. +// To override the SMTP port or connection method, provide a full URL like 'tls://somehost:587' +//$config['calendar_itip_smtp_server'] = null; +$config['calendar_itip_smtp_server'] = 'tls://localhost'; + +// SMTP username used to send (anonymous) itip messages +//$config['calendar_itip_smtp_user'] = 'smtpauth'; +$config['calendar_itip_smtp_user'] = 'calendar@localhost'; + +// SMTP password used to send (anonymous) itip messages +$config['calendar_itip_smtp_pass'] = '123456'; + +// show virtual invitation calendars (Kolab driver only) +$config['kolab_invitation_calendars'] = true; + +// Base URL to build fully qualified URIs to access calendars via CALDAV +// The following replacement variables are supported: +// %h - Current HTTP host +// %u - Current webmail user name +// %n - Calendar name +// %i - Calendar UUID +// $config['calendar_caldav_url'] = 'http://%h/iRony/calendars/%u/%i'; + +// Driver to provide a resource directory ('ldap' is the only implementation yet). +// Leave empty or commented to disable resources support. +// $config['calendar_resources_driver'] = 'ldap'; + +// LDAP directory configuration to find avilable resources for events +// $config['calendar_resources_directory'] = array(/* ldap_public-like address book configuration */); + +?> diff -urN ../calendar.orig/drivers/database/database_driver.php ./drivers/database/database_driver.php --- ../calendar.orig/drivers/database/database_driver.php 2017-01-20 00:25:48.000000000 +0200 +++ ./drivers/database/database_driver.php 2017-01-20 00:33:09.417442000 +0200 @@ -109,7 +109,7 @@ { // attempt to create a default calendar for this user if (empty($this->calendars)) { - if ($this->create_calendar(array('name' => 'Default', 'color' => 'cc0000', 'showalarms' => true))) + if ($this->create_calendar(array('name' => ($this->cal->gettext('default_calendar_name') ? $this->cal->gettext('default_calendar_name') : 'Default'), 'color' => 'cc0000', 'showalarms' => true))) $this->_read_calendars(); } diff -urN ../calendar.orig/localization/en_US.inc ./localization/en_US.inc --- ../calendar.orig/localization/en_US.inc 2017-01-20 00:26:13.000000000 +0200 +++ ./localization/en_US.inc 2017-01-20 00:33:09.418578000 +0200 @@ -36,6 +36,7 @@ // calendar $labels['calendar'] = 'Calendar'; $labels['calendars'] = 'Calendars'; +$labels['default_calendar_name'] = 'Default calendar'; $labels['category'] = 'Category'; $labels['categories'] = 'Categories'; $labels['createcalendar'] = 'Create new calendar'; diff -urN ../calendar.orig/localization/ru_RU.inc ./localization/ru_RU.inc --- ../calendar.orig/localization/ru_RU.inc 2017-01-20 00:26:14.000000000 +0200 +++ ./localization/ru_RU.inc 2017-01-20 00:33:09.419792000 +0200 @@ -29,6 +29,7 @@ $labels['afteraction'] = 'После того, как приглашение или сообщение о его изменении обработано'; $labels['calendar'] = 'Календарь'; $labels['calendars'] = 'Календари'; +$labels['default_calendar_name'] = 'Основной календарь'; $labels['category'] = 'Категория'; $labels['categories'] = 'Категории'; $labels['createcalendar'] = 'Создать новый календарь';