phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] CVS: calendar/inc class.uicalendar.inc.php,1.66.2.55


From: Ralf Becker <address@hidden>
Subject: [Phpgroupware-cvs] CVS: calendar/inc class.uicalendar.inc.php,1.66.2.55.2.12,1.66.2.55.2.13
Date: Fri, 30 May 2003 08:55:11 -0400

Update of /cvsroot/phpgroupware/calendar/inc
In directory subversions:/tmp/cvs-serv32682

Modified Files:
      Tag: Version-0_9_16-branch
        class.uicalendar.inc.php 
Log Message:
fix for bug #3731


Index: class.uicalendar.inc.php
===================================================================
RCS file: /cvsroot/phpgroupware/calendar/inc/class.uicalendar.inc.php,v
retrieving revision 1.66.2.55.2.12
retrieving revision 1.66.2.55.2.13
diff -C2 -r1.66.2.55.2.12 -r1.66.2.55.2.13
*** class.uicalendar.inc.php    29 May 2003 10:36:38 -0000      1.66.2.55.2.12
--- class.uicalendar.inc.php    30 May 2003 12:55:08 -0000      1.66.2.55.2.13
***************
*** 2493,2497 ****
                                . '  .event-off { background: 
'.$this->theme['row_off'].'; color: '.$this->theme['bg_text'].'; font: 100 
80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
                                . '  .event-holiday { background: 
'.$this->theme['bg04'].'; color: '.$this->theme['bg_text'].'; font: 100 
80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
!                               . '  .time { background: 
'.$this->theme['navbar_bg'].'; color: '.$this->theme['bg_text'].'; font: 
65%/100% '.$this->theme['font'].'; width: '.$time_width.'%; border: 1px 
'.$this->theme['navbar_text'].'; vertical-align: middle }'."\n"
                                . '  .tablecell { width: 80px; height: 80px }';
                }
--- 2493,2497 ----
                                . '  .event-off { background: 
'.$this->theme['row_off'].'; color: '.$this->theme['bg_text'].'; font: 100 
80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
                                . '  .event-holiday { background: 
'.$this->theme['bg04'].'; color: '.$this->theme['bg_text'].'; font: 100 
80%/110% '.$this->theme['font'].'; vertical-align: middle }'."\n"
!                               . '  .time { background: 
'.$this->theme['navbar_bg'].'; color: '.$this->theme['bg_text'].'; font: 
80%/110% '.$this->theme['font'].'; width: '.$time_width.'%; border: 1px 
'.$this->theme['navbar_text'].'; vertical-align: middle }'."\n"
                                . '  .tablecell { width: 80px; height: 80px }';
                }
***************
*** 2515,2520 ****
                {
                        $str = '';
- //                    $is_private = 
$this->bo->is_private($event,$event['owner']);
- //                    $editable = ((!$this->bo->printer_friendly) && 
(($is_private && $this->bo->check_perms(PHPGW_ACL_PRIVATE,$event['owner'])) || 
!$is_private));
                        $is_private = !$event['public'] && 
!$this->bo->check_perms(PHPGW_ACL_READ,$event);
                        $editable = !$this->bo->printer_friendly && 
$this->bo->check_perms(PHPGW_ACL_READ,$event);
--- 2515,2518 ----
***************
*** 2563,2567 ****
                                $text .= 
$this->bo->display_status($event['users_status']);
                        }
- //                    $text = '<font size="-2" 
face="'.$this->theme['font'].'"><nobr>'.$time.'</nobr> 
'.$this->bo->get_short_field($event,$is_private,'title').$text.'</font>'.$GLOBALS['phpgw']->browser->br;
                        $text = '<font size="-2" 
face="'.$this->theme['font'].'"><nobr>&nbsp;'.$time.'&nbsp;</nobr> 
'.$this->bo->get_short_field($event,$is_private,'title').$text.': 
<I>'.$this->bo->get_short_field($event,$is_private,'description').'</I></font>'.$GLOBALS['phpgw']->browser->br;
  
--- 2561,2564 ----
***************
*** 3166,3169 ****
--- 3163,3183 ----
                }
  
