Fix handling of alarms specified as PT0S, PT0M, etc. (T653)
This commit is contained in:
parent
d49a4457b1
commit
f7293f555b
3 changed files with 19 additions and 9 deletions
|
@ -337,9 +337,9 @@ function rcube_libcalendaring(settings)
|
|||
$(this).parent().find('span.edit-alarm-values')[(this.selectedIndex>0?'show':'hide')]();
|
||||
});
|
||||
$(prefix+' select.edit-alarm-offset').change(function(){
|
||||
var mode = $(this).val() == '@' ? 'show' : 'hide';
|
||||
$(this).parent().find('.edit-alarm-date, .edit-alarm-time')[mode]();
|
||||
$(this).parent().find('.edit-alarm-value').prop('disabled', mode == 'show');
|
||||
var val = $(this).val();
|
||||
$(this).parent().find('.edit-alarm-date, .edit-alarm-time')[val == '@' ? 'show' : 'hide']();
|
||||
$(this).parent().find('.edit-alarm-value').prop('disabled', val === '@' || val === '0');
|
||||
});
|
||||
|
||||
$(prefix+' .edit-alarm-date').removeClass('hasDatepicker').removeAttr('id').datepicker(datepicker_settings);
|
||||
|
@ -397,6 +397,10 @@ function rcube_libcalendaring(settings)
|
|||
$('input.edit-alarm-date', domnode).val(this.format_datetime(ondate, 1));
|
||||
$('input.edit-alarm-time', domnode).val(this.format_datetime(ondate, 2));
|
||||
}
|
||||
else if (String(alarm.trigger).match(/^[-+]*0[MHDS]$/)) {
|
||||
$('input.edit-alarm-value', domnode).val('0');
|
||||
$('select.edit-alarm-offset', domnode).val('0');
|
||||
}
|
||||
else if (String(alarm.trigger).match(/([-+])(\d+)([MHDS])/)) {
|
||||
val = RegExp.$2; offset = ''+RegExp.$1+RegExp.$3;
|
||||
$('input.edit-alarm-value', domnode).val(val);
|
||||
|
@ -419,6 +423,9 @@ function rcube_libcalendaring(settings)
|
|||
if (offset == '@') {
|
||||
alarm.trigger = '@' + me.date2unixtime(me.parse_datetime($('input.edit-alarm-time', elem).val(), $('input.edit-alarm-date', elem).val()));
|
||||
}
|
||||
else if (offset === '0') {
|
||||
alarm.trigger = '0S';
|
||||
}
|
||||
else if (!isNaN((val = parseInt($('input.edit-alarm-value', elem).val()))) && val >= 0) {
|
||||
alarm.trigger = offset[0] + val + offset[1];
|
||||
}
|
||||
|
|
|
@ -324,19 +324,21 @@ class libcalendaring extends rcube_plugin
|
|||
public function alarm_select($attrib, $alarm_types, $absolute_time = true)
|
||||
{
|
||||
unset($attrib['name']);
|
||||
$select_type = new html_select(array('name' => 'alarmtype[]', 'class' => 'edit-alarm-type', 'id' => $attrib['id']));
|
||||
|
||||
$input_value = new html_inputfield(array('name' => 'alarmvalue[]', 'class' => 'edit-alarm-value', 'size' => 3));
|
||||
$input_date = new html_inputfield(array('name' => 'alarmdate[]', 'class' => 'edit-alarm-date', 'size' => 10));
|
||||
$input_time = new html_inputfield(array('name' => 'alarmtime[]', 'class' => 'edit-alarm-time', 'size' => 6));
|
||||
$select_type = new html_select(array('name' => 'alarmtype[]', 'class' => 'edit-alarm-type', 'id' => $attrib['id']));
|
||||
$select_offset = new html_select(array('name' => 'alarmoffset[]', 'class' => 'edit-alarm-offset'));
|
||||
|
||||
$select_type->add($this->gettext('none'), '');
|
||||
foreach ($alarm_types as $type)
|
||||
$select_type->add($this->gettext(strtolower("alarm{$type}option")), $type);
|
||||
|
||||
$input_value = new html_inputfield(array('name' => 'alarmvalue[]', 'class' => 'edit-alarm-value', 'size' => 3));
|
||||
$input_date = new html_inputfield(array('name' => 'alarmdate[]', 'class' => 'edit-alarm-date', 'size' => 10));
|
||||
$input_time = new html_inputfield(array('name' => 'alarmtime[]', 'class' => 'edit-alarm-time', 'size' => 6));
|
||||
|
||||
$select_offset = new html_select(array('name' => 'alarmoffset[]', 'class' => 'edit-alarm-offset'));
|
||||
foreach (array('-M','-H','-D','+M','+H','+D') as $trigger)
|
||||
$select_offset->add($this->gettext('trigger' . $trigger), $trigger);
|
||||
|
||||
$select_offset->add($this->gettext('trigger0'), '0');
|
||||
if ($absolute_time)
|
||||
$select_offset->add($this->gettext('trigger@'), '@');
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ $labels['trigger-D'] = 'days before';
|
|||
$labels['trigger+M'] = 'minutes after';
|
||||
$labels['trigger+H'] = 'hours after';
|
||||
$labels['trigger+D'] = 'days after';
|
||||
$labels['trigger0'] = 'on time';
|
||||
$labels['triggerattime'] = 'at time';
|
||||
$labels['addalarm'] = 'Add alarm';
|
||||
$labels['removealarm'] = 'Remove alarm';
|
||||
|
|
Loading…
Add table
Reference in a new issue