Option: 4.12: Set default reminder time
This commit is contained in:
parent
a8edda1b72
commit
33f6ef72e5
5 changed files with 60 additions and 22 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
// 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);
|
||||
|
|
|
@ -174,9 +174,9 @@ class calendar extends rcube_plugin
|
|||
);
|
||||
|
||||
$field_id = 'rcmfd_time_format';
|
||||
$choices = array('HH:mm', 'H:mm', 'h:mmt');
|
||||
$choices = array('HH:mm', 'H:mm', 'h:mmt');
|
||||
$select = new html_select(array('name' => '_time_format', 'id' => $field_id));
|
||||
$select->add($choices);
|
||||
$select->add($choices);
|
||||
$p['blocks']['view']['options']['time_format'] = array(
|
||||
'title' => html::label($field_id, Q($this->gettext('time_format'))),
|
||||
'content' => $select->show($this->rc->config->get('calendar_time_format', "HH:mm")),
|
||||
|
@ -185,13 +185,13 @@ class calendar extends rcube_plugin
|
|||
$field_id = 'rcmfd_timeslot';
|
||||
$choices = array('1', '2', '3', '4', '6');
|
||||
$select = new html_select(array('name' => '_timeslots', 'id' => $field_id));
|
||||
$select->add($choices);
|
||||
$select->add($choices);
|
||||
$p['blocks']['view']['options']['timeslots'] = array(
|
||||
'title' => html::label($field_id, Q($this->gettext('timeslots'))),
|
||||
'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');
|
||||
|
@ -280,13 +301,19 @@ class calendar extends rcube_plugin
|
|||
foreach ((array)$old_categories[$key] as $key => $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(
|
||||
'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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
)
|
||||
|
|
|
@ -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';
|
||||
|
|
Loading…
Add table
Reference in a new issue