+               function slot_num($time,$set_day_start=0,$set_day_end=0)
+               {
+                       static $day_start, $day_end, $interval=0;
+                       
+                       if ($set_day_start) $day_start = $set_day_start;
+                       if ($set_day_end)   $day_end   = $set_day_end;
+                       if (!$interval)     $interval  = 
60*$this->bo->prefs['calendar']['interval'];
+                       
+                       if ($time > $day_end)
+                       {
+                               $time = $day_end;
+                       }
+                       $slot = intval(($time - $day_start) / $interval);
+                       
+                       return $slot < 0 ? 0 : 1+$slot;
+               }
+               
                function print_day($params)
                {
***************
*** 3199,3235 ****
                        
$p->set_block('day_cal','day_event_holiday','day_event_holiday');
                        $p->set_block('day_cal','day_time','day_time');
! 
!                       if (! $this->bo->prefs['calendar']['workdaystarts'] &&
!                               ! $this->bo->prefs['calendar']['workdayends'])
!                       {
!                               
$GLOBALS['phpgw']->preferences->add('calendar','workdaystarts',8);
!                               
$GLOBALS['phpgw']->preferences->add('calendar','workdayends',16);
!                               
$GLOBALS['phpgw']->preferences->save_repository();
!                               $this->bo->prefs['calendar']['workdaystarts'] = 
8;
!                               $this->bo->prefs['calendar']['workdayends'] = 
16;
!                       }
! 
!                       if(!isset($this->bo->prefs['calendar']['interval']))
!                       {
!                               
$GLOBALS['phpgw']->preferences->add('calendar','interval',60);
!                               
$GLOBALS['phpgw']->preferences->save_repository();
!                               $this->bo->prefs['calendar']['interval'] = 60;
!                       }
! 
!                       print_debug('Interval set 
to',intval($this->bo->prefs['calendar']['interval']));
! 
!                       for ($i=0;$i<24;$i++)
!                       {
!                               for($j=0;$j<(60 / 
intval($this->bo->prefs['calendar']['interval']));$j++)
!                               {
!                                       $rowspan_arr[$i][$j] = 0;
!                                       $time[$ind][$j] = '';
!                               }
!                       }
! 
                        $date_to_eval = 
sprintf("%04d%02d%02d",$params['year'],$params['month'],$params['day']);
  
-                       $time = Array();
- 
                        $daily = 
$this->set_week_array($GLOBALS['phpgw']->datetime->get_weekday_start($params['year'],$params['month'],$params['day']),$this->theme['row_on'],True);
                        print_debug('Date to Eval',$date_to_eval);
--- 3213,3219 ----
                        
$p->set_block('day_cal','day_event_holiday','day_event_holiday');
                        $p->set_block('day_cal','day_time','day_time');
!                       
                        $date_to_eval = 
sprintf("%04d%02d%02d",$params['year'],$params['month'],$params['day']);
  
                        $daily = 
$this->set_week_array($GLOBALS['phpgw']->datetime->get_weekday_start($params['year'],$params['month'],$params['day']),$this->theme['row_on'],True);
                        print_debug('Date to Eval',$date_to_eval);
***************
*** 3238,3247 ****
                                $day_start = 
mktime(intval($this->bo->prefs['calendar']['workdaystarts']),-intval($this->bo->prefs['calendar']['interval']),0,$params['month'],$params['day'],$params['year']);
                                $day_end = 
mktime(intval($this->bo->prefs['calendar']['workdayends']),0,1,$params['month'],$params['day'],$params['year']);
-                               $last_starttime = $starttime = 0;
-                               $last_endtime = $endtime = 0;
                                $events = 
$this->bo->cached_events[$date_to_eval];
                                print_debug('Date',$date_to_eval);
                                print_debug('Count',count($events));
!                               $last_ind = -1;
                                foreach($events as $event)
                                {
--- 3222,3229 ----
                                $day_start = 
mktime(intval($this->bo->prefs['calendar']['workdaystarts']),-intval($this->bo->prefs['calendar']['interval']),0,$params['month'],$params['day'],$params['year']);
                                $day_end = 
mktime(intval($this->bo->prefs['calendar']['workdayends']),0,1,$params['month'],$params['day'],$params['year']);
                                $events = 
$this->bo->cached_events[$date_to_eval];
                                print_debug('Date',$date_to_eval);
                                print_debug('Count',count($events));
!                               $last_slot_end = -1;
                                foreach($events as $event)
                                {
***************
*** 3256,3341 ****
                                        $starttime = 
$this->bo->maketime($event['start']);
                                        $endtime = 
$this->bo->maketime($event['end']);
!                                       
!                                       $interval_start = 0; 
!                                       if ($starttime < $day_start)
!                                       {
!                                               $ind = 0;
!                                       }
!                                       elseif ($starttime >= $day_end)
!                                       {
!                                               $ind = 99;
!                                       }
!                                       else
!                                       {
!                                               $ind = 
intval($event['start']['hour']);
!                                               $interval_start = 
intval($event['start']['min'] / 
intval($this->bo->prefs['calendar']['interval']));
!                                               print_debug('Start Time 
Minutes',$event['start']['min']);
!                                               
print_debug('Interval',$interval_start);
!                                       }
!                                       if(($ind < 
intval($this->bo->prefs['calendar']['workdaystarts'])) || ($ind > 
intval($this->bo->prefs['calendar']['workdayends'])))
!                                       {
!                                               $ind = $ind < 
intval($this->bo->prefs['calendar']['workdaystarts']) ? 0 : 99;
!                                               $interval_start = 0;
!                                       }
! 
!                                       print_debug('IND before',$ind);
!                                       if($ind <= date('H',$last_endtime-1) && 
$last_ind >= 0) // -1 to allow events to end on a full hour, without blocking 
the next hour-slot
!                                       {
!                                               $ind = $last_ind;
!                                               $interval_start = 
$last_interval_start;
!                                       }
!                                       print_debug('IND after',$ind);
! 
!                                       $time[$ind][$interval_start] .= 
$this->link_to_entry($event,$params['month'],$params['day'],$params['year']);
  
!                                       print_debug('IND',$ind);
!                                       
print_debug('TIME',$time[$ind][$interval_start]);
! 
!                                       if ($starttime < $day_start)
!                                       {
!                                               $starttime = $day_start;
!                                       }
!                                       if ($endtime > $day_end)
                                        {
!                                               $endtime = $day_end;
                                        }
!                                       if ($starttime != $endtime)
!                                       {
!                                               $rowspan = 
$rowspan_arr[$ind][$interval_start];
!                                               if($rowspan == 0 || 
$last_endtime <= $starttime)
!                                               {
!                                                       $rowspan = 
intval(round(($endtime - $starttime) / (60 * 
intval($this->bo->prefs['calendar']['interval']))));
!                                               }
!                                               elseif($last_endtime < $endtime 
&& $last_starttime)
!                                               {
!                                                       $rowspan = 
intval(round(($endtime - $last_starttime) / (60 * 
intval($this->bo->prefs['calendar']['interval']))));
!                                               }
!                                               $mins = (int)((($endtime - 
$starttime) / 60) % 60);
  
!                                               if($mins != 0 && $mins <= 
intval(60 / intval($this->bo->prefs['calendar']['interval'])) || 
!                                                  $mins == 0 && 
date('i',$endtime) > intval($this->bo->prefs['calendar']['interval']))
!                                               {
!                                                       $rowspan += 1;
!                                               }
!                                               print_debug('Rowspan being set 
to',$rowspan);
  
!                                               if ($rowspan > 
$rowspan_arr[$ind][$interval_start])
!                                               {
!                                                       
$rowspan_arr[$ind][$interval_start] = $rowspan;
!                                               }
!                                       }
!                                       $last_ind = $ind;
!                                       $last_interval_start = $interval_start;
!                                       $last_starttime = $starttime;
!                                       $last_endtime = $endtime;
                                        
print_debug('Time',$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['start'])
 - $GLOBALS['phpgw']->datetime->tz_offset).' - 
'.$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['end']) 
- $GLOBALS['phpgw']->datetime->tz_offset));
!                                       print_debug('Start',$ind);
!                                       print_debug('Interval 
#',$interval_start);
                                }
                        }
- 
-                       // squish events that use the same cell into the same 
cell.
-                       // For example, an event from 8:00-9:15 and another 
from 9:30-9:45 both
-                       // want to show up in the 8:00-9:59 cell.
                        $holiday_names = $daily[$date_to_eval]['holidays'];
                        if(!$holiday_names)
--- 3238,3263 ----
                                        $starttime = 
$this->bo->maketime($event['start']);
                                        $endtime = 
$this->bo->maketime($event['end']);
!                                       $slot = 
$this->slot_num($starttime,$day_start,$day_end);
!                                       $slot_end = 
$this->slot_num($endtime-1);        // -1 to no occupy eg. the 18.00 slot for a 
17-18h date
  
!                                       if ($slot <= $last_slot_end)
                                        {
!                                               $slot = $last_slot;
!                                               $slot_end = 
max($last_slot_end,$slot_end);
                                        }
!                                       $rows[$slot] .= 
$this->link_to_entry($event,$params['month'],$params['day'],$params['year']);
  
!                                       print_debug('slot',$slot);
!                                       print_debug('row',$rows[$slot]);
  
!                                       $row_span[$slot] = 1 + $slot_end - 
$slot;
!                                       
!                                       $last_slot = $slot;
!                                       $last_slot_end = $slot_end;
                                        
print_debug('Time',$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['start'])
 - $GLOBALS['phpgw']->datetime->tz_offset).' - 
'.$GLOBALS['phpgw']->common->show_date($this->bo->maketime($events[$i]['end']) 
- $GLOBALS['phpgw']->datetime->tz_offset));
!                                       print_debug('Slot',$slot);
                                }
