Changeset 7594 for branches/2.4/prototype/modules
- Timestamp:
- 12/03/12 17:01:59 (12 years ago)
- Location:
- branches/2.4/prototype/modules/calendar
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4/prototype/modules/calendar/interceptors/DBMapping.php
r7556 r7594 822 822 //TODO: Remover apos suporte a deepness na api 823 823 public function deepnessFindEvent(&$uri, &$result, &$criteria, $original) { 824 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 825 $Time = new DateTime('now', new DateTimeZone('UTC')); 826 $DayLigth = array(); 827 foreach ($result as $i => $v) { 828 829 if ( isset($v['calendar']) && (!isset($currentTimezone) || $currentTimezone != $original['criteria']['timezones'][$v['calendar']])) { 830 $currentTimezone = isset($original['criteria']['timezones'][$v['calendar']]) ? $original['criteria']['timezones'][$v['calendar']] : $v['timezone']; 831 $Time->setTimezone(new DateTimeZone($currentTimezone)); 832 } 833 834 $Time->setTimestamp((int) ($v['startTime'] / 1000)); 835 $DayLigth['calendar']['startTime'] = $Time->format('I') ? 1 : 0; 836 837 $Time->setTimestamp((int) ($v['endTime'] / 1000)); 838 $DayLigth['calendar']['endTime'] = $Time->format('I') ? 1 : 0; 839 840 if (!isset($currentTimezone) || ($currentTimezone != $v['timezone'])) { 841 $currentTimezone = $v['timezone']; 842 $Time->setTimezone(new DateTimeZone($v['timezone'])); 843 844 $Time->setTimestamp((int) ($v['startTime'] / 1000)); 845 $DayLigth['event']['startTime'] = $Time->format('I') ? 1 : 0; 846 847 $Time->setTimestamp((int) ($v['endTime'] / 1000)); 848 $DayLigth['event']['endTime'] = $Time->format('I') ? 1 : 0; 849 }else 850 $DayLigth['event'] = $DayLigth['calendar']; 851 852 853 $result[$i]['DayLigth'] = $DayLigth; 854 855 if(((int)$v['type']) == 2){ 856 857 $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 858 859 if($taskToActivity) 860 $result[$i]['taskToActivity'] = $taskToActivity; 861 862 $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 863 864 } 865 866 if (isset($v['id'])) { 867 $data = self::decodeParticipantsEvent($uri, $v, $criteria, $original); 868 869 $result[$i]['statusAttendees'] = isset($data['statusAttendees']) ? $data['statusAttendees'] : false; 870 $result[$i]['sizeAttendees'] = isset($data['sizeAttendees']) ? $data['sizeAttendees'] : false; 871 $result[$i]['participants'] = $data['attendees']; 872 873 $attachmentRelation = Controller::find(array('concept' => 'schedulableToAttachment'), false, array('filter' => array('=', 'schedulable', $v['id']))); 874 if (is_array($attachmentRelation)) { 875 $attachments = array(); 876 foreach ($attachmentRelation as $key => $value) 877 if (isset($value['attachment']) || !!$value['attachment']) 878 $attachments[$key] = $value['attachment']; 879 //Pega os anexos sem source 880 $result[$i]['attachments'] = Controller::find(array('concept' => 'attachment'), array('id', 'name', 'type', 'size'), array('filter' => array('IN', 'id', $attachments))); 881 } 882 883 $repeat = Controller::find(array('concept' => 'repeat'), false, array('filter' => array('=', 'schedulable', $v['id']))); 884 885 unset($result[$i]['repeat']); 886 887 if (is_array($repeat)) 888 $result[$i]['repeat'] = $repeat[0]; 889 } 824 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 825 826 $date = new DateTime('now', new DateTimeZone('UTC')); 827 $DayLigth = array(); 828 829 foreach ($result as $i => $v) { 830 831 $currentTimezone = isset($original['criteria']['timezones'][$v['calendar']]) ? $original['criteria']['timezones'][$v['calendar']] : $v['timezone']; 832 833 $date->setTimestamp((int) ($v['startTime'] / 1000)); 834 $date->setTimezone( new DateTimeZone( $v['timezone'] )); 835 $DayLigth['event']['startTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 836 837 $date->setTimezone( new DateTimeZone($currentTimezone)); 838 $DayLigth['calendar']['startTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 839 840 $date->setTimestamp((int) ($v['endTime'] / 1000)); 841 $date->setTimezone( new DateTimeZone($currentTimezone)); 842 $DayLigth['event']['endTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 843 844 $date->setTimezone( new DateTimeZone($currentTimezone)); 845 $DayLigth['calendar']['endTime'] = ($date->getTimestamp() + $date->getOffset()).'000'; 846 847 848 $result[$i]['DayLigth'] = $DayLigth; 849 850 if(((int)$v['type']) == 2){ 851 852 $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 853 854 if($taskToActivity) 855 $result[$i]['taskToActivity'] = $taskToActivity; 856 857 $result[$i]['historic'] = Controller::find(array('concept' => 'calendarHistoric'), false, array('filter' => array('=', 'schedulable', $v['id']) , 'deepness' => 2)); 858 859 } 860 861 if (isset($v['id'])) { 862 $data = self::decodeParticipantsEvent($uri, $v, $criteria, $original); 863 864 $result[$i]['statusAttendees'] = isset($data['statusAttendees']) ? $data['statusAttendees'] : false; 865 $result[$i]['sizeAttendees'] = isset($data['sizeAttendees']) ? $data['sizeAttendees'] : false; 866 $result[$i]['participants'] = $data['attendees']; 867 868 $attachmentRelation = Controller::find(array('concept' => 'schedulableToAttachment'), false, array('filter' => array('=', 'schedulable', $v['id']))); 869 if (is_array($attachmentRelation)) { 870 $attachments = array(); 871 foreach ($attachmentRelation as $key => $value) 872 if (isset($value['attachment']) || !!$value['attachment']) 873 $attachments[$key] = $value['attachment']; 874 //Pega os anexos sem source 875 $result[$i]['attachments'] = Controller::find(array('concept' => 'attachment'), array('id', 'name', 'type', 'size'), array('filter' => array('IN', 'id', $attachments))); 876 } 877 878 $repeat = Controller::find(array('concept' => 'repeat'), false, array('filter' => array('=', 'schedulable', $v['id']))); 879 880 unset($result[$i]['repeat']); 881 882 if (is_array($repeat)) 883 $result[$i]['repeat'] = $repeat[0]; 884 } 885 } 890 886 } 891 } 892 893 return $result; 887 888 return $result; 894 889 } 895 890 -
branches/2.4/prototype/modules/calendar/js/calendar.codecs.js
r7402 r7594 604 604 timezone: objEvent.timezone, 605 605 timezones: Timezone.timezones, 606 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat),607 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat),608 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat),609 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat),606 startDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.startTime : objEvent.startTime), 'start', objEvent.allDay ), 607 startHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.startTime) : Timezone.formateHour( objEvent.startTime ), 608 endDate: Timezone.getDate( (objEvent.DayLigth ? objEvent.DayLigth.event.endTime : objEvent.endTime), 'end', objEvent.allDay ), 609 endHour: objEvent.DayLigth ? Timezone.getHour( objEvent.DayLigth.event.endTime) : Timezone.formateHour( objEvent.endTime ), 610 610 allDay: !!parseInt( objEvent.allDay ), 611 611 dueDate: objEvent.dueDate, … … 1405 1405 isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0, 1406 1406 acl: form.attendee_organizer == attendee ? (form.attendeeAcl[i].indexOf('o') < 0 ? form.attendeeAcl[i]+'o' : form.attendeeAcl[i]) : form.attendeeAcl[i].replace('o', '') 1407 }, form.delegatedFrom[i] != '0'? {1407 }, (form.delegatedFrom[i] != '0' && form.delegatedFrom[i] != '') ? { 1408 1408 delegatedFrom: form.delegatedFrom[i] 1409 1409 } : {}); … … 1746 1746 } 1747 1747 1748 var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false;1749 1750 1748 var duration =parseInt( evt.DayLigth.calendar.endTime ) - parseInt( evt.DayLigth.calendar.startTime ), isRepeat = false; 1749 1750 var occurrences = []; 1751 1751 1752 1752 if( evt.occurrences ) … … 1755 1755 occurrences = evt.occurrences; 1756 1756 }else 1757 occurrences[ occurrences.length ] = evt. startTime;1758 1759 1757 occurrences[ occurrences.length ] = evt.DayLigth.calendar.startTime; 1758 1759 //occurrences = DataLayer.unique( occurrences ).sort(); 1760 1760 var typeEvent; 1761 1761 for( var i = 0; i < occurrences.length; i++ ) … … 1766 1766 id: evt.URI || evt.id+ '-' + i, 1767 1767 title: Encoder.htmlDecode(evt.summary), 1768 start: Timezone.getDate Calendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving),1769 end: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving),1770 1768 start: Timezone.getDateObjCalendar( occurrences[i], 'start', evt.allDay), 1769 end: Timezone.getDateObjCalendar( (parseInt( occurrences[i] ) + duration), 'end', evt.allDay), 1770 allDay: parseInt( evt.allDay ), 1771 1771 isRepeat: isRepeat, 1772 1772 occurrence: i, -
branches/2.4/prototype/modules/calendar/js/timezone.js
r6069 r7594 11 11 daylightSaving: isNaN(parseInt( objTime.isDaylightSaving )) ? 0 : parseInt( objTime.isDaylightSaving ), 12 12 13 timezones: objTime.timezones, 13 timezones: objTime.timezones, 14 14 timezone: function( tzId ){ 15 15 … … 18 18 }, 19 19 20 getDateCalendar: function(date, tzId, isDay){ 21 var timezone = this.timezone( tzId ); 22 23 if(!timezone) 24 return date; 25 26 date = this.normalizeDate(date, false, true); 27 28 return date.add({hours: parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay) }); 20 getDateCalendar: function(date, tzId, isDayLigth ){ 21 return date; 29 22 }, 30 23 31 getDateEvent: function(date, tzId, i dCalendar, isDay, type){32 var timezone = this.timezone( tzId ); 33 var timezoneCurrent = this.timezone(DataLayer.get('calendar', idCalendar).timezone);24 getDateEvent: function(date, tzId, isDayLigth){ 25 if(!tzId) 26 return date; 34 27 35 if(timezone == timezoneCurrent) 36 return date; 37 38 var to = parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay.event[type]); 39 var current = parseInt(timezoneCurrent.charAt(0) + timezoneCurrent.charAt(2)) + parseInt(isDay.calendar[type]); 40 41 if(timezone.charAt(0) == timezoneCurrent.charAt(0)) 42 hours = ( to + (current * - 1)) ; 43 else 44 hours = to + (( current ) * (timezone.charAt(0) == '+' ? -1 : 1)) ; 45 46 return date.add({hours: hours}); 47 }, 48 49 normalizeDate: function(date, current, inverse){ 28 var timezone = this.timezone( tzId ); 29 30 if(!timezone) 31 return date; 32 33 date = this.normalizeDate(date, false, true); 34 35 return date.add({hours: (parseInt(timezone.charAt(0) + timezone.charAt(2)) + Timezone.diff( isDayLigth )) }); 36 37 }, 38 39 diff: function(isDayLigth){ 40 41 if( !parseInt( isDayLigth ) ){ 42 43 return 0; 44 45 }else{ 46 47 return (parseInt( isDayLigth ) == 1 ? 1 : -1); 48 } 49 50 }, 51 52 normalizeDate: function(date, current, inverse){ 50 53 var offsetDate = !!current ? this.currentOffset : date.getUTCOffset(); 51 54 return date.add({hours: (parseInt(offsetDate.charAt(0) + offsetDate.charAt(2)) * (!!inverse ? -1 : 1) )}); … … 54 57 getDateMapDisponibility: function(date){ 55 58 return this.normalizeDate(date, false, true); 56 } 59 }, 60 61 getHour: function(time){ 62 63 return dateCalendar.formatDate( Timezone.normalizeDate( new Date( parseInt( time ) ), false, true) , User.preferences.hourFormat); 64 65 }, 66 67 formateHour: function(time){ 68 69 return dateCalendar.formatDate( new Date( parseInt( time ) ) , User.preferences.hourFormat); 70 71 }, 72 73 getDate: function( time, rang, isAllDay){ 74 75 return (new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0) )).toString( User.preferences.dateFormat ); 76 77 }, 78 79 getDateObj: function( time, rang, isAllDay){ 80 81 return Timezone.normalizeDate(new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0) ), false, true); 82 83 }, 84 85 getDateObjCalendar: function( time, rang, isAllDay){ 86 87 return Timezone.normalizeDate(new Date( parseInt( time ) - ((rang == 'end' && isAllDay && parseInt(isAllDay) == 1) ? 86400000 : 0)), false, true); 88 89 } 57 90 }
Note: See TracChangeset
for help on using the changeset viewer.