/* Sieve Filters (tab) */ 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); // add button and register commands rcmail.add_element(tab, 'tabs'); rcmail.register_command('plugin.managesieve', function() { rcmail.goto_url('plugin.managesieve') }, true); rcmail.register_command('plugin.managesieve-save', function() { rcmail.managesieve_save() }, true); rcmail.register_command('plugin.managesieve-add', function() { rcmail.managesieve_add() }, true); rcmail.register_command('plugin.managesieve-del', function() { rcmail.managesieve_del() }, true); rcmail.register_command('plugin.managesieve-up', function() { rcmail.managesieve_up() }, true); rcmail.register_command('plugin.managesieve-down', function() { rcmail.managesieve_down() }, true); rcmail.register_command('plugin.managesieve-set', function() { rcmail.managesieve_set() }, true); rcmail.register_command('plugin.managesieve-setadd', function() { rcmail.managesieve_setadd() }, true); rcmail.register_command('plugin.managesieve-setdel', function() { rcmail.managesieve_setdel() }, true); 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); } // Create layer for form tips if (!rcmail.env.framed) { rcmail.env.ms_tip_layer = $('
'); rcmail.env.ms_tip_layer.appendTo(document.body); } 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.enable_command('plugin.managesieve-set', true); rcmail.enable_command('plugin.managesieve-setact', 'plugin.managesieve-setget', 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(); 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 (i=0; i id) rows[i].uid = rows[i].uid-1; } break; case 'down': var from, fromstatus, status, rows = this.filters_list.rows; // we need only to replace filter names... for (var i=0; i0; i--) { if (rows[i] == null) { // removed row } else if (i == id) { this.enable_command('plugin.managesieve-down', false); break; } 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 != '') { // create new element 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; this.managesieve_formbuttons(div); } }; 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_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; this.managesieve_formbuttons(div); } }; 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) { $(button).removeClass('disabled'); button.removeAttribute('disabled'); } 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, action = (script == rcmail.env.active_set ? 'deact' : 'setact'); this.http_post('plugin.managesieve', '_act='+action+'&_set='+script); }; // Set activate flag in sets list after set activation rcube_webmail.prototype.managesieve_reset = function() { if (!this.gui_objects.filtersetslist) return false; var list = this.gui_objects.filtersetslist, opts = list.getElementsByTagName('option'), label = ' (' + this.get_label('managesieve.active') + ')', regx = new RegExp(RegExp.escape(label)+'$'); for (var x=0; x