+                               //echo "rows=<pre>"; print_r($rows); echo 
"<br>row_span="; print_r($row_span); echo "</pre>\n";
                        }
                        $holiday_names = $daily[$date_to_eval]['holidays'];
                        if(!$holiday_names)
***************
*** 3346,3447 ****
                        {
                                $row_to_print = '_holiday';
!                               while(list($index,$name) = each($holiday_names))
                                {
!                                       $time[0][0] = 
'<center>'.$name.'</center>'.$time[0][0];
                                }
                        }
! 
                        $rowspan = 0;
!                       $i = isset($time[0][0]) ? 0 : 
(int)$this->bo->prefs['calendar']['workdaystarts'];
!                       $i_end = isset($time[99][0]) ? 99 : 
(int)$this->bo->prefs['calendar']['workdayends'];
!                       while ($i <= $i_end)
!                       {
!                               $j_end = $i ? 60 / 
intval($this->bo->prefs['calendar']['interval']) : 1;
!                               for($j = 0; $j < $j_end; $j++)
!                               {
!                                       $dtime = 
$this->bo->build_time_for_display(($i * 10000) + (($j 
*intval($this->bo->prefs['calendar']['interval'])) * 100));
!                                       $p->set_var('extras','');
!                                       $p->set_var('event','&nbsp');
!                                       if ($rowspan > 1)
!                                       {
!                                               // this might mean there's an 
overlap, or it could mean one event
!                                               // ends at 11:15 and another 
starts at 11:30.
!                                               if (isset($time[$i][$j]))
!                                               {
!                                                       
$p->set_var('event',$time[$i][$j]);
!                                                       $row_to_print = 
$this->nm_on_off();
!                                                       
$p->parse('item','day_event'.$row_to_print,False);
!                                               }
!                                               $rowspan--;
!                                       }
!                                       elseif (!isset($time[$i][$j]))
!                                       {
!                                               $p->set_var('event','&nbsp;');
!                                               $row_to_print = 
$this->nm_on_off();
!                                               
$p->parse('item','day_event'.$row_to_print,False);
!                                       }
!                                       else
!                                       {
!                                               $rowspan = 
intval($rowspan_arr[$i][$j]);
!                                               if ($rowspan > 1)
!                                               {
!                                                       $p->set_var('extras',' 
rowspan="'.$rowspan.'"');
!                                               }
!                                               
$p->set_var('event',$time[$i][$j]);
!                                               $row_to_print = 
$this->nm_on_off();
!                                               
$p->parse('item','day_event'.$row_to_print,False);
!                                       }
!                       
!                                       if (0 < $i && $i < 99)
!                                       {
!                                               $open_link = ' - ';
!                                               $close_link = '';
! 
!                                               if(!$this->bo->printer_friendly 
&& $this->bo->check_perms(PHPGW_ACL_ADD))
!                                               {
!                                                       $new_hour = 
intval(substr($dtime,0,strpos($dtime,':')));
!                                                       if 
($this->bo->prefs['common']['timeformat'] == '12' && $i > 12)
!                                                       {
!                                                               $new_hour += 12;
!                                                       }
! 
!                                                       $open_link .= '<a 
href="'.$this->page('add','&date='.$date_to_eval.'&hour='.$new_hour.'&minute='.substr($dtime,strpos($dtime,':')+1,2)).'">';
! 
!                                                       $close_link = '</a>';
!                                               }
! 
!                                               $var = Array(
!                                                       'open_link'     => 
$open_link,
!                                                       'time'          => 
(intval(substr($dtime,0,strpos($dtime,':')))<10?'0'.$dtime:$dtime),
!                                                       'close_link'    => 
$close_link
!                                               );
!                                       }
!                                       else
!                                       {
!                                               $var = Array(
!                                                       'open_link'     => '',
!                                                       'time'          => 
'&nbsp;',
!                                                       'close_link'    => ''
!                                               );
!                                       }
!                                       $var['tr_color'] = '';  // dummy to 
stop output_template_array to set it
!                                       
$this->output_template_array($p,'item','day_time',$var);
!                                       $p->parse('row','day_row',True);
!                                       $p->set_var('event','');
                                        $p->set_var('item','');
                                }
!                               if ($i == 0)
                                {
!                                       $i = 
(int)$this->bo->prefs['calendar']['workdaystarts'];
                                }
!                               elseif ($i == 
(int)$this->bo->prefs['calendar']['workdayends'])
                                {
!                                       $i = 99;
                                }
!                               else
                                {
!                                       ++$i;
                                }
!                       }       // end for
                        return $p->fp('out','day');
                }       // end function
