MsgsCallbackFollowupflag = {
'#FollowupflagMessageIdError': function(){
alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém o atributo message-id.');
},
'#FollowupflagLimitError': function(){
alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: limite de flags atingido para esta pasta.');
},
'#FollowupflagParamsError': function(){
alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém todos os atributos necessários.');
}
}
function updateCacheFollowupflag(msgNumber, msgFolder, op){
if(op){
if(typeof msgNumber == 'object'){
var extend = DataLayer.get('followupflagged', {
filter: ['AND', ['IN', 'messageNumber', msgNumber], ['IN', 'folderName', msgFolder]],
criteria: {deepness: 1}
}, true);
} else{
var extend = DataLayer.get('followupflagged', {
filter: ['AND', ['=', 'messageNumber', msgNumber], ['=', 'folderName', msgFolder]],
criteria: {deepness: 1}
}, true);
}
if(extend != "" || extend != 'undefined' || extend != []){
for(var i = 0; i < extend.length; i++){
if(!(onceOpenedHeadersMessages[extend[i].folderName])){
onceOpenedHeadersMessages[extend[i].folderName] = {};
}
if(!(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber])){
onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber] = [];
}
onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {};
DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]);
/*
if(onceOpenedHeadersMessages[extend[i].folderName]){
if(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]){
onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {};
DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]);
}
}*/
}
}
}else{
onceOpenedHeadersMessages[msgFolder][msgNumber]['followupflagged'] = undefined;
}
}
function init_followup(data){
winElement = data.window;
selectedMessageIds = data.selectedMessages;
folder = current_folder;
/**
* Implementação do widget de input-combobox
*/
(function( $ ) {
$.widget( "ui.combobox", {
_create: function() {
var self = this,
select = this.element.hide(),
selected = select.children( ":selected" ),
value = selected.val() ? selected.text() : "";
var input = this.input = $( "" )
.insertAfter( select )
.val( value )
.autocomplete({
delay: 0,
minLength: 0,
source: function( request, response ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
response( select.children( "option" ).map(function() {
var text = $( this ).text();
if ( this.value && ( !request.term || matcher.test(text) ) )
return {
label: text.replace(
new RegExp(
"(?![^&;]+;)(?!<[^<>]*)(" +
$.ui.autocomplete.escapeRegex(request.term) +
")(?![^<>]*>)(?![^&;]+;)", "gi"
), "$1" ),
value: text,
option: this
};
}) );
},
select: function( event, ui ) {
ui.item.option.selected = true;
self._trigger( "selected", event, {
item: ui.item.option
});
},
change: function( event, ui ) {
if ( !ui.item ) {
var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
valid = false;
select.children( "option" ).each(function() {
if ( $( this ).text().match( matcher ) ) {
this.selected = valid = true;
return false;
}
});
/*
if ( !valid ) {
// remove invalid value, as it didn't match anything
$( this ).val( "" );
select.val( "" );
input.data( "autocomplete" ).term = "";
return false;
}
*/
if ( !valid ) {
if(select.has('option[value="custom"]').length > 0) {
select.find('option:last').val('custom').html($(this).val()).attr('selected', 'selected');
} else {
select.append(select.find('option:last').clone().val('custom').html($(this).val()));
select.find('option[value="custom"]').attr('selected', 'selected');
}
}
}
}
})
.addClass( "ui-widget ui-widget-content ui-corner-left" );
input.data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "
" )
.data( "item.autocomplete", item )
.append( "" + item.label + "" )
.appendTo( ul );
};
this.button = $( "" )
.attr( "tabIndex", -1 )
.attr( "title", "Show All Items" )
.insertAfter( input )
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass( "ui-corner-all" )
.addClass( "ui-corner-right ui-button-icon" )
.click(function() {
// close if already visible
if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
input.autocomplete( "close" );
return;
}
// work around a bug (likely same cause as #5265)
$( this ).blur();
// pass empty string as value to search for, displaying all results
input.autocomplete( "search", "" );
input.focus();
});
},
destroy: function() {
this.input.remove();
this.button.remove();
this.element.show();
$.Widget.prototype.destroy.call( this );
}
});
})( jQuery );
/**
* #END: Implementação do widget de input-combobox
*/
winElement.find('input[name="alarmDate"]').change(function(event){
winElement.find('input[name="alarmTime"]').attr('disabled', ( $(this).val() == "" ? 'disabled' : false));
});
winElement.find('input[name="alarmDate"]').keyup(function(event){
winElement.find('input[name="alarmTime"]').attr('disabled', ( $(this).val() == "" ? 'disabled' : false)).val('');
});
winElement.find('.button').button()
.filter('.menu-configure-followupflag .cancel').click(function(){
winElement.dialog("close");
}).end()
.filter('.menu-configure-followupflag .save').click(function(){
var saveFollowupflagged = function(){
var idFollowupflagged = winElement.find('[name="followupflagId"]').val();
idFollowupflagged = idFollowupflagged.split(',');
for(x=0; x").find("span").click(function(event){
var id = $('.followupflag-configure').find('option')[$(this).parents('li').index()].value;
var nameFollowupflag = $('.followupflag-configure').find('option')[$(this).parents('li').index()].text;
var removeLi = $(this).parents("li");
$.Zebra_Dialog(get_lang('All messages flagged with the flag type ') + ''+ nameFollowupflag + '' + get_lang(' will be removed. This action cannot be undone. Want to continue?'), {
'type': 'question',
'custom_class': (is_ie ? 'configure-zebra-dialog' : ''),
'title': 'Atenção',
'buttons': ['Sim','Não'],
'overlay_opacity': '0.5',
'onClose': function(caption) {
if(caption == 'Sim'){
var listFollowupflag = DataLayer.get('followupflagged', ['=', 'followupflagId', id]);
for (var i=0; i < listFollowupflag.length; i++)
DataLayer.remove('followupflagged', listFollowupflag[i].id);
DataLayer.remove('followupflag',false);
DataLayer.get('followupflag');
DataLayer.remove('followupflag', ''+id);
DataLayer.commit(false, false, function(data){
$('[title="'+nameFollowupflag+'"]').attr('title', '').find('div').css({backgroundColor:'#CCC'});
$(removeLi).remove();
$('option[value="'+ id +'"]').remove();
$('.ui-autocomplete.ui-menu li:first');
$('.followupflag-configure').find('option:first').attr("selected","selected");
$('.ui-autocomplete-input').val($('.followupflag-configure').find('option:selected').text());
for(var i=0; i 0){
var itens = [];
for(var i = 0; i < alarms.length; i++){
var date = Date.parseExact(alarms[i]['alarmDeadline'], 'yyyy-MM-dd HH:mm:ss');
alarms[i]['alarmDeadline'] = date.toString('dd/MM HH:mm');
var nameFollowupflag = alarms[i]['followupflag']['id'] < 7 ? get_lang(alarms[i]['followupflag']['name']) : alarms[i]['followupflag']['name'];
var li_alarm = alarms[i]['alarmDeadline'] + ' - ' + nameFollowupflag + ' - ' + alarms[i]['message']['headers']['subject'];
if(alarms[i]['doneDeadline'] != ''){
var dateDone = Date.parseExact(alarms[i]['doneDeadline'], 'yyyy-MM-dd HH:mm:ss');
if(dateDone.getTime() < $.now())
continue;
}
if(date.getTime() <= $.now())
decodeAlarms.sent.push({
"msg_number" : alarms[i]['messageNumber'],
"msg_folder" : alarms[i]['folderName'],
"a" : truncate(li_alarm, 34),
'id' : alarms[i].id
});
else
decodeAlarms.task.push({
a: truncate(li_alarm, 34),
sentTime: date.getTime() / 1000,
id: alarms[i].id,
'msg_folder': alarms[i].folderName,
'msg_number': alarms[i].messageNumber
});
}
if(decodeAlarms.task.length)
alarmDeadline.load(decodeAlarms.task);
if(decodeAlarms.sent.length)
data.alarmDeadline = {
alarms: decodeAlarms.sent,
title: get_lang('Follow ups'),
caption: (itens.length == 1) ? get_lang('You have one undone message today:') : get_lang('You have %1 follow ups due for today:', decodeAlarms.sent.length),
type: 'alarmDeadline'
};
else
data.alarmDeadline = false;
}else
data.alarmDeadline = false;
}
if(data.doneDeadline){
alarms = DataLayer.get('followupflagged', {filter: ['AND', ['>', 'doneDeadline', startDate], ['<', 'doneDeadline', endDate]], criteria: {deepness: 1}});
if(alarms.length > 0){
var itens = [];
for(var i = 0; i < alarms.length; i++){
var date = Date.parseExact(alarms[i]['doneDeadline'], 'yyyy-MM-dd HH:mm:ss');
alarms[i]['doneDeadline'] = date.toString('dd/MM HH:mm');
var nameFollowupflag = alarms[i]['followupflag']['id'] < 7 ? get_lang(alarms[i]['followupflag']['name']) : alarms[i]['followupflag']['name'];
var li_alarm = alarms[i]['doneDeadline'] + ' - ' + nameFollowupflag + ' - ' + truncate(alarms[i]['message']['headers']['subject'], 15);
itens.push({
a: truncate(li_alarm, 34),
id: alarms[i].id,
'msg_folder': alarms[i].folderName,
'msg_number': alarms[i].messageNumber
});
}
data.doneDeadline = {
alarms: itens,
title: get_lang('Done'),
caption: (itens.length == 1) ? get_lang('You have one undone message today:') : get_lang('You have %1 follow ups due for today:', itens.length),
type: 'doneDeadline'
};
}else
data.doneDeadline = false;
}
if(data.filtersAlarms){
alarms = filter_list;
if(alarms.length > 0){
var itens = [];
for(var i=0; i 0){
if($('.gray').hasClass('filtersDeadline')){
$('.filtersDeadline').find('.content-alarm').show();
$('.filtersDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm');
}else if($('.gray').hasClass('alarmDeadline')){
$('.alarmDeadline').find('.content-alarm').show();
$('.alarmDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm');
}else if($('.gray').hasClass('doneDeadline')){
$('.doneDeadline').find('.content-alarm').show();
$('.doneDeadline .header-alarm [name="header-icon"]').removeClass('maximize-alarm').addClass('minimize-alarm');
}
}
}
function showAlarmsModal(alarm){
var ok_function = function(event, type, type_cookie){
if($(event.target).parents('.'+type).find('[name="stopAlert"]').is(':checked')){
$.cookie(type_cookie, (new Date).toString("dd/MM/yyyy"), {
expires: 1
});
}
}
// carrega o template dos alarmes e cria a modal utilizando o plugin freeow
var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", alarm);
var titulo = '';
$("#freeow").freeow(titulo, dialogText, {
classes: ["gray", alarm.type],
autoHide: false,
startStyle: null,
onClick: function(event){
var type = '';
var type_cookie = '';
if($(this).hasClass('alarmDeadline')){
type = 'alarmDeadline';
type_cookie = 'fadeAlarm';
}else if($(this).hasClass('doneDeadline')){
type = 'doneDeadline';
type_cookie = 'fadeCompleted';
}else if($(this).hasClass('filtersDeadline')){
type = 'filtersDeadline';
type_cookie = 'fadeFilterAlarm';
}
if($(event.target).hasClass('stop-alert-alarm')){
return;
}
if($(event.target).hasClass('minimize-alarm')){
$('.'+type).find('.content-alarm').hide();
$(event.target).removeClass('minimize-alarm').addClass('maximize-alarm');
return;
}
if($(event.target).hasClass('maximize-alarm')){
$('.'+type).find('.content-alarm').show();
$(event.target).removeClass('maximize-alarm').addClass('minimize-alarm');
return;
}
if($(( !!$.browser.safari ) ? event.target.parentElement : event.target).hasClass('confirm-alarm')){
ok_function(event, type, type_cookie);
$('.'+type).remove();
return;
}
return false;
}
});
// elementos do freeow desnecessários
$('.gray .background .content p').remove();
$('.gray .icon').remove();
$('.gray .close').remove();
$('div.gray.alarmDeadline .button.delete').button({
text: false,
icons:{
primary: 'ui-icon-close'
}
})
// botão ok da modal com jquery button
$('.content-alarm button').button();
}
function cancelAlarm(element, idAlarm, messageNumber, folderName){
$(element).parents('li').remove();
var view = 'div.gray.alarmDeadline';
var length = $(view).find('ul.message-list li').length;
if(length > 0){
var msg = '';
if(length == 1)
msg = get_lang( 'You have a follow up due for today:');
else
msg = get_lang('You have %1 follow ups due for today:', length);
$(view).find('span.subtitle-alarm strong').html(msg);
}else
$(view).remove();
DataLayer.put('followupflagged',
{
id: idAlarm ,
isSent: '1',
folderName: folderName,
messageNumber: messageNumber,
uid: User.me.uid
});
DataLayer.commit();
}
alarmDeadline = {
load: function(alarm){
var currentDate = new Date().toString("dd/MM/yyyy")
if($.cookie("fadeAlarm") != currentDate)
for(var i = 0; i < alarm.length; i++)
this.addAlarm( alarm[i] );
},
addAlarm: function(alarm){
DataLayer.task( parseInt(alarm['sentTime']) , function( timestamp ){
var view = 'div.gray.alarmDeadline';
if(!$(view+' li.message-item.'+alarm.id).length){
var currentDate = new Date().toString("dd/MM/yyyy")
if($.cookie("fadeAlarm") != currentDate)
if($('div.gray.alarmDeadline').length){
$(view).find('ul.message-list').append(DataLayer.render("../prototype/modules/mail/templates/followupflag_alarmDeadline_add_item_list.ejs", alarm))
var length = $(view).find('ul.message-list li').length;
var msg = '';
if(length == 1)
msg = get_lang( 'You have a follow up due for today:');
else
msg = get_lang('You have %1 follow ups due for today:', length);
$(view).find('span.subtitle-alarm strong').html(msg);
$(view+' .button.delete').button({
text: false,
icons:{
primary: 'ui-icon-close'
}
});
}else{
var item = {
alarms: [alarm],
title: get_lang('Follow ups'),
caption: get_lang('You have one undone message today:'),
type: 'alarmDeadline'
};
showAlarmsModal(item);
}
}
});
}
}
$('#main_table').ready(function(){
handlerMessageFilter = function (data) {
alarmFollowupflagged(null, data);
}
/* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */
cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter);
});