Changeset 5737 for trunk


Ignore:
Timestamp:
03/15/12 16:41:03 (12 years ago)
Author:
natan
Message:

Ticket #2434 - Supressao da primeira ocorrencia de uma repeticao quando seu evento base se enquadra na mesma

Location:
trunk/prototype/modules/calendar
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r5731 r5737  
    107107          $end = $criteria['filter'][2][2]; 
    108108 
    109          $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", calendar_object.dtstart as "startTime", calendar_object.summary as "summary", calendar_object.description as "description", calendar_object.dtend as "endTime" , calendar_object.location as "location", calendar_object.allday as "allDay", calendar_object.transp as "transparent", calendar_object.class_id as "class", calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart",calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence",  calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as calendar FROM calendar_to_calendar_object , calendar_object WHERE (range_start >= \''.$start.'\' AND range_end <= \''.$end.'\' AND calendar_to_calendar_object.calendar_id IN (\''.  implode('\',\'', $criteria['filter'][3][2]).'\')) AND calendar_to_calendar_object.calendar_object_id = calendar_object.id'; 
    110           
     109          $ids = array(); 
     110          $occ = array(); 
     111 
     112          if( $occurrences = self::checkOccurrences( $start, $end, intval($criteria['deepness']) + 1 ) ) 
     113              foreach( $occurrences as $id => $occurrence ) 
     114              { 
     115                  $ids[] = $id; 
     116                  $occ[] = $occurrence; 
     117              } 
     118 
     119         $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", calendar_object.dtstart as "startTime", calendar_object.summary as "summary", calendar_object.description as "description", calendar_object.dtend as "endTime" , calendar_object.location as "location", calendar_object.allday as "allDay", calendar_object.transp as "transparent", calendar_object.class_id as "class", calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart",calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence",  calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as calendar FROM calendar_to_calendar_object , calendar_object WHERE (range_start >= \''.$start.'\' AND range_end <= \''.$end.'\' AND calendar_to_calendar_object.calendar_id IN (\''.  implode('\',\'', $criteria['filter'][3][2]).'\')) AND calendar_to_calendar_object.calendar_object_id = calendar_object.id'.( !empty($ids) ? ' AND calendar_object.id NOT IN (\'' .implode( '\',\'', $ids ). '\')' : ''); 
     120 
    111121         $params = Controller::service('PostgreSQL')->execResultSql($sql); 
    112122         $params = self::deepnessFindEvent( &$uri , &$params , &$criteria , $original); 
    113  
    114          $occ = self::checkOccurrences( $criteria['filter'][1][2], $criteria['filter'][2][2], intval($criteria['deepness']) + 1 ); 
    115  
    116          if( $occ ) 
    117             $params = array_merge( $params, $occ ); 
     123  
     124         $params = array_merge( $params, $occ ); 
    118125 
    119126         return false; 
     
    252259              { 
    253260                    $result[ $currentId ] = $ret['repeat']['schedulable']; 
     261                    $result[ $currentId ]['repeat']['schedulable'] = $currentId; 
     262 
    254263                    $result[ $currentId ][ 'occurrences' ] = array(); 
    255    
     264 
    256265                    $calendarToCalendarObj = self::schedulable2calendarToObject( $currentId ); 
    257266 
    258                     $result[ $currentId ]['calendar'] = $calendarToCalendarObj[0]['calendar_id']; 
    259  
    260                     unset( $result[ $currentId ]['repeat'] ); 
     267                    $result[ $currentId ]['calendar'] = $calendarToCalendarObj[0]['calendar_id'];   
    261268              } 
    262269       
    263270              $result[ $currentId  ][ 'occurrences' ][] = $ret['occurrence']; 
    264  
    265271        } 
    266272 
    267         foreach( $result as $id => $res ) 
    268             $params[] = $res; 
    269  
    270         return( $params ); 
     273        return( $result ); 
    271274    } 
    272275 
  • trunk/prototype/modules/calendar/js/calendar.codecs.js

    r5729 r5737  
    687687        var formatString = ( typeof form.allDay !== "undefined" && !!form.allDay )? User.preferences.dateFormat+" HH:mm" : User.preferences.dateFormat + " " + User.preferences.hourFormat; 
    688688 
    689         var date = Date.parseExact( form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).add( { days: 1 } ).toString('yyyy-MM-dd HH:mm:00'); 
     689        var date = Date.parseExact( form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'); 
    690690         
    691691        patati['startTime'] = date.toString('yyyy-MM-dd HH:mm:00'); 
     
    979979                var duration = parseInt( evt.endTime ) - parseInt( evt.startTime ), isRepeat = false; 
    980980                 
    981                 var occurrences = [ evt.startTime ]; 
     981                var occurrences = []; 
    982982                 
    983983                if( evt.occurrences ) 
     
    986986                    occurrences = evt.occurrences; 
    987987                } 
     988 
     989                occurrences[ occurrences.length ] = evt.startTime; 
     990 
     991                occurrences = DataLayer.unique( occurrences ); 
    988992                   
    989993                for( var i = 0; i < occurrences.length; i++ ) 
Note: See TracChangeset for help on using the changeset viewer.