Option: 4.12: Set default reminder time

This commit is contained in:
Thomas Bruederli 2011-05-22 22:27:56 +02:00
parent a8edda1b72
commit 33f6ef72e5
5 changed files with 60 additions and 22 deletions

View file

@ -21,7 +21,7 @@
+ View: 3.7: Small month overview calendar
- View: 3.5: Search
+ View: 3.9: Alter event with drag/drop
- Option: 4.12: Set default reminder time
+ Option: 4.12: Set default reminder time
- Edit: 3.23: Specify folder for new event (prefs)
- Receive: 1.20: Invitation handling

View file

@ -199,14 +199,13 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
$('select.edit-alarm-offset').val(''+RegExp.$1+RegExp.$3);
}
}
}
// set correct visibility by triggering onchange handlers
$('select.edit-alarm-type, select.edit-alarm-offset').change();
}
// enable/disable alarm property according to backend support
$('#edit-alarms')[(calendar.alarms ? 'show' : 'hide')]();
// set recurrence form
var recurrence = $('#edit-recurrence-frequency').val(event.recurrence ? event.recurrence.FREQ : '').change();
var interval = $('select.edit-recurrence-interval').val(event.recurrence ? event.recurrence.INTERVAL : 1);

View file

@ -191,7 +191,7 @@ class calendar extends rcube_plugin
'content' => $select->show($this->rc->config->get('calendar_timeslots', 2)),
);
$field_id = 'rcmfd_timeslot';
$field_id = 'rcmfd_firstday';
$select = new html_select(array('name' => '_first_day', 'id' => $field_id));
$select->add(rcube_label('sunday'), '0');
$select->add(rcube_label('monday'), '1');
@ -205,6 +205,27 @@ class calendar extends rcube_plugin
'content' => $select->show($this->rc->config->get('calendar_first_day', 1)),
);
$field_id = 'rcmfd_alarm';
$select_type = new html_select(array('name' => '_alarm_type', 'id' => $field_id));
$select_type->add($this->gettext('none'), '');
$select_type->add($this->gettext('alarmdisplayoption'), 'DISPLAY');
$select_type->add($this->gettext('alarmemailoption'), 'EMAIL');
$input_value = new html_inputfield(array('name' => '_alarm_value', 'id' => $field_id . 'value', 'size' => 3));
$select_offset = new html_select(array('name' => '_alarm_offset', 'id' => $field_id . 'offset'));
foreach (array('-M','-H','-D','+M','+H','+D') as $trigger)
$select_offset->add($this->gettext('trigger' . $trigger), $trigger);
$p['blocks']['view']['options']['alarmtype'] = array(
'title' => html::label($field_id, Q($this->gettext('defaultalarmtype'))),
'content' => $select_type->show($this->rc->config->get('calendar_default_alarm_type', '')),
);
$preset = self::parse_alaram_value($this->rc->config->get('calendar_default_alarm_offset', '-15M'));
$p['blocks']['view']['options']['alarmoffset'] = array(
'title' => html::label($field_id . 'value', Q($this->gettext('defaultalarmoffset'))),
'content' => $input_value->show($preset[0]) . ' ' . $select_offset->show($preset[1]),
);
// category definitions
$p['blocks']['categories']['name'] = $this->gettext('categories');
@ -281,12 +302,18 @@ class calendar extends rcube_plugin
$this->driver->remove_category($name);
}
// compose default alarm preset value
$alarm_offset = get_input_value('_alarm_offset', RCUBE_INPUT_POST);
$default_alam = $alarm_offset[0] . intval(get_input_value('_alarm_value', RCUBE_INPUT_POST)) . $alarm_offset[1];
$p['prefs'] = array(
'calendar_categories' => $new_categories,
'calendar_default_view' => get_input_value('_default_view', RCUBE_INPUT_POST),
'calendar_time_format' => get_input_value('_time_format', RCUBE_INPUT_POST),
'calendar_timeslots' => get_input_value('_timeslots', RCUBE_INPUT_POST),
'calendar_first_day' => get_input_value('_first_day', RCUBE_INPUT_POST),
'calendar_categories' => $new_categories,
'calendar_default_alarm_type' => get_input_value('_alarm_type', RCUBE_INPUT_POST),
'calendar_default_alarm_offset' => $default_alam,
);
}
@ -471,8 +498,8 @@ class calendar extends rcube_plugin
if (preg_match('/@(\d+)/', $trigger, $m)) {
$text .= ' ' . $this->gettext(array('name' => 'alarmat', 'vars' => array('datetime' => format_date($m[1]))));
}
else if (preg_match('/([+-])(\d+)([HMD])/', $trigger, $m)) {
$text .= ' ' . intval($m[2]) . ' ' . $this->gettext('trigger' . $m[1] . $m[3]);
else if ($val = self::parse_alaram_value($trigger)) {
$text .= ' ' . intval($val[0]) . ' ' . $this->gettext('trigger' . $val[1]);
}
else
return false;
@ -488,4 +515,12 @@ class calendar extends rcube_plugin
}
public static function parse_alaram_value($val)
{
if (preg_match('/([+-])(\d+)([HMD])/', $val, $m))
return array($m[2], $m[1].$m[3]);
return false;
}
}

