diff options
author | Jim Hu <jimhu@users.sourceforge.net> | 2008-12-27 10:58:50 +0000 |
---|---|---|
committer | Jim Hu <jimhu@users.sourceforge.net> | 2008-12-27 10:58:50 +0000 |
commit | 333f00a0225a94e94f4388937e1741e102c5b110 (patch) | |
tree | 060911b53d2d4feffee5c69927a1fdeeae0915ed /functions/template.php | |
parent | f53afe845eff0f8712afbdcb908995df267a005f (diff) | |
download | phpicalendar-333f00a0225a94e94f4388937e1741e102c5b110.tar.gz phpicalendar-333f00a0225a94e94f4388937e1741e102c5b110.tar.bz2 phpicalendar-333f00a0225a94e94f4388937e1741e102c5b110.zip |
rewrite and condense master array writing in end_vevent.php. Condense draw_week in template.php. bump vers
Diffstat (limited to 'functions/template.php')
-rw-r--r-- | functions/template.php | 111 |
1 files changed, 44 insertions, 67 deletions
diff --git a/functions/template.php b/functions/template.php index 8656f5a..969e7e7 100644 --- a/functions/template.php +++ b/functions/template.php @@ -250,7 +250,6 @@ class Page { global $phpiCal_config, $start_week_time, $getdate, $cal, $master_array, $dateFormat_week_list, $current_view, $day_array, $timeFormat, $timeFormat_small; // Figure out colspans and initialize weekarray - $dayborder = 0; $thisdate = $start_week_time; $swt = $start_week_time; for ($i=0;$i < $phpiCal_config->week_length;$i++) { @@ -267,9 +266,10 @@ class Page { } } $weekarray[$i] = $thisday; + $event_length[$thisday] = array (); $thisdate = ($thisdate + (25 * 60 * 60)); } - #echo "<pre>";print_r($nbrGridCols); + // Replaces the allday events preg_match("!<\!-- loop allday on -->(.*)<\!-- loop allday off -->!Uis", $this->page, $match1); preg_match("!<\!-- loop alldaysofweek on -->(.*)<\!-- loop allday on -->!Uis", $this->page, $match2); @@ -301,27 +301,19 @@ class Page { preg_match("!<\!-- loop daysofweek on -->(.*)<\!-- loop daysofweek off -->!Uis", $this->page, $match1); $loop_dof = trim($match1[1]); $start_wt = strtotime(dateOfWeek($getdate, $phpiCal_config->week_start_day)); - $start_day = strtotime($phpiCal_config->week_start_day); $weekday_loop = ''; for ($i=0; $i<$phpiCal_config->week_length; $i++) { - $day_num = date("w", $start_day); $daylink = date('Ymd', $start_wt); - if ($current_view == 'day') { - $weekday = $daysofweek_lang[$day_num]; - } else { - $weekday = localizeDate($dateFormat_week_list, strtotime($daylink)); - } - + $weekday = localizeDate($dateFormat_week_list, strtotime($daylink)); if ($daylink == $getdate) { $row1 = 'rowToday'; $row2 = 'rowOn'; $row3 = 'rowToday'; - } else { + }else{ $row1 = 'rowOff'; $row2 = 'rowOn'; $row3 = 'rowOff'; } - $start_day = strtotime("+1 day", $start_day); $start_wt = strtotime("+1 day", $start_wt); $colspan = 'colspan="'.$nbrGridCols[$daylink].'"'; $search = array('{DAY}', '{DAYLINK}', '{ROW1}', '{ROW2}', '{ROW3}', '{COLSPAN}'); @@ -344,12 +336,10 @@ class Page { $this_month = $day_array2[2]; $this_year = $day_array2[1]; $thisdate = $swt; - for ($i=0; $i < 7; $i++) { - $thisday = date("Ymd", $thisdate); - $event_length[$thisday] = array (); - $thisdate = ($thisdate + (25 * 60 * 60)); - } + $weekdisplay = ''; + + #day_array is an array of time blocks of length $phpiCal_config->gridLength foreach ($day_array as $key) { $cal_time = $key; preg_match('/([0-9]{2})([0-9]{2})/', $key, $regs_tmp); @@ -371,78 +361,64 @@ class Page { $weekdisplay .= '<tr>'; $weekdisplay .= '<td bgcolor="#a1a5a9" width="1" height="' . $phpiCal_config->gridLength . '"></td>'; } - - // initialize $thisdate again - $thisdate = $swt; - - // loop this part 7 times, one for each day - for ($week_loop=0; $week_loop<$phpiCal_config->week_length; $week_loop++) { - $thisday = date("Ymd", $thisdate); - $dayborder = 0; - unset($this_time_arr); - + + /* add columns in the $cal_time grid slot for each day + each cell will have $this_time_arr of events */ + foreach ($weekarray as $thisday) { + $this_time_arr = array(); + $dayborder = 0; if ($phpiCal_config->day_start == $cal_time && isset($master_array[$thisday]) && is_array($master_array[$thisday])) { + # want to pile up all the events before day_start that end in the displayed times foreach($master_array[$thisday] as $time_key => $time_arr) { - if ((int)$time_key <= (int)$cal_time) { - if (is_array($time_arr) && $time_key != '-1') { - foreach($time_arr as $uid => $event_tmp) { - if ((int)$event_tmp['event_end'] > (int)$cal_time) { - $this_time_arr[$uid] = $event_tmp; - } - } - } - } else { - break; + if ((int)$time_key <= (int)$cal_time && is_array($time_arr) && $time_key != '-1') { + foreach($time_arr as $uid => $event_tmp) { + if ((int)$event_tmp['display_end'] > (int)$cal_time) $this_time_arr[$uid] = $event_tmp; + } } } } else { + # events that start in internal cal_times the grid if (isset($master_array[$thisday][$cal_time]) && sizeof($master_array[$thisday][$cal_time]) > 0) { - $this_time_arr = $master_array[$thisday][$cal_time]; + $this_time_arr = $master_array[$thisday][$cal_time]; } } - - // check for eventstart - if (isset($this_time_arr) && sizeof($this_time_arr) > 0) { - #print "<pre>";print_r ($this_time_arr);print "</pre>"; - foreach ($this_time_arr as $eventKey => $loopevent) { - $drawEvent = drawEventTimes ($cal_time, $loopevent["event_end"]); - $j = 0; - while (isset($event_length[$thisday][$j])) { - if ($event_length[$thisday][$j]["state"] == "ended") { - $event_length[$thisday][$j] = array ("length" => ($drawEvent["draw_length"] / $phpiCal_config->gridLength), "key" => $eventKey, "overlap" => $loopevent["event_overlap"],"state" => "begin"); - break; - } - $j++; - } - if ($j == sizeof($event_length[$thisday])) { - array_push ($event_length[$thisday], array ("length" => ($drawEvent["draw_length"] / $phpiCal_config->gridLength), "key" => $eventKey, "overlap" => $loopevent["event_overlap"],"state" => "begin")); + // go through $this_time_array and fill the event_length array + foreach ($this_time_arr as $eventKey => $loopevent) { + $drawEvent = drawEventTimes ($cal_time, $loopevent["display_end"]); + $j = 0; + while (isset($event_length[$thisday][$j])) { + if ($event_length[$thisday][$j]["state"] == "ended") { + $event_length[$thisday][$j] = array ("length" => ($drawEvent["draw_length"] / $phpiCal_config->gridLength), "key" => $eventKey, "overlap" => $loopevent["event_overlap"],"state" => "begin"); + break; } + $j++; + } + if ($j == sizeof(@$event_length[$thisday])) { + $event_length[$thisday][] = array ("length" => ($drawEvent["draw_length"] / $phpiCal_config->gridLength), "key" => $eventKey, "overlap" => $loopevent["event_overlap"],"state" => "begin"); } } - - if (sizeof($event_length[$thisday]) == 0) { + if (empty($event_length[$thisday])) { + # no events if ($dayborder == 0) { $class = ' class="weekborder"'; $dayborder++; } else { $class = ''; $dayborder = 0; - } - + } $drawWidth = 1; $colspan_width = round((80 / $nbrGridCols[$thisday]) * $drawWidth); - $weekdisplay .= '<td width="' . $colspan_width . '" colspan="' . $nbrGridCols[$thisday] . '" ' . $class . '> </td>'."\n"; - + $weekdisplay .= '<td width="' . $colspan_width . '" colspan="' . $nbrGridCols[$thisday] . '" ' . $class . '> </td>'."\n"; } else { + # have events $emptyWidth = $nbrGridCols[$thisday]; // Used to "join" ended events, so the ended case below results in one colspan'd td instead of multiple tds. $ended_counter = 0; - for ($i=0;$i<sizeof($event_length[$thisday]);$i++) { - - $drawWidth = $nbrGridCols[$thisday] / ($event_length[$thisday][$i]["overlap"] + 1); + foreach($event_length[$thisday] as $i=>$el) { + $drawWidth = $nbrGridCols[$thisday] / ($el["overlap"] + 1); $emptyWidth = $emptyWidth - $drawWidth; - switch ($event_length[$thisday][$i]["state"]) { + switch ($el["state"]) { case "begin": if ($ended_counter) { $weekdisplay .= '<td colspan="' . $ended_counter . '" '.$class.'> </td>'; @@ -502,7 +478,6 @@ class Page { array_pop($event_length[$thisday]); } } - $thisdate = ($thisdate + (25 * 60 * 60)); } $weekdisplay .= "</tr>\n"; } @@ -860,6 +835,8 @@ class Page { function draw_month($template_p, $offset = '+0', $type) { global $phpiCal_config, $getdate, $master_array, $this_year, $this_month, $dateFormat_month, $cal, $minical_view, $month_event_lines, $daysofweekreallyshort_lang, $daysofweekshort_lang, $daysofweek_lang, $timeFormat_small, $timeFormat; + + $unique_colors = $phpiCal_config->unique_colors; preg_match("!<\!-- loop weekday on -->(.*)<\!-- loop weekday off -->!Uis", $template_p, $match1); preg_match("!<\!-- loop monthdays on -->(.*)<\!-- loop monthdays off -->!Uis", $template_p, $match2); preg_match("!<\!-- switch notthismonth on -->(.*)<\!-- switch notthismonth off -->!Uis", $template_p, $match3); @@ -938,8 +915,8 @@ class Page { foreach ($master_array[$daylink] as $cal_time => $event_times) { foreach ($event_times as $uid => $val) { $event_calno = $val['calnumber']; - $event_calno = (($event_calno - 1) % $phpiCal_config->unique_colors) + 1; - if (!isset($val['event_start'])) { + $event_calno = (($event_calno - 1) % $unique_colors) + 1; + if ($cal_time == -1) { if ($type == 'large') { $switch['ALLDAY'] .= '<div class="V10"><img src="templates/'.$phpiCal_config->template.'/images/monthdot_'.$event_calno.'.gif" alt="" width="9" height="9" border="0" />'; $switch['ALLDAY'] .= openevent($daylink, $cal_time, $uid, $val, $month_event_lines, 15, 'psf'); |