/* 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);
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', 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) {
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();
}
}
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 rows = this.filters_list.rows;
for (var 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) {
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');
var 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');
var 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&_sid='+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');
var regx = new RegExp(RegExp.escape(' (' + this.get_label('managesieve.active') + ')'));
for (var x=1; x