Trigger plugin hooks to display and snooze/dismiss alarms
This commit is contained in:
parent
370b60e3ee
commit
c0fc38ab9c
2 changed files with 40 additions and 16 deletions
|
@ -772,8 +772,13 @@ class calendar extends rcube_plugin
|
|||
break;
|
||||
|
||||
case "dismiss":
|
||||
foreach (explode(',', $event['id']) as $id)
|
||||
$success |= $this->driver->dismiss_alarm($id, $event['snooze']);
|
||||
$event['ids'] = explode(',', $event['id']);
|
||||
$plugin = $this->rc->plugins->exec_hook('dismiss_alarms', $event);
|
||||
$success = $plugin['success'];
|
||||
foreach ($event['ids'] as $id) {
|
||||
if (strpos($id, 'cal:') === 0)
|
||||
$success |= $this->driver->dismiss_alarm(substr($id, 4), $event['snooze']);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -833,15 +838,25 @@ class calendar extends rcube_plugin
|
|||
*/
|
||||
function keep_alive($attr)
|
||||
{
|
||||
$timestamp = time();
|
||||
$this->load_driver();
|
||||
$alarms = $this->driver->pending_alarms(time());
|
||||
if ($alarms) {
|
||||
$alarms = $this->driver->pending_alarms($timestamp);
|
||||
foreach ($alarms as $i => $alarm) {
|
||||
$alarms[$i]['id'] = 'cal:' . $alarm['id']; // prefix ID with cal:
|
||||
}
|
||||
|
||||
$plugin = $this->rc->plugins->exec_hook('pending_alarms', array(
|
||||
'time' => $timestamp,
|
||||
'alarms' => $alarms,
|
||||
));
|
||||
|
||||
if (!$plugin['abort'] && $plugin['alarms']) {
|
||||
// make sure texts and env vars are available on client
|
||||
if ($this->rc->task != 'calendar') {
|
||||
$this->add_texts('localization/', true);
|
||||
$this->rc->output->set_env('snooze_select', $this->ui->snooze_select());
|
||||
}
|
||||
$this->rc->output->command('plugin.display_alarms', $this->_alarms_output($alarms));
|
||||
$this->rc->output->command('plugin.display_alarms', $this->_alarms_output($plugin['alarms']));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1181,9 +1196,9 @@ class calendar extends rcube_plugin
|
|||
foreach ($alarms as $alarm) {
|
||||
$out[] = array(
|
||||
'id' => $alarm['id'],
|
||||
'start' => $this->adjust_timezone($alarm['start'])->format('c'),
|
||||
'end' => $this->adjust_timezone($alarm['end'])->format('c'),
|
||||
'allDay' => ($event['allday'] == 1)?true:false,
|
||||
'start' => $alarm['start'] ? $this->adjust_timezone($alarm['start'])->format('c') : '',
|
||||
'end' => $alarm['end'] ? $this->adjust_timezone($alarm['end'])->format('c') : '',
|
||||
'allDay' => ($alarm['allday'] == 1)?true:false,
|
||||
'title' => $alarm['title'],
|
||||
'location' => $alarm['location'],
|
||||
'calendar' => $alarm['calendar'],
|
||||
|
|
|
@ -46,15 +46,24 @@ function rcube_calendar(settings)
|
|||
// create a nice human-readable string for the date/time range
|
||||
this.event_date_text = function(event)
|
||||
{
|
||||
if (!event.start)
|
||||
return '';
|
||||
if (!event.end)
|
||||
event.end = event.start;
|
||||
|
||||
var fromto, duration = event.end.getTime() / 1000 - event.start.getTime() / 1000;
|
||||
if (event.allDay)
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format']) + (duration > 86400 || event.start.getDay() != event.end.getDay() ? ' — ' + $.fullCalendar.formatDate(event.end, settings['date_format']) : '');
|
||||
else if (duration < 86400 && event.start.getDay() == event.end.getDay())
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.start, settings['time_format']) + ' — '
|
||||
+ $.fullCalendar.formatDate(event.end, settings['time_format']);
|
||||
else
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.start, settings['time_format']) + ' — '
|
||||
+ $.fullCalendar.formatDate(event.end, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.end, settings['time_format']);
|
||||
if (event.allDay) {
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format'])
|
||||
+ (duration > 86400 || event.start.getDay() != event.end.getDay() ? ' — ' + $.fullCalendar.formatDate(event.end, settings['date_format']) : '');
|
||||
}
|
||||
else if (duration < 86400 && event.start.getDay() == event.end.getDay()) {
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.start, settings['time_format'])
|
||||
+ (duration > 0 ? ' — ' + $.fullCalendar.formatDate(event.end, settings['time_format']) : '');
|
||||
}
|
||||
else {
|
||||
fromto = $.fullCalendar.formatDate(event.start, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.start, settings['time_format'])
|
||||
+ (duration > 0 ? ' — ' + $.fullCalendar.formatDate(event.end, settings['date_format']) + ' ' + $.fullCalendar.formatDate(event.end, settings['time_format']) : '');
|
||||
}
|
||||
|
||||
return fromto;
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue