Changeset 7068


Ignore:
Timestamp:
08/20/12 11:15:00 (12 years ago)
Author:
acoutinho
Message:

Ticket #3054 - Inconsistencia ao importar alguma tarefa individual

Location:
trunk/prototype
Files:
6 edited

Legend:

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

    r7041 r7068  
    703703        "class": form["class"], 
    704704        startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
    705         endTime:  Date.parseExact(form.endDate + " "+$.trim(form.endHour), formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'),  //+ (!!form.allDay ? 86400000 : 0) , 
    706         due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueTime) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
    707         allDay: ( !!form.allDay ? 1 : 0 ),       
     705        endTime: (form.dueDate == '' ) ? 
     706            Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00') : 
     707            Date.parseExact(form.dueDate + " "+$.trim(form.dueTime) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
     708        due: (form.dueDate == '' ) ? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueTime) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
     709        allDay: ( form.dueDate == ''  ? 1 : 0 ), 
    708710        status: form.taskStatus,       
    709711        id: form.idTask, 
     
    10621064        "class": form["class"], 
    10631065        startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
    1064         endTime:  Date.parseExact(form.endDate + " "+$.trim(form.endHour), formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'),  //+ (!!form.allDay ? 86400000 : 0) , 
     1066        endTime:  (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
    10651067        due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 
    10661068        allDay: ( !!form.allDay ? 1 : 0 ),       
     
    16471649                 
    16481650            if(!(typeof(evt) == 'object') || (evt.id.indexOf('java') >= 0)) 
    1649                 return (null); 
     1651                        return (null); 
    16501652 
    16511653            evt.calendar = evt.calendar || "1"; 
    16521654 
    16531655            if( !grouped[ evt.calendar ] ) 
    1654                 grouped[ evt.calendar ] = []; 
     1656                        grouped[ evt.calendar ] = []; 
    16551657                         
    16561658            var calendar = DataLayer.get('calendar', evt.calendar); 
    16571659                 
     1660                var taskEditable = function(idTask){ 
     1661                        for(var i = 0; i < evt.participants.length; i++){ 
     1662                                attendee = DataLayer.get('participant', evt.participants[i]); 
     1663                                if(attendee.user == User.me.id) 
     1664                                        return attendee.isOrganizer == '1' ?  
     1665                                        { 
     1666                                                editable: true,  
     1667                                                disableResizing: false,  
     1668                                                disableDragging: false, 
     1669                                                className: 'fullcalendar-context-menu  event-type-2 event-id-'+idTask+' calendar-id-'+calendar.id 
     1670                                        }  
     1671                                        :  
     1672                                        { 
     1673                                                editable: false,  
     1674                                                disableResizing: true,  
     1675                                                disableDragging: true, 
     1676                                                className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idTask 
     1677                                        }; 
     1678                        } 
     1679                } 
     1680                 
    16581681            var eventEditable = function(idEvent, isRecurrence, Recurrence){ 
    1659                 if(Calendar.signatureOf[calendar.id].isOwner == "1"){ 
    1660                     var attendee = {}; 
    1661                     for(var i = 0; i < evt.participants.length; i++){ 
    1662                         attendee = DataLayer.get('participant', evt.participants[i]); 
    1663                         if(attendee.user == User.me.id) 
    1664                                             return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ?  
     1682                        if(Calendar.signatureOf[calendar.id].isOwner == "1"){ 
     1683                                var attendee = {}; 
     1684                                for(var i = 0; i < evt.participants.length; i++){ 
     1685                                        attendee = DataLayer.get('participant', evt.participants[i]); 
     1686                                        if(attendee.user == User.me.id) 
     1687                                                return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ?  
    16651688                                                { 
    1666                                 selectable: true,  
    1667                                 className: 'fullcalendar-context-menu  event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 
    1668                                 } : { 
    1669                                 editable: false,  
    1670                                 selectable: true , 
    1671                                 className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent 
     1689                                                        selectable: true,  
     1690                                                        className: 'fullcalendar-context-menu  event-type-1 event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 
     1691                                                } : { 
     1692                                                        editable: false,  
     1693                                                        selectable: true , 
     1694                                                        className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent 
     1695                                                }; 
     1696                                } 
     1697                                return { 
     1698                                        editable: false,  
     1699                                        className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id,   
     1700                                        selectable: true,  
     1701                                        disableDragging: isRecurrence 
    16721702                                }; 
    1673                     } 
    1674                     return { 
    1675                         editable: false,  
    1676                         className: 'blocked-event-permision  fullcalendar-not-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id,   
    1677                         selectable: true,  
    1678                         disableDragging: isRecurrence 
    1679                     }; 
    1680                 } 
    1681                 else{ 
    1682                     var aclSignature = Calendar.signatureOf[calendar.id].permission; 
     1703                        } 
     1704                        else{ 
     1705                                var aclSignature = Calendar.signatureOf[calendar.id].permission; 
     1706                                         
     1707                                var mountClass =  function(acl){ 
     1708                                        var returns = "" 
     1709                                        returns += acl['write'] ? "" :  'blocked-event-permision '; 
     1710                                        returns += acl['busy'] ? 'fullcalendar-not-context-menu ' : (acl['read']  ?  'fullcalendar-context-menu '+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') : ''); 
     1711                                        returns += 'event-id-'+idEvent+' calendar-id-'+calendar.id; 
     1712                                        return returns; 
     1713                                } 
    16831714                                 
    1684                     var mountClass =  function(acl){ 
    1685                         var returns = "" 
    1686                         returns += acl['write'] ? "" :  'blocked-event-permision '; 
    1687                         returns += acl['busy'] ? 'fullcalendar-not-context-menu ' : (acl['read']  ?  'fullcalendar-context-menu '+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') : ''); 
    1688                         returns += 'event-id-'+idEvent+' calendar-id-'+calendar.id; 
    1689                         return returns; 
    1690                     }                            
    1691                     return DataLayer.merge( 
    1692                         { 
    1693                         editable: aclSignature.acl['write'] && !isRecurrence, 
    1694                         disableResizing : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true : false), 
    1695                         disableDragging  : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true: false), 
    1696                         className: mountClass(aclSignature.acl) 
    1697                         }, aclSignature.acl['busy'] ?  
    1698                         { 
    1699                             title: 'Ocupado',  
    1700                             selectable: false 
    1701                         } : { 
    1702                             selectable: true 
    1703                         });      
    1704                 } 
     1715                                return DataLayer.merge({ 
     1716                                        editable: aclSignature.acl['write'] && !isRecurrence, 
     1717                                        disableResizing : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true : false), 
     1718                                        disableDragging  : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true: false), 
     1719                                        className: mountClass(aclSignature.acl) 
     1720                                        }, aclSignature.acl['busy'] ?  
     1721                                        { 
     1722                                                title: 'Ocupado',  
     1723                                                selectable: false 
     1724                                        } : { 
     1725                                                selectable: true 
     1726                                        } 
     1727                                );       
     1728                        } 
    17051729            } 
     1730 
     1731                var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false; 
     1732 
     1733                var occurrences = []; 
    17061734                 
    1707             var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false; 
    1708                  
    1709             var occurrences = []; 
    1710                  
    1711             if( evt.occurrences ) 
    1712             { 
    1713                 isRepeat = true; 
    1714                 occurrences = evt.occurrences; 
     1735                if( evt.occurrences ) 
     1736                { 
     1737                        isRepeat = true; 
     1738                        occurrences = evt.occurrences; 
    17151739            }else 
    1716                 occurrences[ occurrences.length ] = evt.startTime; 
     1740                        occurrences[ occurrences.length ] = evt.startTime; 
    17171741 
    17181742            //occurrences = DataLayer.unique( occurrences ).sort(); 
    17191743                var typeEvent;   
    1720             for( var i = 0; i < occurrences.length; i++ ){ 
    1721  
     1744            for( var i = 0; i < occurrences.length; i++ ) 
     1745                { 
    17221746            typeEvent = (evt.type == 2 && evt.taskToActivity ? 3 : evt.type) 
    17231747                grouped[ evt.calendar ].push( DataLayer.merge( 
    17241748                { 
    1725                     id: evt.URI || evt.id+ '-' + i, 
    1726                     title: Encoder.htmlDecode(evt.summary), 
    1727                     start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1728                     end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
    1729                     allDay: parseInt( evt.allDay ), 
    1730                     isRepeat: isRepeat, 
    1731                     occurrence: i, 
    1732                     type: typeEvent, 
    1733                     calendar: evt.calendar 
    1734                     }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? {editable: true, disableResizing: false, disableDragging: false} : {editable: false, disableResizing: true, disableDragging: true}) )) ); 
     1749                                id: evt.URI || evt.id+ '-' + i, 
     1750                                title: Encoder.htmlDecode(evt.summary), 
     1751                                start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone,  !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     1752                                end:   Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 
     1753                                allDay: parseInt( evt.allDay ), 
     1754                                isRepeat: isRepeat, 
     1755                                occurrence: i, 
     1756                                type: typeEvent, 
     1757                                calendar: evt.calendar 
     1758                                }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? taskEditable(evt.id) : {editable: false, disableResizing: true, disableDragging: true})))); 
    17351759        } 
    17361760        }); 
  • trunk/prototype/modules/calendar/js/calendar.contentMenu.js

    r6533 r7068  
    88                 
    99                var classes = $(this).attr('class').split(" "); 
    10                 var idEvent = false, idRecurrence = false, idCalendar = false; 
     10                var idEvent = false, typeEvent = false,idRecurrence = false, idCalendar = false; 
    1111                 
    1212                //recupera o id do calendar eo id do evento para tratamento 
    1313                for(var i = 0; i < classes.length; i++){ 
    14                     if (classes[i].indexOf("event-id-") >= 0 ){ 
    15                         idEvent = classes[i].replace(/[a-zA-Z-]+/g, ''); 
    16                         continue; 
    17                     }else if (classes[i].indexOf("Recurrence-id-") >= 0 ){ 
    18                         idRecurrence = classes[i].replace(/[a-zA-Z-]+/g, ''); 
    19                         continue; 
    20                     }else if (classes[i].indexOf("calendar-id-") >= 0 ){ 
    21                         idCalendar = classes[i].replace(/[a-zA-Z-]+/g, ''); 
    22                         continue; 
    23                     } 
    24                 } 
     14                        if (classes[i].indexOf("event-id-") >= 0 ){ 
     15                                idEvent = classes[i].replace(/[a-zA-Z-]+/g, ''); 
     16                                continue; 
     17                        }else if (classes[i].indexOf("Recurrence-id-") >= 0 ){ 
     18                                idRecurrence = classes[i].replace(/[a-zA-Z-]+/g, ''); 
     19                                continue; 
     20                        }else if (classes[i].indexOf("calendar-id-") >= 0 ){ 
     21                                idCalendar = classes[i].replace(/[a-zA-Z-]+/g, ''); 
     22                                continue; 
     23                        }else if (classes[i].indexOf("event-type-") >= 0 ){ 
     24                                typeEvent = classes[i].replace(/[a-zA-Z-]+/g, ''); 
     25                                continue; 
     26                        } 
     27                } 
    2528 
    26                 var schedulable = DataLayer.get('schedulable', idEvent); 
    27  
     29                var schedulable = DataLayer.get('schedulable', idEvent); 
    2830                var isRecurrence = DataLayer.get('repeat', schedulable.repeat).frequency || false; 
    2931 
    3032                var top = $('#divAppbox').scrollTop(); 
    3133 
    32                 var template = DataLayer.render( 'templates/menu_context_event.ejs', {event: schedulable.id , 
    33                     top: (event.clientY - 135 + top), left: (event.clientX - 445),  
     34                var template = DataLayer.render( 'templates/menu_context_event.ejs',  
     35                { 
     36                        event: schedulable.id , 
     37                        top: (event.clientY - 135 + top),  
     38                        left: (event.clientX - 445),  
    3439                    signature: Calendar.signatureOf[idCalendar], 
    35                     calendars: Calendar.calendars, isRecurrence: (!isRecurrence || isRecurrence == 'none') ? false : true, 
    36                     idRecurrence: idRecurrence 
    37                 }); 
     40                        calendars: Calendar[parseInt(typeEvent) == 1 ? 'calendars' : 'groups'],  
     41                        isRecurrence: (!isRecurrence || isRecurrence == 'none') ? false : true, 
     42                        idRecurrence: idRecurrence, 
     43                        typeEvent: typeEvent 
     44                }); 
    3845 
    3946                $('#context-menu-event').html(template); 
    4047 
    41                 var method = function(value){ 
    42                     switch (value){ 
    43                         case "ocurrency": 
    44                             return '2' 
    45                         case "copy": 
    46                             return '1'; 
    47                         case "move":  
    48                             return '0'; 
    49                     } 
    50                 } 
    51                  
     48                var method = function(value){ 
     49                        switch (value){ 
     50                                case "ocurrency": 
     51                                        return '2' 
     52                                case "copy": 
     53                                        return '1'; 
     54                                case "move":  
     55                                        return '0'; 
     56                        } 
     57                } 
     58 
    5259                $('#context-menu-event').find('li.menu-item').hover( 
    5360                        function () { 
  • trunk/prototype/modules/calendar/js/task.helpers.js

    r7065 r7068  
    33        var errors = { 
    44                'emptyInitData': 'Por favor, informe uma data inicial', 
    5                 'emptyEndData': 'Por favor, informe uma data final', 
    65                'emptyInitHour': 'Por favor, informe uma hora inicial', 
    7                 'emptyEndHour': 'Por favor, informe uma hora final', 
    86                 
    97                'invalidInitData' : 'Data inicial inválida', 
    10                 'invalidEndData' : 'Data final inválida', 
    11                  
     8 
    129                'equalData' : 'Hora inicial igual a final', 
    1310                'theirData' : 'Data final menor que a inicial',          
     
    2219 
    2320    var start_date = $(".new-task-win.active .start-date").val(); 
    24     var end_date   = $(".new-task-win.active .end-date").val(); 
    2521    var start_time = $(".new-task-win.active .start-time").val(); 
    26     var end_time   = $(".new-task-win.active .end-time").val(); 
    2722        var due_date   = $(".new-task-win.active .date-prevision").val(); 
    2823        var due_time   =  $.trim($(".new-task-win.active .time-prevision").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      
     24 
    3425    if(start_date == "") 
    3526                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']; 
    4227        else if(due_date != "" && due_time == "") 
    4328                return errors['dueTime']; 
    4429        else if(due_date == "" && due_time != "") 
    4530                return errors['dueDate']; 
    46          
     31 
    4732    var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; 
    48                  
    4933    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 ); 
    5234 
    5335    if(startDate == null || startDate.getTime() < 0 ) 
    5436                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']; 
     37 
     38    if(due_date != '' && due_time != '') 
     39    { 
     40        var dueDate = Date.parseExact( due_date + " " + $.trim(due_time) , formatString ); 
     41 
     42        if(dueDate.compareTo(startDate) == -1) 
     43            return errors['dueInitDate']; 
     44    } 
    8545 
    8646    return false; 
  • trunk/prototype/modules/calendar/templates/activity_add.ejs

    r7011 r7068  
    1515            </p> 
    1616            <p class="input-group date-info"> 
     17                <span>Inicio</span> 
    1718                <input type="text" class="start-date" readonly="readonly" value="<%= (data.activity.startDate) ? data.activity.startDate : '' %>" name="startDate" /> 
    1819                <input type="text" class="time start-time<%= (data.activity.allDay) ? ' hidden' : '' %>" readonly="readonly" value="<%= (data.activity.startHour) ? data.activity.startHour : '' %>" name="startHour" />  
    19                 <span>até</span> 
    20                 <input type="text" class="end-date" readonly="readonly" value="<%= (data.activity.endDate) ? data.activity.endDate : '' %>" name="endDate" /> 
    21                 <input type="text" class="time end-time<%= (data.activity.allDay) ? ' hidden' : '' %>" readonly="readonly" value="<%= (data.activity.endHour) ? data.activity.endHour : '' %>" name="endHour" /> 
    22  
    23                 <span class="previsao-termino">Previsão término:</span> 
     20                <span>com previsão de término</span> 
    2421                <input type="text" class="date-due" name="dueDate" readonly="readonly"> 
    25                 <input type="text" class="time time-due" name="dueHour" readonly="readonly"> 
     22                <input type="text" class="time time-due <%= (data.activity.allDay) ? ' hidden' : '' %>" name="dueHour" readonly="readonly"> 
    2623 
    2724                <a href="#" class="group_addactivity_details_lnk_timezone">Fuso horário</a> 
  • trunk/prototype/modules/calendar/templates/task_add.ejs

    r7006 r7068  
    1414                </p> 
    1515                <p class="input-group date-info"> 
     16            <span>Inicio</span> 
    1617                        <input type="text" class="date start-date" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.startDate) ? data.task.startDate : '' %>" name="startDate" /> 
    17                         <input type="text" class="time start-time<%= (data.task.allDay) ? ' hidden' : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.startHour) ? data.task.startHour : '' %>" name="startHour" />  
    18                         <span>até</span> 
    19                         <input type="text" class="date end-date" value="<%= (data.task.endDate) ? data.task.endDate : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> name="endDate" /> 
    20                         <input type="text" class="time end-time<%= (data.task.allDay) ? ' hidden' : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.endHour) ? data.task.endHour : '' %>" name="endHour" /> 
    21  
    22                                 <span class="prevision-termino">Previsão término:</span> 
    23                                 <input type="text" name="dueDate" class="date date-prevision" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueDate %>"> 
    24                                 <input type="text" name="dueTime" class="time time-prevision" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueTime %>"> 
    25  
    26                                 <a href="#" class="calendar_addtask_details_lnk_timezone" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>>Fuso horário</a> 
     18                        <input type="text" class="time start-time" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.startHour) ? data.task.startHour : '' %>" name="startHour" /> 
     19                        <span>com previsão de término</span> 
     20            <input type="text" name="dueDate" class="date date-prevision" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueDate %>"> 
     21            <input type="text" name="dueTime" class="time time-prevision" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueTime %>"> 
     22 
     23            <a href="#" class="calendar_addtask_details_lnk_timezone" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>>Fuso horário</a> 
    2724                         
    2825                         
    29 <!--                    <input type="text" name="timezone" style="display: none;" />--> 
     26<!--            <input type="text" name="timezone" style="display: none;" />--> 
    3027                        <select name="timezone" class="hidden calendar-addtask-details-txt-timezone" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    3128                                <option value="">- None selected -</option> 
     
    4845                        </div> 
    4946                </div> 
    50                  
    51                 <p class="input-group task-type"> 
    52                         <input type="checkbox" name="allDay" value="true" <%= (data.task.allDay) ? 'checked="checked"' : '' %> <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>/> 
    53                         <label for="allDay">Dia inteiro</label> 
    54 <!-- 
    55                         <input type="checkbox" class="button-repeat" /> 
    56                         <label for="calendar_addtask_details_chk_repeat">Repetir</label>--> 
    57                 </p> 
     47 
    5848                <div class="subitem"> 
    5949                                % Conclusão: <input type="text" name="percentage" class="done" value="<%= data.task.percentage %>"> 
  • trunk/prototype/services/iCal.php

    r7028 r7068  
    5858                            $sTime = new DateTime('@' . (int) ($v['startTime'] / 1000), $timezone); 
    5959                            $sTime->setTimezone($apTimezoneOBJ); 
    60                             $eTime = new DateTime('@' . (int) ($v['endTime'] / 1000), $timezone); 
    61                             $eTime->setTimezone($apTimezoneOBJ); 
    6260 
    6361                            if (( isset($v['repeat']) ) && ( isset($v['repeat']['frequency']) && $v['repeat']['frequency'] && $v['repeat']['frequency'] != 'none' ))  
     
    6563                             
    6664 
    67                             if (isset($v['allDay']) && $v['allDay'] == 1) { 
    68                                 $vevent->setProperty('dtstart', $sTime->format(DATE_RFC822), array("VALUE" => "DATE")); 
    69                                 $vevent->setProperty('dtend', $eTime->format(DATE_RFC822), array("VALUE" => "DATE")); 
    70                                 $vevent->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'TRUE'); 
    71                             } else { 
    72                                 $vevent->setProperty('dtstart', $sTime->format(DATE_RFC822), array('TZID' => $apTimezone)); 
    73                                 $vevent->setProperty('dtend', $eTime->format(DATE_RFC822), array('TZID' => $apTimezone)); 
    74                                 $vevent->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'FALSE'); 
     65                            if (isset($v['allDay']) && $v['allDay'] == 1) 
     66                { 
     67                    $vevent->setProperty('dtstart', $sTime->format(DATE_RFC822), array("VALUE" => "DATE")); 
     68                    $vevent->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'TRUE'); 
     69                            } else 
     70                { 
     71                    $vevent->setProperty('dtstart', $sTime->format(DATE_RFC822), array('TZID' => $apTimezone)); 
     72                    $vevent->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'FALSE'); 
    7573                            } 
    7674                                             
     
    137135                } 
    138136 
     137                ob_start(); 
     138                print_r( "\n dtStart \n"); 
     139                print_r($sTime->format(DATE_RFC822)); 
     140                print_r( "\n dtEnd \n"); 
     141                print_r( $eTime->format(DATE_RFC822)); 
     142                $output = ob_get_clean(); 
     143                file_put_contents( "/tmp/acoutinho.log",  $output , FILE_APPEND); 
     144 
    139145                if(isset($v['due']) && $v['due'] != '' && (int)$v['due'] > 0){ 
    140146                    $dueTime = new DateTime('@' . (int) ($v['due'] / 1000), $timezone); 
     
    182188                            break; 
    183189                    } 
    184                 }        
     190                } 
     191 
     192        ob_start(); 
     193        print_r( "\n Ical Gerado \n"); 
     194        print_r( $ical->createCalendar()); 
     195        $output = ob_get_clean(); 
     196        file_put_contents( "/tmp/acoutinho.log",  $output , FILE_APPEND); 
    185197 
    186198                return $ical->createCalendar(); 
     
    282294            $sTime = new DateTime('@' . (int) ($v['startTime'] / 1000), $timezone); 
    283295            $sTime->setTimezone($apTimezoneOBJ); 
    284             $eTime = new DateTime('@' . (int) ($v['endTime'] / 1000), $timezone); 
    285             $eTime->setTimezone($apTimezoneOBJ); 
    286296 
    287297            if (isset($v['allDay']) && $v['allDay'] == 1) { 
    288298                $todo->setProperty('dtstart', $sTime->format(DATE_RFC822), array("VALUE" => "DATE")); 
    289                 $todo->setProperty('dtend', $eTime->format(DATE_RFC822), array("VALUE" => "DATE")); 
    290299                //$todo->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'TRUE'); 
    291300            } else { 
    292301                $todo->setProperty('dtstart', $sTime->format(DATE_RFC822), array('TZID' => $apTimezone)); 
    293                 $todo->setProperty('dtend', $eTime->format(DATE_RFC822), array('TZID' => $apTimezone)); 
    294302                //$todo->setProperty('X-MICROSOFT-CDO-ALLDAYEVENT', 'FALSE'); 
    295303            } 
     
    372380    public function createAlarms($alarms, &$vevent) 
    373381    {    
    374             foreach ($alarms as $ia => $va) 
     382            foreach ($alarms as $va) 
    375383            { 
    376384                $valarm = new valarm(); 
     
    17411749        $interation['schedulable://' . $eventID] = $schedulable; 
    17421750 
    1743  
    1744  
    1745  
    1746  
    17471751        return $interation; 
    17481752    } 
     
    17841788 
    17851789        /* Data de Termino */ 
    1786         $endTime = $component->getProperty('dtend', false, true); 
    1787  
    1788         $tzid = isset($endTime['params']['TZID']) ? $endTime['params']['TZID'] : $params['X-WR-TIMEZONE']; 
    1789          
    1790         if($tzid) 
    1791             $tzid = self::nomalizeTZID($tzid); 
    1792  
    1793         if (isset($endTime['params']['VALUE']) && $endTime['params']['VALUE'] === 'DATE') 
    1794             $schedulable['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $schedulable['timezone'], '@' . self::date2timestamp($endTime['value'])) . '000'; 
    1795         else if ($tzid && !isset($endTime['value']['tz'])) /* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 
    1796             $schedulable['endTime'] = self::date2timestamp($endTime['value']) - self::_getTzOffset('UTC', $tzid, '@' . self::date2timestamp($endTime['value'])) . '000'; 
    1797         else { 
    1798             $schedulable['endTime'] = self::date2timestamp($endTime['value']) . '000'; 
    1799             if (strpos($params['prodid'], 'Outlook') !== false) { 
    1800                 //Se o ics veio em utc não aplicar horario de verão 
    1801                 $eTime = new DateTime('@' . (int) ($schedulable['endTime'] / 1000), new DateTimeZone('UTC')); 
    1802                 $eTime->setTimezone($objTimezone); 
    1803                 if ($eTime->format('I')) 
    1804                     $schedulable['endTime'] = $schedulable['endTime'] - 3600000; 
    1805             } 
    1806         } 
     1790        if($due = $component->getProperty('due', false, true)){ 
     1791 
     1792        $tzid = isset($due['params']['TZID']) ? $due['params']['TZID'] : $params['X-WR-TIMEZONE']; 
     1793 
     1794        if($tzid) 
     1795            $tzid = self::nomalizeTZID($tzid); 
     1796 
     1797        if (isset($due['params']['VALUE']) && $due['params']['VALUE'] === 'DATE') 
     1798            $schedulable['due'] = self::date2timestamp($due['value']) - self::_getTzOffset('UTC', $schedulable['timezone'], '@' . self::date2timestamp($due['value'])) . '000'; 
     1799        else if ($tzid && !isset($endTime['value']['tz'])) /* Caso não tenha um tz na data mais exista um parametro TZID deve ser aplicado o timezone do TZID a data */ 
     1800            $schedulable['due'] = self::date2timestamp($due['value']) - self::_getTzOffset('UTC', $tzid, '@' . self::date2timestamp($due['value'])) . '000'; 
     1801        else { 
     1802            $schedulable['due'] = self::date2timestamp($due['value']) . '000'; 
     1803            if (strpos($params['prodid'], 'Outlook') !== false) { 
     1804            //Se o ics veio em utc não aplicar horario de verão 
     1805            $dueTime = new DateTime('@' . (int) ($schedulable['due'] / 1000), new DateTimeZone('UTC')); 
     1806            $dueTime->setTimezone($objTimezone); 
     1807 
     1808            if ($dueTime->format('I')) 
     1809                $schedulable['due'] = $schedulable['due'] - 3600000; 
     1810            } 
     1811        } 
     1812        $schedulable['endTime'] = $schedulable['due']; 
     1813    }else 
     1814        $schedulable['endTime'] = $schedulable['startTime']; 
    18071815 
    18081816        $schedulable['type'] = '2'; //type schedulable 
     
    20032011        $interation['schedulable://' . $todoID] = $schedulable; 
    20042012 
    2005         return $interation; 
     2013    return $interation; 
    20062014    } 
    20072015 
Note: See TracChangeset for help on using the changeset viewer.