/* (Manage)Sieve Filters */ if (window.rcmail) { rcmail.addEventListener('init', function(evt) { // add managesieve-create command to message_commands array, // so it's state will be updated on message selection/unselection if (rcmail.env.task == 'mail') { if (rcmail.env.action != 'show') rcmail.env.message_commands.push('managesieve-create'); else rcmail.enable_command('managesieve-create', true); } else { var tab = $('').attr('id', 'settingstabpluginmanagesieve').addClass('tablink filter'), button = $('').attr('href', rcmail.env.comm_path+'&_action=plugin.managesieve') .attr('title', rcmail.gettext('managesieve.managefilters')) .html(rcmail.gettext('managesieve.filters')) .appendTo(tab); // add tab rcmail.add_element(tab, 'tabs'); } if (rcmail.env.task == 'mail' || rcmail.env.action.indexOf('plugin.managesieve') != -1) { // Create layer for form tips if (!rcmail.env.framed) { rcmail.env.ms_tip_layer = $('
'); rcmail.env.ms_tip_layer.appendTo(document.body); } } // register commands rcmail.register_command('plugin.managesieve-save', function() { rcmail.managesieve_save() }); rcmail.register_command('plugin.managesieve-act', function() { rcmail.managesieve_act() }); rcmail.register_command('plugin.managesieve-add', function() { rcmail.managesieve_add() }); rcmail.register_command('plugin.managesieve-del', function() { rcmail.managesieve_del() }); rcmail.register_command('plugin.managesieve-move', function() { rcmail.managesieve_move() }); rcmail.register_command('plugin.managesieve-setadd', function() { rcmail.managesieve_setadd() }); rcmail.register_command('plugin.managesieve-setdel', function() { rcmail.managesieve_setdel() }); rcmail.register_command('plugin.managesieve-setact', function() { rcmail.managesieve_setact() }); rcmail.register_command('plugin.managesieve-setget', function() { rcmail.managesieve_setget() }); if (rcmail.env.action == 'plugin.managesieve' || rcmail.env.action == 'plugin.managesieve-save') { if (rcmail.gui_objects.sieveform) { rcmail.enable_command('plugin.managesieve-save', true); // small resize for header element $('select[name="_header[]"]', rcmail.gui_objects.sieveform).each(function() { if (this.value == '...') this.style.width = '40px'; }); // resize dialog window if (rcmail.env.action == 'plugin.managesieve' && rcmail.env.task == 'mail') { parent.rcmail.managesieve_dialog_resize(rcmail.gui_objects.sieveform); } $('input[type="text"]:first', rcmail.gui_objects.sieveform).focus(); } else { rcmail.enable_command('plugin.managesieve-add', 'plugin.managesieve-setadd', !rcmail.env.sieveconnerror); } var i, p = rcmail, setcnt, set = rcmail.env.currentset; if (rcmail.gui_objects.filterslist) { rcmail.filters_list = new rcube_list_widget(rcmail.gui_objects.filterslist, {multiselect:false, draggable:true, keyboard:false}); rcmail.filters_list.addEventListener('select', function(e) { p.managesieve_select(e); }); rcmail.filters_list.addEventListener('dragstart', function(e) { p.managesieve_dragstart(e); }); rcmail.filters_list.addEventListener('dragend', function(e) { p.managesieve_dragend(e); }); rcmail.filters_list.row_init = function (row) { row.obj.onmouseover = function() { p.managesieve_focus_filter(row); }; row.obj.onmouseout = function() { p.managesieve_unfocus_filter(row); }; }; rcmail.filters_list.init(); rcmail.filters_list.focus(); } if (rcmail.gui_objects.filtersetslist) { rcmail.filtersets_list = new rcube_list_widget(rcmail.gui_objects.filtersetslist, {multiselect:false, draggable:false, keyboard:false}); rcmail.filtersets_list.addEventListener('select', function(e) { p.managesieve_setselect(e); }); rcmail.filtersets_list.init(); rcmail.filtersets_list.focus(); if (set != null) { set = rcmail.managesieve_setid(set); rcmail.filtersets_list.shift_start = set; rcmail.filtersets_list.highlight_row(set, false); } setcnt = rcmail.filtersets_list.rowcount; rcmail.enable_command('plugin.managesieve-set', true); rcmail.enable_command('plugin.managesieve-setact', 'plugin.managesieve-setget', setcnt); rcmail.enable_command('plugin.managesieve-setdel', setcnt > 1); // Fix dragging filters over sets list $('tr', rcmail.gui_objects.filtersetslist).each(function (i, e) { p.managesieve_fixdragend(e); }); } } if (rcmail.gui_objects.sieveform && rcmail.env.rule_disabled) $('#disabled').attr('checked', true); }); }; /*********************************************************/ /********* Managesieve UI 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'))) { var lock = this.set_busy(true, 'loading'); this.http_post('plugin.managesieve', '_act=delete&_fid='+this.filters_list.rows[id].uid, lock); } }; rcube_webmail.prototype.managesieve_act = function() { var id = this.filters_list.get_single_selection(), lock = this.set_busy(true, 'loading'); this.http_post('plugin.managesieve', '_act=act&_fid='+this.filters_list.rows[id].uid, lock); }; // Filter selection rcube_webmail.prototype.managesieve_select = function(list) { var id = list.get_single_selection(); if (id != null) this.load_managesieveframe(list.rows[id].uid); }; // Set selection rcube_webmail.prototype.managesieve_setselect = function(list) { this.show_contentframe(false); this.filters_list.clear(true); this.enable_command('plugin.managesieve-setdel', list.rowcount > 1); this.enable_command( 'plugin.managesieve-setact', 'plugin.managesieve-setget', true); var id = list.get_single_selection(); if (id != null) this.managesieve_list(this.env.filtersets[id]); }; rcube_webmail.prototype.managesieve_rowid = function(id) { var i, rows = this.filters_list.rows; for (i=0; i