source: branches/2.4/prototype/modules/mail/js/followupflag.js @ 6653

Revision 6653, 21.9 KB checked in by eduardow, 12 years ago (diff)

Ticket #2906 - Verificar mensagem de erro ao usuario durante sinalização de mensagens.

  • Property svn:executable set to *
Line 
1MsgsCallbackFollowupflag = {
2                 
3    '#FollowupflagMessageIdError': function(){
4        alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém o atributo message-id.');
5    },
6    '#FollowupflagLimitError': function(){
7        alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: limite de flags atingido para esta pasta.');
8    },
9    '#FollowupflagParamsError': function(){
10        alert('Não foi possível sinalizar esta mensagem. \nDetalhes do erro: mensagem não contém todos os atributos necessários.');
11    }
12     
13}
14
15function updateCacheFollowupflag(msgNumber, msgFolder, op){
16        if(op){
17                if(typeof msgNumber == 'object'){
18                        var extend = DataLayer.get('followupflagged', {
19                                filter: ['AND', ['IN', 'messageNumber', msgNumber], ['IN', 'folderName', msgFolder]],
20                                criteria: {deepness: 1}
21                        }, true);
22                } else{
23                        var extend = DataLayer.get('followupflagged', {
24                                filter: ['AND', ['=', 'messageNumber', msgNumber], ['=', 'folderName', msgFolder]],
25                                criteria: {deepness: 1}
26                        }, true);
27                }
28
29               
30                if(extend != "" || extend != 'undefined' || extend != []){
31                        for(var i = 0; i < extend.length; i++){
32                                if(!(onceOpenedHeadersMessages[extend[i].folderName])){
33                                        onceOpenedHeadersMessages[extend[i].folderName] = {};
34                                }
35                                if(!(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber])){
36                                        onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber] = []; 
37                                }
38                                onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {};
39                                DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]);
40                               
41                                /*
42                                if(onceOpenedHeadersMessages[extend[i].folderName]){
43                                        if(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]){
44                                                onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {};
45                                                DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]);
46                                        }
47                                }*/
48
49                        }
50                }
51        }else{
52                onceOpenedHeadersMessages[msgFolder][msgNumber]['followupflagged'] = undefined;
53        }
54}
55
56function init_followup(data){
57
58        winElement = data.window;
59        selectedMessageIds = data.selectedMessages;
60        folder = current_folder;
61
62        /**
63         * Implementação do widget de input-combobox
64         */
65 
66        (function( $ ) {
67                $.widget( "ui.combobox", {
68                        _create: function() {
69                                var self = this,
70                                        select = this.element.hide(),
71                                        selected = select.children( ":selected" ),
72                                        value = selected.val() ? selected.text() : "";
73                                var input = this.input = $( "<input>" )
74                                        .insertAfter( select )
75                                        .val( value )
76                                        .autocomplete({
77                                                delay: 0,
78                                                minLength: 0,
79                                                source: function( request, response ) {
80                                                        var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
81                                                        response( select.children( "option" ).map(function() {
82                                                                var text = $( this ).text();
83                                                                if ( this.value && ( !request.term || matcher.test(text) ) )
84                                                                        return {
85                                                                                label: text.replace(
86                                                                                        new RegExp(
87                                                                                                "(?![^&;]+;)(?!<[^<>]*)(" +
88                                                                                                $.ui.autocomplete.escapeRegex(request.term) +
89                                                                                                ")(?![^<>]*>)(?![^&;]+;)", "gi"
90                                                                                        ), "<strong>$1</strong>" ),
91                                                                                value: text,
92                                                                                option: this
93                                                                        };
94                                                        }) );
95                                                },
96                                                select: function( event, ui ) {
97                                                        ui.item.option.selected = true;
98                                                        self._trigger( "selected", event, {
99                                                                item: ui.item.option
100                                                        });
101                                                },
102                                                change: function( event, ui ) {
103                                                        if ( !ui.item ) {
104                                                                var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
105                                                                        valid = false;
106                                                                select.children( "option" ).each(function() {
107                                                                        if ( $( this ).text().match( matcher ) ) {
108                                                                                this.selected = valid = true;
109                                                                                return false;
110                                                                        }
111                                                                });
112                                                                /*
113                                                                if ( !valid ) {
114                                                                        // remove invalid value, as it didn't match anything
115                                                                        $( this ).val( "" );
116                                                                        select.val( "" );
117                                                                        input.data( "autocomplete" ).term = "";
118                                                                        return false;
119                                                                }
120                                                                */
121                                                                if ( !valid ) {
122                                                                        if(select.has('option[value="custom"]').length > 0) {
123                                                                                select.find('option:last').val('custom').html($(this).val()).attr('selected', 'selected');
124                                                                        } else {
125                                                                                select.append(select.find('option:last').clone().val('custom').html($(this).val()));
126                                                                                select.find('option[value="custom"]').attr('selected', 'selected');
127                                                                        }
128                                                                }
129                                                        }
130                                                }
131                                        })
132                                        .addClass( "ui-widget ui-widget-content ui-corner-left" );
133
134                                input.data( "autocomplete" )._renderItem = function( ul, item ) {
135                                        return $( "<li></li>" )
136                                                .data( "item.autocomplete", item )
137                                                .append( "<a>" + item.label + "</a>" )
138                                                .appendTo( ul );
139                                };
140
141                                this.button = $( "<button type='button'>&nbsp;</button>" )
142                                        .attr( "tabIndex", -1 )
143                                        .attr( "title", "Show All Items" )
144                                        .insertAfter( input )
145                                        .button({
146                                                icons: {
147                                                        primary: "ui-icon-triangle-1-s"
148                                                },
149                                                text: false
150                                        })
151                                        .removeClass( "ui-corner-all" )
152                                        .addClass( "ui-corner-right ui-button-icon" )
153                                        .click(function() {
154                                                // close if already visible
155                                                if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
156                                                        input.autocomplete( "close" );
157                                                        return;
158                                                }
159
160                                                // work around a bug (likely same cause as #5265)
161                                                $( this ).blur();
162
163                                                // pass empty string as value to search for, displaying all results
164                                                input.autocomplete( "search", "" );
165                                                input.focus();
166                                        });
167                        },
168
169                        destroy: function() {
170                                this.input.remove();
171                                this.button.remove();
172                                this.element.show();
173                                $.Widget.prototype.destroy.call( this );
174                        }
175                });
176        })( jQuery );
177        /**
178         * #END: Implementação do widget de input-combobox
179         */
180
181        winElement.find('.button').button()
182        .filter('.menu-configure-followupflag .cancel').click(function(){
183                winElement.dialog("close");
184        }).end()
185       
186        .filter('.menu-configure-followupflag .save').click(function(){
187        var saveFollowupflagged = function(){
188                var idFollowupflagged = winElement.find('[name="followupflagId"]').val();
189                        idFollowupflagged = idFollowupflagged.split(',');
190                        for(x=0; x<idFollowupflagged.length; x++){
191                                (idFollowupflagged[x] == "false") ? idFollowupflagged[x] = false : idFollowupflagged;
192                        }
193                for(i=0; i<selectedMessageIds.length; i++){
194                                var isDone = winElement.find('[name="done"]').is(':checked') ? 1 : 0;
195                                var alarmDate = false;
196                                var doneDate  = false;
197                                var folder_name;
198                                var folders = [];
199                                var messages = [];
200                                var roles = get_selected_messages_search_role().split(',');
201                                for (var i=0; i < selectedMessageIds.length; i++ ){
202                                        if (currentTab == 0) {
203                                                folder_name = current_folder;
204                                                var messageNumber = selectedMessageIds[i];
205                                        }else{
206                                                var tr = $('[role="'+roles[i]+'"]');
207                                                folder_name = $(tr).attr('name');
208                                                var id = $(tr).attr('id');
209                                                var messageNumber = id.replace(/_[a-zA-Z0-9]+/,"");
210                                        }
211                                        folders.push(folder_name);
212                                       
213                                                var followupflagged = DataLayer.merge({
214                                                        uid : User.me.id,
215                                                        followupflagId : followupflagId,
216                                                        folderName : folder_name,
217                                                        messageNumber : messageNumber,
218                                                        isDone: isDone,
219                                                        backgroundColor : backgroundColor
220                                                }, !!idFollowupflagged[i] ? {id: idFollowupflagged[i]} : {});
221                                       
222                                        if (alarmDate = winElement.find('[name="alarmDate"]').datepicker("getDate")) {
223                                                if (alarmTime = winElement.find('[name="alarmTime"]').datepicker("getDate")) {
224                                                        alarmDate.set({hour:alarmTime.getHours(), minute:alarmTime.getMinutes()});
225                                                }
226                                                followupflagged.alarmDeadline = alarmDate.toString('yyyy-MM-dd HH:mm:ss');
227                                        }
228
229                                        if (doneDate = winElement.find('[name="doneDate"]').datepicker("getDate")) {
230                                                if (doneTime = winElement.find('[name="doneTime"]').datepicker("getDate")) {
231                                                        doneDate.set({hour:doneTime.getHours(), minute:doneTime.getMinutes()});
232                                                }
233                                                followupflagged.doneDeadline = doneDate.toString('yyyy-MM-dd HH:mm:ss');
234                                        }
235                                       
236                                        /**
237                                         * Aplica o ícone correspondente na lista de mensagens do expressoMail
238                                         */
239                                        if(current_folder == folder_name){
240                                                var flagged = $('#td_message_followup_' + messageNumber + ', tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).find(".flag-edited");
241                                        } else{
242                                                var flagged = $('tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).find(".flag-edited");
243                                        }
244                                        if(isDone){
245                                                flagged.find("img").attr("src", "../prototype/modules/mail/img/flagChecked.png").css("margin-left","-3px");
246                                        }else{
247                                                flagged.find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");                 
248                                        }
249                                       
250                                        var followupflagName = winElement.find('[name="name"] option:selected').text();
251                                        if(current_folder == folder_name){
252                                                $('#td_message_followup_' + messageNumber + ', ' +
253                                                'tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).attr('title', followupflagName).find(".flag-edited").css("background", backgroundColor);
254                                        }else{
255                                                $('tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).attr('title', followupflagName).find(".flag-edited").css("background", backgroundColor);
256                                        } 
257                                        /**
258                                         * Salva ou, caso já exista, atualiza
259                                         */
260                                        DataLayer.put('followupflagged', followupflagged);
261                                }
262                               
263                                DataLayer.commit(false, false, function(data){
264                                        winElement.find('.menu-configure-followupflag .delete').button("option", "disabled", false);
265                                        updateCacheFollowupflag(selectedMessageIds, folders, true);
266                                        winElement.dialog("close");
267                                        alarmFollowupflagged();
268                                });
269                                winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true);
270                               
271               
272                }
273    }
274                var backgroundColor = winElement.find('[name="backgroundColor"]').val();
275                var followupflagId  = winElement.find('[name="name"] option:selected').val();
276                if (followupflagId == 'custom') {
277                        DataLayer.put('followupflag', {name:winElement.find('[name="name"] option:selected').text(), uid:User.me.id});
278                        DataLayer.commit(false, false, function(data){
279                                $.each(data, function(index, value) {
280                                        if(typeof value == 'object'){
281                                                followupflagId = value.id;
282                                        }
283                                });
284                                winElement.find('[name="name"] option[value="custom"]').val(followupflagId);
285                                saveFollowupflagged();
286                        });
287                }else{
288                        saveFollowupflagged();
289                }       
290
291        }).end()
292       
293        .filter('.menu-configure-followupflag .delete').click(function(){
294                if (selectedMessageIds.length == 0) $(this).button("option", "disabled", true);
295                /** TODO Mudar quando melhorias forem implementadas na API de atualização do cache */
296                DataLayer.remove('followupflagged', false);
297                DataLayer.get('followupflagged');
298                var roles = get_selected_messages_search_role().split(',');
299                for (var i=0; i < selectedMessageIds.length; i++ ){
300                                if (currentTab == 0) {
301                                        folder_name = current_folder;
302                                        var messageNumber = selectedMessageIds[i];
303                                }else{
304                                        var tr = $('[role="'+roles[i]+'"]');
305                                        folder_name = $(tr).attr('name');
306                                        var id = $(tr).attr('id');
307                                        var messageNumber = id.replace(/_[a-zA-Z0-9]+/,"");
308                                }                               
309                               
310                        if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged']){
311                                if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id){
312                                        var flag_id = onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id;
313                                        DataLayer.remove('followupflagged', flag_id );
314                                        /**
315                                         * TODO - corrigir o formato do ID no DataLayer, para que seja utilizado o ID composto
316                                         * ao invés do ID do PostgreSQL atualmente em uso.
317                                         */
318                                         
319                                        /**
320                                         * # hack necessário enquanto o DataLayer não reconhece o ID composto. Trocar o
321                                         * código abaixo pela chamada trivial de DataLayer.remove('followupflagged', idCompost)
322                                         */
323                                        // var data = {};
324                                        // data[ 'followupflagged://' + folder_name + '/' + messageNumber + '#' + flag_id ] = false;
325                                        // DataLayer.dispatch('Sync', data, false, true);
326                                       
327                                        if(current_folder == folder_name){
328                                                $('#td_message_followup_' + messageNumber + ', ' +
329                                                  'tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).attr('title', '').find(".flag-edited").css("background", '#CCC');
330                                                $('#td_message_followup_' + messageNumber + ', ' +
331                                                        'tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).find(".flag-edited")
332                                                        .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");
333                                        }else{
334                                                $('tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).attr('title', '').find(".flag-edited").css("background", '#CCC');
335                                                $('tr[role="'+messageNumber+'_'+folder_name+'"] #td_message_followup_search_' + messageNumber).find(".flag-edited")
336                                                        .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");
337                                        }
338                                        updateCacheFollowupflag(messageNumber, folder_name, false);
339                                }
340                        }
341                }
342                DataLayer.commit(false, false, function(){
343                        winElement.dialog("close");
344                        alarmFollowupflagged();
345                });
346               
347        });
348       
349        /**
350         * Se houver mudança, habilita o botão "Save"
351         */
352        winElement.find(':input').change(function(event){
353                if (event.keyCode != '27' && event.keyCode != '13')
354                        winElement.find('.menu-configure-followupflag .save').button("option", "disabled", false);
355        }).keydown(function(event){
356                if (event.keyCode != '27' && event.keyCode != '13')
357                        winElement.find('.menu-configure-followupflag .save').button("option", "disabled", false);
358        });
359       
360        winElement.find('.date').datepicker();
361        winElement.find('.time').timepicker({});
362        winElement.find('[name="name"]').combobox()
363        //pega o botão criado
364        .next().next().click(function (event, ui){     
365                $(".ui-autocomplete.ui-menu li").css("position","relative");
366                $(".ui-autocomplete.ui-menu li a:gt(5)").append("<span class='ui-icon ui-icon-only ui-icon-close delete_followupflag'></span>").find("span").click(function(event){
367                        var id = $('.followupflag-configure').find('option')[$(this).parents('li').index()].value;
368                        var nameFollowupflag = $('.followupflag-configure').find('option')[$(this).parents('li').index()].text;
369                        var removeLi = $(this).parents("li");           
370                       
371                        $.Zebra_Dialog(get_lang('All messages flagged with the flag type ') + '<strong>'+ nameFollowupflag + '</strong>' + get_lang(' will be removed. This action cannot be undone. Want to continue?'), {
372                                'type':     'question',
373                                'custom_class': (is_ie ? 'configure-zebra-dialog' : ''),
374                                'title':    'Atenção',
375                                'buttons': ['Sim','Não'],               
376                                'overlay_opacity': '0.5',
377                                'onClose':  function(caption) {
378                                        if(caption == 'Sim'){
379                                                var listFollowupflag = DataLayer.get('followupflagged', ['=', 'followupflagId', id]);
380                                                for (var i=0; i < listFollowupflag.length; i++)
381                                                        DataLayer.remove('followupflagged', listFollowupflag[i].id);
382
383                                                DataLayer.remove('followupflag',false);                                 
384                                                DataLayer.get('followupflag');
385
386                                                DataLayer.remove('followupflag', ''+id);                                               
387                                                DataLayer.commit(false, false, function(data){
388                                                        $('[title="'+nameFollowupflag+'"]').attr('title', '').find('div').css({backgroundColor:'#CCC'});
389                                                        $(removeLi).remove();
390                                                        $('option[value="'+ id +'"]').remove();
391                                                        $('.ui-autocomplete.ui-menu li:first');
392                                                        $('.followupflag-configure').find('option:first').attr("selected","selected");                                                 
393                                                        $('.ui-autocomplete-input').val($('.followupflag-configure').find('option:selected').text());
394                                                       
395                                                        for(var i=0; i<listFollowupflag.length; i++){
396                                                                if(listFollowupflag[i].id == winElement.find('[name="followupflagId"]').val()){
397                                                                        winElement.find('[name="followupflagId"]').val("");
398                                                                }
399                                                        }                                               
400                                                });                     
401                                                event.stopImmediatePropagation();
402                                        }
403                                }
404                        });     
405                        if(is_ie)
406                                $(".ZebraDialogOverlay").css("z-index","1006");
407                });
408
409        });
410        winElement.find('.ui-corner-right.ui-button-icon').attr('title', get_lang('Show All Items'));
411
412        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
413       
414        winElement.find('[name="alarm"]').click(function(){
415                if($(this).is(":checked")){
416                        winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled");                       
417                }else{
418                        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
419                }
420        });
421        if(winElement.find('[name="alarm"]').is(":checked")){
422                winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled");
423        }
424        winElement.find('[name="done"]').click(function(){
425                if($(this).is(":checked")){
426                        winElement.find(".input-done input").attr("disabled","disabled");
427                }else{
428                        winElement.find(".input-done input").removeAttr("disabled");
429                }
430        });
431
432
433        winElement.find(".followupflag-color-fields").hide();
434        winElement.find(".followupflag-color.sample-list .sample-item").click(function(){
435                winElement.find('.menu-configure-followupflag .save').button("enable");
436                winElement.find(".followupflag-color.sample-list .sample-item").removeClass("selected");
437                $(this).addClass("selected");
438                var color = $(this).attr('alt');
439                winElement.find('[name="backgroundColor"]').css('background-color', color).val(color)
440        });
441       
442        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
443                               
444        winElement.find('[name="setColor"]').change(function(){
445                if(winElement.find('[name="setColor"]').val() == "default"){
446                        winElement.find(".followupflag-color.sample-list").show("fast");
447                        winElement.find(".followupflag-color-fields").hide();
448                        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
449                } else if(winElement.find('[name="setColor"]').val() == "custom"){     
450                        winElement.find(".followupflag-color-fields").show("fast");
451                        winElement.find(".followupflag-color.sample-list").hide();
452                        winElement.find(".colorwell").focus();
453                }               
454        });
455       
456        if(winElement.find('[name="setColor"] option:selected').val() == "custom"){
457                winElement.find('[name="setColor"]').trigger("change");
458        }
459
460        var colorpickerPreviewChange = function(color) {
461                winElement.find('.menu-configure-followupflag .save').button("enable");
462                winElement.find('.colorwell-selected').val(color).css('background-color', color);
463                winElement.find('.flag-color-preview').css('background',color);
464        }
465
466        var f = $.farbtastic(winElement.find('.colorpicker'), colorpickerPreviewChange);
467        var selected;                                   
468        winElement.find('.colorwell').each(function () {
469                f.linkTo(this);
470        }).focus(function() {
471                if (selected) {
472                        $(selected).removeClass('colorwell-selected');
473                }
474                $(selected = this).addClass('colorwell-selected');
475                f.linkTo(this, colorpickerPreviewChange);
476                f.linkTo(colorpickerPreviewChange);
477               
478        });
479        if(winElement.find('[name="setColor"] option:selected').val() == "custom"){
480                winElement.find(".colorwell").focus();
481        }
482
483}
484
485
486/**
487 * constrói as duas possíveis janela de alerta, utilizando o mesmo template
488 */
489function alarmFollowupflagged(){
490    $('.followupflag-alarm').remove();
491        var toIterate = [
492                {
493                        attrDeadline: 'doneDeadline',
494                        caption: {singular:'You have one undone message today:',
495                        plural:"You have %1 undone messages today:"
496                        },
497                        onOk: function(event){
498                                if($(event.target).parents('.doneDeadline').find('[name="stopAlert"]').is(':checked')){
499                                        $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), {
500                                                expires: 1
501                                        });
502                                }
503                        },
504                        enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy"))
505                },
506                {
507                        attrDeadline: 'alarmDeadline',
508                        caption: {
509                                singular:'You have a follow up due for today:',
510                                plural:'You have %1 follow ups due for today:'
511                        },
512                        onOk: function(event){
513                                if($(event.target).parents('.alarmDeadline').find('[name="stopAlert"]').is(':checked')){
514                                        $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), {
515                                                expires: 1
516                                        });
517                                }
518                        },
519                        enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy"))
520                }
521        ];
522        var i = 0;
523        while (it = toIterate.pop()){
524                if (!it.enable) continue;
525
526                var alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}});
527                if(alarmInRange.length > 0){
528                        for(var i=0; i<alarmInRange.length; i++){
529                                if(alarmInRange[i].isDone == 1){
530                                 alarmInRange.splice(i,1);
531                                 i--;
532                                }
533                        }
534                }
535                if(alarmInRange.length > 0){
536                        for(var i=0; i<alarmInRange.length; i++){
537                                var date = Date.parseExact(alarmInRange[i][it.attrDeadline], 'yyyy-MM-dd HH:mm:ss');
538                                if(date)
539                                        alarmInRange[i][it.attrDeadline] = date.toString('HH:mm');
540                        }
541                        var caption = (alarmInRange.length == 1) ?
542                                get_lang(it.caption.singular):
543                                get_lang(it.caption.plural, alarmInRange.length);
544                               
545                        var data = {
546                                alarmInRange : alarmInRange,
547                                caption: caption,
548                                it : it
549                        };
550                        var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data);
551                       
552                        /**
553                         * A última dialog criada é a dialog mais ao alto
554                         */
555                        var offsetHeight = $('.ZebraDialog.right-bottom:last').length ?
556                                $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0;
557
558                        /**
559                         * Se for a primeira, desloca para cima do rodapé do grid
560                         * caso contrário desloca para um pouco acima da última dialog criada
561                         */
562                        offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ;                 
563                        var dialog = new $.Zebra_Dialog(dialogText, {
564                                'buttons':  ['Ok'],
565                                'modal': false,
566                                'vcenter_short_message': false,
567                                'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ],
568                                'custom_class': 'right-bottom followupflag-alarm '+it.attrDeadline
569                        }).dialog;
570                        $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk);
571                        $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) {
572                                $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto');
573                        });
574                }               
575        }
576}
577$('#main_table').ready(function(){
578    alarmFollowupflagged();
579});
Note: See TracBrowser for help on using the repository browser.