Viewing File: /usr/local/cpanel/base/frontend/jupiter/mail/filters/userfilters.html.tt
[%
SET CPANEL.CPVAR.dprefix = "../../";
SET email_acct = execute( 'Email', 'account_name', {"account"=>FORM.account, "display"=>"0"}).data;
Api2.pre_exec("StatsBar", "stat");
api2_result_StatsBar_stat = Api2.exec("StatsBar", "stat", {"warnings"=>"1", "infinitylang"=>"true", "warninglevel"=>"80", "display"=>"emailfilters"} );
Api2.post_exec("StatsBar", "stat");
Api2.pre_exec("Email", "filterlist");
SET api2_result_Email_filterlist = Api2.exec("Email", "filterlist", {"account"=>FORM.account} );
Api2.post_exec("Email", "filterlist");
%]
[%
IF FORM.account != "" OR email_acct != "";
SET app_name = 'email_filters';
ELSE;
SET app_name = 'global_email_filters';
END;
%]
[%
IF api2_result_Email_filterlist.size;
js_code = PROCESS js_block;
ELSE;
js_code = "";
END;
%]
[% css_code = PROCESS css_block %]
[% WRAPPER '_assets/master.html.tt'
app_key = app_name
page_js = js_code
page_styles = css_code
feature = 'blockers'
%]
[% INCLUDE _assets/_ajaxapp_header.html.tt %]
<div class="body-content">
[% IF email_acct %]
<h2 id="hdrEditFilters">[% locale.maketext("Edit Filters for “[_1]”",email_acct) %]</h2>
<p id="descEditFilters">[% locale.maketext("Create and manage email filters for your main email account. Rules will be processed in the order shown below, from the top down. For more information, read the [output,url,_1,documentation,target,_2,id,_3].", "//go.cpanel.net/UserFilters", "_blank", "lnkUserFiltersDocumentation") %]</p>
[% ELSE %]
<h2 id="hdrEditFilters">[% locale.maketext("Edit Filters for “All Mail on your Account”") %]</h2>
<p id="descEditFilters">[% locale.maketext("Create and manage email filters for your main email account. Rules will be processed in the order shown below, from the top down. For more information, read the [output,url,_1,documentation,target,_2,id,_3].", "//go.cpanel.net/GlobalFilters", "_blank", "lnkGlobalFiltersDocumentation") %]</p>
[% END %]
<div class="section">
<h2 id="hdrCreateFilter">[% locale.maketext("Create Filter") %]</h2>
<a id="btnCreateFilter" href="editfilter.html?account=[% RAW_FORM.account.uri %]&filtername=" class="btn btn-primary">[% locale.maketext("Create a New Filter") %]</a>
</div>
[% IF api2_result_StatsBar_stat.size;
SET hashref = api2_result_StatsBar_stat.0; %]
<div class="section">
<p class="caution">[% locale.maketext("[output,strong,Warning]: You currently use [numf,_1] out of [numf,_2]", hashref.count,hashref.max) %]</p>
</div>
[% END %]
[% IF api2_result_Email_filterlist.size -%]
<h2 id="hdrCurrentFilters">[% locale.maketext("Current Filters") %]</h2>
<div class="section" id="filter_container">
[% IF api2_result_Email_filterlist.size;
FOREACH hashref IN api2_result_Email_filterlist;
%]
<div class="filter_wrapper">
<div class="filter" id="[% hashref.filtername.html() %]-filter" title="[% locale.maketext('Drag to reorder.') %]">
<div class="arrows">
<ul class="move">
<li class="up"><a href="#" onclick="move_up(this); return false"></a></li>
<li class="down"><a href="#" onclick="move_down(this); return false"></a></li>
</ul>
</div>
<div class="filter-title">[% hashref.filtername.html() %]</div>
<div class="actions">
<a class="btn btn-link" href="editfilter.html?account=[% FORM.account %]&filtername=[% hashref.filtername.uri() %]">
<span class="glyphicon glyphicon-pencil"></span>
[% locale.maketext("Edit") %]
</a>
<a class="btn btn-link" href="delfilter.html?account=[% FORM.account %]&filtername=[% hashref.filtername.uri() %]">
<span class="glyphicon glyphicon-trash"></span>
[% locale.maketext("Delete") %]
</a>
</div>
<div class="arrows2">
<ul class="move">
<li class="up"><a href="#" onclick="move_up(this); return false"></a></li>
<li class="down"><a href="#" onclick="move_down(this); return false"></a></li>
</ul>
</div>
<div class="clear"></div>
</div>
</div>
[% END %]
[% END %]
</div>
<div class="section" id="filtertest">
<h2 id="hdrFilterTest">[% locale.maketext("Filter Test") %]</h2>
<p id="descFilterTest">[% locale.maketext("Enter a complete email message (including headers) below to see how the system will process it with the current filters in place.") %]</p>
<form action="filtertest.html" method="post">
<div class="form-group">
<input id="hidFilterTestDomain" type="hidden" name="domain" value="[% FORM.domain %]" />
<input id="hidFilterTestAccount" type="hidden" name="account" value="[% FORM.account %]" />
<textarea id="txtFilterTestMessage" name="test_msg" class="form-control" rows="10" cols="55">
To: test@localhost
From: test@localhost
Subject: test
[% locale.maketext("This is a test message.") %]
</textarea>
</div>
<div class="form-group">
<input id="btnFilterTest" type="submit" value="[% locale.maketext("Test Filter") %]" class="btn btn-primary" />
</div>
</form>
</div>
[% END -%]
[% IF FORM.account %]
[% INCLUDE _assets/return_link.html.tt return_location='managefilters.html' return_link_text=locale.maketext('Go Back') %]
[% ELSE %]
[% INCLUDE _assets/return_link.html.tt return_location='../../index.html' return_link_text=locale.maketext('Go Back') %]
[% END %]
[% INCLUDE _assets/_ajaxapp_footer.html.tt %]
</div>
[% END %]
[% BLOCK js_block %]
<script>
var dditem = function() {
dditem.superclass.constructor.apply(this,arguments);
};
var MAILBOX = [% RAW_FORM.account.json() || 'null' %];
function get_order() {
var filter_els = DOM.getElementsByClassName( "filter", "div", "filter_container" );
return filter_els.map( function(el,index) {
if ((index + 1) % 2 !== 0) {
el.classList.add("stripe-even");
el.classList.remove("stripe-odd");
} else {
el.classList.add("stripe-odd");
el.classList.remove("stripe-even");
}
return el.id.replace(/-filter$/,"");
} );
}
var saved_notice = null;
function save_order() {
var api_vars = { mailbox: MAILBOX };
var filter_els = DOM.getElementsByClassName( "filter", "div", "filter_container" );
filter_els.forEach( function(el,idx) {
var filter_name = el.id.replace(/-filter$/,"");
api_vars["filter"+idx] = filter_name;
} );
if (saved_notice && !DOM.inDocument(saved_notice.element)) {
saved_notice = null;
}
var success = function() {
old_order_joined = get_order().join();
saved_notice = new CPANEL.ajax.Dynamic_Notice( {
level: "success",
content: "[% locale.maketext("Filter order saved.") %]",
replaces: saved_notice
} );
YAHOO.util.DragDropMgr.unlock();
};
YAHOO.util.DragDropMgr.lock();
CPANEL.api( {
module: "Email",
func: "reorderfilters",
data: api_vars,
callback: CPANEL.ajax.build_callback( success, null, {
on_error: function() { YAHOO.util.DragDropMgr.unlock() }
} )
} );
}
var old_order_joined = get_order().join();
function order_changed() {
var new_order_joined = get_order().join();
return new_order_joined !== old_order_joined;
}
YAHOO.extend( dditem, CPANEL.dragdrop.DDItem, {
endDrag: function() {
CPANEL.dragdrop.DDItem.prototype.endDrag.apply(this,arguments);
if ( order_changed() ) {
save_order();
}
}
} );
var containers = CPANEL.dragdrop.containers( "filter_container", undefined, {
item_constructor: dditem
} );
var save_timeout = null;
function queue_save() {
clearTimeout(save_timeout);
save_timeout = setTimeout( save_order, 500 );
}
function move_up(link) {
var wrapper = DOM.getAncestorByClassName(link,"filter_wrapper");
var previous_wrapper = DOM.getPreviousSibling(wrapper);
if (previous_wrapper) {
wrapper.parentNode.insertBefore(wrapper,previous_wrapper);
link.focus();
queue_save();
}
}
function move_down(link) {
var wrapper = DOM.getAncestorByClassName(link,"filter_wrapper");
var next_wrapper = DOM.getNextSibling(wrapper);
if (next_wrapper) {
var next_next = DOM.getNextSibling(next_wrapper);
if (next_next) {
wrapper.parentNode.insertBefore(wrapper,next_next);
}
else {
wrapper.parentNode.appendChild(wrapper);
}
link.focus();
queue_save();
}
}
</script>
[% END %]
[% BLOCK css_block %]
<style type="text/css">
.filter {
cursor:move;
border-bottom: 1px solid #dadada;
padding: 5px;
text-align: center;
zoom: 1;
}
#ygddfdiv .filter {
opacity: 0.5;
}
ul.move {
list-style: none;
margin:0px;
padding:0px;
}
ul.move li.up {
background: transparent url(../../images/uparrow1.png) top left no-repeat;
width: 7px;
height: 20px;
padding-bottom: 3px;
margin-bottom: 3px;
border-width: 0 0 1px 0;
border-bottom: 1px dotted #999;
-webkit-padding-start: 0px !important;
padding-top:0px !important;
margin-top:0px !important;
}
ul.move li.up:hover {
background: url(../../images/uparrow2.png) top left no-repeat;
}
ul.move li.down {
background: transparent url(../../images/down-arrow1.png) top left no-repeat;
width: 7px;
height: 10px;
}
ul.move li.down:hover {
background: url(../../images/down-arrow2.png) top left no-repeat;
width:7px;
height:10px;
}
ul, menu, dir {
-webkit-padding-start: 0px !important;
}
ul.move li a {
display: block;
width: 7px;
height: 9px;
text-indent: -9999px;
}
.arrows {
float:left;
width:10px;
}
.arrows2 {
float:right;
width:10px;
}
.filter-title {
float:left;
padding-left:10px;
text-align:left;
text-shadow: 0 1px 0 #fff;
padding-top:3px;
}
.actions {
float:right;
width:150px;
padding-top:3px;
}
.actions a {
padding-left:5px;
display:inline-block;
}
.actions a.delete {
}
.clear {
height: 0; /* IE */
clear:both;
}
</style>
[% END %]
Back to Directory
File Manager