Ignore:
Timestamp:
03/13/12 18:23:02 (12 years ago)
Author:
natan
Message:

Ticket #2434 - Implementacao da repeticao de eventos na agenda e adicao de suporte a relacionamentos 1x1 na API

Location:
trunk/prototype/modules/calendar/js
Files:
3 edited

Legend:

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

    • Property svn:ignore
      •  

        old new  
        22._init.js 
        33._calendar.date.js 
         4.calendar.codecs.js.kate-swp 
  • trunk/prototype/modules/calendar/js/calendar.codecs.js

    r5652 r5715  
    22   
    33    init: function(){ 
    4                 this.moduleName = 'expressoCalendar'; 
     4                this.moduleName = 'expressoCalendar';  
    55                this.me = DataLayer.dispatch( "me" ); 
    66                 
     
    99                this.isDaylightSaving = Timezone.daylightSaving; 
    1010                this.load();       
    11     }, 
     11    },              
    1212   
    1313    load: function(){ 
     
    564564                                return returns; 
    565565                        }; 
    566                                                  
     566                                                                 
    567567                    return { 
    568568                            "class": objEvent["class"], 
    569569                            id: objEvent.id, 
     570                            repeat: encodeRepeat( objEvent.repeat ), 
    570571                            location: objEvent.location, 
    571572                            category: objEvent.category, 
     
    605606                                                        receiveNotification : attend.receiveNotification, 
    606607                                                        alarms : $.map(attend.alarms || [], function( alarm ){ 
    607                                                                 //TODO - Atualizar cach cliente em conceito aninhados de camada 2 
    608                                                                 var alarmEvent = DataLayer.get('alarm', alarm) 
    609                                                                 return !!alarmEvent ? alarmEvent: (null); 
     608                                                                return DataLayer.get('alarm', alarm); 
    610609                                                        }) 
    611610                                                }; 
     
    643642                            me: !!participantInfo.user ? DataLayer.merge(participantInfo.user, me) : DataLayer.merge(this.isShared ? this.organizer :  me, {acl:  !this.isShared ? 'rowi' : Calendar.signatureOf[objEvent.calendar].permission.aclValues, delegatedFrom: 0, receiveNotification: 1}), 
    644643                                delegatedFrom: delegatedFrom, 
     644                                 
    645645                                statusParticipants: statusParticipants 
    646646                        }; 
     
    650650}); 
    651651 
    652  
     652function decodeRepeat ( form ) { 
     653 
     654        var patati = {}; 
     655         
     656        if( form.repeatId ) 
     657            patati['id'] = form.repeatId; 
     658 
     659        patati['frequency'] = form.frequency; 
     660 
     661        patati['bymonthday'] = patati['byyearday'] = patati['byday'] = ''; 
     662         
     663        patati['interval'] = patati['endTime'] = patati['count'] = patati['startTime'] = 0; 
     664         
     665        if( form.frequency === 'none' ) 
     666            return( patati ); 
     667         
     668        var day = []; 
     669 
     670        $("input[type=checkbox][name='repeatweekly[]']:checked").each(function() {  
     671                day[ day.length ] = $(this).val(); 
     672        }); 
     673 
     674        patati['byday'] = day.join(','); 
     675 
     676        var formatString = ( typeof form.allDay !== "undefined" && !!form.allDay )? User.preferences.dateFormat+" HH:mm" : User.preferences.dateFormat + " " + User.preferences.hourFormat; 
     677 
     678        var date = Date.parseExact( form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).add( { days: 1 } ).toString('yyyy-MM-dd HH:mm:00'); 
     679         
     680        patati['startTime'] = date.toString('yyyy-MM-dd HH:mm:00'); 
     681         
     682        if( !patati['byday'] ) 
     683              switch(form.frequency) { 
     684              case 'weekly':       
     685                      break; 
     686              case 'daily': 
     687                      break; 
     688              case 'monthly': 
     689                      patati['bymonthday'] = date.getDate(); 
     690                      break; 
     691              case 'yearly': 
     692                      patati['byyearday'] = date.getDayOfYear(); 
     693                      break; 
     694              default : 
     695                      return patati; 
     696              } 
     697 
     698        if (($(".endRepeat").val() == 'occurrences'))  
     699                patati['count'] = $(".occurrencesEnd").val();  
     700         
     701        if (($(".endRepeat").val() == 'customDate')) 
     702                patati['endTime'] = Date.parseExact( $(".customDateEnd").val() + (!!form.allDay ? " 00:00": " "+$.trim(form.endHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'); 
     703         
     704        patati['interval']  = $(".eventInterval").val(); 
     705 
     706        /** 
     707        wkst = [ 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU' ] 
     708        weekno = number 
     709        minute = number 
     710        second = number 
     711        yearday = number 
     712        monthday = number 
     713        setpos = number 
     714        day = number 
     715        hour = number 
     716        interval = number 
     717        frequency = [ 'monthly', 'daily', 'weekly', 'yearly', 'hourly', 'minutely', 'secondly' ] 
     718        endTime = milliseconds 
     719    */     
     720    return( patati ); 
     721       
     722} 
     723 
     724 
     725 
     726function encodeRepeat( repeat ){ 
     727   
     728        if( !repeat ) 
     729            return( false ); 
     730 
     731        return DataLayer.get( 'repeat', repeat ); 
     732} 
    653733 
    654734DataLayer.codec( "schedulable", "detail", { 
     
    674754                                  startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'), 
    675755                                  endTime:  Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd HH:mm:00'),  //+ (!!form.allDay ? 86400000 : 0) , 
    676                                   allDay: ( !!form.allDay ? 1 : 0 ), 
     756                                  allDay: ( !!form.allDay ? 1 : 0 ),        
    677757                              id: form.idEvent, 
    678758                              location: form.location, 
     
    685765                                                return {attachment: attachment} 
    686766                                  }), 
     767                              repeat: this.decodeRepeat( form ), 
    687768                              participants: $.map( form.attendee || [], function( attendee, i ){ 
    688769 
     
    722803    }, 
    723804 
     805 
    724806    encoder: function( evtObj ){ 
    725807         
    726         if(!(!!evtObj)) 
    727                 return undefined; 
    728  
    729         var notArray = false; 
    730        
    731         if( notArray = $.type(evtObj) !== "array" ) 
    732             evtObj = [ evtObj ]; 
    733  
    734         var pref = User.preferences; 
    735  
    736         var res =  DataLayer.encode('schedulable:preview', evtObj); 
    737  
    738         if( !notArray ){ 
    739             var dates = {}; 
    740  
    741             for (var i=0; i < res.length; i++) { 
    742  
    743                     var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 
    744                     var endDate   = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 
    745  
    746                     var counter   = startDate.clone(); 
    747  
    748                     while (counter.compareTo(startDate) == 0) { 
    749  
    750                             if (!dates[counter.toString(User.preferences.dateFormat)])  
    751                                         dates[counter.toString(User.preferences.dateFormat)] = { startDate:false, events:[] }; 
    752                             if (!dates[counter.toString(User.preferences.dateFormat)].startDate)  
    753                                         dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 
    754  
    755                             dates[counter.toString(User.preferences.dateFormat)].events.push(res[i]); 
    756                             counter.addDays(-1); 
    757                     }  
    758             } 
    759             res = { events_list: dates, 
    760                                 count : res.length 
    761                         }; 
    762         } 
    763  
    764         return notArray ? res[0] : res; 
     808                if(!(!!evtObj)) 
     809                        return undefined; 
     810 
     811                var notArray = false; 
     812                   
     813                if( notArray = $.type(evtObj) !== "array" ) 
     814                        evtObj = [ evtObj ]; 
     815 
     816                var pref = User.preferences; 
     817 
     818                var res =  DataLayer.encode('schedulable:preview', evtObj); 
     819 
     820                if( !notArray ){ 
     821                        var dates = {}; 
     822 
     823                        for (var i=0; i < res.length; i++) { 
     824                           
     825                                var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 
     826                                var endDate   = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 
     827                           
     828                                var duration = parseInt( endDate.getTime() ) - parseInt( startDate.getTime() ); 
     829                 
     830                                var occurrences = [ startDate.getTime() ]; 
     831                                 
     832                                if( res[i].occurrences ) 
     833                                { 
     834                                    occurrences = res[i].occurrences; 
     835                                } 
     836 
     837                                for( var ii = 0; ii < occurrences.length; ii++ ) 
     838                                { 
     839                                    var currentDate = new Date( occurrences[ii] ); 
     840                                    var counter = currentDate.clone(); 
     841                                     
     842                                    var res2 = $.extend( {}, res[i], {'startDate': currentDate.toString( User.preferences.dateFormat ), 'endDate': new Date( occurrences[ii] + duration ).toString( User.preferences.dateFormat ) } ); 
     843                                   
     844                                    while (counter.compareTo( currentDate ) == 0) { 
     845 
     846                                            if (!dates[counter.toString(User.preferences.dateFormat)])  
     847                                                    dates[counter.toString(User.preferences.dateFormat)] = { startDate:false, events:[] }; 
     848                                            if (!dates[counter.toString(User.preferences.dateFormat)].startDate)  
     849                                                    dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 
     850 
     851                                            dates[counter.toString(User.preferences.dateFormat)].events.push(res2); 
     852                                            counter.addDays(-1); 
     853                                    }       
     854                                } 
     855                        } 
     856                        res = { events_list: dates, 
     857                                        count : res.length 
     858                                }; 
     859                } 
     860 
     861                return notArray ? res[0] : res; 
    765862    } 
    766863 
     
    823920            return( false ); 
    824921 
    825 //       if( notArray = $.type(evtObj) !== "array" ) 
    826 //        evtObj = [ evtObj ]; 
    827 //      alert( evtObj ); 
    828922        var filtered = evtObj; 
    829          
    830         // repeat:{ 
    831 //        frequency: "weekly", 
    832 //        endTime: Date.parse("+10 days").getTime(), 
    833 //        interval: 3, 
    834 //        byday: 3, 
    835 //        bysecond: 3, 
    836 //        byminute: 3, 
    837 //        bymonthday: 3, 
    838 //        byyearday: 3, 
    839 //        byweekno: 3, 
    840 //        bysetpos: 3, 
    841 //        wkst: "monday"/*, 
    842 //        duration: true*/ 
    843 //       } 
    844  
    845 //      $.each(evtObj, function( index, evt ){ 
    846  
    847 //              alert( dump(!!evt.repeat) ); 
    848  
    849 //              if( evt && !!evt.repeat && (evt.startTime < filter.end || (evt.repeat.endTime || 0) > filter.start ) ) 
    850 //              { 
    851 // //               var interval = evt.repeat.interval; 
    852923//  
    853 //                  var current = new Date( evt.startTime ); 
    854 //                  var begin = new Date( filter.start ); 
    855 //                  var end = new Date( filter.end ); 
    856 //                  var offset = evt.endTime - evt.startTime; 
    857 //  
    858 //                  var ocurrence = []; 
    859 //  
    860 //                  while( Date.compare( current, begin ) !== 1 ) 
    861 //                      current = current.parse( "+" + evt.repeat.interval + " " + frequency + "s" ); 
    862 //  
    863 //                  while( current.before( end ) && (ocurrence[ ocurrence.length ] = current) ) 
    864 //                      current = current.parse( "+" + evt.repeat.interval + " " + frequency + "s" ); 
    865 //  
    866 //                  for( var i = 0; i < ocurrences.length; i++ ) 
    867 //                      filtered[ filtered.length ] = { URI: evt.URI, 
    868 //                                                      summary: evt.summary, 
    869 //                                                      start: new Date( ocurrences[i] ), 
    870 //                                                      end: new Date( ocurrences[i] + offset ), 
    871 //                                                      allDay: evt.allDay }; 
    872 //  
    873 // //               switch( evt.repeat.frequency ) 
    874 // //               { 
    875 // //                 case "yearly":   interval *= 12; 
    876 // //                 case "monthly":  interval *= 30; //TODO: get the month variant 
    877 // //                 case "weekly":   interval *= 7; 
    878 // //                 case "daily":    interval *= 24; 
    879 // //                 case "hourly":   interval *= 60; 
    880 // //                 case "minutely": interval *= 60;  
    881 // //                 case "secondly": interval *= 1000; 
    882 // //               } 
    883 // //              
    884 // //               var rest = ( filter.start - evt.startTime ) % interval; 
    885 // //  
    886 // //               var offset = evt.endTime - evt.startTime; 
    887 // //  
    888 // //               if( rest < offset ) 
    889 // //               { 
    890 // //                   var freq = Math.floor( offset - rest / interval ); 
    891 // //  
    892 // //                    
    893 // //  
    894 // //                   for( var i = 0; i < freq; i++ ) 
    895 // //                   { 
    896 // //                        var ocurrence = filter.start + rest + ( interval * i ); 
    897 // //  
    898 // //                         
    899 // //                   } 
    900 // //  
    901 // //                    
    902 // //               } 
    903 //              } 
    904  
    905 //              if( parseInt( evt.endTime ) > filter[1][0][2] || parseInt( evt.startTime ) < filter[1][1][2] ) 
    906 //                  filtered[ filtered.length ] = evt; 
    907 //  
    908 //      }); 
    909  
    910924        var grouped = {}; 
    911925 
     
    922936                var calendar = DataLayer.get('calendar', evt.calendar); 
    923937                 
    924                 var eventEditable = function(idEvent){ 
     938                var eventEditable = function(idEvent, isRecurrence){ 
    925939                        if(Calendar.signatureOf[calendar.id].isOwner == "1"){ 
    926940                                var attendee = {}; 
     
    928942                                        attendee = DataLayer.get('participant', evt.participants[i]); 
    929943                                                if(attendee.user == User.me.id) 
    930                                                         return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? {selectable: true, className: 'fullcalendar-context-menu  event-id-'+idEvent} : {editable: false, selectable: true ,className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent}; 
     944                                                        return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? {selectable: true, className: 'fullcalendar-context-menu  event-id-'+idEvent, editable: !isRecurrence} : { editable: false, selectable: true ,className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent}; 
    931945                                } 
    932                                 return {editable: false, className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent,  selectable: true}; 
     946                                return {editable: false, className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent,  selectable: true, disableDragging: isRecurrence }; 
    933947                        } 
    934948                        else{ 
     
    943957                                }                                
    944958                                return DataLayer.merge({ 
    945                                         editable: aclSignature.acl['write'], 
     959                                        editable: aclSignature.acl['write'] && !isRecurrence, 
    946960                                        disableResizing : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true : false), 
    947961                                        disableDragging  : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true: false), 
     
    951965                         
    952966                } 
     967                 
     968                var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false; 
     969                 
     970                var occurrences = [ evt.startTime ]; 
     971                 
     972                if( evt.occurrences ) 
     973                { 
     974                    isRepeat = true; 
     975                    occurrences = evt.occurrences; 
     976                } 
    953977                   
    954                 grouped[ evt.calendar ].push( DataLayer.merge({ id: evt.URI || evt.id, 
    955                                                 title: Encoder.htmlDecode(evt.summary), 
    956                                                 start: Timezone.getDateCalendar(new Date(parseInt( evt.startTime )), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    957                                                 end:   Timezone.getDateCalendar(new Date(parseInt( evt.endTime ) - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    958                                                 allDay: parseInt( evt.allDay ) }, eventEditable(evt.id) ) ); 
     978                for( var i = 0; i < occurrences.length; i++ ) 
     979                    grouped[ evt.calendar ].push( DataLayer.merge({ id: evt.URI || evt.id, 
     980                                                    title: Encoder.htmlDecode(evt.summary), 
     981                                                    start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     982                                                    end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     983                                                    allDay: parseInt( evt.allDay ) }, eventEditable(evt.id, isRepeat ) ) ); 
    959984        }); 
    960985 
  • trunk/prototype/modules/calendar/js/helpers.js

    r5641 r5715  
    361361                         
    362362                } 
    363                  
     363 
     364            DataLayer.render( 'templates/event_repeat.ejs', {event:objEvent}, function( repeatHtml ){ 
     365 
     366                        UI.dialogs.addEvent.find('#calendar_addevent_details3').html(repeatHtml); 
     367                        $(".date").datepicker(); 
     368                   
     369                        if(objEvent.repeat)  
     370                        { 
     371                             if( objEvent.repeat['id'] ) 
     372                             { 
     373                                $("[name='repeatId']:last").val( objEvent.repeat['id'] ); 
     374                             } 
     375 
     376                             if( objEvent.repeat['frequency'] !== 'none' ) 
     377                             { 
     378                                if( objEvent.repeat['startTime'] && objEvent.repeat['startTime'] !== "0" ) 
     379                                { 
     380                                      $("[name='startOptions'] [value='customDate']:last").attr( 'selected', 'selected' ); 
     381                                      $("[name='start']:last").val(new Date( parseInt(objEvent.repeat['startTime']) ).toString( User.preferences.dateFormat ) ); 
     382                                } 
     383                                else 
     384                                { 
     385                                      $("[name='start']:last").val($("[name='startDate']:last").val());      
     386                                      $("[name='start']:last").readOnly=true; 
     387                                      $("[name='start']:last").datepicker("disable"); 
     388                                } 
     389                               
     390                                $(".finish_event").removeClass("hidden"); 
     391 
     392                                if(objEvent.repeat['endTime'] && objEvent.repeat['endTime'] !== "0" )  
     393                                { 
     394                                        //$("[name='occurrences']").addClass("hidden"); 
     395                                        $(".customDateEnd").removeClass("hidden"); 
     396                                                        $(".endRepeat option[value='customDate']").attr('selected', 'selected')                                          
     397                                        $(".customDateEnd").val( new Date( parseInt(objEvent.repeat['endTime']) )/*.setTimezoneOffset( Timezone.timezone( objEvent.timezone ) )*/.toString( User.preferences.dateFormat ) );   
     398                                } 
     399                                else if (objEvent.repeat['count'] && objEvent.repeat['count'] !== "0" ) { 
     400                                        $(".endRepeat option[value='occurrences']").attr('selected', 'selected');                                                
     401                                        $(".occurrencesEnd").removeClass("hidden"); 
     402                                        $(".occurrencesEnd").val(objEvent.repeat['count']);                                              
     403                                } 
     404                               
     405                                switch ( objEvent.repeat['frequency'] ) 
     406                                { 
     407                                    case "daily": 
     408                                            $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Dia(s)"); 
     409                                            $(".frequency option[value='daily']").attr('selected', 'selected'); 
     410                                            break; 
     411                                    case "weekly": 
     412                                            $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Semana(s)"); 
     413                                            $(".frequency option[value='weekly']").attr('selected', 'selected'); 
     414                                            objEvent.repeat['interval'] ? $(".event-repeat-container:last").find(".repeat-in").find(".eventInterval").val(objEvent.repeat['interval']) : $(".event-repeat-container:last").find(".repeat-in").find(".eventInterval").val("0"); 
     415                                             
     416                                            $(".event-repeat-weekly").removeClass("hidden"); 
     417                                             
     418                                            var day = []; 
     419                                             
     420                                            if( objEvent.repeat.byday ) 
     421                                                day = objEvent.repeat.byday.split(','); 
     422                                             
     423                                            for(i=0; i<day.length; i++)  
     424                                                    $(".event-repeat-weekly [value='" + day[i] + "']").attr("checked","checked"); 
     425                                             
     426                                            break; 
     427                                    case "monthly": 
     428                                            $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Mes(s)"); 
     429                                            $(".frequency option[value='monthly']").attr('selected', 'selected') 
     430                                            $(".event-repeat-monthly:last").removeClass("hidden").find("input[type=radio][name=repeatmonthyType]").click(function(){ 
     431                                                    if($("input[type=radio][name=repeatmonthyType]:checked").val() == "1") 
     432                                                            $(".event-repeat-weekly:last").removeClass("hidden"); 
     433                                                    else 
     434                                                            $(".event-repeat-weekly:last").addClass("hidden"); 
     435                                            }); 
     436                                            if($("input[type=radio][name=repeatmonthyType]:checked").val() == "1") 
     437                                                    $(".event-repeat-weekly:last").removeClass("hidden"); 
     438                                            else 
     439                                                    $(".event-repeat-weekly:last").addClass("hidden"); 
     440                                            break; 
     441                                    case "yearly": 
     442                                            $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Ano(s)"); 
     443                                            $(".frequency option[value='yearly']").attr('selected', 'selected') 
     444                                            break;       
     445                                } 
     446                            } 
     447                        } 
     448                        else { 
     449                                $(".endRepeat option[value='never']").attr('selected', 'selected'); 
     450                        } 
     451 
     452 
     453                        $(".event-repeat-container:last").find(".repeat-in").find("[name=startOptions]").change(function(){                                        
     454 
     455            if($(this).find("option:selected").val() == "Today"){ 
     456                                $("[name='start']:last").val($("[name='startDate']:last").val()); 
     457                                $("[name='start']:last").readOnly=true; 
     458                                $("[name='start']:last").datepicker("disable"); 
     459                            } 
     460                            else{ 
     461                                $("[name='start']:last").readOnly=false; 
     462                                $("[name='start']:last").datepicker("enable"); 
     463                            } 
     464                        }); 
     465                        $(".event-repeat-container:last").find(".repeat-in").find("[name=endOptions]").change(function(){                                        
     466                            if($(this).find("option:selected").val() == "never"){ 
     467                                $("[name='occurrences']").addClass("hidden"); 
     468                                $("[name='end']:last").addClass("hidden"); 
     469                            } 
     470                            else if($(this).find("option:selected").val() == "customDate"){ 
     471                                $("[name='occurrences']").addClass("hidden"); 
     472                                $("[name='end']:last").removeClass("hidden");     
     473                            } 
     474                            else{ 
     475                                $("[name='end']:last").addClass("hidden"); 
     476                                $("[name='occurrences']").removeClass("hidden");                                         
     477                            } 
     478                        }); 
     479                         
     480                        $("[name='frequency']:last").change(function () { 
     481                                $(".frequency-option").addClass("hidden"); 
     482                                if($(this).val() == "none"){ 
     483                                        $(".repeat-in").addClass("hidden"); 
     484                                        return; 
     485                                }else{ 
     486                                    $(".repeat-in").removeClass("hidden"); 
     487                                    $("[name='start']:last").val($("[name='startDate']:last").val()); 
     488                                } 
     489                  
     490                                  
     491                                switch($(this).val()){ 
     492                    case "daily": 
     493                        $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Dia(s)"); 
     494                        break; 
     495                                        case "weekly": 
     496                        $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Semana(s)"); 
     497                                                $(".event-repeat-weekly:last").removeClass("hidden"); 
     498                                                break; 
     499                                        case "monthly": 
     500                        $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Mes(s)"); 
     501                                                $(".event-repeat-monthly:last").removeClass("hidden").find("input[type=radio][name=repeatmonthyType]").click(function(){ 
     502                                                        if($("input[type=radio][name=repeatmonthyType]:checked").val() == "1") 
     503                                                                $(".event-repeat-weekly:last").removeClass("hidden"); 
     504                                                        else 
     505                                                                $(".event-repeat-weekly:last").addClass("hidden"); 
     506                                                }); 
     507                        if($("input[type=radio][name=repeatmonthyType]:checked").val() == "1") 
     508                            $(".event-repeat-weekly:last").removeClass("hidden"); 
     509                                                else 
     510                            $(".event-repeat-weekly:last").addClass("hidden"); 
     511                                            break; 
     512                    default: 
     513                        $(".event-repeat-container:last").find(".repeat-in").find(".interval").html("Ano(s)"); 
     514                        break; 
     515                                } 
     516                                 
     517                        }); 
     518                }); 
     519 
    364520            UI.dialogs.addEvent.find('.calendar_addevent_details_lnk_timezone').click(function(e){ 
    365521                    $(this).addClass('hidden'); 
     
    627783                                        var user = DataLayer.get('user', ["=", "mail", $(this).val()]); 
    628784                                        if(!!user && user[0].id) 
    629                                                 attendees[user[0].id].name  = user[0].name; 
     785                                                attendees[user[0].id] = { name: user[0].name }; 
    630786                                         
    631787                                        /** 
Note: See TracChangeset for help on using the changeset viewer.