View file

@ -210,7 +210,7 @@ class calendar_ui
unset($attrib['name']);
$select_type = new html_select(array('name' => 'alarmtype[]', 'class' => 'edit-alarm-type'));
$select_type->add(
array($this->calendar->gettext('none'), $this->calendar->gettext('showmessage'), $this->calendar->gettext('byemail')),
array($this->calendar->gettext('none'), $this->calendar->gettext('alarmdisplayoption'), $this->calendar->gettext('alarmemailoption')),
array('','DISPLAY','EMAIL'));
$input_value = new html_inputfield(array('name' => 'alarmvalue[]', 'class' => 'edit-alarm-value', 'size' => 3));
@ -221,13 +221,14 @@ class calendar_ui
foreach (array('-M','-H','-D','+M','+H','+D','@') as $trigger)
$select_offset->add($this->calendar->gettext('trigger' . $trigger), $trigger);
// TODO: pre-set with default values from user settings
// pre-set with default values from user settings
$preset = calendar::parse_alaram_value($this->rc->config->get('calendar_default_alarm_offset', '-15M'));
$hidden = array('style' => 'display:none');
$html = html::span('edit-alarm-set',
$select_type->show('') . ' ' .
$select_type->show($this->rc->config->get('calendar_default_alarm_type', '')) . ' ' .
html::span(array('class' => 'edit-alarm-values', 'style' => 'display:none'),
$input_value->show(15) . ' ' .
$select_offset->show('-M') . ' ' .
$input_value->show($preset[0]) . ' ' .
$select_offset->show($preset[1]) . ' ' .
$input_date->show('', $hidden) . ' ' .
$input_time->show('', $hidden)
)

View file

@ -49,8 +49,12 @@ $labels['next_year'] = 'Next year';
$labels['next_month'] = 'Next month';
$labels['choose_date'] = 'Choose date';
$labels['showmessage'] = 'Message';
$labels['byemail'] = 'E-mail';
// alarm/reminder settings
$labels['alarmemail'] = 'Send E-mail';
$labels['alarmdisplay'] = 'Show message';
$labels['alarmdisplayoption'] = 'Message';
$labels['alarmemailoption'] = 'E-mail';
$labels['alarmat'] = 'at $datetime';
$labels['trigger@'] = 'on date';
$labels['trigger-M'] = 'minutes before';
$labels['trigger-H'] = 'hours before';
@ -59,11 +63,10 @@ $labels['trigger+M'] = 'minutes after';
$labels['trigger+H'] = 'hours after';
$labels['trigger+D'] = 'days after';
$labels['addalarm'] = 'add alarm';
$labels['defaultalarmtype'] = 'Default reminder setting';
$labels['defaultalarmoffset'] = 'Default reminder time';
$labels['alarmemail'] = 'Send E-mail';
$labels['alarmdisplay'] = 'Show message';
$labels['alarmat'] = 'at $datetime';
// event dialog tabs
$labels['tabsummary'] = 'Summary';
$labels['tabrecurrence'] = 'Recurrence';
$labels['tabattendees'] = 'Participants';