valid_save = function(){
var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
if(list_container.find('[name="name"]').attr("disabled") != "disabled")
{
if($.trim(list_container.find('[name="name"]').val()) == ""){
$.Zebra_Dialog("Nenhum nome preenchido",{
'onClose': function(caption) {
list_container.find('[name="name"]').focus();
}
});
accord.accordion('activate',0);
return false;
}else if($.trim(list_container.find('[name="name"]').val()) == "vacation"){
$.Zebra_Dialog("Nome inválido, 'vacation' é uma palavra reservada",{
'onClose': function(caption) {
list_container.find('[name="name"]').val("").focus();
}
});
accord.accordion('activate',0);
return false;
}else{
filter_list = DataLayer.get("filter", true);
var error = false;
$.each(filter_list, function(index, value){
if(filter_list[index].name == list_container.find('[name="name"]').val()){
$.Zebra_Dialog("Já existe um filtro com este nome",{
'onClose': function(caption) {
list_container.find('[name="name"]').val("").focus();
}
});
accord.accordion('activate',0);
error = true;
return;
}
});
if(error){
return false;
}
}
}
var criteria = "";
var criteria_list = list_container.find('[name="criteriaValue[]"]');
$.each(criteria_list, function(index, value){
criteria += $.trim($(criteria_list[index]).val());
});
if(criteria == ""){
$.Zebra_Dialog("Nenhum criterio preenchido",{
'onClose': function(caption) {
list_container.find('[name="criteriaValue[]"]:first').focus();
}
});
accord.accordion('activate',0);
return false;
}
if(list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").length){
if($.trim(list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").val()) == ""){
$.Zebra_Dialog("Preencha o valor da ação",{
'onClose': function(caption) {
list_container.find('[name="actionType[]"]:checked').parent().find("input:text, textarea").focus();
}
});
return false;
}
}
return true;
};
bytes2Size = function(bytes) {
var sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
if (bytes === 0) return 'n/a';
var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
var size = (i<2) ? Math.round((bytes / Math.pow(1024, i))) : Math.round((bytes / Math.pow(1024, i)) * 100)/100;
return size + ' ' + sizes[i];
};
flags2Class = function(cellvalue) {
var flags_enum = cellvalue.split(',');
var classes = '';
for (var i=0; i ';
}
return classes;
};
date2Time = function (timestamp) {
var date = new Date();
if ((date.getTime() - timestamp) < (24*60*60*1000)) {
return ' ';
} else {
date = new Date(timestamp);
var b = date.toISOString().split("T")[0].split("-");
var c = b[2] + "/" + b[1] + "/" + b[0];
return '' + c + '';
}
};
keys = function( object ){
var array = [];
for( var key in object )
array[ array.length ] = key;
return( array );
}
showDetails = function( filter ){
form.get(0).reset();
nameObj.val( filter.name );
nameObj.attr("disabled", "disabled");
for( var i = 0; i < filter.criteria.length; i++ ){
criterias.filter( '[value="' + filter.criteria[i].field + '"]' )
.siblings( '[name="criteriaOperator[]"]' ).val( filter.criteria[i].operator ).end()
.siblings( '[name="criteriaValue[]"]' ).val( filter.criteria[i].value );
}
for( var i = 0; i < filter.actions.length; i++ ){
actions.filter( '[value="' + filter.actions[i].type + '"]' ).attr("checked", "True");
actions.filter( '[value="' + filter.actions[i].type + '"]' ).val( filter.actions[i].type )
.siblings( '[name="actionParameter[]"]' ).val( filter.actions[i].parameter );
if(filter.actions[i].type == "redirect")
actions.siblings('[name="addressRedirect"]').val(filter.actions[i].parameter);
if(filter.actions[i].type == "reject")
actions.siblings('[name="messageReject"]').val(filter.actions[i].parameter);
if(filter.actions[i].type == "fileinto" || filter.actions[i].type == "setflag")
actions.parent().find('[value="'+filter.actions[i].parameter+'"]').attr("selected", "selected");
}
//isExact.val( filter.isExact != "false"? "and" : "or" );
isExact.filter('[value="'+(filter.isExact != "false"? "and" : "or")+'"]').attr("checked", "True");
}
/* --- ------ --- */
DataLayer.codec( "filter", "detail", {
decoder: function( form ){
if( form.vacation )
return {
criteria: [{ value: "vacation", operator: "", field: "vacation" }],
actions: [{ parameter: form.vacation, type: "vacation" }],
id: "vacation",
name: "vacation",
isExact: false,
applyMessages : "",
enabled : false
}
return {
//id: form.name,
name: form.name ? form.name : nameObj.val(),
isExact: ( form.isExact === "and" ),
criteria: $.map( form.criteriaOperator || [], function( criteriaOperator, i ){
return (!form.criteriaValue[i]) ? null:
{value: form.criteriaValue[i],
operator: criteriaOperator,
field: form.criteriaType[i]};
}),
actions: $.map( form.actionType || [], function( type, i ){
var the_parameter = form.actionParameter[i];
!the_parameter ? the_parameter = form.actionParameter[i+1] : "";
if (type == 'fileinto') {
the_parameter = form.valueFileInto;
}
if (type == 'reject') {
the_parameter = form.messageReject;
}
if (type == 'fileintoInbox') {
if(!$('[value="fileintoInbox"]').parent().hasClass("hidden")){
type = 'fileinto';
the_parameter = 'INBOX';
}else{
return;
}
}
if (type == 'fileintoTrash') {
type = 'fileinto';
the_parameter = 'INBOX/Trash';
}
if (type == 'redirect') {
the_parameter = form.addressRedirect;
}
if (type == 'setflag') {
the_parameter = form.valueSetFlag;
}
return (!type) ? null:
{parameter: the_parameter, type: type };
}),
enabled : false,
applyMessages: allMessages? !$.isEmptyObject( selectedMessages ) ?
keys( selectedMessages ) : allMessages : ""
};
},
encoder: function( filters ){
var rules = [];
for( var id in filters )
rules[ rules.length ] = filters[id];
return { rules: rules };
}
});
DataLayer.codec( "folder", "select", {
decoder:function(){
},
encoder:function( data ){
var tree1 = [], tree2 = [], tree3 = [];
for (var i=0; iminimize')
.find('.ui-dialog-titlebar-minimize').click(function() {
$(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
$(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
});
},
autoOpen: false
});
details_container.accordion({autoHeight: false});
DataLayer.render( BASE_PATH + 'api/templates/folderselect.ejs', 'folder:select', function( html ){
details_container.find(".select-folderlist").append( html );
});
container.find(".button").button()
.filter(".menu-filters > .button")
.click(function(){
container.dialog( 'close' );
})
.filter(".cancel")
.click(function(){
DataLayer.rollback( 'filter' );
return( false );
})
.end().filter(".submit")
.click(function(){
DataLayer.commit( 'filter' );
return( false );
});
details_container.find( ".menu-container" )
.find(".button.cancel").click(function(event){
details_container.accordion('activate',0);
showGridButton.removeClass('hidden');
grid.addClass('hidden').jqGrid('GridDestroy');
list_container.removeClass('hidden');
details_container.addClass('hidden');
return( false );
}).end()
.find(".button.submit").click(function(event){
$(this).submit();
details_container.accordion('activate',0);
showGridButton.removeClass('hidden');
grid.addClass('hidden').jqGrid('GridDestroy');
list_container.removeClass('hidden');
details_container.addClass('hidden');
return( false );
}).end()
.find(".button.back").click(function(event){
details_container.accordion('activate',0);
return( false );
}).end()
.find(".button.forth").click(function(event){
details_container.accordion('activate',1);
return( false );
}).end()
//$( ".expresso-window-container .rule-details-container" ).accordion();
// var removeURL = new RegExp("^*.#");
// ------------------------------------------------------------
// ------------------------------------------------------------
//jqgrid
.end().find(".fields-search-messages .button.search")
.click(function(){
var rule = DataLayer.form( form );
showGridButton = $(this).parent();
var connect = rule.isExact ? "AND" : "OR";
var filter = $.map( rule.criteria, function( criteria, i ){
if( i === 0 )
return {"0": criteria.field, "1": criteria.operator, "2": criteria.value};
else
return {"0": connect, "1": criteria.field, "2": criteria.operator, "3": criteria.value};
});
$.ajax( {
url: DataLayer.basePath + 'folder/INBOX/message&' + $.param( {"filter": filter} ),
dataType: 'json',
success: function(data){
allMessages = data;
grid = showGridButton.addClass('hidden')
.siblings(".fields-search-messages-grid, .fields-search-messages-grid-pager")
.removeClass('hidden').filter(".fields-search-messages-grid").jqGrid({
url: DataLayer.basePath + 'folder/INBOX/message&' + $.param( {"filter": [ "msgNumber", "IN", data ]} ),
datatype: "json",
mtype: 'GET',
colNames:['#', ' ', 'De', 'Assunto', 'Data', 'Tamanho'],
colModel:[
{name:'msg_number',index:'msg_number', width:45, hidden:true, sortable:false},
{name:'flags',index:'msg_number', width:40, sortable:false, formatter:flags2Class},
{name:'from.name',index:'msg_number', width:130, sortable:false},
{name:'subject',index:'subject', width:250, sortable:false},
{name:'timestamp',index:'timestamp', width:65, align:"center", sortable:false, formatter:date2Time},
{name:'size',index:'size', width:50, align:"right", sortable:false, formatter:bytes2Size}
],
jsonReader : {
root:"rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
id: "0"
},
rowNum:10,
rowList:[10,25,50],
pager: '#fields-search-messages-grid-pager',
sortname: 'id',
viewrecords: true,
sortorder: "desc",
multiselect: true,
autowidth: true,
height:40,
loadComplete: function(data) {
// // aplica o contador
// jQuery('.timable').each(function (i) {
// jQuery(this).countdown({
// since: new Date(parseInt(this.title)),
// significant: 1,
// layout: 'há {d<}{dn} {dl} {d>}{h<}{hn} {hl} {h>}{m<}{mn} {ml} {m>}{s<}{sn} {sl}{s>}',
// description: ' atrás'
// });
// });
},
onSelectRow: function (id, selected) {
if( selected )
selectedMessages[ id ] = true;
else
delete selectedMessages[ id ];
},
caption: 'Mensagens que atendem aos critérios'
});
}
} );
});
vacation_container.find( ".menu-container" )
.find(".button.back").click(function(event){
list_container.removeClass('hidden');
vacation_container.addClass('hidden');
return( false );
}).end()
.find(".button.submit").click(function(event){
$(this).submit();
list_container.removeClass('hidden');
vacation_container.addClass('hidden');
return( false );
});
}
var reraster = function( html ){
//$(".rule-list-container").next().addClass("hidden");
list_container.find( '.ui-widget' ).remove();
list_container.html( html ).find(".button").button();
formatter();
}
var formatter = function(){
checkBoxes = container.find(".rule-list").selectable({
selecting: function(event, ui) {
$(ui.selecting).find(':checkbox').attr('checked', true);
},
unselecting: function(event, ui) {
$(ui.unselecting).find(':checkbox').attr('checked', false);
}
})
.find(':checkbox').change(function () {
// if ($(this).attr("checked"))
// $(this).parents('.rule').addClass('ui-selected');
// else
$(this).parents('.rule').toggleClass('ui-selected');
});
list_container.children()
.filter( ".fields-add" )
.find(".button.add").click(function(){
list_container.addClass('hidden');
details_container.removeClass('hidden');
form.get(0).reset();
return( false );
})
.filter(".vacation").click(function(){
details_container.addClass('hidden');
vacation_container.removeClass('hidden');
form.get(0).reset();
return( false );
}).end().end()
.end().filter( ".fields-selected-itens" )
.find(".button.enable").click(function(){
var values = [];
checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){
values[ values.length ] = { id: this.innerHTML, enabled: true };
});
DataLayer.put( 'filter', values );
}).end()
.find(".button.disable").click(function(){
var values = [];
checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(){
values[ values.length ] = { id: this.innerHTML, enabled: false };
});
DataLayer.put( 'filter', values );
}).end()
.find(".button.delete").click(function(){
checkBoxes.filter(':checked').parents(".rule-list").find('.title').each(function(i, o){
DataLayer.remove( 'filter', o.html() );
});
}).end()
.end().find( ".menu-control .button" ).filter(".update").button({
icons: {
primary: "ui-icon-pencil"
},
text: false
}).end()
.filter(".enable, .disable").click( function(event) {
var id = $(this).parents("li.rule").find('.title').html();
DataLayer.put( 'filter', id, { enabled: !$(this).is('.enable') } );
})
.filter(".enable").button({
icons: {
primary: "ui-icon-circle-check"
},
text: false
}).end()
.filter(".disable").button({
icons: {
primary: "ui-icon-circle-close"
},
text: false
}).end().end()
.filter(".close").button({
icons: {
primary: "ui-icon-close"
},
text: false
}).click( function(event) {
$(event.target)
.parents("li.rule").find('.title')
.each( function(){
DataLayer.remove( 'filter', $(this).html() );
}).end().remove();
}).end()
.filter(".update").click(function(event){
var id = ( event.target.href || event.target.parentNode.href ).replace( new RegExp("^.*#"), "" );
var data = DataLayer.get( 'filter', id );
if( id === "vacation" )
{
$('[name="vacation"]').val( data.actions[0].parameter );
list_container.addClass('hidden');
vacation_container.removeClass('hidden');
return;
}
showDetails( data );
list_container.addClass('hidden');
details_container.removeClass('hidden');
}).end()
.removeClass('ui-button-icon-only');
};
// ------------------------------------------------------------
// ------------------------------------------------------------
*/
function block_user_email(email) {
//var id = "block_"+email;
var idd = email;
var filters = DataLayer.get("filter", true);
for(var index in filters){
if(filters[index].name == email) {
if(confirm("Esse usuário já está bloqueado! Deseja desbloquea-lo?")) {
DataLayer.remove( 'filter', filters[index].id );
DataLayer.commit("filter");
$.Zebra_Dialog("Bloqueio do usuario " + email + " removido!");
return true;
}else
return true;
}
}
DataLayer.put( 'filter', idd,
{ name: email, isExact: false,
criteria:{ 0: {value: email, operator: "=", field: "from"} },
/* To-do: Arrumar para popular a tela com o reject, pois não há essa opção na interface. */
actions: { 0: {parameter: "INBOX/Spam", type: "fileinto"}},
enabled: true,
id: email,
block: true
});
DataLayer.commit("filter");
$.Zebra_Dialog("Usuário " + email + " bloqueado!");
}
function list_filters(html){
var filters = DataLayer.get("filter", true);
var outoffice_active = false;
var outoffice = false;
for(var index in filters){
DataLayer.put( 'filter', filters[index].id, { enabled: (filters[index].enabled == "true" ? true: false)});
if(filters[index].id == "vacation")
outoffice = true;
if(filters[index].id == "vacation" && filters[index].enabled == "true"){
write_msg(get_lang("Attention, you are in out of office mode."), true);
outoffice_active = true;
break;
}
}
DataLayer.commit( 'filter' );
if(!outoffice_active){
clean_msg();
}
if(html){
if( ! $(".filters-windows").length )
container = $('.expressomail-module-container').append("").find(".filters-windows").html( html ).find(".expresso-window-container");
list_container = $('.expressomail-module-container').find(".rule-list-container");
}
list_container = $(".expresso-window-filters").dialog({
width:700,
modal: true,
resizable: false,
closeOnEscape:true,
close:function(event, ui) {
event.stopPropagation();
if(list_container.find(".cancel").length)
list_container.find(".cancel").trigger('click');
$(".dialog-head-buttonpane").hide();
},
open: function () {
$(".ui-dialog .ui-dialog-titlebar")
.append('minimize')
.find('.ui-dialog-titlebar-minimize').click(function() {
$(".ui-dialog-buttonpane, .ui-dialog-content").toggle();
$(".ui-icon-minusthick, .ui-icon-newwin").toggleClass('ui-icon-minusthick').toggleClass('ui-icon-newwin');
});
$(".dialog-head-buttonpane").show();
},
autoOpen: false,
buttons: [{
text : "Fechar",
click : function() {
$( this ).dialog( "close" );
}
}]
});
$(".ui-dialog-titlebar").after("");
$(".dialog-head-buttonpane").css("padding", "5px").
find(".header-buttonpane").html("Nova regra"+(!outoffice ? "Fora do escritorio" : "")).find(".button").button();
$(".ui-dialog-buttonpane.ui-widget-content").css("background-color", "#E0EEEE");
var list = DataLayer.render( BASE_PATH + 'modules/filters/filter-list.ejs', DataLayer.get("filter:detail", true));
list_container.html(list).find(".button").button();
list_container.find(".rule-list").selectable({
selecting: function(event, ui) {
$(ui.selecting).find(':checkbox').attr('checked', true);
},
unselecting: function(event, ui) {
$(ui.unselecting).find(':checkbox').attr('checked', false);
}
});
list_container.find( ".menu-control .button" ).filter(".update").button({
icons: {
primary: "ui-icon-pencil"
},
text: false
}).click(function(){
var id = $(this).parents("li.rule").find('.id').val();
var filters = DataLayer.get( 'filter', true);
for(var i =0; i < filters.length; i++){
if(filters[i].id == id){
filters = filters[i];
break;
}
}
DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
var details_container = $(".expresso-window-filters").html(html);
if(filters.name != "vacation"){
form = container.find("form");
criterias = details_container.find( 'fieldset input[name="criteriaType[]"]' );
actions = details_container.find( 'fieldset input[name="actionType[]"]' );
nameObj = details_container.find( 'input[name="name"]' );
isExact = details_container.find( 'input[name="isExact"]' );
showDetails(filters);
var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
list_container.find(".button").button().filter(".forth").click(function(){
accord.accordion('activate',1);
}).end().filter(".back").click(function(){
accord.accordion('activate',0);
}).end().filter(".cancel").click(function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
}).end().filter(".submit").click(function(){
if(nameObj)
nameObj.attr("disabled", "false");
if(valid_save())
$(this).submit();
else
return;
DataLayer.commit( 'filter', false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
});
}else{
list_container.find(".vacation-details-container").removeClass("hidden");
list_container.find(".rule-details-container").addClass("hidden");
list_container.find(".button").button().filter(".back").click(function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
}).end().filter(".submit").click(function(){
$(this).submit();
DataLayer.commit( 'filter', false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
});
details_container.find('[name="vacation"]').val(filters.actions[0].parameter);
}
});
}).end()
.filter(".enable").button({
icons: {
primary: "ui-icon-circle-close"
},
text: false
}).click(function(){
var id = $(this).parents("li.rule").find('.id').val();
DataLayer.put( 'filter', id, { enabled: false });
DataLayer.commit("filter", false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
}).end()
.filter(".disable").button({
icons: {
primary: "ui-icon-circle-check"
},
text: false
}).click(function(){
var id = $(this).parents("li.rule").find('.id').val();
DataLayer.put( 'filter', id, { enabled: true });
DataLayer.commit("filter", false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
}).end()
.filter(".close").button({
icons: {
primary: "ui-icon-close"
},
text: false
}).click(function(event){
var filter_name = $(event.target).parents("li.rule").find('.id').val();
$.Zebra_Dialog("Deseja realmente excluir o filtro : "+filter_name+"",{
'type': 'question',
'title': 'Confirmação de Exclusão',
'buttons': [get_lang('Yes'), get_lang('No')],
'onClose': function(caption) {
if(caption == get_lang('Yes')){
DataLayer.remove( 'filter', filter_name);
DataLayer.commit("filter", false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
}else{
$(event.target).removeClass("ui-selected").parent().removeClass("ui-selected");
}
}
});
}).end().removeClass("ui-button-icon-only");
list_container.parent().find(".button.add:first").click(function(){
list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
list_container.html(html);
var accord = list_container.find(".rule-details-container").accordion({autoHeight: false});
list_container.find(".button").button().filter(".forth").click(function(){
accord.accordion('activate',1);
}).end().filter(".back").click(function(){
accord.accordion('activate',0);
}).end().filter(".cancel").click(function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
}).end().filter(".submit").click(function(){
if(valid_save())
$(this).submit();
else
return;
DataLayer.commit( 'filter',false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
});
});
});
list_container.parent().find(".button.add.vacation").click(function(){
list_container.parent().find(".dialog-head-buttonpane").addClass("hidden");
DataLayer.render( BASE_PATH + 'modules/filters/edit-filter.ejs', {folders : DataLayer.get("folder", true)},function(html){
list_container.html(html);
list_container.find(".vacation-details-container").removeClass("hidden");
list_container.find(".rule-details-container").addClass("hidden");
list_container.find(".button").button().filter(".back").click(function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
}).end().filter(".submit").click(function(){
$(this).submit();
DataLayer.commit( 'filter',false,function(){
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);
});
});
});
});
}
DataLayer.render( BASE_PATH + 'modules/filters/init.ejs', {},list_filters);