* * See the enclosed file COPYING for license information (GPL). If you * did not receive this file, see http://www.fsf.org/copyleft/gpl.html. */ @define('KRONOLITH_BASE', dirname(__FILE__)); require_once KRONOLITH_BASE . '/lib/base.php'; if ($timestamp = (int)Util::getFormData('timestamp')) { $month = date('n', $timestamp); $year = date('Y', $timestamp); } else { $month = (int)Util::getFormData('month', date('n')); $year = (int)Util::getFormData('year', date('Y')); } $sidebyside = $prefs->getValue('show_shared_side_by_side'); $timestamp = mktime(1, 1, 1, $month, 1, $year); $prevstamp = mktime(1, 1, 1, $month - 1, 1, $year); $nextstamp = mktime(1, 1, 1, $month + 1, 1, $year); $title = strftime('%m / %Y', $timestamp); //$title = iconv("ISO-8859-1", "BIG5", $title); $print_view = (bool)Util::getFormData('print'); Horde::addScriptFile('tooltip.js', 'horde', true); if (!$print_view) { Horde::addScriptFile('popup.js', 'horde', true); } require KRONOLITH_TEMPLATES . '/common-header.inc'; if ($print_view) { require_once $registry->get('templates', 'horde') . '/javascript/print.js'; } else { $print_link = Util::addParameter('month.php', array('timestamp' => $timestamp, 'print' => 'true')); $print_link = Horde::url($print_link); require KRONOLITH_TEMPLATES . '/menu.inc'; } echo '
'; if (!$print_view) { Kronolith::tabs(); } $startday = &new Horde_Date(array('mday' => 1, 'month' => $month, 'year' => $year)); $startday = $startday->dayOfWeek(); $daysInView = Date_Calc::weeksInMonth($month, $year) * 7; if (!$prefs->getValue('week_start_monday')) { $startOfView = 1 - $startday; // We may need to adjust the number of days in the view if we're // starting weeks on Sunday. if ($startday == HORDE_DATE_SUNDAY) { $daysInView -= 7; } $endday = &new Horde_Date(array('mday' => Horde_Date::daysInMonth($month, $year), 'month' => $month, 'year' => $year)); $endday = $endday->dayOfWeek(); if ($endday == HORDE_DATE_SUNDAY) { $daysInView += 7; } } else { if ($startday == HORDE_DATE_SUNDAY) { $startOfView = -5; } else { $startOfView = 2 - $startday; } } $prevurl = Horde::applicationurl(Util::addParameter('month.php', array('month' => date('n', $prevstamp), 'year' => date('Y', $prevstamp)))); $nexturl = Horde::applicationUrl(Util::addParameter('month.php', array('month' => date('n', $nextstamp), 'year' => date('Y', $nextstamp)))); if ($sidebyside) { require KRONOLITH_TEMPLATES . '/month/head_side_by_side.inc'; } else { require KRONOLITH_TEMPLATES . '/month/head.inc'; } $startDate = &new Horde_Date(array('year' => $year, 'month' => $month, 'mday' => $startOfView)); $endDate = &new Horde_Date(array('year' => $year, 'month' => $month, 'mday' => $startOfView + $daysInView, 'hour' => 23, 'min' => 59, 'sec' => 59)); $startDate->correct(); $endDate->correct(); $allevents = Kronolith::listEvents($startDate, $endDate, $GLOBALS['display_calendars']); if ($sidebyside) { $allCalendars = Kronolith::listCalendars(); $currentCalendars = array(); foreach ($GLOBALS['display_calendars'] as $id) { $currentCalendars[$id] = &$allCalendars[$id]; } $sharedCalendars = $GLOBALS['display_calendars']; } else { $currentCalendars = array(true); } $eventCategories = array(); $html = ''; if (!$sidebyside && count($currentCalendars)) { $html .= ''; } foreach ($currentCalendars as $id => $cal) { if ($sidebyside) { $html .= ''; } $cell = 0; for ($day = $startOfView; $day < $startOfView + $daysInView; $day++) { $date = &new Horde_Date(array('year' => $year, 'month' => $month, 'mday' => $day)); $daystamp = $date->timestamp(); $date->hour = $prefs->getValue('twentyFour') ? 12 : 6; $timestamp = $date->timestamp(); $week = $date->weekOfYear(); if ($cell % 7 == 0 && $cell != 0) { if ($sidebyside) { $html .= '' . $cal->get('name'); if (!$print_view) { $html .= ' ' . Horde::link(Util::addParameter(Horde::selfUrl(), 'display_cal', $cal->getShortName()), sprintf(_("Hide %s"), $cal->get('name'))) . Horde::img('delete-small.png', _("Hide"), '', $GLOBALS['registry']->getImageDir('horde')) . ''; } $html .= ''; } else { $html .= "\n"; } } if (mktime(0, 0, 0) == $daystamp) { $style = 'today'; } elseif (date('n', $daystamp) != $month) { $style = 'othermonth'; } elseif (date('w', $daystamp) == 0 || date('w', $daystamp) == 6) { $style = 'weekend'; } else { $style = 'text'; } $html .= '
'; $url = Util::addParameter(Horde::applicationUrl('day.php'), 'timestamp', $daystamp); $html .= '' . date('j', $daystamp) . ''; if (Kronolith::getDefaultCalendar(PERMS_EDIT) && !$print_view && (!empty($conf['hooks']['permsdenied']) || Kronolith::hasPermission('max_events') === true || Kronolith::hasPermission('max_events') > Kronolith::countEvents())) { $url = Util::addParameter(Horde::applicationUrl('addevent.php'), array('timestamp' => $timestamp, 'url' => Horde::selfUrl(true, false, true))); $html .= Horde::link($url, _("Create a New Event"), 'newEvent') . Horde::img('new_small.png', '+') . ''; } if ($date->dayOfWeek() == HORDE_DATE_MONDAY) { $url = Util::addParameter('week.php', 'week', $week); if ($month == 12 && $week == 1) { $url = Util::addParameter($url, 'year', $year + 1); } elseif ($month == 1 && $week > 51) { $url = Util::addParameter($url, 'year', $year - 1); } else { $url = Util::addParameter($url, 'year', $year); } $html .= Horde::link(Horde::applicationUrl($url), '', 'week') . sprintf(_("Week %d"), $week) . ''; } $html .= '
 
'; if (!empty($allevents[$daystamp]) && count($allevents[$daystamp])) { foreach ($allevents[$daystamp] as $event) { if (!$sidebyside || $event->getCalendar() == $id) { $eventCategories[$event->getCategory()] = true; $html .= '
' . $event->getLink($timestamp) . '
'; } } } $html .= "\n"; $cell++; } if ($sidebyside) { $html .= ''; } } if (!$sidebyside && count($currentCalendars)) { $html .= ''; } echo $html . '
'; require KRONOLITH_TEMPLATES . '/category_legend.inc'; require $registry->get('templates', 'horde') . '/common-footer.inc';