Changeset 5392


Ignore:
Timestamp:
01/18/12 09:36:25 (12 years ago)
Author:
gustavo
Message:

Ticket #2434 - Adicionada validações na tela de criar evento a partir

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoMail1_2/js/draw_api.js

    r5391 r5392  
    25992599        subject.innerHTML = info_msg.subject; 
    26002600        subject.className = "header_message_field"; 
    2601         var new_event_logo = document.createElement("IMG"); 
    2602         new_event_logo.title = "Criar evento a partir deste email"; 
    2603         new_event_logo.alt = "Criar evento a partir deste email"; 
    2604         new_event_logo.src = "./templates/default/images/calendar_add.png"; 
    2605         new_event_logo.style.cursor = "pointer"; 
    2606         new_event_logo.style.marginLeft = "5px"; 
    2607         new_event_logo.onclick = function(){ 
    2608                 DataLayer.dispatchPath = "../prototype/"; 
    2609                 var path = "../prototype/modules/calendar/"; 
    2610                 eventDetails({  
    2611                                 summary : $("#subject_"+ID).text(), 
    2612                                 description : $("#body_" + ID).text(), 
    2613                                 startTime: $.now(), 
    2614                                 endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000) 
    2615                                 : $.now() + (User.preferences.defaultDuration * 60000) 
    2616                 }, true, path); 
    2617                  
    2618                 //TimePicker Não está funcionando corretamente, o motivo ainda é desconhecido. 
    2619                 /* 
    2620                 $(".new-event-win").find('input.time').timepicker({  
    2621                         closeText: 'Ok', 
    2622                         hourGrid: 4, 
    2623                         minuteGrid: 10, 
    2624                         //ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 
    2625                         timeFormat: "hh:mm tt", 
    2626                         onSelect: function (selectedDateTime){ 
    2627                                 if(!(User.preferences.hourFormat.length == 5)) 
    2628                                         $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
    2629                         }, 
    2630                         onClose : function (selectedDateTime){ 
    2631                                 if(!(User.preferences.hourFormat.length == 5)) 
    2632                                         $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
    2633                         } 
    2634                 }); 
    2635                 */ 
    2636                  
    2637                 var emails = $("#to_values_"+ID).val(); 
    2638                 emails = emails.split(","); 
    2639                 var blkAddAtendee = UI.dialogs.addEvent.find('#calendar_addevent_details6'); 
    2640                 var onShowToolTip = function(arg0) { 
    2641                         $('.qtip-active .button.close').button({ 
    2642                                 icons: {primary: "ui-icon-close"}, 
    2643                                 text: false 
     2601        if(new_agenda == "True" && $("#expressoCalendarid")[0]){ 
     2602                var new_event_logo = document.createElement("IMG"); 
     2603                new_event_logo.title = "Criar evento a partir deste email"; 
     2604                new_event_logo.alt = "Criar evento a partir deste email"; 
     2605                new_event_logo.src = "./templates/default/images/calendar_add.png"; 
     2606                new_event_logo.style.cursor = "pointer"; 
     2607                new_event_logo.style.marginLeft = "5px"; 
     2608                new_event_logo.onclick = function(){ 
     2609                        DataLayer.dispatchPath = "../prototype/"; 
     2610                        var path = "../prototype/modules/calendar/"; 
     2611                        eventDetails({  
     2612                                        summary : $("#subject_"+ID).text(), 
     2613                                        description : $("#body_" + ID).text(), 
     2614                                        startTime: $.now(), 
     2615                                        endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000) 
     2616                                        : $.now() + (User.preferences.defaultDuration * 60000) 
     2617                        }, true, path); 
     2618                         
     2619                        //TimePicker Não está funcionando corretamente, o motivo ainda é desconhecido. 
     2620                        /* 
     2621                        $(".new-event-win").find('input.time').timepicker({  
     2622                                closeText: 'Ok', 
     2623                                hourGrid: 4, 
     2624                                minuteGrid: 10, 
     2625                                //ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 
     2626                                timeFormat: "hh:mm tt", 
     2627                                onSelect: function (selectedDateTime){ 
     2628                                        if(!(User.preferences.hourFormat.length == 5)) 
     2629                                                $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
     2630                                }, 
     2631                                onClose : function (selectedDateTime){ 
     2632                                        if(!(User.preferences.hourFormat.length == 5)) 
     2633                                                $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
     2634                                } 
    26442635                        }); 
    2645                         $('.qtip-active .button').button() 
    2646                         .filter('.save').click(function(event, ui) { 
    2647                                 if (saveContact()) {                                             
    2648                                         lastEditAttendeeToolTip.qtip("destroy"); 
    2649                                 } else { 
    2650                                         return false; 
    2651                                 } 
    2652                         }).end() 
    2653                         .filter('.cancel').click(function(event, ui) { 
    2654                                 lastEditAttendeeToolTip.qtip("destroy"); 
    2655                         }) 
    2656  
    2657                         /**  
    2658                          * Trata o ENTER no campo da tooltip, equivalente a salvar  
    2659                          * o novo convidado. 
    2660                          */ 
    2661                         $('.qtip-active input').keydown(function(event) { 
    2662                                 if (event.keyCode == '13') {                                             
     2636                        */ 
     2637                         
     2638                        var emails = $("#to_values_"+ID).val(); 
     2639                        emails = emails.split(","); 
     2640                        var blkAddAtendee = UI.dialogs.addEvent.find('#calendar_addevent_details6'); 
     2641                        var onShowToolTip = function(arg0) { 
     2642                                $('.qtip-active .button.close').button({ 
     2643                                        icons: {primary: "ui-icon-close"}, 
     2644                                        text: false 
     2645                                }); 
     2646                                $('.qtip-active .button').button() 
     2647                                .filter('.save').click(function(event, ui) { 
    26632648                                        if (saveContact()) {                                             
    26642649                                                lastEditAttendeeToolTip.qtip("destroy"); 
     2650                                        } else { 
     2651                                                return false; 
    26652652                                        } 
    2666  
     2653                                }).end() 
     2654                                .filter('.cancel').click(function(event, ui) { 
    26672655                                        lastEditAttendeeToolTip.qtip("destroy"); 
    2668                                         event.preventDefault(); 
    2669                                 } 
    2670                         }) 
    2671                         .filter('[name="name"]').Watermark("informe o nome do contato").end() 
    2672                         .filter('[name="mail"]').Watermark("informe o email do contato"); 
    2673                 } 
    2674                                  
    2675                 $.each(emails, function(index, value) {  
    2676                         var decoded =  Encoder.htmlDecode(value); 
    2677                         var newAttendeeName = ""; 
    2678                         if(decoded.match(/<([^<]*)>[\s]*$/)){ 
    2679                                 var user = DataLayer.get('user', ["=", "mail", decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase()], true); 
    2680                                 if(!(!!user)){ 
    2681                                         newAttendeeName = decoded.match(/"([^"]*)"/)[1]; 
    2682                                         var newAttendeeEmail = decoded.match(/<([^<]*)>[\s]*$/)[1]; 
    2683                                 } 
    2684                         } 
    2685                         else{ 
    2686                                 var user = DataLayer.get('user', ["=", "mail", decoded], true); 
    2687                                 if(!(!!user)){ 
    2688                                         if(decoded.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/)) 
    2689                                                 var newAttendeeEmail = decoded; 
    2690                                         else{ 
    2691                                                 var newAttendeeEmail = ""; 
    2692                                                 newAttendeeName = decoded; 
     2656                                }) 
     2657 
     2658                                /**  
     2659                                 * Trata o ENTER no campo da tooltip, equivalente a salvar  
     2660                                 * o novo convidado. 
     2661                                 */ 
     2662                                $('.qtip-active input').keydown(function(event) { 
     2663                                        if (event.keyCode == '13') {                                             
     2664                                                if (saveContact()) {                                             
     2665                                                        lastEditAttendeeToolTip.qtip("destroy"); 
     2666                                                } 
     2667 
     2668                                                lastEditAttendeeToolTip.qtip("destroy"); 
     2669                                                event.preventDefault(); 
     2670                                        } 
     2671                                }) 
     2672                                .filter('[name="name"]').Watermark("informe o nome do contato").end() 
     2673                                .filter('[name="mail"]').Watermark("informe o email do contato"); 
     2674                        } 
     2675                                         
     2676                        $.each(emails, function(index, value) {  
     2677                                var decoded =  Encoder.htmlDecode(value); 
     2678                                var newAttendeeName = ""; 
     2679                                if(decoded.match(/<([^<]*)>[\s]*$/)){ 
     2680                                        var user = DataLayer.get('user', ["=", "mail", decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase()], true); 
     2681                                        if(!(!!user)){ 
     2682                                                newAttendeeName = decoded.match(/"([^"]*)"/)[1]; 
     2683                                                var newAttendeeEmail = decoded.match(/<([^<]*)>[\s]*$/)[1]; 
    26932684                                        } 
    26942685                                } 
    2695                         } 
    2696                                  
    2697                         var isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 
    2698                         var add = false; 
    2699                         if(user){ 
    2700                                 if(!(blkAddAtendee.find('label.mail[title="' + user[0].mail + '"]').length)){ 
    2701                                         user[0].id =  DataLayer.put('participant', {user: user[0].id, isExternal: isExternal}); 
     2686                                else{ 
     2687                                        var user = DataLayer.get('user', ["=", "mail", decoded], true); 
     2688                                        if(!(!!user)){ 
     2689                                                if(decoded.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/)) 
     2690                                                        var newAttendeeEmail = decoded; 
     2691                                                else{ 
     2692                                                        var newAttendeeEmail = ""; 
     2693                                                        newAttendeeName = decoded; 
     2694                                                } 
     2695                                        } 
     2696                                } 
     2697                                         
     2698                                var isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 
     2699                                var add = false; 
     2700                                if(user){ 
     2701                                        if(!(blkAddAtendee.find('label.mail[title="' + user[0].mail + '"]').length)){ 
     2702                                                user[0].id =  DataLayer.put('participant', {user: user[0].id, isExternal: isExternal}); 
     2703                                                blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
     2704                                                        DataLayer.render(path+'templates/participants_add_itemlist.ejs', user) 
     2705                                                ) 
     2706                                                .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
     2707                                                        DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
     2708                                                        $(this).parent().remove(); 
     2709                                                }).end() 
     2710                                                .scrollTo('max'); 
     2711                                                add = true; 
     2712                                        } 
     2713                                }else{ 
     2714                                        userId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 
     2715                                        newAttendeeId = DataLayer.put('participant', {user: userId, isExternal: isExternal}); 
     2716                                         
    27022717                                        blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    2703                                                 DataLayer.render(path+'templates/participants_add_itemlist.ejs', user) 
    2704                                         ) 
    2705                                         .find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
     2718                                                DataLayer.render(path+'templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail, isExternal: 1}]) 
     2719                                        ).find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
    27062720                                                DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
    27072721                                                $(this).parent().remove(); 
     
    27102724                                        add = true; 
    27112725                                } 
    2712                         }else{ 
    2713                                 userId = DataLayer.put('user', {name: newAttendeeName, mail: newAttendeeEmail, isExternal: isExternal}); 
    2714                                 newAttendeeId = DataLayer.put('participant', {user: userId, isExternal: isExternal}); 
    2715                                  
    2716                                 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 
    2717                                         DataLayer.render(path+'templates/participants_add_itemlist.ejs', [{id:newAttendeeId, name: newAttendeeName, mail: newAttendeeEmail, isExternal: 1}]) 
    2718                                 ).find('.button.close').addClass('small').button({text:false, icons:{primary:'ui-icon-close'}}).click(function() { 
    2719                                         DataLayer.remove('participant', $(this).parent().find('[type=checkbox]').val()); 
    2720                                         $(this).parent().remove(); 
    2721                                 }).end() 
    2722                                 .scrollTo('max'); 
    2723                                 add = true; 
    2724                         } 
    2725                         if(add){ 
    2726                                 lastEditAttendeeToolTip = blkAddAtendee.find('dd.attendee-list li:last'); 
    2727                                 lastEditAttendeeToolTip.qtip({ 
    2728                                         show: {ready: false, solo: true, when: {event: 'click'}}, 
    2729                                         hide: false, 
    2730                                         content: { 
    2731                                                 text: $('<div></div>').html( DataLayer.render( path+'templates/attendee_quick_edit.ejs', {attendee:{name:( (!!user ? (!!user[0] ? (!!user[0].name ? !!user[0].name : newAttendeeName): newAttendeeName) : newAttendeeName)), mail:(!!user ? (!!user[0] ? (!!user[0].mail ? !!user[0].mail : newAttendeeEmail): newAttendeeEmail) : newAttendeeEmail)}} ) ),  
    2732                                                 title: { 
    2733                                                         text:'Detalhes do participante',  
    2734                                                         button: '<a class="button close" href="#">close</a>' 
     2726                                if(add){ 
     2727                                        lastEditAttendeeToolTip = blkAddAtendee.find('dd.attendee-list li:last'); 
     2728                                        lastEditAttendeeToolTip.qtip({ 
     2729                                                show: {ready: false, solo: true, when: {event: 'click'}}, 
     2730                                                hide: false, 
     2731                                                content: { 
     2732                                                        text: $('<div></div>').html( DataLayer.render( path+'templates/attendee_quick_edit.ejs', {attendee:{name:( (!!user ? (!!user[0] ? (!!user[0].name ? user[0].name : newAttendeeName): newAttendeeName) : newAttendeeName)), mail:(!!user ? (!!user[0] ? (!!user[0].mail ? user[0].mail : newAttendeeEmail): newAttendeeEmail) : newAttendeeEmail)}} ) ),  
     2733                                                        title: { 
     2734                                                                text:'Detalhes do participante',  
     2735                                                                button: '<a class="button close" href="#">close</a>' 
     2736                                                        } 
     2737                                                }, 
     2738                                                style: {name: 'blue', tip: {corner: 'leftMiddle'}, border: {width: 4, radius: 8}, width: {min: 230, max:230}}, 
     2739                                                position: { 
     2740                                                        corner: { 
     2741                                                                target: 'rightMiddle', 
     2742                                                                tooltip: 'leftMiddle' 
     2743                                                        }, 
     2744                                                        adjust: {x:0, y:0} 
    27352745                                                } 
    2736                                         }, 
    2737                                         style: {name: 'blue', tip: {corner: 'leftMiddle'}, border: {width: 4, radius: 8}, width: {min: 230, max:230}}, 
    2738                                         position: { 
    2739                                                 corner: { 
    2740                                                         target: 'rightMiddle', 
    2741                                                         tooltip: 'leftMiddle' 
    2742                                                 }, 
    2743                                                 adjust: {x:0, y:0} 
    2744                                         } 
    2745                                 }); 
    2746                                 lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 
    2747                         } 
    2748                 });                                              
    2749         } 
    2750         subject.appendChild(new_event_logo); 
     2746                                        }); 
     2747                                        lastEditAttendeeToolTip.qtip("api").onShow = onShowToolTip; 
     2748                                } 
     2749                        });                                              
     2750                } 
     2751                subject.appendChild(new_event_logo); 
     2752        } 
    27512753        tr5.appendChild(td5); 
    27522754        tr5.appendChild(subject); 
  • trunk/prototype/modules/calendar/js/helpers.js

    r5389 r5392  
    393393 
    394394            UI.dialogs.addEvent.find('input.date').datepicker({dateFormat: 'dd/mm/yy'}); 
    395                 UI.dialogs.addEvent.find('input.time').timepicker({  
    396                         closeText: 'Ok', 
    397                         hourGrid: 4, 
    398                         minuteGrid: 10, 
    399                         ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 
    400                         timeFormat: "hh:mm tt", 
    401                         onSelect: function (selectedDateTime){ 
    402                                 if(!(User.preferences.hourFormat.length == 5)) 
    403                                         $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
    404                         }, 
    405                         onClose : function (selectedDateTime){ 
    406                                 if(!(User.preferences.hourFormat.length == 5)) 
    407                                         $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
    408                         } 
    409                 }); 
     395                if(path == ""){ 
     396                        UI.dialogs.addEvent.find('input.time').timepicker({  
     397                                closeText: 'Ok', 
     398                                hourGrid: 4, 
     399                                minuteGrid: 10, 
     400                                ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 
     401                                timeFormat: "hh:mm tt", 
     402                                onSelect: function (selectedDateTime){ 
     403                                        if(!(User.preferences.hourFormat.length == 5)) 
     404                                                $(this).val(selectedDateTime.replace(/[\.]/gi, ""));                                                             
     405                                }, 
     406                                onClose : function (selectedDateTime){ 
     407                                        if(!(User.preferences.hourFormat.length == 5)) 
     408                                                $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 
     409                                } 
     410                        }); 
     411                } 
    410412 
    411413            UI.dialogs.addEvent.find('.button-add-alarms').click(function(){ 
Note: See TracChangeset for help on using the changeset viewer.