source: sandbox/2.4.2-expresso1/prototype/modules/calendar/js/task.helpers.js @ 6981

Revision 6981, 29.9 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2966 - Correcao de bugs e refactoring das novas funcionalidades

  • Property svn:executable set to *
Line 
1function validDateTask(){
2       
3        var errors = {
4                'emptyInitData': 'Por favor, informe uma data inicial',
5                'emptyEndData': 'Por favor, informe uma data final',
6                'emptyInitHour': 'Por favor, informe uma hora inicial',
7                'emptyEndHour': 'Por favor, informe uma hora final',
8               
9                'invalidInitData' : 'Data inicial inválida',
10                'invalidEndData' : 'Data final inválida',
11               
12                'equalData' : 'Hora inicial igual a final',
13                'theirData' : 'Data final menor que a inicial',         
14                'theirHour' : 'Hora final menor que a inicial',
15               
16                'dueInitDate' : 'Previsão de término menor que a data inicial',
17                'dueEndDate'  : 'Previsão de término menor que a data final',
18                'dueTime'         : 'Deve ser definido a hora da Previsão de Término',
19                'dueDate'         : 'Deve ser definido a Previsão de Término',
20                'invalidDueData' : 'Data de Previsão de Término inválida'
21        };
22
23    var start_date = $(".new-task-win.active .start-date").val();
24    var end_date   = $(".new-task-win.active .end-date").val();
25    var start_time = $(".new-task-win.active .start-time").val();
26    var end_time   = $(".new-task-win.active .end-time").val();
27        var due_date   = $(".new-task-win.active .date-previsao").val();
28        var due_time   =  $.trim($(".new-task-win.active .time-previsao").val());
29    var isAllDay   = $('.new-task-win.active input[name="allDay"]').is(':checked');
30    var customDate = $(".endRepeat").val() == "customDate";
31    var occurrences = $(".endRepeat").val() == "occurrences";
32    var taskInterval = $('.taskInterval').val();
33   
34    if(start_date == "")
35                return errors['emptyInitData'];
36    else if(end_date == "")
37                return errors['emptyEndData'];
38    else if(!isAllDay && start_time == "")
39                return errors['emptyInitHour'];
40    else if(!isAllDay && end_time == "")
41                return errors['emptyEndHour'];
42        else if(due_date != "" && due_time == "")
43                return errors['dueTime'];
44        else if(due_date == "" && due_time != "")
45                return errors['dueDate'];
46       
47    var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat;
48               
49    var startDate = Date.parseExact( start_date + " " + $.trim(start_time) , formatString );
50    var endDate = Date.parseExact( end_date + " " + $.trim(end_time) , formatString );
51        var dueDate = Date.parseExact( due_date + " " + $.trim(due_time) , formatString );
52
53    if(startDate == null || startDate.getTime() < 0 )
54                return errors['invalidInitData'];
55    if(endDate == null || endDate.getTime() < 0)
56                return errors['invalidEndData'];
57        if(dueDate == null &&  due_time != "")
58                return errors['invalidDueData'];
59               
60        if(isAllDay){
61                startDate.clearTime();
62                endDate.clearTime();
63                if(endDate.compareTo(startDate) == -1)
64                        return errors['theirData'];
65        }else{
66                var condition = endDate.compareTo(startDate);
67                if(condition != 1){
68                        if(condition < 0){
69                                startDate.clearTime();
70                                endDate.clearTime();
71                                condition = endDate.compareTo(startDate);                               
72                                return (errors[ condition == 0 ? 'theirHour' : 'theirData'] );
73                        }
74                        else
75                                return errors['equalData'];
76                }
77               
78                if (dueDate != null && dueDate.compareTo(startDate) == -1)
79                        return errors['dueInitDate'];           
80        }
81   
82    if (customDate)   
83                if ( !($('.new-task-win.active .customDateEnd').val().length) )
84                   return errors['emptyEndData'];
85
86    return false;
87}
88
89function todoStatus(view, status){
90        if (status == "1"){
91                UI.dialogs[view].find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('noAction');
92        }else if (status == "2"){
93                UI.dialogs[view].find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('inProcess');
94        }else if (status == "3"){
95                UI.dialogs[view].find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('finished');
96        }else if (status == "4"){
97                UI.dialogs[view].find('.subitem .span_done').removeClass('finished noAction inProcess canceled').addClass('canceled');
98        }
99}
100
101function taskDetails(objTask, decoded, path, isMail, repeat, isActivityView) {
102
103    $('.qtip.qtip-blue').remove();
104
105    attendees = {};
106
107    if (path == undefined) path = "";
108
109    if (!decoded) objTask = DataLayer.decode("task:calendar", objTask);
110
111    if (!isMail) objTask = DataLayer.encode("schedulable:task", objTask);
112
113    if (typeof (objTask.id) == 'undefined') {
114        objTask.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false;
115        objTask.useAlarmDefault = 1;
116    }
117
118
119    if(objTask.me.id == User.me.id){
120        objTask.me.id = DataLayer.put('participant', {
121            user: objTask.me.id,
122            mail: objTask.me.mail
123        });
124        objTask.organizer.id = objTask.me.id;
125    }
126
127    var dependsDelegate = function(reference, inverse){
128        if(inverse){
129            if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
130                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
131        }else{
132            if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())
133                blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val());
134        }
135    };
136
137    var removeOthers = function(){
138        var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button');
139        if(other.lenght)
140            dependsDelegate(other.parents('li'), true);
141
142        blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button');
143        blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change');
144   
145    };
146
147    var callbackAttendee = function(){
148        var checked = false;
149        blkAddAtendee.find("li.not-attendee").addClass('hidden');
150       
151        blkAddAtendee.find("li .button").filter(".close.new").button({
152            icons: {
153            primary: "ui-icon-close"
154            },
155            text: false
156        }).click(function () {
157            DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
158            if($(this).parent().find('.button.delegate').hasClass('attendee-permissions-change-button')){
159                removeOthers();
160                blkAddAtendee.find('.request-update').addClass('hidden');
161                blkAddAtendee.find('.status option').toggleClass('hidden');
162                       
163                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
164            }
165               
166            $(this).parents('li').remove();
167               
168            if(blkAddAtendee.find(".attendee-list li").length == 1)
169                blkAddAtendee.find("li.not-attendee").removeClass('hidden');
170        })
171        .addClass('tiny disable ui-button-disabled ui-state-disabled')
172        .removeClass('new').end()
173       
174        .filter(".delegate.new").button({
175            icons: {
176                primary: "ui-icon-transferthick-e-w"
177            },
178            text: false
179        }).click(function () {
180            var me = $(this).parents('li');
181            if($(this).hasClass('attendee-permissions-change-button')){
182                $(this).removeClass('attendee-permissions-change-button')   
183                .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end();               
184           
185                me.find('input[name="delegatedFrom[]"]').val('');
186                dependsDelegate(me, true);
187                       
188                blkAddAtendee.find('.request-update').addClass('hidden');
189                blkAddAtendee.find('.status option').toggleClass('hidden');
190
191                blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');
192                   
193            }else{
194                removeOthers();
195               
196                $(this).addClass('attendee-permissions-change-button')   
197                .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end();               
198               
199                me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());
200               
201                dependsDelegate(me, false);
202                   
203                blkAddAtendee.find('.request-update').removeClass('hidden');
204                if(blkAddAtendee.find('.status option.hidden').length == 1)
205                    blkAddAtendee.find('.status option').toggleClass('hidden');
206                   
207                blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');
208            }
209        })
210        .addClass('tiny disable ui-button-disabled ui-state-disabled')
211        .removeClass('new').end()           
212           
213        .filter(".open-delegate.new").click(function(){
214            if($(this).hasClass('ui-icon-triangle-1-e')){
215                $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');
216                $(this).parents('li').find('.list-delegates').removeClass('hidden');
217            }else{
218                $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');
219                $(this).parents('li').find('.list-delegates').addClass('hidden');
220            }
221           
222        }).removeClass('new');
223
224        UI.dialogs.addTask.find('.attendees-list li').hover(
225            function () {
226                $(this).addClass("hover-attendee");
227                $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end()
228                .find('.attendee-options').addClass('hover-attendee');
229            },
230            function () {
231                $(this).removeClass("hover-attendee");
232                $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end()
233                .find('.attendee-options').removeClass('hover-attendee');
234            }
235        );       
236    }
237
238    /**
239     * canDiscardTaskDialog deve ser true se não houver alterações no task
240     */
241    canDiscardTaskDialog = true;
242    /**
243     * zebraDiscardTaskDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog)
244     * já estão aberta na tela, uma vez que não é possivel acessar o task ESC utilizado para fechá-la
245     */
246    zebraDiscardTaskDialog = false;
247
248    var html = DataLayer.render(path + 'templates/task_add.ejs', {
249        task: objTask
250    });
251
252    if (!UI.dialogs.addTask) {
253
254        UI.dialogs.addTask = jQuery('#sandbox').append('<div title="Criar tarefa" class="new-task-win active"> <div>').find('.new-task-win.active').html(html).dialog({
255            resizable: false,
256            modal: true,
257            autoOpen: false,
258            width: 775,
259            position: 'center',
260            close: function (event, ui) {
261                /**
262                 * Remove tooltip possivelmente existente
263                 */
264                if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
265                attendees = {};
266            },
267            beforeClose: function (event, ui) {
268
269                if (!canDiscardTaskDialog && !zebraDiscardTaskDialog) {
270                    zebraDiscardTaskDialog = true;
271                    window.setTimeout(function () {
272                        $.Zebra_Dialog('Suas alterações na tarefa não foram salvas. Deseja descartar as alterações?', {
273                            'type': 'question',
274                            'overlay_opacity': '0.5',
275                            'buttons': ['Descartar alterações', 'Continuar editando'],
276                            'onClose': function (clicked) {
277                                if (clicked == 'Descartar alterações') {
278                                    canDiscardTaskDialog = true;
279                                    /**
280                                     *Remoção dos anexos da task caso seja cancelado a edição
281                                     */
282                                    DataLayer.rollback();
283
284                                    var ids = false;
285                                    $.each($('.attachment-list input'), function (i, input) {
286                                        DataLayer.put('attachment', {
287                                            id: '' + input.value
288                                        });
289                                        DataLayer.remove('attachment', '' + input.value);
290                                        ids = true;
291                                    });
292                                    if (ids) DataLayer.commit();
293
294                                    UI.dialogs.addTask.dialog('close');
295                                } else {
296                                    zebraDiscardTaskDialog = false;
297                                }
298
299                                /**
300                                 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la
301                                 * com ESC, para que o task ESC nÃo seja propagado para fechamento da
302                                 * janela de edição de tasks, deve ser setada uma flag indicando que
303                                 * já existe uma janela de confirmação aberta.
304                                 */
305                                if (!clicked) {
306                                    window.setTimeout(function () {
307                                        zebraDiscardTaskDialog = false;
308                                    }, 200);
309                                }
310                            }
311                        });
312
313                    }, 300);
314
315                }
316                //DataLayer.rollback();
317                return canDiscardTaskDialog;
318            },
319            dragStart: function (task, ui) {
320                if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
321            }
322        });
323
324    } else {
325        UI.dialogs.addTask.html(html);
326    }
327
328    var tabs = UI.dialogs.addTask.children('.content').tabs({
329        select: function (task, ui) {
330            if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy');
331        }
332    });
333    var group = DataLayer.get('calendar', objTask.group);
334
335    if (group.timezone != objTask.timezone) {
336        UI.dialogs.addTask.find('.calendar-addtask-details-txt-timezone').find('option[value="' + objTask.timezone + '"]').attr('selected', 'selected').trigger('change');
337        UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').addClass('hidden');
338        $('.calendar-addtask-details-txt-timezone').removeClass('hidden');
339
340    }
341
342    UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').click(function (e) {
343        $(this).addClass('hidden');
344        $('.calendar-addtask-details-txt-timezone').removeClass('hidden');
345        e.prtaskDefault();
346    });
347
348    UI.dialogs.addTask.find('.button.remove').button({
349    text:false,
350    icons:{
351        primary:'ui-icon-close'
352    }
353    }).click(function(el){
354        var id;
355        if( id = $(this).parent().find('input[name="alarmId[]"]').val())
356        DataLayer.remove('alarm', id);
357        $(this).parent().remove().find('li').is(':empty');
358    });
359
360    /*Seleciona a agenda padrão para visualização edição de um task*/
361    if (objTask.id) UI.dialogs.addTask.find('select[name="group"] option[value="' + objTask.group + '"]').attr('selected', 'selected').trigger('change');
362       
363        UI.dialogs.addTask.find(':input').change(function(event){
364    if (event.keyCode != '27' && event.keyCode != '13')
365        canDiscardTaskDialog = false;
366        }).keydown(function(event){
367                if (event.keyCode != '27' && event.keyCode != '13')
368                canDiscardTaskDialog = false;
369        });
370
371    /* Checkbox allday */
372    UI.dialogs.addTask.find('input[name="allDay"]').click(function () {
373        $(this).attr("checked") ? UI.dialogs.addTask.find('.start-time, .end-time').addClass('hidden') : UI.dialogs.addTask.find('.start-time, .end-time').removeClass('hidden');
374        updateMap(true);
375    });
376       
377        todoStatus('addTask', (objTask.taskStatus  != undefined) ? objTask.taskStatus  : 1);
378       
379        //Conclusão das Tarefas
380        var conclusionTask = function(e){
381                var percentageTask = UI.dialogs.addTask.find('input[name="percentage"]');
382                if( percentageTask.val() == "")
383                        percentageTask.val(0);
384                percentageTask.blur().focus();
385               
386                var percentageValue = parseInt(percentageTask.val());
387                var statusTask = UI.dialogs.addTask.find('select[name=taskStatus]');
388               
389                if(percentageValue <= 0){
390                        statusTask.find('option.taskStatus-noAction').attr('selected', 'selected');
391                        todoStatus('addTask', 1);               
392                }else if(percentageValue == 100){
393                        statusTask.find('option.taskStatus-finished').attr('selected', 'selected');
394                        todoStatus('addTask', 3);
395                }else{
396                        statusTask.find('option.taskStatus-inProcess').attr('selected', 'selected');
397                        todoStatus('addTask', 2);
398                }               
399                setTimeout(function(){
400                        percentageTask[0].selectionStart = percentageTask.val().length;
401                        percentageTask[0].selectionEnd = percentageTask.val().length;
402                }, 10)
403        }
404        UI.dialogs.addTask.find('input[name="percentage"]').spinner({ min: 0, max: 100 }).keyup(conclusionTask).next().find(".ui-spinner-button").click(conclusionTask);       
405
406        //Status das Tarefas
407        UI.dialogs.addTask.find('select[name=taskStatus]').change(function(){
408                var statusSelected = $('select[name=taskStatus] option:selected').val();
409                var percentageTask = UI.dialogs.addTask.find('input[name="percentage"]');
410               
411                if (statusSelected == "1"){
412                        percentageTask.val(0);
413                }else if(statusSelected == "2"){
414                        percentageTask.val(percentageTask.val() != 0 ? (percentageTask.val() == 100 ? 99: percentageTask.val()) : 1);
415                }else if(statusSelected == "3"){
416                        percentageTask.val(100);
417                }else if(statusSelected == "4"){
418                        percentageTask.val(percentageTask.val() != 100 ? percentageTask.val() : 99);
419                }
420                todoStatus('addTask', statusSelected);
421        });
422       
423    UI.dialogs.addTask.find('.button').button();
424    UI.dialogs.addTask.find('.button.add').button({
425        icons: {
426            secondary: "ui-icon-plus"
427        }
428    });
429
430    // ==== validation tasks ====
431    UI.dialogs.addTask.find(".input-group .h1").Watermark("Tarefa sem título");
432    if (User.preferences.hourFormat.length == 5) {
433        UI.dialogs.addTask.find(".end-time, .start-time, .time-previsao").mask("99:99", {
434            completed: function () {
435                updateMap();
436            }
437        });
438    } else {
439        $.mask.definitions['{'] = '[ap]';
440        $.mask.definitions['}'] = '[m]';
441        UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99 {}", {
442            completed: function () {
443                $(this).val(date.Calendar.defaultToAmPm($(this).val()));
444                $(this).timepicker("refresh");
445                $(this).val($(this).val().replace(/[\.]/gi, ""));
446                updateMap();
447            }
448        });
449    }
450    UI.dialogs.addTask.find(".number").numeric();
451    User.preferences.dateFormat.indexOf('-') > 0 ? UI.dialogs.addTask.find(".date").mask("99-99-9999", {
452        completed: function () {
453            updateMap();
454        }
455    }) : UI.dialogs.addTask.find(".date").mask("99/99/9999", {
456        completed: function () {
457            updateMap();
458        }
459    });
460
461    UI.dialogs.addTask.find(".menu-addtask").children(".delete").click(function () {
462        $.Zebra_Dialog('Tem certeza que deseja excluir esta tarefa?', {
463            'type': 'question',
464            'overlay_opacity': '0.5',
465            'buttons': ['Sim', 'Não'],
466            'onClose': function (clicked) {
467                if (clicked == 'Sim') {
468                    canDiscardTaskDialog = true; /* Remove por filtro */
469                    DataLayer.removeFilter('schedulable', {
470                        filter: ['AND', ['=', 'id', objTask.id],
471                            ['=', 'calendar', objTask.group],
472                            ['=', 'user', (objTask.me.user ? objTask.me.user.id : objTask.me.id)]
473                        ]
474                    });
475                    Calendar.rerenderView(true); /********************/
476                    UI.dialogs.addTask.dialog("close");
477                }
478            }
479        });
480    }).end()
481
482    .children(".cancel").click(function () {
483        UI.dialogs.addTask.dialog("close");
484    }).end()
485
486    .children(".save").click(function () { /* Validação */
487        UI.dialogs.addTask.find('input[name="summary"]').focus();
488               
489        if (msg = validDateTask()) {
490            $(".new-task-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);
491            return false;
492        }
493        canDiscardTaskDialog = true;
494       
495        if(isActivityView)
496            updateActivity = true;
497
498        UI.dialogs.addTask.children().find('form.form-addtask').submit();
499        UI.dialogs.addTask.dialog("close");
500
501    }).end()
502
503    .children(".export").click(function () {
504        UI.dialogs.addTask.children().find(".form-export").submit();
505    });
506
507    var attendeeHtml = DataLayer.render(path + 'templates/attendees_task.ejs', {
508        task: objTask
509    });
510
511    // load template of attendees
512    var blkAddAtendee = UI.dialogs.addTask.find('#calendar_addtask_details6').append(attendeeHtml);
513
514    if(objTask.attendee.length)
515        callbackAttendee();
516
517    /*
518     *   Opções de delegação do participante/organizer
519     */     
520    blkAddAtendee.find(".button.participant-delegate").button({
521        icons: {
522        primary: "ui-icon-transferthick-e-w"
523        },
524        text: false
525    }).click(function () {
526        if($(this).hasClass('attendee-permissions-change-button')){
527        if(!$(this).hasClass('disable')){
528            $(this).removeClass('attendee-permissions-change-button')   
529            .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end();               
530            blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');
531            blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');
532        }
533        }else{                                 
534        $(this).addClass('attendee-permissions-change-button')   
535        .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end();               
536        blkAddAtendee.find('.block-add-attendee.search dt').html('Delegar participação para');
537        blkAddAtendee.find('.block-add-attendee.search').removeClass('hidden');
538        blkAddAtendee.find('.block-add-attendee.search input.search').focus();
539        }
540    })
541    .addClass('tiny');
542
543    var dates = UI.dialogs.addTask.find('input.date').datepicker({
544        dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'),
545        onSelect: function (selectedDate) {
546            updateMap();
547        }
548    });
549
550    UI.dialogs.addTask.find('input.time').timepicker({
551        closeText: 'Ok',
552        hourGrid: 4,
553        minuteGrid: 10,
554        ampm: ((User.preferences.hourFormat.length > 5) ? true : false),
555        timeFormat: "hh:mm tt",
556        onSelect: function (selectedDateTime) {
557            if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, ""));
558            updateMap();
559        },
560        onClose: function (selectedDateTime) {
561            if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, ""));
562        }
563    });
564
565    blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function (task) {
566        blkAddAtendee.find('.add-attendee-search input').keydown();
567    });
568
569    blkAddAtendee.find('.add-attendee-search input').keydown(function (task) {
570
571        if (task.keyCode == '13' || typeof (task.keyCode) == 'undefined') {
572            var result = DataLayer.get('user', ["*", "name", $(this).val()], true);
573
574            /**
575             * TODO: trocar por template
576             */
577            blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden');
578            if (!result) {
579                blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>');
580            }
581
582            for (i = 0; i < result.length; i++)
583            result[i].enabled = (blkAddAtendee.find('dd.attendee-list ul.attendee-list label.mail[title="' + result[i].mail + '"]').length) ? false : true;
584
585            blkAddAtendee.find('ul.search-result-list').append(DataLayer.render(path + 'templates/participants_search_itemlist.ejs', result));
586
587            blkAddAtendee.find('ul.search-result-list li').click(function (task, ui) {
588                if ($(task.target).is('input')) {
589                    old_item = $(task.target).parents('li');
590                    newAttendeeId = DataLayer.put('participant', {
591                        user: old_item.find('.id').html(),
592                        isExternal: old_item.find('.isExternal').html()
593                    });
594
595                    attendees[old_item.find('.id').html()] = old_item.find('.name').html();
596
597                    blkAddAtendee.find('dd.attendee-list ul.attendee-list').append(DataLayer.render(path + 'templates/participants_add_itemlist.ejs', [{
598                        id: newAttendeeId,
599                        name: old_item.find('.name').html(),
600                        mail: old_item.find('.mail').html(),
601                        isExternal: old_item.find('.isExternal').html(),
602                        notEvent: true,
603                        isDirty: !! !objTask.id,
604                                                isDelegate: !!(objTask.me.id != objTask.organizer.id)
605                    }])).scrollTo('max');
606                    /**
607                     * Delegação de participação de um participante com permissão apenas de leitura
608                     *
609                     */
610                    if (objTask.me.id != objTask.organizer.id) {
611
612                        blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');
613                        blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');
614
615                        blkAddAtendee.find('.status option').toggleClass('hidden');
616                        blkAddAtendee.find('option[value=5]').attr('selected', 'selected').trigger('change');
617                        blkAddAtendee.find('.request-update').removeClass('hidden');
618
619                        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());
620
621                        blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled');
622                        blkAddAtendee.find(".button.close").button({
623                            icons: {
624                                primary: "ui-icon-close"
625                            },
626                            text: false
627                        }).click(function () {
628
629                            $(this).parents('li').find('input[name="delegatedFrom[]"]').val('');
630                            blkAddAtendee.find('.request-update').addClass('hidden');
631                            blkAddAtendee.find('.status option').toggleClass('hidden');
632                            blkAddAtendee.find('option[value=1]').attr('selected', 'selected').trigger('change');
633                            blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button').find('.ui-icon-person').removeClass('attendee-permissions-change').end();
634
635                            DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());
636                            $(this).parents('li').remove();
637                        }).addClass('tiny');
638                    } else {
639                        callbackAttendee();
640                        old_item.remove();
641                    }
642                }
643            });
644
645            event.preventDefault();
646        }
647    });
648
649    UI.dialogs.addTask.find('.row.fileupload-buttonbar-task .button').filter('.delete').button({
650        icons: {
651            primary: "ui-icon-close"
652        },
653        text: 'Excluir'
654    }).click(function () {
655        $.Zebra_Dialog('Tem certeza que deseja excluir todos anexos?', {
656            'type': 'question',
657            'overlay_opacity': '0.5',
658            'buttons': ['Sim', 'Não'],
659            'onClose': function (clicked) {
660                if (clicked == 'Sim') {
661
662                    var ids = [];
663                    $.each($('.attachment-list input'), function (i, input) {
664                        DataLayer.remove('schedulableToAttachment', {
665                            filter: ['=', 'id', '' + input.value]
666                        });
667                    });
668                    $('div.new-task-win .attachment-list input').remove();
669                    $('div.new-task-win .row.fileupload-buttonbar .attachments-list p').remove();
670                    $('div.new-task-win .btn-danger.delete').addClass('hidden');
671                }
672            }
673        });
674    }).end().filter('.close').button({
675        icons: {
676            primary: "ui-icon-close"
677        },
678        text: false
679    }).click(function () {
680        DataLayer.remove('schedulableToAttachment', $(this).parents('p').find('input[name="fileId[]"]').val());
681        $(this).parents('p').remove();
682    }).end().filter('.downlaod-archive').button({
683        icons: {
684            primary: "ui-icon-arrowthickstop-1-s"
685        },
686        text: false
687    });
688
689    extendsFileupload('task', path);
690
691    disponibily(objTask, path, attendees, 'task');
692
693    UI.dialogs.addTask.find('.button-add-alarms').click(function () {
694        var li_attach = DataLayer.render(path + 'templates/alarms_add_itemlist.ejs', {
695            type: 1
696        });
697
698        jQuery('.task-alarms-list').append(li_attach).find('.button.remove').button({
699            text: false,
700            icons: {
701                primary: 'ui-icon-close'
702            }
703        }).click(function (el) {
704            $(this).parent().remove().find('li').is(':empty')
705        });
706        // valicacao de campos numericos
707        $('.number').numeric();
708    });
709
710    UI.dialogs.addTask.find(':input').change(function(event){
711        if (event.keyCode != '27' && event.keyCode != '13')
712            canDiscardTaskDialog = false;
713    }).keydown(function(event){
714        if (event.keyCode != '27' && event.keyCode != '13')
715            canDiscardTaskDialog = false;
716    });
717
718    UI.dialogs.addTask.dialog('open');
719}
Note: See TracBrowser for help on using the repository browser.