Changeset 5354


Ignore:
Timestamp:
01/11/12 10:53:58 (12 years ago)
Author:
adriano
Message:

Ticket #2434 - correcao de problemas nos tootips de adicao de participantes e outras pequenas adequacoes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/js/helpers.js

    r5353 r5354  
    223223                                                                         */ 
    224224                                                                        if (!clicked) { 
    225                                                                                 zebraDiscardEventDialog = true; 
    226225                                                                                window.setTimeout(function() { 
    227226                                                                                        zebraDiscardEventDialog = false; 
     
    298297                UI.dialogs.addEvent.find('input[name="defaultAlarm"]').click(function(){ 
    299298                    if($(this).attr("checked")){ 
    300                                 $('input[name = "isDefaultAlarm[]"]').parent().remove(); 
     299                                $('input[name="isDefaultAlarm[]"]').parent().remove(); 
    301300                                var calendarSelected = Calendar.signatureOf[$('select[name="calendar"]').val()]; 
    302301                                calendarSelected.useAlarmDefault = 1; 
     
    310309                                                }); 
    311310                                } 
    312                         }else 
    313                             $('input[name = "isDefaultAlarm[]"]').parent().remove(); 
     311                        } else { 
     312                            $('input[name="isDefaultAlarm[]"]').parent().remove(); 
     313                        } 
    314314            }); 
    315315            /* Checkbox allday */ 
     
    329329 
    330330         // ==== validation events ==== 
    331             $(".input-group .h1").Watermark("Evento sem título"); 
    332                 if(User.preferences.hourFormat.length == 5) 
    333                         $(".new-event-win.active .end-time, .new-event-win.active .start-time").mask("99:99"); 
    334                 else{ 
     331            UI.dialogs.addEvent.find(".input-group .h1").Watermark("Evento sem título"); 
     332                if(User.preferences.hourFormat.length == 5) { 
     333                        UI.dialogs.addEvent.find(".end-time, .start-time").mask("99:99"); 
     334                } else { 
    335335                        $.mask.definitions['{']='[ap]'; 
    336336                        $.mask.definitions['}']='[m]'; 
    337                         $(".new-event-win.active .end-time, .new-event-win.active .start-time").mask("99:99 {}", 
    338                                 {completed:function(){ 
     337                        UI.dialogs.addEvent.find(".end-time, .start-time").mask("99:99 {}", { 
     338                                completed:function(){ 
    339339                                        $(this).val(defaultToAmPm($(this).val())); 
    340340                                        $(this).timepicker("refresh"); 
    341341                                        $(this).val($(this).val().replace(/[\.]/gi, "")); 
    342                                 }}); 
     342                                } 
     343                        }); 
    343344                } 
    344                 $(".number").numeric(); 
     345                UI.dialogs.addEvent.find(".number").numeric(); 
    345346                if(User.preferences.dateFormat.indexOf('-') > 0) 
    346                         $(".date").mask("99-99-9999"); 
     347                        UI.dialogs.addEvent.find(".date").mask("99-99-9999"); 
    347348                else 
    348                         $(".date").mask("99/99/9999"); 
     349                        UI.dialogs.addEvent.find(".date").mask("99/99/9999"); 
    349350 
    350351            UI.dialogs.addEvent.find(".menu-addevent") 
    351                  
    352352            .children(".delete").click(function(){ 
    353353                        $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 
     
    371371            .children(".save").click(function(){ 
    372372                        /* Validação */ 
    373                          
    374                 var msg = false;                         
    375                 if(msg = validDateEvent()){ 
    376                         $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);  
    377                         return false; 
    378                 } 
     373                        var msg = false;                         
     374                        if(msg = validDateEvent()){ 
     375                                $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);  
     376                                return false; 
     377                        } 
    379378                         
    380379                        canDiscardEventDialog = true; 
     
    419418            }); 
    420419             
    421             UI.dialogs.addEvent.find('.button-add-attachment').click(function(){ 
    422                     var li_attach =  
    423                             '<li class="input_label">' +  
    424                                     '<input type="file" name="attachments[]"" />' + 
    425                             '</li>'; 
    426                     jQuery('.attachments-list').append(li_attach); 
    427             }); 
     420//          UI.dialogs.addEvent.find('.button-add-attachment').click(function(){ 
     421//                  var li_attach =  
     422//                          '<li class="input_label">' +  
     423//                                  '<input type="file" name="attachments[]"" />' + 
     424//                          '</li>'; 
     425//                  jQuery('.attachments-list').append(li_attach); 
     426//          }); 
    428427             
    429428            DataLayer.render( 'templates/attendee_add.ejs', {event:objEvent}, function( attendeeHtml ){ 
     
    441440                        //blkAddAtendee.find('.block-attendee-list #attendees-users li').click(show_permissions_attendees);  
    442441 
    443                         $(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 
     442                        UI.dialogs.addEvent.find(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 
    444443                        /* Trata a edição de um novo participante adicionado 
    445444                        *  
    446445                        */ 
    447446                        var hasNewAttendee = false; 
    448                         $('.attendee-list-add .add-attendee-input input').keydown(function(event) { 
     447                        UI.dialogs.addEvent.find('.attendee-list-add .add-attendee-input input').keydown(function(event) { 
    449448                                 
    450449                                if (event.keyCode == '13' && $(this).val() != '') { 
     
    453452                                         
    454453                                        newAttendeeEmail = false; 
    455                                         newAttendeeName = false; 
     454                                        newAttendeeName  = false; 
     455                                        skipAddNewLine   = false; 
    456456 
    457457                                        var info = $(this).val(); 
     
    475475                                        var user = DataLayer.get('user', ["=", "mail", $(this).val()], true); 
    476476                                         
     477                                         
     478                                        /** 
     479                                         * guarda o último tooltip aberto referente à lista de participantes  
     480                                         */ 
     481                                        lastEditAttendeeToolTip = []; 
     482 
     483                                        /** 
     484                                         * Valida email e salva um participante externo  
     485                                         */ 
     486                                        var saveContact = function() { 
     487                                                Encoder.EncodeType = "entity"; 
     488 
     489                                                var currentTip = $('.qtip-active'); 
     490                                                newAttendeeName  = currentTip.find('input[name="name"]').val(); 
     491                                                newAttendeeEmail = currentTip.find('input[name="mail"]').val(); 
     492 
     493                                                var isValidMail = newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/); 
     494                                                if (!isValidMail) { 
     495                                                        currentTip.find('.messages').removeClass('hidden').find('.message label').append('Email inválido.'); 
     496                                                        return false; 
     497                                                } 
     498 
     499                                                DataLayer.put('user', {id:newAttendeeId, name:newAttendeeName, mail:newAttendeeEmail, isExternal:isExternal}); 
     500 
     501                                                $('dd.attendee-list ul.attendee-list li:last label') 
     502                                                .filter('.name').html(Encoder.htmlEncode(newAttendeeName)).attr('title', Encoder.htmlEncode(newAttendeeName)).end() 
     503                                                .filter('.mail').html(Encoder.htmlEncode(newAttendeeEmail)).attr('title', Encoder.htmlEncode(newAttendeeEmail)); 
     504 
     505                                                return true; 
     506                                        } 
     507                                                 
     508                                        /** 
     509                                         * Formata e adequa um tootip abert para edição de um participante na lista 
     510                                         */ 
    477511                                        var onShowToolTip = function(arg0) { 
    478512                                                $('.qtip-active .button.close').button({ 
     
    483517                                                .filter('.save').click(function(event, ui) { 
    484518                                                        if (saveContact()) {                                             
    485                                                                 $('dd.attendee-list li:last').qtip("destroy"); 
     519                                                                lastEditAttendeeToolTip.qtip("destroy"); 
    486520                                                        } else { 
    487521                                                                return false; 
     
    489523                                                }).end() 
    490524                                                .filter('.cancel').click(function(event, ui) { 
    491  
    492                                                         $('dd.attendee-list li:last').qtip("destroy"); 
     525                                                        lastEditAttendeeToolTip.qtip("destroy"); 
    493526                                                }) 
    494527 
     
    500533                                                        if (event.keyCode == '13') {                                             
    501534                                                                if (saveContact()) {                                             
    502                                                                         $('dd.attendee-list li:last').qtip("destroy"); 
     535                                                                        lastEditAttendeeToolTip.qtip("destroy"); 
    503536                                                                } 
    504537 
    505                                                                 $('dd.attendee-list li:last').qtip("destroy"); 
     538                                                                lastEditAttendeeToolTip.qtip("destroy"); 
    506539                                                                event.preventDefault(); 
    507540                                                        } 
     
    512545 
    513546                                         
    514                                         if($('label.mail[title="' + $(this).val() + '"]').length) { 
    515                                                 $(".new-event-win.active").find('.email-validation').removeClass('hidden') 
     547                                        /** 
     548                                         * Se o email digitado já foi adicionado na lista, 
     549                                         * o usuário deve ser avisado e um botão de edição deve ser exibido 
     550                                         */ 
     551                                        if(blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').length) { 
     552                                                newAttendeeName = blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').parents('li').find('label.name').attr('title'); 
     553 
     554                                                blkAddAtendee.find('.email-validation').removeClass('hidden') 
    516555                                                .find('.message label').html("O usuário acima já foi adicionado! <a class=\"small button\">Editar</a>") 
    517556                                                .find(".button").button().click(function () {  
    518                                                         $("ul.attendee-list").scrollTo('label.mail[title="' + $(".add-attendee-input input").val() + '"]'); 
    519                                                         blkAddAtendee.find('ul.attendee-list label.mail[title="' + $(".add-attendee-input input").val() + '"]').parents('li').qtip({ 
     557                                                        /** 
     558                                                         * Se o usuário optar por editar o participante anteriormente adicionado, 
     559                                                         * uma tooltip deve ser aberta para este participante, viabilizando a edição 
     560                                                         */ 
     561                                                        blkAddAtendee.find("ul.attendee-list").scrollTo('label.mail[title="' + newAttendeeEmail + '"]'); 
     562                                                        /** 
     563                                                         * Remove tooltip possivelmente existente 
     564                                                         */ 
     565                                                        if (hasNewAttendee && lastEditAttendeeToolTip.length && lastEditAttendeeToolTip.data('qtip')) 
     566                                                                lastEditAttendeeToolTip.qtip('destroy'); 
     567                                         
     568                                                        lastEditAttendeeToolTip = blkAddAtendee.find('label.mail[title="' + newAttendeeEmail + '"]').parents('li'); 
     569                                                        lastEditAttendeeToolTip.qtip({ 
    520570                                                                show: {ready: true, solo: true, when: {event: 'click'}}, 
    521571                                                                hide: false, 
     
    536586                                                                } 
    537587                                                        }); 
    538                                                 });      
    539                                                 blkAddAtendee.find('ul.attendee-list label.mail[title="' + $(".add-attendee-input input").val() + '"]').parents('li').qtip("api").onShow = onShowToolTip; 
    540                                                 return false; 
     588                                                        lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 
     589                                                }); 
     590                                                skipAddNewLine = true; 
    541591                                        } 
    542592                                         
     
    547597                                         * Remove tooltip possivelmente existente 
    548598                                         */ 
    549                                         if (hasNewAttendee && blkAddAtendee.find('dd.attendee-list li:last').data('qtip')) 
    550                                                 blkAddAtendee.find('dd.attendee-list li:last').qtip('destroy'); 
     599                                        if (hasNewAttendee && lastEditAttendeeToolTip.length && lastEditAttendeeToolTip.data('qtip')) 
     600                                                lastEditAttendeeToolTip.qtip('destroy'); 
    551601 
    552602                                        var newAttendeeId = ''; 
     
    558608                                                        newAttendeeId = 'internal:'+user[0].id; 
    559609 
    560                                                 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    561                                                         DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: user[0].name, mail: user[0].mail}]) 
    562                                                 ) 
    563                                                 .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
    564                                                         var participant =  DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable',$(this).parents().find('.id-event').first().val()]]); 
    565                                                         if(participant) 
    566                                                                 DataLayer.remove('participant', participant[0].id); 
    567                                                         $(this).parent().remove(); 
    568                                                 }).end() 
    569                                                 .scrollTo('max'); 
     610                                                if (!skipAddNewLine) { 
     611                                                        blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
     612                                                                DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: user[0].name, mail: user[0].mail}]) 
     613                                                        ) 
     614                                                        .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
     615                                                                var participant =  DataLayer.get('participant', ['AND',['=', 'user', $(this).parent().find('[type=checkbox]').val().replace(/[a-z:]/g, "")],['=', 'schedulable',$(this).parents().find('.id-event').first().val()]]); 
     616                                                                if(participant) 
     617                                                                        DataLayer.remove('participant', participant[0].id); 
     618                                                                $(this).parent().remove(); 
     619                                                        }).end() 
     620                                                        .scrollTo('max'); 
     621                                                } 
    570622                                                 
    571623                                                $(this).val(''); 
    572624 
    573                                         } else {                 
     625                                        } else if (!skipAddNewLine) {            
    574626                                                /** 
    575627                                                 * a) salva como novo usuario externo no banco (apenas com email) e... 
     
    579631                                                newAttendeeId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 
    580632 
     633                                                  
    581634                                                blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    582635                                                        DataLayer.render('templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail}]) 
     
    595648                                                 * recém adicionado. 
    596649                                                 */ 
    597                                                 blkAddAtendee.find('dd.attendee-list li:last').qtip({ 
     650                                                lastEditAttendeeToolTip = blkAddAtendee.find('dd.attendee-list li:last'); 
     651                                                lastEditAttendeeToolTip.qtip({ 
    598652                                                        show: {ready: true, solo: true, when: {event: 'click'}}, 
    599653                                                        hide: false, 
     
    614668                                                        } 
    615669                                                }); 
    616  
    617                                                 var saveContact = function() { 
    618                                                         Encoder.EncodeType = "entity"; 
    619                          
    620                                                         var currentTip = $('.qtip-active'); 
    621                                                         newAttendeeName  = currentTip.find('input[name="name"]').val(); 
    622                                                         newAttendeeEmail = currentTip.find('input[name="mail"]').val(); 
    623  
    624                                                         var isValidMail = newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/); 
    625                                                         if (!isValidMail) { 
    626                                                                 currentTip.find('.messages').removeClass('hidden').find('.message label').append('Email inválido.'); 
    627                                                                 return false; 
    628                                                         } 
    629  
    630                                                         DataLayer.put('user', {id:newAttendeeId, name:newAttendeeName, mail:newAttendeeEmail, isExternal:isExternal}); 
    631  
    632                                                         $('dd.attendee-list ul.attendee-list li:last label') 
    633                                                         .filter('.name').html(Encoder.htmlEncode(newAttendeeName)).attr('title', Encoder.htmlEncode(newAttendeeName)).end() 
    634                                                         .filter('.mail').html(Encoder.htmlEncode(newAttendeeEmail)).attr('title', Encoder.htmlEncode(newAttendeeEmail)); 
    635  
    636                                                         return true; 
    637                                                 } 
     670                         
     671                                                lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 
     672 
     673                                                $(this).val(''); 
    638674 
    639675                                                 
    640                                                 $('dd.attendee-list li:last').qtip("api").onShow = onShowToolTip; 
    641  
    642  
    643                                                 $(this).val(''); 
    644  
    645                                                 event.preventDefault(); 
    646676                                        } 
     677                                        event.preventDefault(); 
    647678                                } 
     679                                 
    648680                        }); 
    649681 
Note: See TracChangeset for help on using the changeset viewer.