From bf3f51e74d660e3d0efcff2739c58e932fdec72b Mon Sep 17 00:00:00 2001 From: alec Date: Tue, 4 May 2010 11:19:27 +0000 Subject: - Fix filters set activation, add possibility to deactivate sets (#1486699) git-svn-id: https://svn.roundcube.net/trunk@3592 208e9e7b-5314-0410-a742-e7e81cd9613c --- plugins/managesieve/Changelog | 1 + plugins/managesieve/lib/rcube_sieve.php | 129 ++-- plugins/managesieve/localization/en_US.inc | 3 + plugins/managesieve/localization/pl_PL.inc | 3 + plugins/managesieve/managesieve.js | 776 ++++++++++----------- plugins/managesieve/managesieve.php | 64 +- .../skins/default/templates/managesieve.html | 2 +- 7 files changed, 499 insertions(+), 479 deletions(-) (limited to 'plugins') diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog index 16d7ca8bd..323c7f2cf 100644 --- a/plugins/managesieve/Changelog +++ b/plugins/managesieve/Changelog @@ -1,4 +1,5 @@ - Fix filters set label after activation +- Fix filters set activation, add possibility to deactivate sets (#1486699) * version 2.4 [2010-04-01] ----------------------------------------------------------- diff --git a/plugins/managesieve/lib/rcube_sieve.php b/plugins/managesieve/lib/rcube_sieve.php index 9f07299f8..01d259ae3 100644 --- a/plugins/managesieve/lib/rcube_sieve.php +++ b/plugins/managesieve/lib/rcube_sieve.php @@ -18,6 +18,7 @@ define('SIEVE_ERROR_INSTALL', 4); // script installation define('SIEVE_ERROR_ACTIVATE', 5); // script activation define('SIEVE_ERROR_DELETE', 6); // script deletion define('SIEVE_ERROR_INTERNAL', 7); // internal error +define('SIEVE_ERROR_DEACTIVATE', 8); // script activation define('SIEVE_ERROR_OTHER', 255); // other/unknown error @@ -44,7 +45,7 @@ class rcube_sieve public function __construct($username, $password='', $host='localhost', $port=2000, $usetls=true, $disabled=array(), $debug=false) { - $this->sieve = new Net_Sieve(); + $this->sieve = new Net_Sieve(); if ($debug) $this->sieve->setDebug(true, array($this, 'debug_handler')); @@ -67,7 +68,7 @@ class rcube_sieve */ public function error() { - return $this->error ? $this->error : false; + return $this->error ? $this->error : false; } /** @@ -78,16 +79,16 @@ class rcube_sieve if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - if (!$this->script) - return $this->_set_error(SIEVE_ERROR_INTERNAL); + if (!$this->script) + return $this->_set_error(SIEVE_ERROR_INTERNAL); - if (!$name) - $name = $this->current; + if (!$name) + $name = $this->current; $script = $this->script->as_text(); if (!$script) - $script = '/* empty script */'; + $script = '/* empty script */'; if (PEAR::isError($this->sieve->installScript($name, $script))) return $this->_set_error(SIEVE_ERROR_INSTALL); @@ -104,7 +105,7 @@ class rcube_sieve return $this->_set_error(SIEVE_ERROR_INTERNAL); if (!$content) - $content = '/* empty script */'; + $content = '/* empty script */'; if (PEAR::isError($this->sieve->installScript($name, $content))) return $this->_set_error(SIEVE_ERROR_INSTALL); @@ -117,11 +118,11 @@ class rcube_sieve */ public function activate($name = null) { - if (!$this->sieve) + if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - if (!$name) - $name = $this->current; + if (!$name) + $name = $this->current; if (PEAR::isError($this->sieve->setActive($name))) return $this->_set_error(SIEVE_ERROR_ACTIVATE); @@ -129,27 +130,41 @@ class rcube_sieve return true; } + /** + * De-activates specified script + */ + public function deactivate() + { + if (!$this->sieve) + return $this->_set_error(SIEVE_ERROR_INTERNAL); + + if (PEAR::isError($this->sieve->setActive(''))) + return $this->_set_error(SIEVE_ERROR_DEACTIVATE); + + return true; + } + /** * Removes specified script */ public function remove($name = null) { - if (!$this->sieve) + if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - if (!$name) - $name = $this->current; + if (!$name) + $name = $this->current; - // script must be deactivated first - if ($name == $this->sieve->getActive()) + // script must be deactivated first + if ($name == $this->sieve->getActive()) if (PEAR::isError($this->sieve->setActive(''))) - return $this->_set_error(SIEVE_ERROR_DELETE); + return $this->_set_error(SIEVE_ERROR_DELETE); if (PEAR::isError($this->sieve->removeScript($name))) - return $this->_set_error(SIEVE_ERROR_DELETE); + return $this->_set_error(SIEVE_ERROR_DELETE); - if ($name == $this->current) - $this->current = null; + if ($name == $this->current) + $this->current = null; return true; } @@ -160,18 +175,18 @@ class rcube_sieve public function get_extensions() { if (!$this->sieve) - return $this->_set_error(SIEVE_ERROR_INTERNAL); + return $this->_set_error(SIEVE_ERROR_INTERNAL); - $ext = $this->sieve->getExtensions(); - // we're working on lower-cased names - $ext = array_map('strtolower', (array) $ext); - - if ($this->script) { - $supported = $this->script->get_extensions(); - foreach ($ext as $idx => $ext_name) - if (!in_array($ext_name, $supported)) - unset($ext[$idx]); - } + $ext = $this->sieve->getExtensions(); + // we're working on lower-cased names + $ext = array_map('strtolower', (array) $ext); + + if ($this->script) { + $supported = $this->script->get_extensions(); + foreach ($ext as $idx => $ext_name) + if (!in_array($ext_name, $supported)) + unset($ext[$idx]); + } return array_values($ext); } @@ -183,14 +198,14 @@ class rcube_sieve { if (!$this->list) { - if (!$this->sieve) - return $this->_set_error(SIEVE_ERROR_INTERNAL); + if (!$this->sieve) + return $this->_set_error(SIEVE_ERROR_INTERNAL); $this->list = $this->sieve->listScripts(); if (PEAR::isError($this->list)) - return $this->_set_error(SIEVE_ERROR_OTHER); - } + return $this->_set_error(SIEVE_ERROR_OTHER); + } return $this->list; } @@ -200,10 +215,10 @@ class rcube_sieve */ public function get_active() { - if (!$this->sieve) + if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - return $this->sieve->getActive(); + return $this->sieve->getActive(); } /** @@ -222,7 +237,7 @@ class rcube_sieve if (PEAR::isError($script)) return $this->_set_error(SIEVE_ERROR_OTHER); - // try to parse from Roundcube format + // try to parse from Roundcube format $this->script = $this->_parse($script); $this->current = $name; @@ -238,7 +253,7 @@ class rcube_sieve if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - // try to parse from Roundcube format + // try to parse from Roundcube format $this->script = $this->_parse($script); } @@ -247,7 +262,7 @@ class rcube_sieve */ private function _parse($txt) { - // try to parse from Roundcube format + // try to parse from Roundcube format $script = new rcube_sieve_script($txt, $this->disabled); // ... else try to import from different formats @@ -296,14 +311,14 @@ class rcube_sieve if (!$this->sieve) return $this->_set_error(SIEVE_ERROR_INTERNAL); - if ($copy) { + if ($copy) { $content = $this->sieve->getScript($copy); if (PEAR::isError($content)) - return $this->_set_error(SIEVE_ERROR_OTHER); - } + return $this->_set_error(SIEVE_ERROR_OTHER); + } - return $this->save_script($name, $content); + return $this->save_script($name, $content); } private function _import_rules($script) @@ -314,13 +329,13 @@ class rcube_sieve // Squirrelmail (Avelsieve) if ($tokens = preg_split('/(#START_SIEVE_RULE.*END_SIEVE_RULE)\n/', $script, -1, PREG_SPLIT_DELIM_CAPTURE)) { foreach($tokens as $token) { - if (preg_match('/^#START_SIEVE_RULE.*/', $token, $matches)) { - $name[$i] = "unnamed rule ".($i+1); + if (preg_match('/^#START_SIEVE_RULE.*/', $token, $matches)) { + $name[$i] = "unnamed rule ".($i+1); $content .= "# rule:[".$name[$i]."]\n"; } - elseif (isset($name[$i])) { - $content .= "if $token\n"; - $i++; + elseif (isset($name[$i])) { + $content .= "if $token\n"; + $i++; } } } @@ -344,7 +359,7 @@ class rcube_sieve private function _set_error($error) { - $this->error = $error; + $this->error = $error; return false; } @@ -404,8 +419,8 @@ class rcube_sieve_script foreach ($content as $elem) { if (!isset($names[$elem['name']])) { array_push($this->content, $elem); - $result = true; - } + $result = true; + } } return $result; @@ -428,8 +443,8 @@ class rcube_sieve_script { if(isset($this->content[$index])) { unset($this->content[$index]); - return true; - } + return true; + } return false; } @@ -442,9 +457,9 @@ class rcube_sieve_script { // TODO: check this->supported if ($this->content[$index]) { - $this->content[$index] = $content; - return $index; - } + $this->content[$index] = $content; + return $index; + } return false; } diff --git a/plugins/managesieve/localization/en_US.inc b/plugins/managesieve/localization/en_US.inc index cdd5603ea..577911134 100644 --- a/plugins/managesieve/localization/en_US.inc +++ b/plugins/managesieve/localization/en_US.inc @@ -40,6 +40,7 @@ $labels['filterset'] = 'Filters set'; $labels['filtersetadd'] = 'Add filters set'; $labels['filtersetdel'] = 'Delete current filters set'; $labels['filtersetact'] = 'Activate current filters set'; +$labels['filtersetdeact'] = 'Deactivate current filters set'; $labels['filtersetget'] = 'Download filters set in text format'; $labels['filterdef'] = 'Filter definition'; $labels['filtersetname'] = 'Filters set name'; @@ -63,8 +64,10 @@ $messages['actiondeleteconfirm'] = 'Are you sure, you want to delete selected ac $messages['forbiddenchars'] = 'Forbidden characters in field'; $messages['cannotbeempty'] = 'Field cannot be empty'; $messages['setactivateerror'] = 'Unable to activate selected filters set. Server error occured'; +$messages['setdeactivateerror'] = 'Unable to deactivate selected filters set. Server error occured'; $messages['setdeleteerror'] = 'Unable to delete selected filters set. Server error occured'; $messages['setactivated'] = 'Filters set activated successfully'; +$messages['setdeactivated'] = 'Filters set deactivated successfully'; $messages['setdeleted'] = 'Filters set deleted successfully'; $messages['setdeleteconfirm'] = 'Are you sure, you want to delete selected filters set?'; $messages['setcreateerror'] = 'Unable to create filters set. Server error occured'; diff --git a/plugins/managesieve/localization/pl_PL.inc b/plugins/managesieve/localization/pl_PL.inc index 324e46ad9..f10468115 100644 --- a/plugins/managesieve/localization/pl_PL.inc +++ b/plugins/managesieve/localization/pl_PL.inc @@ -41,6 +41,7 @@ $labels['filterset'] = 'Zbiór filtrów'; $labels['filtersetadd'] = 'Dodaj zbiór filtrów'; $labels['filtersetdel'] = 'Usuń bierzący zbiór filtrów'; $labels['filtersetact'] = 'Aktywuj bierzący zbiór filtrów'; +$labels['filtersetdeact'] = 'Deaktywuj bierzący zbiór filtrów'; $labels['filtersetget'] = 'Pobierz bierzący zbiór filtrów w formacie tekstowym'; $labels['filterdef'] = 'Definicja filtra'; $labels['filtersetname'] = 'Nazwa zbioru'; @@ -64,8 +65,10 @@ $messages['actiondeleteconfirm'] = 'Czy na pewno usunąć wybraną akcję?'; $messages['forbiddenchars'] = 'Pole zawiera niedozwolone znaki'; $messages['cannotbeempty'] = 'Pole nie może być puste'; $messages['setactivateerror'] = 'Nie można aktywować wybranego zbioru filtrów. Błąd serwera'; +$messages['setdeactivateerror'] = 'Nie można deaktywować wybranego zbioru filtrów. Błąd serwera'; $messages['setdeleteerror'] = 'Nie można usunąć wybranego zbioru filtrów. Błąd serwera'; $messages['setactivated'] = 'Zbiór filtrów został aktywowany pomyślnie'; +$messages['setdeactivated'] = 'Zbiór filtrów został deaktywowany pomyślnie'; $messages['setdeleted'] = 'Zbiór filtrów został usunięty pomyślnie'; $messages['setdeleteconfirm'] = 'Czy na pewno chcesz usunąć wybrany zbiór filtrów?'; $messages['setcreateerror'] = 'Nie można utworzyć zbioru filtrów. Błąd serwera'; diff --git a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js index 549afd077..a700ba55b 100644 --- a/plugins/managesieve/managesieve.js +++ b/plugins/managesieve/managesieve.js @@ -2,14 +2,13 @@ if (window.rcmail) { rcmail.addEventListener('init', function(evt) { - // + var tab = $('').attr('id', 'settingstabpluginmanagesieve').addClass('tablink'); - var button = $('').attr('href', rcmail.env.comm_path+'&_action=plugin.managesieve') - .attr('title', rcmail.gettext('managesieve.managefilters')) - .html(rcmail.gettext('managesieve.filters')) - .bind('click', function(e){ return rcmail.command('plugin.managesieve', this) }) - .appendTo(tab); + .attr('title', rcmail.gettext('managesieve.managefilters')) + .html(rcmail.gettext('managesieve.filters')) + .bind('click', function(e){ return rcmail.command('plugin.managesieve', this) }) + .appendTo(tab); // add button and register commands rcmail.add_element(tab, 'tabs'); @@ -25,464 +24,451 @@ if (window.rcmail) { rcmail.register_command('plugin.managesieve-setact', function() { rcmail.managesieve_setact() }, true); rcmail.register_command('plugin.managesieve-setget', function() { rcmail.managesieve_setget() }, true); - if (rcmail.env.action == 'plugin.managesieve') - { - if (rcmail.gui_objects.sieveform) { - rcmail.enable_command('plugin.managesieve-save', true); - } - else { - rcmail.enable_command('plugin.managesieve-del', 'plugin.managesieve-up', - 'plugin.managesieve-down', false); - rcmail.enable_command('plugin.managesieve-add', 'plugin.managesieve-setadd', !rcmail.env.sieveconnerror); - rcmail.enable_command('plugin.managesieve-set', 'plugin.managesieve-setget', - rcmail.gui_objects.filtersetslist != null); - rcmail.enable_command('plugin.managesieve-setact', - (rcmail.gui_objects.filtersetslist && rcmail.gui_objects.filtersetslist.length > 1 - && rcmail.gui_objects.filtersetslist.value != rcmail.env.active_set)); - rcmail.enable_command('plugin.managesieve-setdel', - (rcmail.gui_objects.filtersetslist && rcmail.gui_objects.filtersetslist.length > 1)); - } - if (rcmail.gui_objects.filterslist) { + if (rcmail.env.action == 'plugin.managesieve') { + if (rcmail.gui_objects.sieveform) { + rcmail.enable_command('plugin.managesieve-save', true); + } + else { + rcmail.enable_command('plugin.managesieve-del', 'plugin.managesieve-up', + 'plugin.managesieve-down', false); + rcmail.enable_command('plugin.managesieve-add', 'plugin.managesieve-setadd', !rcmail.env.sieveconnerror); + } + + if (rcmail.gui_objects.filterslist) { var p = rcmail; - rcmail.filters_list = new rcube_list_widget(rcmail.gui_objects.filterslist, {multiselect:false, draggable:false, keyboard:false}); - rcmail.filters_list.addEventListener('select', function(o){ p.managesieve_select(o); }); - rcmail.filters_list.init(); - rcmail.filters_list.focus(); + rcmail.filters_list = new rcube_list_widget(rcmail.gui_objects.filterslist, {multiselect:false, draggable:false, keyboard:false}); + rcmail.filters_list.addEventListener('select', function(o){ p.managesieve_select(o); }); + rcmail.filters_list.init(); + rcmail.filters_list.focus(); + + rcmail.enable_command('plugin.managesieve-set', 'plugin.managesieve-setget', true); + rcmail.enable_command('plugin.managesieve-setact', rcmail.gui_objects.filtersetslist.length); + rcmail.enable_command('plugin.managesieve-setdel', rcmail.gui_objects.filtersetslist.length > 1); + + $('#'+rcmail.buttons['plugin.managesieve-setact'][0].id).attr('title', rcmail.gettext('managesieve.filterset' + + (rcmail.gui_objects.filtersetslist.value == rcmail.env.active_set ? 'deact' : 'act'))); } - } + } if (rcmail.gui_objects.sieveform && rcmail.env.rule_disabled) $('#disabled').attr('checked', true); }); - - /*********************************************************/ - /********* Managesieve filters methods *********/ - /*********************************************************/ - - rcube_webmail.prototype.managesieve_add = function() - { - this.load_managesieveframe(); - this.filters_list.clear_selection(); - }; - - rcube_webmail.prototype.managesieve_del = function() - { - var id = this.filters_list.get_single_selection(); - - if (confirm(this.get_label('managesieve.filterdeleteconfirm'))) - this.http_request('plugin.managesieve', - '_act=delete&_fid='+this.filters_list.rows[id].uid, true); - }; - - rcube_webmail.prototype.managesieve_up = function() - { - var id = this.filters_list.get_single_selection(); - this.http_request('plugin.managesieve', - '_act=up&_fid='+this.filters_list.rows[id].uid, true); - }; - - rcube_webmail.prototype.managesieve_down = function() - { - var id = this.filters_list.get_single_selection(); +}; + +/*********************************************************/ +/********* Managesieve filters methods *********/ +/*********************************************************/ + +rcube_webmail.prototype.managesieve_add = function() +{ + this.load_managesieveframe(); + this.filters_list.clear_selection(); +}; + +rcube_webmail.prototype.managesieve_del = function() +{ + var id = this.filters_list.get_single_selection(); + if (confirm(this.get_label('managesieve.filterdeleteconfirm'))) this.http_request('plugin.managesieve', - '_act=down&_fid='+this.filters_list.rows[id].uid, true); - }; - - rcube_webmail.prototype.managesieve_rowid = function(id) - { - var rows = this.filters_list.rows; + '_act=delete&_fid='+this.filters_list.rows[id].uid, true); +}; + +rcube_webmail.prototype.managesieve_up = function() +{ + var id = this.filters_list.get_single_selection(); + this.http_request('plugin.managesieve', + '_act=up&_fid='+this.filters_list.rows[id].uid, true); +}; + +rcube_webmail.prototype.managesieve_down = function() +{ + var id = this.filters_list.get_single_selection(); + this.http_request('plugin.managesieve', + '_act=down&_fid='+this.filters_list.rows[id].uid, true); +}; + +rcube_webmail.prototype.managesieve_rowid = function(id) +{ + var i, rows = this.filters_list.rows; - for (var i=0; i id) - rows[i].uid = rows[i].uid-1; +rcube_webmail.prototype.managesieve_updatelist = function(action, name, id, disabled) +{ + this.set_busy(true); + + switch (action) { + case 'delete': + this.filters_list.remove_row(this.managesieve_rowid(id)); + this.filters_list.clear_selection(); + this.enable_command('plugin.managesieve-del', 'plugin.managesieve-up', 'plugin.managesieve-down', false); + this.show_contentframe(false); + + // re-numbering filters + var i, rows = this.filters_list.rows; + for (i=0; i id) + rows[i].uid = rows[i].uid-1; } - break; - - case 'down': - var rows = this.filters_list.rows; - var from, fromstatus, status; - - // we need only to replace filter names... - for (var i=0; i0; i--) - { - if (rows[i] == null) { // removed row - } else if (i == id) { + for (var i=rows.length-1; i>0; i--) { + if (rows[i] == null) { // removed row + } + else if (i == id) { this.enable_command('plugin.managesieve-down', false); break; - } else { + } + else { this.enable_command('plugin.managesieve-down', true); break; } - } - }; - - // operations on filters form - rcube_webmail.prototype.managesieve_ruleadd = function(id) - { - this.http_post('plugin.managesieve', '_act=ruleadd&_rid='+id); - }; - - rcube_webmail.prototype.managesieve_rulefill = function(content, id, after) - { - if (content != '') - { + } +}; + +// operations on filters form +rcube_webmail.prototype.managesieve_ruleadd = function(id) +{ + this.http_post('plugin.managesieve', '_act=ruleadd&_rid='+id); +}; + +rcube_webmail.prototype.managesieve_rulefill = function(content, id, after) +{ + if (content != '') { // create new element - var div = document.getElementById('rules'); - var row = document.createElement('div'); + var div = document.getElementById('rules'), + row = document.createElement('div'); this.managesieve_insertrow(div, row, after); // fill row after inserting (for IE) row.setAttribute('id', 'rulerow'+id); row.className = 'rulerow'; - row.innerHTML = content; + row.innerHTML = content; this.managesieve_formbuttons(div); - } - }; + } +}; - rcube_webmail.prototype.managesieve_ruledel = function(id) - { - if (confirm(this.get_label('managesieve.ruledeleteconfirm'))) - { +rcube_webmail.prototype.managesieve_ruledel = function(id) +{ + if (confirm(this.get_label('managesieve.ruledeleteconfirm'))) { var row = document.getElementById('rulerow'+id); row.parentNode.removeChild(row); this.managesieve_formbuttons(document.getElementById('rules')); - } - }; + } +}; - rcube_webmail.prototype.managesieve_actionadd = function(id) - { - this.http_post('plugin.managesieve', '_act=actionadd&_aid='+id); - }; +rcube_webmail.prototype.managesieve_actionadd = function(id) +{ + this.http_post('plugin.managesieve', '_act=actionadd&_aid='+id); +}; - rcube_webmail.prototype.managesieve_actionfill = function(content, id, after) - { - if (content != '') - { - var div = document.getElementById('actions'); - var row = document.createElement('div'); +rcube_webmail.prototype.managesieve_actionfill = function(content, id, after) +{ + if (content != '') { + var div = document.getElementById('actions'), + row = document.createElement('div'); this.managesieve_insertrow(div, row, after); // fill row after inserting (for IE) row.className = 'actionrow'; row.setAttribute('id', 'actionrow'+id); - row.innerHTML = content; + row.innerHTML = content; - this.managesieve_formbuttons(div); - } - }; + this.managesieve_formbuttons(div); + } +}; - rcube_webmail.prototype.managesieve_actiondel = function(id) - { - if (confirm(this.get_label('managesieve.actiondeleteconfirm'))) - { +rcube_webmail.prototype.managesieve_actiondel = function(id) +{ + if (confirm(this.get_label('managesieve.actiondeleteconfirm'))) { var row = document.getElementById('actionrow'+id); row.parentNode.removeChild(row); this.managesieve_formbuttons(document.getElementById('actions')); - } - }; - - // insert rule/action row in specified place on the list - rcube_webmail.prototype.managesieve_insertrow = function(div, row, after) - { - for (var i=0; i0 || buttons.length>1) - { + for (i=0; i0 || buttons.length>1) { $(button).removeClass('disabled'); button.removeAttribute('disabled'); - } - else - { + } + else { $(button).addClass('disabled'); button.setAttribute('disabled', true); - } - } - } - - // Set change - rcube_webmail.prototype.managesieve_set = function() - { - var script = $(this.gui_objects.filtersetslist).val(); - location.href = this.env.comm_path+'&_action=plugin.managesieve&_set='+script; - }; - - // Script download - rcube_webmail.prototype.managesieve_setget = function() - { - var script = $(this.gui_objects.filtersetslist).val(); - location.href = this.env.comm_path+'&_action=plugin.managesieve&_act=setget&_set='+script; - }; - - // Set activate - rcube_webmail.prototype.managesieve_setact = function() - { - if (!this.gui_objects.filtersetslist) - return false; - - var script = this.gui_objects.filtersetslist.value; - this.http_post('plugin.managesieve', '_act=setact&_set='+script); - }; - - // Set activate flag in sets list after set activation - rcube_webmail.prototype.managesieve_reset = function(name) - { - if (!this.gui_objects.filtersetslist || !name) - return false; - - var opts = this.gui_objects.filtersetslist.getElementsByTagName('option'), - label = ' (' + this.get_label('managesieve.active') + ')', - regx = new RegExp(RegExp.escape(label)); - - for (var x=0; xsieve->script->update_rule($fid, $this->script[$fid-1]) !== false && $this->sieve->script->update_rule($fid-1, $this->script[$fid]) !== false) - $result = $this->sieve->save(); + $result = $this->sieve->save(); if ($result) { // $this->rc->output->show_message('managesieve.filtersaved', 'confirmation'); - $this->rc->output->command('managesieve_updatelist', 'up', '', $fid); + $this->rc->output->command('managesieve_updatelist', 'up', '', $fid); } else $this->rc->output->show_message('managesieve.filtersaveerror', 'error'); } @@ -171,15 +171,15 @@ class managesieve extends rcube_plugin { if ($this->sieve->script->update_rule($fid, $this->script[$fid+1]) !== false && $this->sieve->script->update_rule($fid+1, $this->script[$fid]) !== false) - $result = $this->sieve->save(); + $result = $this->sieve->save(); if ($result === true) { // $this->rc->output->show_message('managesieve.filtersaved', 'confirmation'); - $this->rc->output->command('managesieve_updatelist', 'down', '', $fid); + $this->rc->output->command('managesieve_updatelist', 'down', '', $fid); } else { $this->rc->output->show_message('managesieve.filtersaveerror', 'error'); } - } + } } else if ($action=='delete' && !$error) { @@ -189,45 +189,57 @@ class managesieve extends rcube_plugin $result = $this->sieve->save(); if ($result === true) { - $this->rc->output->show_message('managesieve.filterdeleted', 'confirmation'); - $this->rc->output->command('managesieve_updatelist', 'delete', '', $fid); + $this->rc->output->show_message('managesieve.filterdeleted', 'confirmation'); + $this->rc->output->command('managesieve_updatelist', 'delete', '', $fid); } else { $this->rc->output->show_message('managesieve.filterdeleteerror', 'error'); } - } + } } else if ($action=='setact' && !$error) { $script_name = get_input_value('_set', RCUBE_INPUT_GPC); - $result = $this->sieve->activate($script_name); + $result = $this->sieve->activate($script_name); - if ($result === true) { + if ($result === true) { $this->rc->output->set_env('active_set', $script_name); - $this->rc->output->show_message('managesieve.setactivated', 'confirmation'); - $this->rc->output->command('enable_command', 'plugin.managesieve-setact', false); - $this->rc->output->command('managesieve_reset', $script_name); - $_SESSION['managesieve_active'] = $script_name; - } else { + $this->rc->output->show_message('managesieve.setactivated', 'confirmation'); + $this->rc->output->command('managesieve_reset'); + $_SESSION['managesieve_active'] = $script_name; + } else { $this->rc->output->show_message('managesieve.setactivateerror', 'error'); - } + } + } + else if ($action=='deact' && !$error) + { + $result = $this->sieve->deactivate(); + + if ($result === true) { + $this->rc->output->set_env('active_set', ''); + $this->rc->output->show_message('managesieve.setdeactivated', 'confirmation'); + $this->rc->output->command('managesieve_reset'); + $_SESSION['managesieve_active'] = ''; + } else { + $this->rc->output->show_message('managesieve.setdeactivateerror', 'error'); + } } else if ($action=='setdel' && !$error) { $script_name = get_input_value('_set', RCUBE_INPUT_GPC); - $result = $this->sieve->remove($script_name); + $result = $this->sieve->remove($script_name); - if ($result === true) { - $this->rc->output->show_message('managesieve.setdeleted', 'confirmation'); - $this->rc->output->command('managesieve_reload'); - $this->rc->session->remove('managesieve_current'); - } else { + if ($result === true) { + $this->rc->output->show_message('managesieve.setdeleted', 'confirmation'); + $this->rc->output->command('managesieve_reload'); + $this->rc->session->remove('managesieve_current'); + } else { $this->rc->output->show_message('managesieve.setdeleteerror', 'error'); - } + } } else if ($action=='setget') { $script_name = get_input_value('_set', RCUBE_INPUT_GPC); - $script = $this->sieve->get_script($script_name); + $script = $this->sieve->get_script($script_name); if (PEAR::isError($script)) exit; @@ -624,8 +636,8 @@ class managesieve extends rcube_plugin // set client env $this->rc->output->add_gui_object('filtersetslist', $attrib['id']); - $this->rc->output->add_label('managesieve.setdeleteconfirm'); - $this->rc->output->add_label('managesieve.active'); + $this->rc->output->add_label('managesieve.setdeleteconfirm', + 'managesieve.active', 'managesieve.filtersetact', 'managesieve.filtersetdeact'); return $out; } diff --git a/plugins/managesieve/skins/default/templates/managesieve.html b/plugins/managesieve/skins/default/templates/managesieve.html index a88c244a8..94cd1f1cc 100644 --- a/plugins/managesieve/skins/default/templates/managesieve.html +++ b/plugins/managesieve/skins/default/templates/managesieve.html @@ -31,7 +31,7 @@
- +
-- cgit v1.2.3