1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13: class Kronolith_FreeBusy_View_Week extends Kronolith_FreeBusy_View
14: {
15: 16: 17: 18: 19:
20: public $view = 'week';
21:
22: 23: 24: 25: 26:
27: protected $_days = 7;
28:
29: protected function _title()
30: {
31: global $prefs;
32:
33: $prev = new Horde_Date($this->_start);
34: $prev->mday -= 7;
35: $next = new Horde_Date($this->_start);
36: $next->mday += 7;
37: $end = new Horde_Date($this->_start);
38: $end->mday += $this->_days - 1;
39: return Horde::url('#')->link(array('title' => _("Previous Week"), 'onclick' => 'return switchDate(' . $prev->dateString() . ');'))
40: . Horde::img('nav/left.png', '<')
41: . '</a>'
42: . $this->_start->strftime($prefs->getValue('date_format')) . ' - '
43: . $end->strftime($prefs->getValue('date_format'))
44: . Horde::url('#')->link(array('title' => _("Next Week"), 'onclick' => 'return switchDate(' . $next->dateString() . ');'))
45: . Horde::img('nav/right.png', '>')
46: . '</a>';
47: }
48:
49: protected function _hours()
50: {
51: global $prefs;
52:
53: $hours_html = '';
54: $dayWidth = round(100 / $this->_days);
55: $span = floor(($this->_endHour - $this->_startHour) / 3);
56: if (($this->_endHour - $this->_startHour) % 3) {
57: $span++;
58: }
59: $date_format = $prefs->getValue('date_format');
60: for ($i = 0; $i < $this->_days; $i++) {
61: $t = new Horde_Date(array('month' => $this->_start->month,
62: 'mday' => $this->_start->mday + $i,
63: 'year' => $this->_start->year));
64: $day_label = Horde::url('#')->link(array('onclick' => 'return switchDateView(\'Day\',' . $t->dateString() . ');'))
65: . $t->strftime($date_format) . '</a>';
66: $hours_html .= sprintf('<th colspan="%d" width="%s%%">%s</th>',
67: $span, $dayWidth, $day_label);
68: }
69: $hours_html .= '</tr><tr><td width="100" class="label"> </td>';
70:
71: $width = round(100 / ($span * $this->_days));
72: for ($i = 0; $i < $this->_days; $i++) {
73: for ($h = $this->_startHour; $h < $this->_endHour; $h += 3) {
74: $start = new Horde_Date(array('hour' => $h,
75: 'month' => $this->_start->month,
76: 'mday' => $this->_start->mday + $i,
77: 'year' => $this->_start->year));
78: $end = new Horde_Date($start);
79: $end->hour += 2;
80: $end->min = 59;
81: $this->_timeBlocks[] = array($start, $end);
82:
83: $hour = $start->strftime($prefs->getValue('twentyFour') ? '%H:00' : '%I:00');
84: $hours_html .= sprintf('<th width="%d%%">%s</th>', $width, $hour);
85: }
86: }
87:
88: return $hours_html;
89: }
90:
91: protected function _render(Horde_Date $day = null)
92: {
93: $this->_start = new Horde_Date(Date_Calc::beginOfWeek($day->mday, $day->month, $day->year, '%Y%m%d000000'));
94: $this->_end = new Horde_Date($this->_start);
95: $this->_end->hour = 23;
96: $this->_end->min = $this->_end->sec = 59;
97: $this->_end->mday += $this->_days - 1;
98: }
99:
100: }
101: