source: trunk/prototype/modules/mail/js/followupflag.js @ 5547

Revision 5547, 15.3 KB checked in by douglasz, 12 years ago (diff)

Ticket #2486 - Atualizado o arquivo setup correções no salvamento de sinalizadores

  • Property svn:executable set to *
Line 
1//se  caso não existir nenhuma mensagem concluida para o dia atual, ele não mostra a modal.
2 if($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")){
3        var alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', 'alarmDeadline', (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', 'alarmDeadline', (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}});
4        if(alarmInRange.length > 0){
5                for(var i=0; i<alarmInRange.length; i++){
6                        var date = Date.parseExact(alarmInRange[i].alarmDeadline, 'yyyy-MM-dd hh:mm:ss');
7                        alarmInRange[i].alarmDeadline = date.toString('hh:mm');
8                }
9                var data = {alarmInRange : alarmInRange};
10                var valueZebra = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data);
11               
12                new $.Zebra_Dialog(valueZebra, {
13                'buttons':  ['Ok'],
14                'modal': false,
15                'position': ['right - 20', 'bottom - 30'],
16                'custom_class': 'zebraClass2',
17                });     
18               
19        $(".ZebraDialog_Body .footerMenos").hide()
20
21                $(".ZebraDialog_Body .footerMais").click(function(){
22                        $('.ZebraDialog').css('visibility','hidden');
23                        $(this).parents('.ZebraDialog').css("visibility","visible");
24                        $(this).parents('.ZebraDialog').animate( { top: '-=300px' } , 280)
25                        .find("ul.alert-flags").animate( { height: 375 } , 300);
26                        $(".ZebraDialog_Body .footerMais").hide();
27                        $(".ZebraDialog_Body .footerMenos").show();
28                });
29                $(".ZebraDialog_Body .footermenos").click(function(){
30                        $('.ZebraDialog').css('visibility','visible');
31                        $(this).parents('.ZebraDialog').animate( { top: '+=300px' } , 280)
32                        .find("ul.alert-flags").animate( { height: 70 } , 300);
33                       
34                        $(this).parents('.ZebraDialog').css({
35                        });
36                        $(".ZebraDialog_Body .footerMenos").hide();
37                        $(".ZebraDialog_Body .footerMais").show();
38                });
39               
40               
41                $("ul.alert-flags li").css({
42                        'width': '270px',
43                        'white-space': 'nowrap',
44                        'overflow': 'hidden',
45                        'text-overflow': 'ellipsis'
46                });
47               
48                $("span.exc-ocul").css({
49                        'float' : 'right',
50                        'margin-right' : '0',
51                        'color' : '#2363a4',
52                        'cursor' : 'pointer'
53                }).parent("ul").css();
54               
55                $(".zebraClass2 .ZebraDialog_Buttons .ZebraDialog_Button0").click(function(){
56                        var countCheckbox2 = $("input:checked").length;
57
58                        if(countCheckbox2 == 1){
59                                date2 = (new Date).toString("dd/MM/yyyy");
60                                $.cookie("fadeAlarm", date2 , { expires: 1 });
61                        }
62                });
63        }               
64}
65
66if($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")){     
67        var doneInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', 'doneDeadline', (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', 'doneDeadline', (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}});
68        if(doneInRange.length > 0){
69                for(var i=0; i<doneInRange.length; i++){
70                        var date = Date.parseExact(doneInRange[i].doneDeadline, 'yyyy-MM-dd hh:mm:ss');
71                        doneInRange[i].doneDeadline = date.toString('hh:mm');
72                }
73                var data = {doneInRange : doneInRange};
74                var valueZebra = DataLayer.render("../prototype/modules/mail/templates/followupflag_completed_list.ejs", data);
75               
76                //verificando se a primeira "model de alarme" está oculta ou não..
77                //caso ela esteja caira nesse primeiro if, que coloca a model de "concluidos" no lugar da model de alarme.
78                if($(".zebraClass2").length == 0){
79                        new $.Zebra_Dialog(valueZebra, {
80                                'buttons':  ['Ok'],
81                                'modal': false,
82                                'position': ['right - 20', 'bottom - 30' ],
83                                'custom_class': 'zebraClass',
84                                });             
85                }else{
86                        new $.Zebra_Dialog(valueZebra, {
87                                'buttons':  ['Ok'],
88                                'modal': false,
89                                'position': ['right - 20', 'bottom - 275' ],
90                                'custom_class': 'zebraClass',
91                                });     
92                }
93               
94        $(".ZebraDialog_Body .footerMenos2").hide()
95
96                $(".ZebraDialog_Body .footerMais2").click(function(){
97                        $('.ZebraDialog').css('visibility','hidden');
98                        $(this).parents('.ZebraDialog').css("visibility","visible");
99                        if($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")){
100                                $(this).parents('.ZebraDialog').animate( { top: '-=60px' } , 280)
101                                .find("ul.alert-flags").animate( { height: 360 } , 300);
102                        } else {
103                                $(this).parents('.ZebraDialog').animate( { top: '-=300px' } , 280)
104                                .find("ul.alert-flags").animate( { height: 360 } , 300);
105                        }
106                       
107                        $(".ZebraDialog_Body .footerMais2").hide();
108                        $(".ZebraDialog_Body .footerMenos2").show();
109                });
110                $(".ZebraDialog_Body .footermenos2").click(function(){
111                        $('.ZebraDialog').css('visibility','visible');
112                        if($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")){
113                                $(this).parents('.ZebraDialog').animate( { top: '+=60px' } , 280)
114                                .find("ul.alert-flags").animate( { height: 70 } , 300);
115                        } else {
116                                $(this).parents('.ZebraDialog').animate( { top: '+=300px' } , 280)
117                                .find("ul.alert-flags").animate( { height: 70 } , 300);
118                        }
119                        $(this).parents('.ZebraDialog').css({
120                        });
121                        $(".ZebraDialog_Body .footerMenos2").hide();
122                        $(".ZebraDialog_Body .footerMais2").show();
123                });
124               
125               
126                $("ul.alert-flags li").css({
127                        'width': '270px',
128                        'white-space': 'nowrap',
129                        'overflow': 'hidden',
130                        'text-overflow': 'ellipsis'
131                });
132               
133                $("span.exc-ocul").css({
134                        'float' : 'right',
135                        'margin-right' : '0',
136                        'color' : '#2363a4',
137                        'cursor' : 'pointer'
138                }).parent("ul").css();
139               
140                $(".zebraClass .ZebraDialog_Buttons .ZebraDialog_Button0").click(function(){
141               
142                        var countCheckbox1 = $("input:checked").length;
143
144                        if(countCheckbox1 == 1){
145                                date1 = (new Date).toString("dd/MM/yyyy");
146                                $.cookie("fadeCompleted", date1 , { expires: 1 });
147                        }
148                });
149        }               
150}
151function init_followup(data){
152
153        winElement = data.window;
154        selectedMessageIds = data.selectedMessages;
155        folder = current_folder;
156
157        /**
158         * Implementação do widget de input-combobox
159         */
160        (function( $ ) {
161                $.widget( "ui.combobox", {
162                        _create: function() {
163                                var self = this,
164                                        select = this.element.hide(),
165                                        selected = select.children( ":selected" ),
166                                        value = selected.val() ? selected.text() : "";
167                                var input = this.input = $( "<input>" )
168                                        .insertAfter( select )
169                                        .val( value )
170                                        .autocomplete({
171                                                delay: 0,
172                                                minLength: 0,
173                                                source: function( request, response ) {
174                                                        var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
175                                                        response( select.children( "option" ).map(function() {
176                                                                var text = $( this ).text();
177                                                                if ( this.value && ( !request.term || matcher.test(text) ) )
178                                                                        return {
179                                                                                label: text.replace(
180                                                                                        new RegExp(
181                                                                                                "(?![^&;]+;)(?!<[^<>]*)(" +
182                                                                                                $.ui.autocomplete.escapeRegex(request.term) +
183                                                                                                ")(?![^<>]*>)(?![^&;]+;)", "gi"
184                                                                                        ), "<strong>$1</strong>" ),
185                                                                                value: text,
186                                                                                option: this
187                                                                        };
188                                                        }) );
189                                                },
190                                                select: function( event, ui ) {
191                                                        ui.item.option.selected = true;
192                                                        self._trigger( "selected", event, {
193                                                                item: ui.item.option
194                                                        });
195                                                },
196                                                change: function( event, ui ) {
197                                                        if ( !ui.item ) {
198                                                                var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
199                                                                        valid = false;
200                                                                select.children( "option" ).each(function() {
201                                                                        if ( $( this ).text().match( matcher ) ) {
202                                                                                this.selected = valid = true;
203                                                                                return false;
204                                                                        }
205                                                                });
206                                                                if ( !valid ) {
207                                                                        // remove invalid value, as it didn't match anything
208                                                                        $( this ).val( "" );
209                                                                        select.val( "" );
210                                                                        input.data( "autocomplete" ).term = "";
211                                                                        return false;
212                                                                }
213                                                        }
214                                                }
215                                        })
216                                        .addClass( "ui-widget ui-widget-content ui-corner-left" );
217
218                                input.data( "autocomplete" )._renderItem = function( ul, item ) {
219                                        return $( "<li></li>" )
220                                                .data( "item.autocomplete", item )
221                                                .append( "<a>" + item.label + "</a>" )
222                                                .appendTo( ul );
223                                };
224
225                                this.button = $( "<button type='button'>&nbsp;</button>" )
226                                        .attr( "tabIndex", -1 )
227                                        .attr( "title", "Show All Items" )
228                                        .insertAfter( input )
229                                        .button({
230                                                icons: {
231                                                        primary: "ui-icon-triangle-1-s"
232                                                },
233                                                text: false
234                                        })
235                                        .removeClass( "ui-corner-all" )
236                                        .addClass( "ui-corner-right ui-button-icon" )
237                                        .click(function() {
238                                                // close if already visible
239                                                if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
240                                                        input.autocomplete( "close" );
241                                                        return;
242                                                }
243
244                                                // work around a bug (likely same cause as #5265)
245                                                $( this ).blur();
246
247                                                // pass empty string as value to search for, displaying all results
248                                                input.autocomplete( "search", "" );
249                                                input.focus();
250                                        });
251                        },
252
253                        destroy: function() {
254                                this.input.remove();
255                                this.button.remove();
256                                this.element.show();
257                                $.Widget.prototype.destroy.call( this );
258                        }
259                });
260        })( jQuery );
261        /**
262         * #END: Implementação do widget de input-combobox
263         */
264
265        winElement.find('.button').button()
266        .filter('.menu-configure-followupflag .cancel').click(function(){
267                winElement.dialog("close");
268        }).end()
269       
270        .filter('.menu-configure-followupflag .save').click(function(){
271                               
272                var backgroundColor = winElement.find('[name="backgroundColor"]').val();
273                var followupflagId  = winElement.find('[name="name"] option:selected').val();
274                var isDone = winElement.find('[name="done"]').is(':checked') ? 1 : 0;
275                var alarmDate = false;
276                var doneDate  = false;
277               
278                for (var i=0; i < selectedMessageIds.length; i++ ){
279                        var messageNumber   = selectedMessageIds[i];
280                        //var followupflag = DataLayer.get('followupflag', followupflagId.toString()),
281                        var idFollowupflagged = winElement.find('.id-followup').val();
282                        var followupflagged = DataLayer.merge({
283                                uid : User.me.id,
284                                followupflagId : followupflagId,
285                                folderName : current_folder,
286                                messageNumber : messageNumber,
287                                //alarmDeadline : winElement.find('[name="alarmDate"]').datepicker("getDate"),
288                                //doneDeadline: winElement.find('[name="doneDate"]').datepicker("getDate"),
289                                isDone: isDone,
290                                backgroundColor : backgroundColor
291                        }, !!idFollowupflagged ? {id: idFollowupflagged} : {});
292                       
293                        if (alarmDate = winElement.find('[name="alarmDate"]').datepicker("getDate")) {
294                                if (alarmTime = winElement.find('[name="alarmTime"]').datepicker("getDate")) {
295                                        alarmDate.set({hour:alarmTime.getHours(), minute:alarmTime.getMinutes()});
296                                }
297                                followupflagged.alarmDeadline = alarmDate.toString('yyyy-MM-dd hh:mm:ss');
298                        }
299
300                        if (doneDate = winElement.find('[name="doneDate"]').datepicker("getDate")) {
301                                if (doneTime = winElement.find('[name="doneTime"]').datepicker("getDate")) {
302                                        doneDate.set({hour:doneTime.getHours(), minute:doneTime.getMinutes()});
303                                }
304                                followupflagged.doneDeadline = doneDate.toString('yyyy-MM-dd hh:mm:ss');
305                        }
306                       
307                        var flagged = $('#td_message_followup_' + messageNumber + ', ' + '#td_message_followup_search_' + messageNumber).find(".flag-edited");
308                        if(isDone){
309                                flagged.find("img").attr("src", "../prototype/modules/mail/img/flagChecked.png").css("margin-left","-3px");
310                        }else{
311                                flagged.find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");                 
312                        }
313                       
314                        $('#td_message_followup_' + messageNumber + ', ' +
315                          '#td_message_followup_search_' + messageNumber).find(".flag-edited").css("background", backgroundColor);
316                         
317                        DataLayer.put('followupflagged', followupflagged);
318                }
319                DataLayer.commit(false, false, function(data){
320                        followupflags = DataLayer.get('followupflagged',{criteria:{order: 'id'}}, true);               
321                        var id = followupflags[followupflags.length - 1].id;
322                        winElement.find('.id-followup').val(id);
323                });             
324               
325                //onceOpenedHeadersMessages[current_folder][followupflagged.messageNumber]['followupflagged']['followupflag'] = {};
326                var extend = DataLayer.get('followupflagged', {
327                filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['=', 'folderName', current_folder]],criteria: {deepness: 1}});
328                if(extend != "" || extend != 'undefined' || extend != []){
329                        for(var ex = 0; ex < extend.length; ex++){
330                                onceOpenedHeadersMessages[current_folder][extend[ex].messageNumber]['followupflagged'] = {};
331                                DataLayer.merge(onceOpenedHeadersMessages[current_folder][extend[ex].messageNumber]['followupflagged'], extend[ex]);
332                        }
333                } else {
334                        alert('erro ao salvar');
335                }
336        }).end()
337       
338        .filter('.menu-configure-followupflag .delete').click(function(){
339                for(i = 0; i < selectedMessageIds.length; i++){
340                        var messageNumber   = selectedMessageIds[i];
341                        var flag_id = onceOpenedHeadersMessages[current_folder][messageNumber]['followupflagged'].id;
342                        var flagged = $('#td_message_followup_' + messageNumber + ', ' + '#td_message_followup_search_' + messageNumber).find(".flag-edited");
343                        DataLayer.remove('followupflagged', flag_id);
344                        flagged.css("background", '#cccccc');
345                        flagged.find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");
346                }
347                DataLayer.commit();
348                winElement.dialog("close");
349        });
350
351        winElement.find('.date').datepicker();
352        winElement.find('.time').timepicker({});
353        winElement.find('[name="name"]').combobox();
354       
355       
356        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
357        winElement.find('[name="alarm"]').click(function(){
358                if($(this).is(":checked")){
359                        winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled");                       
360                }else{
361                        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
362                }
363        });     
364        winElement.find('[name="done"]').click(function(){
365                if($(this).is(":checked")){
366                        winElement.find(".input-done input").attr("disabled","disabled");
367                }else{
368                        winElement.find(".input-done input").removeAttr("disabled");
369                }
370        });
371
372
373        winElement.find(".followupflag-color-fields").hide();
374        winElement.find(".followupflag-color.sample-list .sample-item").click(function(){
375                winElement.find(".followupflag-color.sample-list .sample-item").removeClass("selected");
376                $(this).addClass("selected");
377                var color = $(this).attr('alt');
378                winElement.find('[name="backgroundColor"]').css('background-color', color).val(color)
379        });
380       
381        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
382                               
383        winElement.find('[name="setColor"]').change(function(){         
384                if(winElement.find('[name="setColor"]').val() == "default"){
385                        winElement.find(".followupflag-color.sample-list").show("fast");
386                        winElement.find(".followupflag-color-fields").hide();
387                        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
388                } else if(winElement.find('[name="setColor"]').val() == "custom"){
389                        winElement.find(".followupflag-color-fields").show("fast");
390                        winElement.find(".followupflag-color.sample-list").hide();
391                        winElement.find(".colorwell").focus();
392                }               
393        });
394       
395        if(winElement.find("#selectCor option:selected").val() == "custom"){
396                winElement.find("#selectCor").trigger("change");
397        }
398
399        var colorpickerPreviewChange = function(color) {
400                winElement.find('.colorwell-selected').val(color).css('background-color', color);
401                winElement.find('.flag-color-preview').css('background',color);
402        }
403
404        var f = $.farbtastic(winElement.find('.colorpicker'), colorpickerPreviewChange);
405        var selected;                                   
406        winElement.find('.colorwell').each(function () {
407                f.linkTo(this);
408        }).focus(function() {
409                if (selected) {
410                        $(selected).removeClass('colorwell-selected');
411                }
412                $(selected = this).addClass('colorwell-selected');
413                f.linkTo(this, colorpickerPreviewChange);
414                f.linkTo(colorpickerPreviewChange);
415               
416        });
417        if(winElement.find("#selectCor option:selected").val() == "custom"){
418                winElement.find(".colorwell").focus();
419        }
420
421}
Note: See TracBrowser for help on using the repository browser.