Currently the Managesieve plugin has no GUI for displaying variable
definitions (RFC 5229). Variables from an existing script are parsed
and saved correctly, but the GUI is blank.
The attached patch adds a simple GUI.
--
Paweł Słowik
IQ PL Sp. z o.o.
diff -bBNru a/plugins/managesieve/localization/en_GB.inc b/plugins/managesieve/localization/en_GB.inc
--- a/plugins/managesieve/localization/en_GB.inc 2012-06-01 09:58:42.000000000 +0200
+++ b/plugins/managesieve/localization/en_GB.inc 2012-06-20 16:20:56.000000000 +0200
@@ -93,6 +93,10 @@
$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';
diff -bBNru a/plugins/managesieve/localization/en_US.inc b/plugins/managesieve/localization/en_US.inc
--- a/plugins/managesieve/localization/en_US.inc 2012-06-01 09:58:42.000000000 +0200
+++ b/plugins/managesieve/localization/en_US.inc 2012-06-20 16:20:56.000000000 +0200
@@ -78,6 +78,10 @@
$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';
diff -bBNru a/plugins/managesieve/localization/pl_PL.inc b/plugins/managesieve/localization/pl_PL.inc
--- a/plugins/managesieve/localization/pl_PL.inc 2012-06-01 09:58:42.000000000 +0200
+++ b/plugins/managesieve/localization/pl_PL.inc 2012-06-20 16:20:56.000000000 +0200
@@ -93,6 +93,10 @@
$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';
diff -bBNru a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js
--- a/plugins/managesieve/managesieve.js 2012-06-01 09:58:42.000000000 +0200
+++ b/plugins/managesieve/managesieve.js 2012-06-18 16:28:40.000000000 +0200
@@ -638,7 +638,8 @@
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 @@
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';
diff -bBNru a/plugins/managesieve/managesieve.php b/plugins/managesieve/managesieve.php
--- a/plugins/managesieve/managesieve.php 2012-06-01 09:58:42.000000000 +0200
+++ b/plugins/managesieve/managesieve.php 2012-07-02 17:28:22.000000000 +0200
@@ -617,6 +617,9 @@
$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)
@@ -848,6 +851,20 @@
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;
@@ -1446,6 +1463,9 @@
$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'];
@@ -1509,6 +1529,32 @@
}
$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, $action) && $action[$s_m]) ? ' checked="checked"' : ''), $s_m);
+ }
+ $out .= '</div>';
+
// mailbox select
if ($action['type'] == 'fileinto')
$mailbox = $this->mod_mailbox($action['target'], 'out');
_______________________________________________
Roundcube Development discussion mailing list
[email protected]
http://lists.roundcube.net/mailman/listinfo/dev