diff options
Diffstat (limited to 'plugins/managesieve/managesieve.js')
-rw-r--r-- | plugins/managesieve/managesieve.js | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js index 15637026e..6b36127d3 100644 --- a/plugins/managesieve/managesieve.js +++ b/plugins/managesieve/managesieve.js @@ -226,7 +226,7 @@ rcube_webmail.prototype.managesieve_updatelist = function(action, o) // Delete filter row case 'del': - var i = 0, list = this.filters_list; + var id = o.id, list = this.filters_list; list.remove_row(this.managesieve_rowid(o.id)); list.clear_selection(); @@ -241,8 +241,14 @@ rcube_webmail.prototype.managesieve_updatelist = function(action, o) return; } - // modify ID and remove all attached events - $(this).attr('id', 'rcmrow'+(i++)).unbind(); + var rowid = this.id.substr(6); + + // remove all attached events + $(this).unbind(); + + // update row id + if (rowid > id) + $(this).attr('id', 'rcmrow' + (rowid-1)); }); list.init(); @@ -502,6 +508,11 @@ rcube_webmail.prototype.managesieve_actionfill = function(content, id, after) row.setAttribute('id', 'actionrow'+id); row.innerHTML = content; + // initialize smart list inputs + $('textarea[data-type="list"]', row).each(function() { + smart_field_init(this); + }); + this.managesieve_formbuttons(div); } }; @@ -790,9 +801,17 @@ rcube_webmail.prototype.managesieve_tip_register = function(tips) /********* Mail UI methods *********/ /*********************************************************/ -rcube_webmail.prototype.managesieve_create = function() +rcube_webmail.prototype.managesieve_create = function(force) { - if (!rcmail.env.sieve_headers || !rcmail.env.sieve_headers.length) + if (!force && this.env.action != 'show' && !$('#'+this.env.contentframe).is(':visible')) { + var uid = this.message_list.get_single_selection(), + lock = this.set_busy(true, 'loading'); + + this.http_post('plugin.managesieve-action', {_uid: uid}, lock); + return; + } + + if (!this.env.sieve_headers || !this.env.sieve_headers.length) return; var i, html, buttons = {}, dialog = $("#sievefilterform"); @@ -805,9 +824,9 @@ rcube_webmail.prototype.managesieve_create = function() // build dialog window content html = '<fieldset><legend>'+this.gettext('managesieve.usedata')+'</legend><ul>'; - for (i in rcmail.env.sieve_headers) + for (i in this.env.sieve_headers) html += '<li><input type="checkbox" name="headers[]" id="sievehdr'+i+'" value="'+i+'" checked="checked" />' - +'<label for="sievehdr'+i+'">'+rcmail.env.sieve_headers[i][0]+':</label> '+rcmail.env.sieve_headers[i][1]+'</li>'; + +'<label for="sievehdr'+i+'">'+this.env.sieve_headers[i][0]+':</label> '+this.env.sieve_headers[i][1]+'</li>'; html += '</ul></fieldset>'; dialog.html(html); |