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

Revision 5533, 14.9 KB checked in by douglasz, 12 years ago (diff)

Ticket #1875 - Commit inicial do codigo das funcionalidades de marcadores e 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 followupflagged = {
282                                uid : User.me.id,
283                                followupflagId : followupflagId,
284                                folderName : current_folder,
285                                messageNumber : messageNumber,
286                                //alarmDeadline : winElement.find('[name="alarmDate"]').datepicker("getDate"),
287                                //doneDeadline: winElement.find('[name="doneDate"]').datepicker("getDate"),
288                                isDone: isDone,
289                                backgroundColor : backgroundColor
290                        }
291                       
292                        if (alarmDate = winElement.find('[name="alarmDate"]').datepicker("getDate")) {
293                                if (alarmTime = winElement.find('[name="alarmTime"]').datepicker("getDate")) {
294                                        alarmDate.set({hour:alarmTime.getHours(), minute:alarmTime.getMinutes()});
295                                }
296                                followupflagged.alarmDeadline = alarmDate.toString('yyyy-MM-dd hh:mm:ss');
297                        }
298
299                        if (doneDate = winElement.find('[name="doneDate"]').datepicker("getDate")) {
300                                if (doneTime = winElement.find('[name="doneTime"]').datepicker("getDate")) {
301                                        doneDate.set({hour:doneTime.getHours(), minute:doneTime.getMinutes()});
302                                }
303                                followupflagged.doneDeadline = doneDate.toString('yyyy-MM-dd hh:mm:ss');
304                        }
305                       
306                        if(isDone){
307                                $('#td_message_followup_' + messageNumber + ', ' +
308                                '#td_message_followup_search_' + messageNumber).find(".flag-edited")
309                                .find("img").attr("src", "../prototype/modules/mail/img/flagChecked.png")
310                                .css("margin-left","-3px");
311                        }
312                       
313                        $('#td_message_followup_' + messageNumber + ', ' +
314                          '#td_message_followup_search_' + messageNumber).find(".flag-edited").css("background", backgroundColor);
315                         
316                        DataLayer.put('followupflagged', followupflagged);
317                }
318                DataLayer.commit();
319               
320                //onceOpenedHeadersMessages[current_folder][followupflagged.messageNumber]['followupflagged']['followupflag'] = {};
321                var extend = DataLayer.get('followupflagged', {
322                filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['=', 'folderName', current_folder]],criteria: {deepness: 1}});
323                if(extend != "" || extend != 'undefined' || extend != []){
324                        for(var ex = 0; ex < extend.length; ex++){
325                                onceOpenedHeadersMessages[current_folder][extend[ex].messageNumber]['followupflagged'] = {};
326                                DataLayer.merge(onceOpenedHeadersMessages[current_folder][extend[ex].messageNumber]['followupflagged'], extend[ex]);
327                        }
328                } else {
329                        alert('erro ao salvar');
330                }
331        }).end()
332       
333        .filter('.menu-configure-followupflag .delete').click(function(){
334                for(i = 0; i < selectedMessageIds.length; i++){
335                        var messageNumber   = selectedMessageIds[i];
336                        var flag_id = onceOpenedHeadersMessages[current_folder][messageNumber]['followupflagged'].id;
337                        DataLayer.remove('followupflagged', flag_id);
338                        $('#td_message_followup_' + messageNumber + ', ' +
339                          '#td_message_followup_search_' + messageNumber).find(".flag-edited").css("background", '#CCC');
340                        $('#td_message_followup_' + messageNumber + ', ' +
341                                '#td_message_followup_search_' + messageNumber).find(".flag-edited")
342                                .find("img").attr("src", "../prototype/modules/mail/img/flagEditor.png").css("margin-left","0");;
343                }
344                DataLayer.commit();
345                winElement.dialog("close");
346        });
347
348        winElement.find('.date').datepicker();
349        winElement.find('.time').timepicker({});
350        winElement.find('[name="name"]').combobox();
351       
352       
353        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
354        winElement.find('[name="alarm"]').click(function(){
355                if($(this).is(":checked")){
356                        winElement.find('[name="alarmDate"],[name="alarmTime"]').removeAttr("disabled");                       
357                }else{
358                        winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled");
359                }
360        });     
361        winElement.find('[name="done"]').click(function(){
362                if($(this).is(":checked")){
363                        winElement.find(".input-done input").attr("disabled","disabled");
364                }else{
365                        winElement.find(".input-done input").removeAttr("disabled");
366                }
367        });
368
369
370        winElement.find(".followupflag-color-fields").hide();
371        winElement.find(".followupflag-color.sample-list .sample-item").click(function(){
372                winElement.find(".followupflag-color.sample-list .sample-item").removeClass("selected");
373                $(this).addClass("selected");
374                var color = $(this).attr('alt');
375                winElement.find('[name="backgroundColor"]').css('background-color', color).val(color)
376        });
377       
378        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
379                               
380        winElement.find('[name="setColor"]').change(function(){         
381                if(winElement.find('[name="setColor"]').val() == "default"){
382                        winElement.find(".followupflag-color.sample-list").show("fast");
383                        winElement.find(".followupflag-color-fields").hide();
384                        winElement.find(".followupflag-color.sample-list .sample-item.selected").trigger('click');
385                } else if(winElement.find('[name="setColor"]').val() == "custom"){
386                        winElement.find(".followupflag-color-fields").show("fast");
387                        winElement.find(".followupflag-color.sample-list").hide();
388                        winElement.find(".colorwell").focus();
389                }               
390        });
391       
392        if(winElement.find("#selectCor option:selected").val() == "custom"){
393                winElement.find("#selectCor").trigger("change");
394        }
395
396        var colorpickerPreviewChange = function(color) {
397                winElement.find('.colorwell-selected').val(color).css('background-color', color);
398                winElement.find('.flag-color-preview').css('background',color);
399        }
400
401        var f = $.farbtastic(winElement.find('.colorpicker'), colorpickerPreviewChange);
402        var selected;                                   
403        winElement.find('.colorwell').each(function () {
404                f.linkTo(this);
405        }).focus(function() {
406                if (selected) {
407                        $(selected).removeClass('colorwell-selected');
408                }
409                $(selected = this).addClass('colorwell-selected');
410                f.linkTo(this, colorpickerPreviewChange);
411                f.linkTo(colorpickerPreviewChange);
412               
413        });
414        if(winElement.find("#selectCor option:selected").val() == "custom"){
415                winElement.find(".colorwell").focus();
416        }
417
418}
Note: See TracBrowser for help on using the repository browser.