--- 3268,3330 ----
                        {
                                $row_to_print = '_holiday';
!                               foreach($holiday_names as $name)
                                {
!                                       $rows[0] = '<center>'.$name.'</center>' 
. $rows[0];
                                }
                        }
!                       $last_slot = $this->slot_num($day_end);
                        $rowspan = 0;
!                       for ($slot = 0; $slot <= $last_slot; ++$slot)
!                       {
!                               $p->set_var('extras','');
!                               if ($rowspan > 1)
!                               {
                                        $p->set_var('item','');
+                                       $rowspan--;
                                }
!                               elseif (!isset($rows[$slot]))
                                {
!                                       $p->set_var('event','&nbsp;');
!                                       $row_to_print = $this->nm_on_off();
!                                       
$p->parse('item','day_event'.$row_to_print,False);
                                }
!                               else
                                {
!                                       $rowspan = intval($row_span[$slot]);
!                                       if ($rowspan > 1)
!                                       {
!                                               $p->set_var('extras',' 
rowspan="'.$rowspan.'"');
!                                       }
!                                       $p->set_var('event',$rows[$slot]);
!                                       $row_to_print = $this->nm_on_off();
!                                       
$p->parse('item','day_event'.$row_to_print,False);
                                }
!                               $open_link = $close_link = '';
!                               $time = '&nbsp;';
! 
!                               if (0 < $slot && $slot < $last_slot)    // 
normal time-slot not before or after day_start/end
                                {
!                                       $time = $day_start + ($slot-1) * 60 * 
$this->bo->prefs['calendar']['interval'];
!                                       $hour = date('H',$time);
!                                       $min  = date('i',$time);
!                                       $time = 
$GLOBALS['phpgw']->common->formattime($hour,$min);
! 
!                                       $open_link = ' - ';
!                                       if(!$this->bo->printer_friendly && 
$this->bo->check_perms(PHPGW_ACL_ADD))
!                                       {
!                                               $open_link .= '<a 
href="'.$this->page('add',"&date=$date_to_eval&hour=$hour&minute=$min").'">';
!                                               $close_link = '</a>';
!                                       }
                                }
!                               $var = Array(
!                                       'open_link'  => $open_link,
!                                       'time'       => $time,
!                                       'close_link' => $close_link,
!                                       'tr_color'   => ''      // dummy to 
stop output_template_array to set it
!                               );
!                               
$this->output_template_array($p,'item','day_time',$var);
!                               
!                               $p->parse('row','day_row',True);
!                       }
                        return $p->fp('out','day');
                }       // end function





reply via email to

[Prev in Thread] Current Thread [Next in Thread]