/** * (Manage)Sieve Filters plugin * * @licstart The following is the entire license notice for the * JavaScript code in this file. * * Copyright (c) The Roundcube Dev Team * * The JavaScript code in this page is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * @licend The above is the entire license notice * for the JavaScript code in this file. */ function rule_header_select(e){var t,i=document.getElementById("header"+e),a=document.getElementById("rule_size"+e),s=document.getElementById("rule_spamtest"+e),n=document.getElementById("rule_message"+e),r=document.getElementById("rule_op"+e),l=document.getElementById("custom_header"+e+"_list"),o=document.getElementById("custom_var"+e+"_list"),c=document.getElementById("rule_mod"+e),m=document.getElementById("rule_trans"+e),d=document.getElementById("rule_comp"+e),_=document.getElementById("rule_mime"+e),u=document.getElementById("rule_mime_part"+e),g=document.getElementById("rule_date_part"+e),v=document.getElementById("rule_date_header_div"+e),p=$("#rule_op"+e),h=i.value,f=[r,l,o,c,m,d,a,_,u];"size"==h?(n&&f.push(n),$.each(f,function(){this!=window&&(this.style.display="none")}),s.style.display="none",a.style.display=""):"spamtest"==h?(n&&f.push(n),$.each(f,function(){this!=window&&(this.style.display="none")}),s.style.display="",a.style.display="none"):"message"==h&&n?($.each(f,function(){this!=window&&(this.style.display="none")}),n.style.display=""):(t="body"!=h&&"currentdate"!=h&&"date"!=h&&"string"!=h,l.style.display="..."!=h?"none":"",o.style.display="string"!=h?"none":"",a.style.display="none",s.style.display="none",r.style.display="",d.style.display="",c.style.display=t?"":"none",m.style.display="body"==h?"":"none",_&&(_.style.display=t?"":"none"),u&&(u.style.display=t?"":"none"),n&&(n.style.display="message"==h?"":"none")),g&&(g.style.display="currentdate"==h||"date"==h?"inline":"none"),v&&(v.style.display="date"==h?"":"none"),$('[value="exists"],[value="notexists"]',p).prop("disabled","string"==h),p.val()||p.val("contains"),rule_op_select(r,e,h),rule_mod_select(e,h,!t),rule_mime_select(e),rule_spamtest_select(e),i.style.width="..."==h?"40px":""}function rule_op_select(e,t,i){var a=document.getElementById("rule_target"+t+"_list");i=i||document.getElementById("header"+t).value,a.style.display=e.value.match(/^(exists|notexists)$/)||i.match(/^(size|spamtest|message)$/)?"none":""}function rule_trans_select(e){var t=document.getElementById("rule_trans_op"+e);document.getElementById("rule_trans_type"+e).style.display="content"!=t.value?"none":"inline"}function rule_mod_select(e,t,i){var a=document.getElementById("rule_mod_op"+e),s=document.getElementById("rule_mod_type"+e),n=document.getElementById("rule_duplicate_div"+e),r=document.getElementById("rule_index_div"+e);i&&(a.value=""),t=t||document.getElementById("header"+e).value,s.style.display="address"!=a.value&&"envelope"!=a.value?"none":"",r&&(r.style.display=t.match(/^(body|currentdate|size|spamtest|message|string)$/)||"envelope"==a.value?"none":""),n&&(n.style.display="message"==t?"":"none")}function rule_spamtest_select(e){var t=document.getElementById("rule_spamtest_op"+e);document.getElementById("rule_spamtest_target"+e).style.display=t.value?"":"none",$(t)[t.value?"removeClass":"addClass"]("rounded-right")}function rule_join_radio(e){$("#rules").css("display","any"==e?"none":"block")}function rule_adv_switch(e,t){var i=(t=$(t)).hasClass("hide"),e=$("#rule_advanced"+e);i?(e.get(0).style.display="none",t.removeClass("hide").addClass("show")):(e.get(0).style.display="",t.removeClass("show").addClass("hide"))}function rule_mime_select(e){var t=$("#rule_mime_type"+e),e=$("#rule_mime_param"+e+"_list");e.length&&(e[0].style.display="param"==t.val()?"":"none")}function action_type_select(e){var t,i=document.getElementById("action_type"+e).value,a={},s={mailbox:document.getElementById("action_mailbox"+e),target:document.getElementById("redirect_target"+e),target_area:document.getElementById("action_target_area"+e),flags:document.getElementById("action_flags"+e),vacation:document.getElementById("action_vacation"+e),forward:document.getElementById("action_forward"+e),set:document.getElementById("action_set"+e),notify:document.getElementById("action_notify"+e),addheader:document.getElementById("action_addheader"+e),deleteheader:document.getElementById("action_deleteheader"+e)};for(t in"fileinto"==i||"fileinto_copy"==i?a.mailbox=1:"redirect"==i||"redirect_copy"==i?a.target=1:i.match(/^reject|ereject$/)?a.target_area=1:i.match(/^(add|set|remove)flag$/)?a.flags=1:i.match(/^(vacation|forward|set|notify|addheader|deleteheader)$/)&&(a[i]=1),s)s[t]&&(s[t].style.display=a[t]?"":"none")}function vacation_action_select(){var e=$("#vacation_action").val();$("#action_target_span")["discard"==e||"keep"==e?"hide":"show"]()}function smart_field_init(i){if(window.UI&&UI.smart_field_init)return UI.smart_field_init(i);var e=i.id+"_list",a=$(''),t=i.value?i.value.split("\n"):[""];$("#"+e).length||($.each(t,function(e,t){a.append(smart_field_row(t,e,i))}),a.attr("id",e),(i=$(i)).attr("disabled")?a.hide():i.prop("disabled",!0),i.data("hidden")&&a.hide(),i.after(a),i.hasClass("error")&&(a.addClass("error"),rcmail.managesieve_tip_register([[e,i.data("tip-class"),i.data("tip-msg")]])))}function smart_field_row(e,t,a){var i=$(''),e={value:e,name:a.name+"[]",size:$(a).data("size"),title:a.title,placeholder:$(a).attr("placeholder")};i.find("input").attr(e).keydown(function(e){var t=$(this);if(13==e.which){var i=smart_field_row("",(new Date).getTime(),a);t.parent().after(i),$("input",i).focus()}else if((8==e.which||46==e.which)&&""==t.val()){t=t.parent();if(1'),rcmail.env.ms_tip_layer.appendTo(document.body)),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()}),rcmail.register_command("plugin.managesieve-seteditraw",function(){rcmail.managesieve_seteditraw()}),rcmail.env.action.startsWith("plugin.managesieve")&&(rcmail.gui_objects.sieveform?(rcmail.enable_command("plugin.managesieve-save",!0),sieve_form_init()):rcmail.gui_objects.sievesetrawform?(rcmail.enable_command("plugin.managesieve-save",!0),sieve_raw_editor_init()):(rcmail.enable_command("plugin.managesieve-add",!rcmail.env.sieveconnerror&&-1==$.inArray("new_filter",rcmail.env.managesieve_disabled_actions)),rcmail.enable_command("plugin.managesieve-setadd",!rcmail.env.sieveconnerror&&-1==$.inArray("new_set",rcmail.env.managesieve_disabled_actions))),t=rcmail.env.currentset,rcmail.gui_objects.filterslist&&(rcmail.filters_list=new rcube_list_widget(rcmail.gui_objects.filterslist,{multiselect:!1,draggable:!0,keyboard:!0}),rcmail.filters_list.addEventListener("select",function(e){rcmail.managesieve_select(e)}).addEventListener("keypress",function(e){rcmail.list_keypress(e,{del:"plugin.managesieve-del"})}).addEventListener("dragstart",function(e){rcmail.managesieve_dragstart(e)}).addEventListener("dragend",function(e){rcmail.managesieve_dragend(e)}).addEventListener("initrow",function(e){e.obj.onmouseover=function(){rcmail.managesieve_focus_filter(e)},e.obj.onmouseout=function(){rcmail.managesieve_unfocus_filter(e)}}).init()),rcmail.gui_objects.filtersetslist&&(rcmail.filtersets_list=new rcube_list_widget(rcmail.gui_objects.filtersetslist,{multiselect:!1,draggable:!1,keyboard:!0}),rcmail.filtersets_list.init().focus(),null!=t&&($("#filterset-name").text(t),t=rcmail.managesieve_setid(t),rcmail.filtersets_list.select(t)),rcmail.filtersets_list.addEventListener("select",function(e){rcmail.managesieve_setselect(e)}),t=rcmail.filtersets_list.rowcount,rcmail.enable_command("plugin.managesieve-set",!0),rcmail.enable_command("plugin.managesieve-setact",0');$("td",a).text(t.name),a.attr("id","rcmrow"+t.id),t.disabled&&a.addClass("disabled"),s.insert_row(a.get(0)),s.highlight_row(t.id),this.enable_command("plugin.managesieve-del",-1==$.inArray("delete_rule",rcmail.env.managesieve_disabled_actions)),this.enable_command("plugin.managesieve-act",!0);break;case"list":var n,r,l,o,s=this.filters_list;for(n in t.clear&&s.clear(),t.list)o=t.list[n],r=document.createElement("TR"),l=document.createElement("TD"),$(l).text(o.name),l.className="name",r.id="rcmrow"+o.id,o.class&&(r.className=o.class),r.appendChild(l),s.insert_row(r);t.set?s.highlight_row(t.set):this.enable_command("plugin.managesieve-del","plugin.managesieve-act",!1);break;case"setact":i=this.managesieve_setid(t.name),a=$("#rcmrow"+i);t.active?(t.all&&$("tr",this.gui_objects.filtersetslist).addClass("disabled"),a.removeClass("disabled")):a.addClass("disabled");break;case"setdel":i=this.managesieve_setid(t.name);this.filters_list.clear(),this.show_contentframe(!1),this.enable_command("plugin.managesieve-setdel","plugin.managesieve-setact","plugin.managesieve-setget","plugin.managesieve-seteditraw",!1),this.filtersets_list.remove_row(i,!0),delete this.env.filtersets[i];break;case"setadd":var c,i="S"+(new Date).getTime(),s=this.filtersets_list,a=$('');$("td",a).text(t.name),a.attr("id","rcmrow"+i),this.env.filtersets[i]=t.name,s.insert_row(a.get(0)),t.index!=s.rowcount-1&&(a.detach(),c=$("tr:visible",s.list).get(t.index),a.insertBefore(c)),s.select(i),this.managesieve_fixdragend(a);break;case"refresh":this.reset_filters_list(!0)}this.set_busy(!1)},rcube_webmail.prototype.reset_filters_list=function(e){this.filters_list.clear_selection(),this.enable_command("plugin.managesieve-act","plugin.managesieve-del",!1),e&&(e=this.filtersets_list.get_single_selection(),this.filters_list.clear(!0),this.managesieve_list(this.env.filtersets[e]))},rcube_webmail.prototype.load_managesieveframe=function(e,t){t&&this.reset_filters_list();t=this.get_frame_window(this.env.contentframe),e=this.url("plugin.managesieve-action","_framed=1"+(e?"&"+e:""));t&&this.location_href(e,t,!0)},rcube_webmail.prototype.managesieve_dragstart=function(e){var t=this.filters_list.get_single_selection();this.drag_active=!0,this.drag_filter=t},rcube_webmail.prototype.managesieve_dragend=function(e){var t;this.drag_active&&(this.drag_filter_target&&(t=this.set_busy(!0,"loading"),this.show_contentframe(!1),this.http_post("plugin.managesieve-action","_act=move&_fid="+this.drag_filter+"&_to="+this.drag_filter_target,t)),this.drag_active=!1)},rcube_webmail.prototype.managesieve_fixdragend=function(e){var t=this;$(e).on("mouseup"+(bw.iphone||bw.ipad?" touchend":""),function(e){t.drag_active&&t.filters_list.drag_mouse_up(e)})},rcube_webmail.prototype.managesieve_focus_filter=function(e){var t=e.id.replace(/^rcmrow/,"");this.drag_active&&t!=this.drag_filter&&(this.drag_filter_target=t,$(e.obj).addClass(t").attr({class:"rulerow",id:"rulerow"+t}).html(e),this.managesieve_insertrow(a,e,i),$('textarea[data-type="list"]',e).each(function(){smart_field_init(this)}),this.managesieve_formbuttons(a))},rcube_webmail.prototype.managesieve_ruledel=function(a){$("#ruledel"+a).hasClass("disabled")||this.confirm_dialog(this.get_label("managesieve.ruledeleteconfirm"),"delete",function(e,t){var i=document.getElementById("rulerow"+a);i.parentNode.removeChild(i),t.managesieve_formbuttons(document.getElementById("rules"))})},rcube_webmail.prototype.managesieve_actionadd=function(e){this.http_post("plugin.managesieve-action","_act=actionadd&_aid="+e)},rcube_webmail.prototype.managesieve_actionfill=function(e,t,i){var a;""!=e&&(a=$("#actions")[0],e=$("
").attr({class:"actionrow",id:"actionrow"+t}).html(e),this.managesieve_insertrow(a,e,i),$('textarea[data-type="list"]',e).each(function(){smart_field_init(this)}),this.managesieve_formbuttons(a))},rcube_webmail.prototype.managesieve_actiondel=function(a){$("#actiondel"+a).hasClass("disabled")||this.confirm_dialog(this.get_label("managesieve.actiondeleteconfirm"),"delete",function(e,t){var i=document.getElementById("actionrow"+a);i.parentNode.removeChild(i),t.managesieve_formbuttons(document.getElementById("actions"))})},rcube_webmail.prototype.managesieve_insertrow=function(e,t,i){i=$("#"+("rules"==$(e).attr("id")?"rulerow":"actionrow")+i)[0];i?$(t).insertAfter(i):$(e).append(t),this.triggerEvent("managesieve.insertrow",{obj:t})},rcube_webmail.prototype.managesieve_formbuttons=function(e){e=$("a.delete",e);e.removeClass("disabled"),1==e.length&&e.addClass("disabled")},rcube_webmail.prototype.managesieve_vacation_addresses=function(e){var t=this.set_busy(!0,"loading");this.http_post("plugin.managesieve-action",{_act:"addresses",_aid:e},t)},rcube_webmail.prototype.managesieve_vacation_addresses_update=function(e,t){smart_field_reset($("#vacation_addresses,#action_addresses"+(e||"")).get(0),t)},rcube_webmail.prototype.managesieve_tip_register=function(e){if(window.UI&&UI.form_errors)return UI.form_errors(e);var t,r=parent.rcmail,l=(r?parent.rcmail:rcmail).env.ms_tip_layer;for(t in e)$("#"+e[t][0]).data("tip-class",e[t][1]).data("tip-msg",e[t][2]).mouseleave(function(e){l.hide()}).mouseenter(function(e){var t=$(this),i=t.offset(),a=i.left,s=i.top-12,n=t.width(),t=$("").addClass(t.data("tip-class")).text(t.data("tip-msg"));r&&(s+=(i=$("mail"==rcmail.env.task?"#sievefilterform > iframe":"#filter-box",parent.document).offset()).top,a+=i.left),l.html("").append(t),s-=l.height(),l.css({left:a,top:s,minWidth:n-2+"px"}).show()})},rcube_webmail.prototype.managesieve_create=function(e){var a,s,n,t;e||"show"==this.env.action?this.env.sieve_headers&&this.env.sieve_headers.length&&(t={},a=this.get_label("managesieve.newfilter"),s=$('
'),n={minWidth:600,minHeight:250,height:300},s.append($("
").append($("").text(this.get_label("managesieve.usedata"))).append($('
    '))),$.each(this.env.sieve_headers,function(e,t){var i={type:"checkbox",name:"headers[]",id:"sievehdr"+e,value:e,checked:!0},a=rcmail.env.sieve_headers[e][0]+": "+rcmail.env.sieve_headers[e][1];$("ul",s).append($("
  • ").append($("").attr(i)).append($("