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.7: Small month overview calendar
- View: 3.5: Search - View: 3.5: Search
+ View: 3.9: Alter event with drag/drop + 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) - Edit: 3.23: Specify folder for new event (prefs)
- Receive: 1.20: Invitation handling - 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); $('select.edit-alarm-offset').val(''+RegExp.$1+RegExp.$3);
} }
} }
}
// set correct visibility by triggering onchange handlers // set correct visibility by triggering onchange handlers
$('select.edit-alarm-type, select.edit-alarm-offset').change(); $('select.edit-alarm-type, select.edit-alarm-offset').change();
}
// enable/disable alarm property according to backend support // enable/disable alarm property according to backend support
$('#edit-alarms')[(calendar.alarms ? 'show' : 'hide')](); $('#edit-alarms')[(calendar.alarms ? 'show' : 'hide')]();
// set recurrence form // set recurrence form
var recurrence = $('#edit-recurrence-frequency').val(event.recurrence ? event.recurrence.FREQ : '').change(); 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); 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)), '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 = new html_select(array('name' => '_first_day', 'id' => $field_id));
$select->add(rcube_label('sunday'), '0'); $select->add(rcube_label('sunday'), '0');
$select->add(rcube_label('monday'), '1'); $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)), '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 // category definitions
$p['blocks']['categories']['name'] = $this->gettext('categories'); $p['blocks']['categories']['name'] = $this->gettext('categories');
@ -281,12 +302,18 @@ class calendar extends rcube_plugin
$this->driver->remove_category($name); $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( $p['prefs'] = array(
'calendar_categories' => $new_categories,
'calendar_default_view' => get_input_value('_default_view', RCUBE_INPUT_POST), 'calendar_default_view' => get_input_value('_default_view', RCUBE_INPUT_POST),
'calendar_time_format' => get_input_value('_time_format', RCUBE_INPUT_POST), 'calendar_time_format' => get_input_value('_time_format', RCUBE_INPUT_POST),
'calendar_timeslots' => get_input_value('_timeslots', RCUBE_INPUT_POST), 'calendar_timeslots' => get_input_value('_timeslots', RCUBE_INPUT_POST),
'calendar_first_day' => get_input_value('_first_day', 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)) { if (preg_match('/@(\d+)/', $trigger, $m)) {
$text .= ' ' . $this->gettext(array('name' => 'alarmat', 'vars' => array('datetime' => format_date($m[1])))); $text .= ' ' . $this->gettext(array('name' => 'alarmat', 'vars' => array('datetime' => format_date($m[1]))));
} }
else if (preg_match('/([+-])(\d+)([HMD])/', $trigger, $m)) { else if ($val = self::parse_alaram_value($trigger)) {
$text .= ' ' . intval($m[2]) . ' ' . $this->gettext('trigger' . $m[1] . $m[3]); $text .= ' ' . intval($val[0]) . ' ' . $this->gettext('trigger' . $val[1]);
} }
else else
return false; 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']); unset($attrib['name']);
$select_type = new html_select(array('name' => 'alarmtype[]', 'class' => 'edit-alarm-type')); $select_type = new html_select(array('name' => 'alarmtype[]', 'class' => 'edit-alarm-type'));
$select_type->add( $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')); array('','DISPLAY','EMAIL'));
$input_value = new html_inputfield(array('name' => 'alarmvalue[]', 'class' => 'edit-alarm-value', 'size' => 3)); $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) foreach (array('-M','-H','-D','+M','+H','+D','@') as $trigger)
$select_offset->add($this->calendar->gettext('trigger' . $trigger), $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'); $hidden = array('style' => 'display:none');
$html = html::span('edit-alarm-set', $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'), html::span(array('class' => 'edit-alarm-values', 'style' => 'display:none'),
$input_value->show(15) . ' ' . $input_value->show($preset[0]) . ' ' .
$select_offset->show('-M') . ' ' . $select_offset->show($preset[1]) . ' ' .
$input_date->show('', $hidden) . ' ' . $input_date->show('', $hidden) . ' ' .
$input_time->show('', $hidden) $input_time->show('', $hidden)
) )

View file

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