Added GUI for variables setting - RFC5229 (patch from Paweł Słowik)

pull/14/head
Aleksander Machniak 12 years ago
parent 114cf1281b
commit ebb204793b

@ -1,3 +1,5 @@
- Added GUI for variables setting - RFC5229 (patch from Paweł Słowik)
* version 5.1 [2012-06-21]
-----------------------------------------------------------
- Fixed filter popup width (for non-english localizations)

@ -93,6 +93,10 @@ $labels['flagdeleted'] = 'Deleted';
$labels['flaganswered'] = 'Answered';
$labels['flagflagged'] = 'Flagged';
$labels['flagdraft'] = 'Draft';
$labels['setvariable'] = 'Set variable';
$labels['setvarname'] = 'Variable name:';
$labels['setvarvalue'] = 'Variable value:';
$labels['setvarmodifiers'] = 'Modifiers:';
$labels['filtercreate'] = 'Create filter';
$labels['usedata'] = 'Use following data in the filter:';
$labels['nextstep'] = 'Next Step';

@ -78,6 +78,10 @@ $labels['flagdeleted'] = 'Deleted';
$labels['flaganswered'] = 'Answered';
$labels['flagflagged'] = 'Flagged';
$labels['flagdraft'] = 'Draft';
$labels['setvariable'] = 'Set variable';
$labels['setvarname'] = 'Variable name:';
$labels['setvarvalue'] = 'Variable value:';
$labels['setvarmodifiers'] = 'Modifiers:';
$labels['filtercreate'] = 'Create filter';
$labels['usedata'] = 'Use following data in the filter:';
$labels['nextstep'] = 'Next Step';

@ -93,6 +93,10 @@ $labels['flagdeleted'] = 'Usunięta';
$labels['flaganswered'] = 'Z odpowiedzią';
$labels['flagflagged'] = 'Oflagowana';
$labels['flagdraft'] = 'Szkic';
$labels['setvariable'] = 'Ustaw zmienną';
$labels['setvarname'] = 'Nazwa zmiennej:';
$labels['setvarvalue'] = 'Wartość zmiennej:';
$labels['setvarmodifiers'] = 'Modyfikatory:';
$labels['filtercreate'] = 'Utwórz filtr';
$labels['usedata'] = 'Użyj następujących danych do utworzenia filtra:';
$labels['nextstep'] = 'Następny krok';

@ -638,7 +638,8 @@ function action_type_select(id)
target: document.getElementById('action_target' + id),
target_area: document.getElementById('action_target_area' + id),
flags: document.getElementById('action_flags' + id),
vacation: document.getElementById('action_vacation' + id)
vacation: document.getElementById('action_vacation' + id),
set: document.getElementById('action_set' + id)
};
if (obj.value == 'fileinto' || obj.value == 'fileinto_copy') {
@ -656,6 +657,9 @@ function action_type_select(id)
else if (obj.value == 'vacation') {
enabled.vacation = 1;
}
else if (obj.value == 'set') {
enabled.set = 1;
}
for (var x in elems) {
elems[x].style.display = !enabled[x] ? 'none' : 'inline';

@ -615,6 +615,9 @@ class managesieve extends rcube_plugin
$days = get_input_value('_action_days', RCUBE_INPUT_POST);
$subject = get_input_value('_action_subject', RCUBE_INPUT_POST, true);
$flags = get_input_value('_action_flags', RCUBE_INPUT_POST);
$varnames = get_input_value('_action_varname', RCUBE_INPUT_POST);
$varvalues = get_input_value('_action_varvalue', RCUBE_INPUT_POST);
$varmods = get_input_value('_action_varmods', RCUBE_INPUT_POST);
// we need a "hack" for radiobuttons
foreach ($sizeitems as $item)
@ -849,6 +852,20 @@ class managesieve extends rcube_plugin
if ($this->form['actions'][$i]['days'] && !preg_match('/^[0-9]+$/', $this->form['actions'][$i]['days']))
$this->errors['actions'][$i]['days'] = $this->gettext('forbiddenchars');
break;
case 'set':
if (empty($varnames[$idx])) {
$this->errors['actions'][$i]['name'] = $this->gettext('cannotbeempty');
}
if (empty($varvalues[$idx])) {
$this->errors['actions'][$i]['value'] = $this->gettext('cannotbeempty');
}
foreach ($varmods[$idx] as $v_m) {
$this->form['actions'][$i][$v_m] = true;
}
$this->form['actions'][$i]['name'] = $varnames[$idx];
$this->form['actions'][$i]['value'] = $varvalues[$idx];
break;
}
$this->form['actions'][$i]['type'] = $type;
@ -1447,6 +1464,9 @@ class managesieve extends rcube_plugin
$select_action->add(Q($this->gettext('addflags')), 'addflag');
$select_action->add(Q($this->gettext('removeflags')), 'removeflag');
}
if (in_array('variables', $this->exts)) {
$select_action->add(Q($this->gettext('setvariable')), 'set');
}
$select_action->add(Q($this->gettext('rulestop')), 'stop');
$select_type = $action['type'];
@ -1510,6 +1530,33 @@ class managesieve extends rcube_plugin
}
$out .= '</div>';
// set variable
$set_modifiers = array(
'lower',
'upper',
'lowerfirst',
'upperfirst',
'quotewildcard',
'length'
);
$out .= '<div id="action_set' .$id.'" style="display:' .($action['type']=='set' ? 'inline' : 'none') .'">';
$out .= '<span class="label">' .Q($this->gettext('setvarname')) . '</span><br />'
.'<input type="text" name="_action_varname['.$id.']" id="action_varname'.$id.'" '
.'value="' . Q($action['name']) . '" size="35" '
. $this->error_class($id, 'action', 'name', 'action_varname') .' />';
$out .= '<br /><span class="label">' .Q($this->gettext('setvarvalue')) . '</span><br />'
.'<input type="text" name="_action_varvalue['.$id.']" id="action_varvalue'.$id.'" '
.'value="' . Q($action['value']) . '" size="35" '
. $this->error_class($id, 'action', 'value', 'action_varvalue') .' />';
$out .= '<br /><span class="label">' .Q($this->gettext('setvarmodifiers')) . '</span><br />';
foreach ($set_modifiers as $j => $s_m) {
$s_m_id = 'action_varmods' . $id . $s_m;
$out .= sprintf('<input type="checkbox" name="_action_varmods[%s][]" value="%s" id="%s"%s />%s<br>',
$id, $s_m, $s_m_id, (array_key_exists($s_m, (array)$action) && $action[$s_m] ? ' checked="checked"' : ''), $s_m);
}
$out .= '</div>';
// mailbox select
if ($action['type'] == 'fileinto')
$mailbox = $this->mod_mailbox($action['target'], 'out');

Loading…
Cancel
Save