source: sandbox/2.4.2-expresso1/prototype/modules/calendar/js/activity.helpers.js @ 6881

Revision 6881, 26.2 KB checked in by thiago, 12 years ago (diff)

Ticket #2966 - Implementado a nova tela de atividades.

  • Property svn:executable set to *
Line 
1function activityDetails( objEvent, decoded, path, isMail, repeat){
2
3
4    attendees = {};
5       
6    if(path == undefined)
7        path = "";
8               
9    if( !decoded )
10        objEvent = DataLayer.decode( "schedulable:calendar", objEvent );
11
12    if(!isMail)
13        objEvent = DataLayer.encode( "schedulable:preview", objEvent );
14       
15    if(typeof(objEvent.id) == 'undefined'){
16                objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false;
17                objEvent.useAlarmDefault = 1;
18                //Código provisório ... Mockup
19                objEvent.alarms.taskActivity = {};
20    }
21       
22    /**
23         * canDiscardEventDialog deve ser true se não houver alterações no evento
24         */
25    canDiscardEventDialog = true;
26    /**
27         * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog)
28         * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la
29         */
30    zebraDiscardEventDialog = false;
31       
32    /**
33                ACLs do participant
34        */
35    acl_names = {
36        'w': 'acl-white',
37        'i': 'acl-invite-guests',
38        'p': 'acl-participation-required'
39    };
40
41
42var callbackAttendee = function(){
43        //Cria qtip de permissões pelo click do checkbox
44        var checked = false;
45        blkAddAtendee.find("li.not-activity").addClass('hidden');
46       
47        blkAddAtendee.find("li .button").filter(".close.new").button({
48            icons: {
49                primary: "ui-icon-close"
50            },
51            text: false
52        }).click(function () {
53            DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
54            if($(this).parent().find('.button.delegate').hasClass('activity-permissions-change-button')){
55                removeOthers();
56                blkAddAtendee.find('.request-update').addClass('hidden');
57                blkAddAtendee.find('.status option').toggleClass('hidden');
58                               
59                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
60            }
61                       
62            $(this).parents('li').remove();
63                       
64            if(blkAddAtendee.find(".activity-list li").length == 1)
65                blkAddAtendee.find("li.not-activity").removeClass('hidden');
66        })
67        .addClass('tiny disable ui-button-disabled ui-state-disabled')
68        .removeClass('new').end()
69       
70        .filter(".delegate.new").button({
71            icons: {
72                primary: "ui-icon-transferthick-e-w"
73            },
74            text: false
75        }).click(function () {
76            var me = $(this).parents('li');
77            if($(this).hasClass('activity-permissions-change-button')){
78                $(this).removeClass('activity-permissions-change-button')   
79                    .find('.ui-icon-transferthick-e-w').removeClass('activity-permissions-change').end();               
80               
81                me.find('input[name="delegatedFrom[]"]').val('');
82                dependsDelegate(me, true);
83                               
84                blkAddAtendee.find('.request-update').addClass('hidden');
85                blkAddAtendee.find('.status option').toggleClass('hidden');
86
87                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
88                               
89            }else{
90                removeOthers();
91                       
92                $(this).addClass('activity-permissions-change-button')   
93                .find('.ui-icon-transferthick-e-w').addClass('activity-permissions-change').end();               
94               
95                me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
96               
97                dependsDelegate(me, false);
98                       
99                blkAddAtendee.find('.request-update').removeClass('hidden');
100                if(blkAddAtendee.find('.status option.hidden').length == 1)
101                    blkAddAtendee.find('.status option').toggleClass('hidden');
102                       
103                blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');
104            }
105        })
106        .addClass('tiny disable ui-button-disabled ui-state-disabled')
107        .removeClass('new').end()
108               
109        .filter(".edit.new").button({
110            icons: {
111                primary: "ui-icon-notice"
112            },
113            text: false
114        }).click(function() {
115
116                console.log($(this).parents("li").position().top);
117
118                var positionY = $(this).parents("li").offset().top;
119
120            if(!!!checked)
121                $(this).parents('li').find('[type=checkbox]').attr('checked', (!$(this).parent().find('[type=checkbox]').is(':checked'))).end();
122               
123                var name = $(this).parents('li').find("div").find(".name").text();
124                var email = $(this).parents('li').find("div").find(".mail").text()
125            //var aclsParticipant =  $(this).parents('li')
126            checked = false;
127                       
128            if( $('.qtip.qtip-blue.qtip-active').val() !== ''){
129                $(this).qtip({
130                    show: {
131                    ready: true,
132                        solo: true,
133            when: {
134                    event: 'click'
135                    }
136                },
137                hide: false,
138                content: {
139                                text: $('<div></div>').html( DataLayer.render( path + 'templates/activity_information_task.ejs', {
140                                        'name' : name
141                                } ) ),
142                                title: {
143                                        text:'Informações',
144                                        button: '<a class="button close" href="#">close</a>'
145                                }
146                },
147                style: {
148                name: 'blue',
149                    tip: {
150                                corner: 'leftMiddle'
151                        },
152                    border: {
153                                width: 4,
154                            radius: 8
155                        },
156                    width: {
157                                min: 230,
158                            max:230
159                        }
160            },
161            position: {
162            corner: {
163            target: 'rightMiddle',
164            tooltip: 'leftMiddle'
165            },
166            adjust: {
167                    x: 30,
168                    y: 0
169            }
170            }
171            })
172        .qtip("api").onShow = function(arg0) {
173            $('.qtip-active .button.close').button({
174                icons: {
175                    primary: "ui-icon-close"
176                },
177                text: false
178            })
179            .click(function(){
180                blkAddAtendee.find('dd.task-activity-list').qtip('destroy');
181            });
182                                       
183            $('.qtip-active .button.save').button().click(function(){
184                                               
185                var acl = '';
186                $('.qtip-active').find('[type=checkbox]:checked').each(function(i, obj) {
187                    acl+= obj.value;
188                });
189
190                blkAddAtendee.find('dd.task-activity-list [type=checkbox]:checked').siblings('input[name="attendeeAcl[]"]').each(function(i, obj) {
191                    obj.value = 'r'+acl;
192                }).parents('li').find('.button.edit').addClass('activity-permissions-change-button')   
193                .find('.ui-icon-key').addClass('activity-permissions-change');               
194                                               
195                blkAddAtendee.find('dd.task-activity-list [type=checkbox]').attr('checked', false);
196                                               
197                blkAddAtendee.find('dd.task-activity-list').qtip('destroy');
198                                       
199            });
200            $('.qtip-active .button.cancel').button().click(function(){
201                blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false);
202                blkAddAtendee.find('dd.activity-list').qtip('destroy');
203            });
204                                       
205            if(aclsParticipant)
206                for(var i = 1; i < aclsParticipant.length; i++){
207                    $('.qtip-active').find('input[name="'+acl_names[aclsParticipant.charAt(i)]+'"]').attr('checked', true);
208                }
209                                                       
210            $('.qtip .button').button();
211                                       
212        };
213        }else{
214            if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){
215                blkAddAtendee.find('dd.attendee-list').qtip('destroy');
216            }else{
217                $('.qtip-active .button.save .ui-button-text').html('Aplicar a todos')
218            }
219                       
220        };                     
221    })
222.addClass('tiny disable ui-button-disabled ui-state-disabled')
223.removeClass('new').end()
224               
225.filter(".open-delegate.new").click(function(){
226    if($(this).hasClass('ui-icon-triangle-1-e')){
227        $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
228        $(this).parents('li').find('.list-delegates').removeClass('hidden');
229    }else{
230        $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
231        $(this).parents('li').find('.list-delegates').addClass('hidden');
232    }
233               
234}).removeClass('new');
235       
236       
237blkAddAtendee.find("li input[type=checkbox].new").click(function(){
238    if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){
239        blkAddAtendee.find('dd.task-activity-list').qtip('destroy');
240    }else{
241        checked = true;
242        $(this).parents('li').find('.button.edit').click();
243    }
244}).removeClass('new');
245       
246UI.dialogs.addActivity.find('.task-activity-list li').hover(
247    function () {
248        $(this).addClass("hover-activity");
249        $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end()
250        .find('.activity-options').addClass('hover-activity');
251    },
252    function () {
253        $(this).removeClass("hover-activity");
254        $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end()
255        .find('.activity-options').removeClass('hover-activity');;
256    }
257    );
258       
259}
260    var dependsDelegate = function(reference, inverse){
261        if(inverse){
262            if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
263                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
264        }else{
265            if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
266                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val());
267        }
268       
269    };
270   
271    var removeOthers = function(){
272        var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button');
273        if(other.lenght){
274            dependsDelegate(other.parents('li'), true);
275        }
276        blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button');
277        blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change');
278       
279    };
280       
281        var html = DataLayer.render( path+'templates/activity_add.ejs', {
282            event:objEvent
283        });     
284                       
285        if (!UI.dialogs.addActivity) {
286
287            UI.dialogs.addActivity = jQuery('#sandbox').append('<div title="Criar Atividade" class="new-activity-win active"> <div>').find('.new-activity-win.active').html(html).dialog({
288                resizable: false,
289                modal:true,
290                autoOpen: false,
291                width:734,
292                position: 'center',
293                close: function(event, ui) {
294                        /**
295                         * Remove tooltip possivelmente existente
296                         */
297                        if ($('.qtip.qtip-blue.qtip-active').length)
298                                $('.qtip.qtip-blue.qtip-active').qtip('destroy');                                               
299                        attendees  = {};
300                },
301                beforeClose: function(event, ui) {
302               
303                    if (!canDiscardEventDialog && !zebraDiscardEventDialog) {
304                        zebraDiscardEventDialog = true;
305                        window.setTimeout(function() {
306                            $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', {
307                                'type':     'question',
308                                'overlay_opacity': '0.5',
309                                'buttons':  ['Descartar alterações', 'Continuar editando'],
310                                'onClose':  function(clicked) {
311                                    if(clicked == 'Descartar alterações') {
312                                        canDiscardEventDialog = true;
313                                        /**
314                                        *Remoção dos anexos do eventos caso seja cancelado a edição
315                                        */
316                                        DataLayer.rollback();
317
318                                        var ids = false;
319                                        $.each($('.attachment-list input'), function (i, input) {
320                                            DataLayer.put('attachment', {id: ''+input.value});
321                                            DataLayer.remove('attachment', ''+input.value);
322                                                ids = true;
323                                        });
324                                        if(ids)
325                                                DataLayer.commit();
326                               
327                                       
328                                                                                       
329                                        UI.dialogs.addActivity.dialog('close');
330                                    }else{
331                                        zebraDiscardEventDialog = false;
332                                    }
333                                                                               
334                                    /**
335                                    * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la
336                                    * com ESC, para que o evento ESC não seja propagado para fechamento da
337                                    * janela de edição de eventos, deve ser setada uma flag indicando que
338                                    * já existe uma janela de confirmação aberta.
339                                    */
340                                    if (!clicked) {
341                                        window.setTimeout(function() {
342                                            zebraDiscardEventDialog = false;
343                                        }, 200);
344                                    }
345                                }
346                            });
347                                                               
348                        }, 300);
349
350                    }
351                    //DataLayer.rollback();
352                    return canDiscardEventDialog;
353                },
354                dragStart: function(event, ui) {
355                        if ($('.qtip.qtip-blue.qtip-active').length)
356                                $('.qtip.qtip-blue.qtip-active').qtip('destroy');
357                }
358            });
359                               
360        } else {
361            UI.dialogs.addActivity.html(html);
362        }
363               
364var tabs = UI.dialogs.addActivity.children('.content').tabs({
365        select: function(event, ui) {
366                if ($('.qtip.qtip-blue.qtip-active').length)
367                        $('.qtip.qtip-blue.qtip-active').qtip('destroy');
368        }       
369        });
370var calendar = DataLayer.get('calendar', objEvent.calendar);
371                               
372if (calendar.timezone != objEvent.timezone){
373    UI.dialogs.addActivity.find('.calendar_addactivity_details_lnk_timezone').find('option[value="'+objEvent.timezone+'"]').attr('selected','selected').trigger('change');
374    UI.dialogs.addActivity.find('.calendar_addactivity_details_lnk_timezone').addClass('hidden');
375    $('.calendar-addevent-details-txt-timezone').removeClass('hidden');
376                       
377}
378
379UI.dialogs.addActivity.find('.calendar_addactivity_details_lnk_timezone').click(function(e){
380    $(this).addClass('hidden');
381    $('.calendar-addactivity-details-txt-timezone').removeClass('hidden');
382    e.preventDefault();
383});
384
385/*Seleciona a agenda padrão para visualização/edição de um evento*/
386if(objEvent.id)
387    UI.dialogs.addActivity.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change');
388
389/* Checkbox allday */
390
391UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){
392    $(this).attr("checked") ?
393    UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') :
394    UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden');
395    updateMap(true);
396});
397
398UI.dialogs.addActivity.find('.button').button();
399UI.dialogs.addActivity.find('.button.add').button({
400    icons: {
401        secondary: "ui-icon-plus"
402    }
403});
404
405// ==== validation events ====
406UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem título");
407if(User.preferences.hourFormat.length == 5) {
408    UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99", {
409        completed: function(){
410            updateMap();
411        }
412    });
413} else {
414    $.mask.definitions['{']='[ap]';
415    $.mask.definitions['}']='[m]';
416    UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99 {}", {
417        completed:function(){
418            $(this).val(date.Calendar.defaultToAmPm($(this).val()));
419            $(this).timepicker("refresh");
420            $(this).val($(this).val().replace(/[\.]/gi, ""));
421            updateMap();
422        }
423    });
424}
425UI.dialogs.addActivity.find(".number").numeric();
426User.preferences.dateFormat.indexOf('-') > 0 ?
427UI.dialogs.addActivity.find(".date").mask("99-99-9999", {
428    completed:function(){
429        updateMap();
430    }
431}) :
432UI.dialogs.addActivity.find(".date").mask("99/99/9999", {
433    completed:function(){
434        updateMap();
435    }
436});
437
438UI.dialogs.addActivity.find(".menu-addActivity")
439.children(".delete").click(function(){
440    $.Zebra_Dialog('Tem certeza que deseja excluir a atividade?', {
441        'type':     'question',
442        'overlay_opacity': '0.5',
443        'buttons':  ['Sim', 'Não'],
444        'onClose':  function(clicked) {
445            if(clicked == 'Sim'){
446                canDiscardEventDialog = true;
447                /* Remove por filtro */
448                DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]});
449                Calendar.rerenderView(true);
450                /********************/
451                UI.dialogs.addActivity.dialog("close");
452            }
453        }
454    });
455}).end()
456           
457.children(".cancel").click(function(){
458    UI.dialogs.addActivity.dialog("close");
459}).end()
460           
461.children(".save").click(function(){
462    /* Validação */
463    var msg = false;                   
464    if(msg = validDateEvent()){
465        $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);
466        return false;
467    }
468                       
469    canDiscardEventDialog = true;
470                       
471    var exit = function(event){
472        if(event)
473            DataLayer.remove('schedulable', event, false);
474
475        UI.dialogs.addActivity.children().find('form.form-addevent').submit();
476        UI.dialogs.addActivity.dialog("close");    }
477                       
478    if(repeat){
479        DataLayer.remove('repeat', false);
480        DataLayer.put('repeat', repeat);
481        DataLayer.commit('repeat', false, exit(repeat.schedulable));
482    }else
483        exit();
484}).end()
485               
486.children(".export").click(function(){
487    UI.dialogs.addActivity.children().find(".form-export").submit();
488});
489
490var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', {
491        event:objEvent
492});
493
494
495var blkAddAtendee = UI.dialogs.addActivity.find('#calendar_addactivity_details8').append(task_activityHtml);
496
497var dates = UI.dialogs.addActivity.find('input.date').datepicker({
498    dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'),
499    onSelect : function( selectedDate ){
500        updateMap();
501    }
502});
503
504UI.dialogs.addActivity.find('input.time').timepicker({
505    closeText: 'Ok',
506    hourGrid: 4,
507    minuteGrid: 10,
508    ampm : ((User.preferences.hourFormat.length > 5) ? true: false),
509    timeFormat: "hh:mm tt",
510    onSelect: function (selectedDateTime){
511        if(!(User.preferences.hourFormat.length == 5))
512            $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                               
513        updateMap();
514    },
515    onClose : function (selectedDateTime){
516        if(!(User.preferences.hourFormat.length == 5))
517            $(this).val(selectedDateTime.replace(/[\.]/gi, ""));
518    }
519       
520
521});
522
523blkAddAtendee.find('.add-activity-search .ui-icon-search').click(function(event) {
524    blkAddAtendee.find('.add-activity-search input').keydown();
525});
526                       
527                       
528blkAddAtendee.find('.add-activity-search input').keydown(function(event) {
529
530    if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {
531    // Fazer get das tarefas   
532        var result = [ {'name': 'Tarefa 01'} , {'name': 'Tarefa 02'} , {'name' : 'Tarefa 03'} ];
533        //DataLayer.get('user', ["*", "name", $(this).val()], true);
534
535
536        /**
537        * TODO: trocar por template
538        */
539        blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden');
540        if (!result) {
541            blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>');
542        }
543
544        for(i=0; i<result.length; i++)
545            result[i].enabled = (blkAddAtendee.find('dd.task-helpers-list ul.task-helpers-list label.mail[title="' +  result[i].mail + '"]').length) ? false : true;
546                                                                                       
547        blkAddAtendee.find('ul.search-result-list').append(DataLayer.render( path+'templates/task_search_itemlist.ejs', result));
548
549
550        blkAddAtendee.find('ul.search-result-list li').click(function(event, ui){
551            if ($(event.target).is('input')) {
552                old_item = $(event.target).parents('li');
553                newAttendeeId = DataLayer.put('participant', {
554                    user: old_item.find('.id').html(),
555                    isExternal: old_item.find('.isExternal').html()
556                });
557                                                       
558                attendees[old_item.find('.id').html()] = old_item.find('.name').html();
559                                                       
560                blkAddAtendee.find('dd.task-activity-list ul.task-activity-list')
561                .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{
562                    id: newAttendeeId,
563                    name: old_item.find('.name').html(),
564                    mail: old_item.find('.mail').html(),
565                    isExternal: old_item.find('.isExternal').html(),
566                    acl: objEvent.acl,
567                    isDirty: !!!objEvent.id
568                 }]))
569                .scrollTo('max');
570                /**
571                                                        * Delegação de participação de um participante com permissão apenas de leitura
572                                                        *
573                                                        */
574                        if(!objEvent.acl.organization && !objEvent.acl.write && !objEvent.acl.inviteGuests && objEvent.acl.read ){
575                                                                       
576                            blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');
577                            blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');
578                                                                       
579                            blkAddAtendee.find('.status option').toggleClass('hidden');
580                            blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');
581                            blkAddAtendee.find('.request-update').removeClass('hidden');
582
583                            blkAddAtendee.find('dd.attendee-list ul.attendee-list li .button.close').parents('li').find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
584                                                                       
585                            blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled');
586                            blkAddAtendee.find(".button.close").button({
587                                icons: {
588                                    primary: "ui-icon-close"
589                                },
590                                text: false
591                            }).click(function () {
592                                                                               
593                                $(this).parents('li').find('input[name="delegatedFrom[]"]').val('');
594                                blkAddAtendee.find('.request-update').addClass('hidden');
595                                blkAddAtendee.find('.status option').toggleClass('hidden');
596                                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');                   
597                                blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button')
598                                .find('.ui-icon-person').removeClass('attendee-permissions-change').end();                     
599                                                                               
600                                DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
601                                $(this).parents('li').remove();
602                            })
603                            .addClass('tiny');
604                        }else{
605                            callbackAttendee();
606                            old_item.remove();
607                        }
608            }
609        });
610
611
612        event.preventDefault();
613    }
614});
615
616UI.dialogs.addActivity.find('.row.fileupload-buttonbar .button').filter('.delete').button({
617    icons: {
618        primary: "ui-icon-close"
619    },
620    text: 'Excluir'
621}).click(function () {
622    $.Zebra_Dialog('Tem certeza que deseja excluir todos anexos?', {
623        'type':     'question',
624        'overlay_opacity': '0.5',
625        'buttons':  ['Sim', 'Não'],
626        'onClose':  function(clicked) {
627            if(clicked == 'Sim'){
628               
629                var ids = [];
630                $.each($('.attachment-list input'), function (i, input) {
631                     DataLayer.remove('schedulableToAttachment', {
632                        filter: ['=', 'id', ''+input.value]
633                        });
634                });
635                $('.attachment-list input').remove();
636                $('.row.fileupload-buttonbar .attachments-list p').remove();
637            }
638        }});
639}).end()
640.filter('.close').button({
641    icons: {
642        primary: "ui-icon-close"
643    },
644    text: false
645}).click(function () {
646    DataLayer.remove('schedulableToAttachment', $(this).parents('p').find('input[name="fileId[]"]').val());
647    $(this).parents('p').remove();
648}).end()
649.filter('.downlaod-archive').button({
650    icons: {
651        primary: "ui-icon-arrowthickstop-1-s"
652    },
653    text: false
654});
655var maxSizeFile = 2000000;
656$('#fileupload').fileupload({
657    sequentialUploads: true,
658    add: function (e, data) {
659        if(data.files[0].size < maxSizeFile)
660            data.submit();
661    },
662    change: function (e, data) {
663        $.each(data.files, function (index, file) {
664            var attach = {};
665            attach.fileName = file.name;
666            var ext = file.name.split('.');
667            if(file.name.length > 10)
668                attach.fileName = ext.length == 1 ? file.name.substr(0, 10) :  file.name.substr(0, 6) + '.' + ext[ext.length -1];
669            attach.fileSize = formatBytes(file.size);
670            if(file.size > maxSizeFile)
671                attach.error = 'Tamanho de arquivo nao permitido!!'
672                               
673            $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', {
674                file : attach
675            }));
676                               
677            if(file.size < maxSizeFile){
678                $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new');
679                $('.attachments-list').find('[type=file]').addClass('hidden');
680                                       
681            }else
682                $('.fileinput-button.new').removeClass('new');
683                               
684                               
685            $('.attachments-list').find('.button.close').button({
686                icons: {
687                    primary: "ui-icon-close"
688                },
689                text: false
690            }).click(function(){
691                var idAttach = $(this).parent().find('input[name="fileId[]"]').val();
692                $('.attachment-list').find('input[value="'+idAttach+'"]')
693                $(this).parent().remove();
694            });
695                               
696        })
697        },
698    done: function(e, data){
699        var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide();
700
701        if(!!data.result && data.result != "[]"){
702            var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data);
703            $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>');
704            currentUpload.removeClass('on-complete').parents('p')
705            .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>')
706            .find('.status-upload').addClass('ui-icon ui-icon-check');
707        }else
708            currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel');
709    }
710});
711$('.attachments-list .button').button();
712
713if(!!window.FormData)                   
714$('#fileupload').bind('fileuploadstart', function () {
715    var widget = $(this),
716    progressElement = $('#fileupload-progress').fadeIn(),
717    interval = 500,
718    total = 0,
719    loaded = 0,
720    loadedBefore = 0,
721    progressTimer,
722    progressHandler = function (e, data) {
723        loaded = data.loaded;
724        total = data.total;
725    },
726    stopHandler = function () {
727        widget
728        .unbind('fileuploadprogressall', progressHandler)
729        .unbind('fileuploadstop', stopHandler);
730        window.clearInterval(progressTimer);
731        progressElement.fadeOut(function () {
732            progressElement.html('');
733        });
734    },
735    formatTime = function (seconds) {
736        var date = new Date(seconds * 1000);
737        return ('0' + date.getUTCHours()).slice(-2) + ':' +
738        ('0' + date.getUTCMinutes()).slice(-2) + ':' +
739        ('0' + date.getUTCSeconds()).slice(-2);
740    },
741    /* formatBytes = function (bytes) {
742            if (bytes >= 1000000000) {
743                return (bytes / 1000000000).toFixed(2) + ' GB';
744            }
745            if (bytes >= 1000000) {
746                return (bytes / 1000000).toFixed(2) + ' MB';
747            }
748            if (bytes >= 1000) {
749                return (bytes / 1000).toFixed(2) + ' KB';
750            }
751            return bytes + ' B';
752        },*/
753    formatPercentage = function (floatValue) {
754        return (floatValue * 100).toFixed(2) + ' %';
755    },
756    updateProgressElement = function (loaded, total, bps) {
757        progressElement.html(
758            formatBytes(bps) + 'ps | ' +
759            formatTime((total - loaded) / bps) + ' | ' +
760            formatPercentage(loaded / total) + ' | ' +
761            formatBytes(loaded) + ' / ' + formatBytes(total)
762            );
763    },
764    intervalHandler = function () {
765        var diff = loaded - loadedBefore;
766        if (!diff) {
767            return;
768        }
769        loadedBefore = loaded;
770        updateProgressElement(
771            loaded,
772            total,
773            diff * (1000 / interval)
774            );
775    };
776    widget
777    .bind('fileuploadprogressall', progressHandler)
778    .bind('fileuploadstop', stopHandler);
779    progressTimer = window.setInterval(intervalHandler, interval);
780});
781       
782if(objEvent.isShared){
783               
784    var acls = Calendar.signatureOf[objEvent.calendar].permission.acl;
785               
786    if(!acls.write){
787        UI.dialogs.addActivity.find(':input').attr('disabled', 'disabled');
788        UI.dialogs.addActivity.find('.button').hide();
789    }
790               
791    if(acls.remove)
792        UI.dialogs.addActivity.find('.button.remove').show();
793   
794    UI.dialogs.addActivity.find('.button.cancel').show();       
795}
796
797disponibily(objEvent, path, attendees);
798
799UI.dialogs.addActivity.find('.button-add-alarms').click(function(){
800    var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {type: 1});
801
802    jQuery('.activity-alarms-list').append(li_attach).find('.button.remove').button({
803        text:false,
804        icons:{
805            primary:'ui-icon-close'
806        }
807    }).click(function(el) {
808                $(this).parent().remove().find('li').is(':empty')
809        });
810// valicacao de campos numericos
811$('.number').numeric();
812});
813
814
815UI.dialogs.addActivity.dialog('open');
816}
Note: See TracBrowser for help on using the repository browser.