[pLog-CVS] plog/class/data htmlcalendar.class.php,1.2,1.2.6.1 plogcalendar.class.php,1.2,1.2.6.1
Brought to you by:
jondaley
From: Oscar Renalias <phunk...@us...> - 2004-07-13 16:35:03
|
Update of /cvsroot/plog/plog/class/data In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13602/class/data Modified Files: Tag: PLOG_0_3_2_DEVEL htmlcalendar.class.php plogcalendar.class.php Log Message: added support for a better calendar, more xhtml compliant! Index: plogcalendar.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/data/plogcalendar.class.php,v retrieving revision 1.2 retrieving revision 1.2.6.1 diff -C2 -d -r1.2 -r1.2.6.1 *** plogcalendar.class.php 20 Jan 2004 18:44:05 -0000 1.2 --- plogcalendar.class.php 13 Jul 2004 16:34:52 -0000 1.2.6.1 *************** *** 1,97 **** ! <?php ! ! include_once( PLOG_CLASS_PATH."class/data/htmlcalendar.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locale.class.php" ); ! include_once( PLOG_CLASS_PATH."class/config/config.class.php" ); ! include_once( PLOG_CLASS_PATH."class/net/requestgenerator.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/bloginfo.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locales.class.php" ); ! ! /** ! * A derived class is required to reimplement some methods from the parent ! * Calendar class to add things like links to the days and so on. ! * This one also converts the original HtmlCalendar into Locale aware, respecting ! * things like the first day of the week and the abbreviations of the days of the week. ! */ ! class PlogCalendar extends Calendar { ! ! var $_dayPosts; ! var $_blogInfo; ! ! var $rg; ! ! /** ! * Constructor. ! * ! * @param dayPosts An array indexed from 1 to as many days as the month where ! * every position tells how many posts were made that day. ! * @param localeCode A code specifying the locale we want to use. If empty, the default ! * one specified in the configuration file will be used. ! */ ! function PlogCalendar( $dayPosts = null, $blogInfo = null, $localeCode = null ) ! { ! $this->Calendar(); ! ! if( $localeCode == null ) { ! $config = Config::getConfig(); ! //$locale = new Locale( $config->getValue( "default_locale" )); ! $locale = Locales::getLocale( $config->getValue( "default_locale" )); ! } ! else { ! //$locale = new Locale( $localeCode ); ! $locale = Locales::getLocale( $localeCode ); ! } ! ! $this->_dayPosts = $dayPosts; ! $this->_blogInfo = $blogInfo; ! ! // set the first day of the week according to our locale ! $this->startDay = $locale->firstDayOfWeek(); ! //array_push( $this->monthsNames, $locale->tr("January")); ! $this->monthNames = $locale->getMonthNames(); ! // and finally the days of the week and the abbreviations of the days of the week ! $this->dayNames = $locale->getDayNamesShort(); ! ! $this->rg = new RequestGenerator( $blogInfo ); ! } ! ! /** ! * Function overwritten from the base one, so that we can display links for the ! * next month and the previous month ! */ ! function getCalendarLink( $month, $year ) ! { ! if( $month < 10 ) $month = "0".$month; ! $date = "$year$month"; ! ! //$rg = new RequestGenerator( $this->_blogInfo ); ! $calendarLink = $this->rg->getArchiveLink( $date ); ! ! ! return( $calendarLink ); ! } ! ! /** ! * Function overwritten from the base one, so that we can display a link for the days ! * that have posts ! */ ! function getDateLink( $day, $month, $year ) ! { ! if( $this->_dayPosts == null ) ! return ""; ! ! //$rg = new RequestGenerator( $this->_blogInfo ); ! ! if( $this->_dayPosts[$day] > 0 ) { ! if( $day < 10 ) $day = "0".$day; ! $date = "$year$month$day"; ! ! $dateLink = $this->rg->getArchiveLink( $date ); ! ! return( $dateLink ); ! } ! ! return ""; ! } ! } ! ?> --- 1,99 ---- ! <?php ! ! include_once( PLOG_CLASS_PATH."class/data/htmlcalendar.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locale.class.php" ); ! include_once( PLOG_CLASS_PATH."class/config/config.class.php" ); ! include_once( PLOG_CLASS_PATH."class/net/requestgenerator.class.php" ); ! include_once( PLOG_CLASS_PATH."class/dao/bloginfo.class.php" ); ! include_once( PLOG_CLASS_PATH."class/locale/locales.class.php" ); ! ! /** ! * A derived class is required to reimplement some methods from the parent ! * Calendar class to add things like links to the days and so on. ! * This one also converts the original HtmlCalendar into Locale aware, respecting ! * things like the first day of the week and the abbreviations of the days of the week. ! */ ! class PlogCalendar extends Calendar { ! ! var $_dayPosts; ! var $_blogInfo; ! ! var $rg; ! ! /** ! * Constructor. ! * ! * @param dayPosts An array indexed from 1 to as many days as the month where ! * every position tells how many posts were made that day. ! * @param localeCode A code specifying the locale we want to use. If empty, the default ! * one specified in the configuration file will be used. ! */ ! function PlogCalendar( $dayPosts = null, $blogInfo = null, $localeCode = null ) ! { ! $this->Calendar(); ! ! if( $localeCode == null ) { ! $config = Config::getConfig(); ! //$locale = new Locale( $config->getValue( "default_locale" )); ! $locale = Locales::getLocale( $config->getValue( "default_locale" )); ! } ! else { ! //$locale = new Locale( $localeCode ); ! $locale = Locales::getLocale( $localeCode ); ! } ! ! $this->_dayPosts = $dayPosts; ! $this->_blogInfo = $blogInfo; ! ! // set the first day of the week according to our locale ! $this->startDay = $locale->firstDayOfWeek(); ! //array_push( $this->monthsNames, $locale->tr("January")); ! $this->monthNames = $locale->getMonthNames(); ! // abbreviations of the days of the week ! $this->dayNamesShort = $locale->getDayNamesShort(); ! // full names of the days of the week ! $this->dayNames = $locale->getDayNames(); ! ! $this->rg = new RequestGenerator( $blogInfo ); ! } ! ! /** ! * Function overwritten from the base one, so that we can display links for the ! * next month and the previous month ! */ ! function getCalendarLink( $month, $year ) ! { ! if( $month < 10 ) $month = "0".$month; ! $date = "$year$month"; ! ! //$rg = new RequestGenerator( $this->_blogInfo ); ! $calendarLink = $this->rg->getArchiveLink( $date ); ! ! ! return( $calendarLink ); ! } ! ! /** ! * Function overwritten from the base one, so that we can display a link for the days ! * that have posts ! */ ! function getDateLink( $day, $month, $year ) ! { ! if( $this->_dayPosts == null ) ! return ""; ! ! //$rg = new RequestGenerator( $this->_blogInfo ); ! ! if( $this->_dayPosts[$day] > 0 ) { ! if( $day < 10 ) $day = "0".$day; ! $date = "$year$month$day"; ! ! $dateLink = $this->rg->getArchiveLink( $date ); ! ! return( $dateLink ); ! } ! ! return ""; ! } ! } ! ?> Index: htmlcalendar.class.php =================================================================== RCS file: /cvsroot/plog/plog/class/data/htmlcalendar.class.php,v retrieving revision 1.2 retrieving revision 1.2.6.1 diff -C2 -d -r1.2 -r1.2.6.1 *** htmlcalendar.class.php 20 Jan 2004 18:44:05 -0000 1.2 --- htmlcalendar.class.php 13 Jul 2004 16:34:52 -0000 1.2.6.1 *************** *** 1,421 **** ! <?php ! ! include_once( PLOG_CLASS_PATH."class/object/object.class.php" ); ! ! // PHP Calendar Class Version 1.4 (5th March 2001) ! // ! // Copyright David Wilkinson 2000 - 2001. All Rights reserved. ! // ! // This software may be used, modified and distributed freely ! // providing this copyright notice remains intact at the head ! // of the file. ! // ! // This software is freeware. The author accepts no liability for ! // any loss or damages whatsoever incurred directly or indirectly ! // from the use of this script. The author of this software makes ! // no claims as to its fitness for any purpose whatsoever. If you ! // wish to use this software you should first satisfy yourself that ! // it meets your requirements. ! // ! // URL: http://www.cascade.org.uk/software/php/calendar/ ! // Email: da...@ca... ! ! ! /** ! * Generates an html calendar ! * ! * Class borrowed from http://www.cascade.org.uk/software/php/calendar ! * ! * Modified by me to make in inherit from the Object class. ! */ ! class Calendar extends Object ! { ! /* ! Constructor for the Calendar class ! */ ! function Calendar() ! { ! $this->Object(); ! } ! ! ! /** ! * Get the array of strings used to label the days of the week. This array contains seven ! * elements, one for each day of the week. The first entry in this array represents Sunday. ! */ ! function getDayNames() ! { ! return $this->dayNames; ! } ! ! ! /** ! * Set the array of strings used to label the days of the week. This array must contain seven ! * elements, one for each day of the week. The first entry in this array represents Sunday. ! */ ! function setDayNames($names) ! { ! $this->dayNames = $names; ! } ! ! /** ! * Get the array of strings used to label the months of the year. This array contains twelve ! * elements, one for each month of the year. The first entry in this array represents January. ! */ ! function getMonthNames() ! { ! return $this->monthNames; ! } ! ! /** ! * Set the array of strings used to label the months of the year. This array must contain twelve ! * elements, one for each month of the year. The first entry in this array represents January. ! */ ! function setMonthNames($names) ! { ! $this->monthNames = $names; ! } ! ! /** ! * Gets the start day of the week. This is the day that appears in the first column ! * of the calendar. Sunday = 0. ! */ ! function getStartDay() ! { ! return $this->startDay; ! } ! ! /** ! * Sets the start day of the week. This is the day that appears in the first column ! * of the calendar. Sunday = 0. ! */ ! function setStartDay($day) ! { ! $this->startDay = $day; ! } ! ! ! /** ! * Gets the start month of the year. This is the month that appears first in the year ! * view. January = 1. ! */ ! function getStartMonth() ! { ! return $this->startMonth; ! } ! ! /** ! * Sets the start month of the year. This is the month that appears first in the year ! * view. January = 1. ! */ ! function setStartMonth($month) ! { ! $this->startMonth = $month; ! } ! ! ! /** ! * Return the URL to link to in order to display a calendar for a given month/year. ! * You must override this method if you want to activate the "forward" and "back" ! * feature of the calendar. ! * ! * Note: If you return an empty string from this function, no navigation link will ! * be displayed. This is the default behaviour. ! * ! * If the calendar is being displayed in "year" view, $month will be set to zero. ! */ ! function getCalendarLink($month, $year) ! { ! return ""; ! } ! ! /** ! * Return the URL to link to for a given date. ! * You must override this method if you want to activate the date linking ! * feature of the calendar. ! * ! * Note: If you return an empty string from this function, no navigation link will ! * be displayed. This is the default behaviour. ! */ ! function getDateLink($day, $month, $year) ! { ! return ""; ! } ! ! ! /** ! * Return the HTML for the current month ! */ ! function getCurrentMonthView() ! { ! $d = getdate(time()); ! return $this->getMonthView($d["mon"], $d["year"]); ! } ! ! ! /** ! * Return the HTML for the current year ! */ ! function getCurrentYearView() ! { ! $d = getdate(time()); ! return $this->getYearView($d["year"]); ! } ! ! ! /** ! * Return the HTML for a specified month ! */ ! function getMonthView($month, $year) ! { ! return $this->getMonthHTML($month, $year); ! } ! ! ! /** ! * Return the HTML for a specified year ! */ ! function getYearView($year) ! { ! return $this->getYearHTML($year); ! } ! ! ! ! /******************************************************************************** ! ! The rest are private methods. No user-servicable parts inside. ! ! You shouldn't need to call any of these functions directly. ! ! *********************************************************************************/ ! ! ! /** ! * Calculate the number of days in a month, taking into account leap years. ! */ ! function getDaysInMonth($month, $year) ! { ! if ($month < 1 || $month > 12) ! { ! return 0; ! } ! ! $d = $this->daysInMonth[$month - 1]; ! ! if ($month == 2) ! { ! // Check for leap year ! // Forget the 4000 rule, I doubt I'll be around then... ! ! if ($year%4 == 0) ! { ! if ($year%100 == 0) ! { ! if ($year%400 == 0) ! { ! $d = 29; ! } ! } ! else ! { ! $d = 29; ! } ! } ! } ! ! return $d; ! } ! ! ! /** ! * Generate the HTML for a given month ! */ ! function getMonthHTML($m, $y, $showYear = 1) ! { ! $s = ""; ! ! $a = $this->adjustDate($m, $y); ! $month = $a[0]; ! $year = $a[1]; ! ! $daysInMonth = $this->getDaysInMonth($month, $year); ! $date = getdate(mktime(12, 0, 0, $month, 1, $year)); ! ! $first = $date["wday"]; ! $monthName = $this->monthNames[$month - 1]; ! ! $prev = $this->adjustDate($month - 1, $year); ! $next = $this->adjustDate($month + 1, $year); ! ! if ($showYear == 1) ! { ! $prevMonth = $this->getCalendarLink($prev[0], $prev[1]); ! $nextMonth = $this->getCalendarLink($next[0], $next[1]); ! } ! else ! { ! $prevMonth = ""; ! $nextMonth = ""; ! } ! ! $header = $monthName . (($showYear > 0) ? " " . $year : ""); ! //$s .= '<h2>'.$header.'</h2>'; // remove this line #1 ! $s .= "<table class=\"calendar\" width=\"130\" cellspacing=\"0\" cellpadding=\"2\">\n"; ! ! ///* // remove this line #2 ! $s .= "<tr>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . (($prevMonth == "") ? " " : "<a href=\"$prevMonth\" style=\"font-size: 13px;\">«</a>") . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\" colspan=\"5\">$header</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . (($nextMonth == "") ? " " : "<a href=\"$nextMonth\" style=\"font-size: 13px;\">»</a>") . "</td>\n"; ! $s .= "</tr>\n"; ! // */ // remove this line #3 to go to t ! ! $s .= "<tr>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+1)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+2)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+3)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+4)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+5)%7] . "</td>\n"; ! $s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\">" . $this->dayNames[($this->startDay+6)%7] . "</td>\n"; ! $s .= "</tr>\n"; ! ! // We need to work out what date to start at so that the first appears in the correct column ! $d = $this->startDay + 1 - $first; ! while ($d > 1) ! { ! $d -= 7; ! } ! ! // Make sure we know when today is, so that we can use a different CSS style ! $today = getdate(time()); ! ! while ($d <= $daysInMonth) ! { ! $s .= "<tr>\n"; ! ! for ($i = 0; $i < 7; $i++) ! { ! $class = ($year == $today["year"] && $month == $today["mon"] && $d == $today["mday"]) ? "calendarToday" : "calendar"; ! $s .= "<td class=\"$class\" align=\"right\" valign=\"top\">"; ! if ($d > 0 && $d <= $daysInMonth) ! { ! $link = $this->getDateLink($d, $month, $year); ! $s .= (($link == "") ? $d : "<a class=\"calDayLink\" href=\"$link\">$d</a>"); ! } ! else ! { ! $s .= " "; ! } ! $s .= "</td>\n"; ! $d++; ! } ! $s .= "</tr>\n"; ! } ! ! $s .= "</table>\n"; ! ! return $s; ! } ! ! ! /** ! * Generate the HTML for a given year ! */ ! function getYearHTML($year) ! { ! $s = ""; ! $prev = $this->getCalendarLink(0, $year - 1); ! $next = $this->getCalendarLink(0, $year + 1); ! ! $s .= "<table class=\"calendar\" border=\"0\">\n"; ! $s .= "<tr>"; ! $s .= "<td class=\"calendarHeader\" align=\"center\" valign=\"top\" align=\"left\">" . (($prev == "") ? " " : "<a href=\"$prev\"><<</a>") . "</td>\n"; ! $s .= "<td class=\"calendarHeader\" valign=\"top\" align=\"center\">" . (($this->startMonth > 1) ? $year . " - " . ($year + 1) : $year) ."</td>\n"; ! $s .= "<td class=\"calendarHeader\" align=\"center\" valign=\"top\" align=\"right\">" . (($next == "") ? " " : "<a href=\"$next\">>></a>") . "</td>\n"; ! $s .= "</tr>\n"; ! $s .= "<tr>"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(0 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(1 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(2 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "</tr>\n"; ! $s .= "<tr>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(3 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(4 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(5 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "</tr>\n"; ! $s .= "<tr>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(6 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(7 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(8 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "</tr>\n"; ! $s .= "<tr>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(9 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(10 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "<td class=\"calendar\" valign=\"top\">" . $this->getMonthHTML(11 + $this->startMonth, $year, 0) ."</td>\n"; ! $s .= "</tr>\n"; ! $s .= "</table>\n"; ! ! return $s; ! } ! ! /** ! * Adjust dates to allow months > 12 and < 0. Just adjust the years appropriately. ! * e.g. Month 14 of the year 2001 is actually month 2 of year 2002. ! */ ! function adjustDate($month, $year) ! { ! $a = array(); ! $a[0] = $month; ! $a[1] = $year; ! ! while ($a[0] > 12) ! { ! $a[0] -= 12; ! $a[1]++; ! } ! ! while ($a[0] <= 0) ! { ! $a[0] += 12; ! $a[1]--; ! } ! ! return $a; ! } ! ! /** ! * The start day of the week. This is the day that appears in the first column ! * of the calendar. Sunday = 0. ! */ ! var $startDay = 1; ! ! /** ! * The start month of the year. This is the month that appears in the first slot ! * of the calendar in the year view. January = 1. ! */ ! var $startMonth = 1; ! ! /** ! * The labels to display for the days of the week. The first entry in this array ! * represents Sunday. ! */ ! var $dayNames = array("S", "M", "T", "W", "T", "F", "S"); ! ! /** ! * The labels to display for the months of the year. The first entry in this array ! * represents January. ! */ ! var $monthNames = array("January", "February", "March", "April", "May", "June", ! "July", "August", "September", "October", "November", "December"); ! ! ! /** ! * The number of days in each month. You're unlikely to want to change this... ! * The first entry in this array represents January. ! */ ! var $daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); ! ! } ! ?> --- 1,436 ---- ! <?php ! ! include_once( PLOG_CLASS_PATH."class/object/object.class.php" ); ! ! // PHP Calendar Class Version 1.4 (5th March 2001) ! // ! // Copyright David Wilkinson 2000 - 2001. All Rights reserved. ! // ! // This software may be used, modified and distributed freely ! // providing this copyright notice remains intact at the head ! // of the file. ! // ! // This software is freeware. The author accepts no liability for ! // any loss or damages whatsoever incurred directly or indirectly ! // from the use of this script. The author of this software makes ! // no claims as to its fitness for any purpose whatsoever. If you ! // wish to use this software you should first satisfy yourself that ! // it meets your requirements. ! // ! // URL: http://www.cascade.org.uk/software/php/calendar/ ! // Email: da...@ca... ! ! ! /** ! * Generates an html calendar ! * ! * Class borrowed from http://www.cascade.org.uk/software/php/calendar ! * ! * Modified by me to make in inherit from the Object class. ! */ ! ! /** ! * Modified by fuze (http://www.fuze.org) on 2004/07/11 ! * ! * Just changed the html table output for better (CSS) accessibility ! * and variable names. ! */ ! ! class Calendar extends Object ! { ! /* ! Constructor for the Calendar class ! */ ! function Calendar() ! { ! $this->Object(); ! } ! ! ! /** ! * Get the array of strings used to label the days of the week. This array contains seven ! * elements, one for each day of the week. The first entry in this array represents Sunday. ! */ ! function getDayNames() ! { ! return $this->dayNames; ! } ! ! ! /** ! * Set the array of strings used to label the days of the week. This array must contain seven ! * elements, one for each day of the week. The first entry in this array represents Sunday. ! */ ! function setDayNames($names) ! { ! $this->dayNames = $names; ! } ! ! /** ! * Get the array of strings used to label the months of the year. This array contains twelve ! * elements, one for each month of the year. The first entry in this array represents January. ! */ ! function getMonthNames() ! { ! return $this->monthNames; ! } ! ! /** ! * Set the array of strings used to label the months of the year. This array must contain twelve ! * elements, one for each month of the year. The first entry in this array represents January. ! */ ! function setMonthNames($names) ! { ! $this->monthNames = $names; ! } ! ! /** ! * Gets the start day of the week. This is the day that appears in the first column ! * of the calendar. Sunday = 0. ! */ ! function getStartDay() ! { ! return $this->startDay; ! } ! ! /** ! * Sets the start day of the week. This is the day that appears in the first column ! * of the calendar. Sunday = 0. ! */ ! function setStartDay($day) ! { ! $this->startDay = $day; ! } ! ! ! /** ! * Gets the start month of the year. This is the month that appears first in the year ! * view. January = 1. ! */ ! function getStartMonth() ! { ! return $this->startMonth; ! } ! ! /** ! * Sets the start month of the year. This is the month that appears first in the year ! * view. January = 1. ! */ ! function setStartMonth($month) ! { ! $this->startMonth = $month; ! } ! ! ! /** ! * Return the URL to link to in order to display a calendar for a given month/year. ! * You must override this method if you want to activate the "forward" and "back" ! * feature of the calendar. ! * ! * Note: If you return an empty string from this function, no navigation link will ! * be displayed. This is the default behaviour. ! * ! * If the calendar is being displayed in "year" view, $month will be set to zero. ! */ ! function getCalendarLink($month, $year) ! { ! return ""; ! } ! ! /** ! * Return the URL to link to for a given date. ! * You must override this method if you want to activate the date linking ! * feature of the calendar. ! * ! * Note: If you return an empty string from this function, no navigation link will ! * be displayed. This is the default behaviour. ! */ ! function getDateLink($day, $month, $year) ! { ! return ""; ! } ! ! ! /** ! * Return the HTML for the current month ! */ ! function getCurrentMonthView() ! { ! $d = getdate(time()); ! return $this->getMonthView($d["mon"], $d["year"]); ! } ! ! ! /** ! * Return the HTML for the current year ! */ ! function getCurrentYearView() ! { ! $d = getdate(time()); ! return $this->getYearView($d["year"]); ! } ! ! ! /** ! * Return the HTML for a specified month ! */ ! function getMonthView($month, $year) ! { ! return $this->getMonthHTML($month, $year); ! } ! ! ! /** ! * Return the HTML for a specified year ! */ ! function getYearView($year) ! { ! return $this->getYearHTML($year); ! } ! ! ! ! /******************************************************************************** ! ! The rest are private methods. No user-servicable parts inside. ! ! You shouldn't need to call any of these functions directly. ! ! *********************************************************************************/ ! ! ! /** ! * Calculate the number of days in a month, taking into account leap years. ! */ ! function getDaysInMonth($month, $year) ! { ! if ($month < 1 || $month > 12) ! { ! return 0; ! } ! ! $d = $this->daysInMonth[$month - 1]; ! ! if ($month == 2) ! { ! // Check for leap year ! // Forget the 4000 rule, I doubt I'll be around then... ! ! if ($year%4 == 0) ! { ! if ($year%100 == 0) ! { ! if ($year%400 == 0) ! { ! $d = 29; ! } ! } ! else ! { ! $d = 29; ! } ! } ! } ! ! return $d; ! } ! ! ! /** ! * Generate the HTML for a given month ! */ ! function getMonthHTML($m, $y, $showYear = 1) ! { ! $s = ""; ! ! $a = $this->adjustDate($m, $y); ! $month = $a[0]; ! $year = $a[1]; ! ! $daysInMonth = $this->getDaysInMonth($month, $year); ! $date = getdate(mktime(12, 0, 0, $month, 1, $year)); ! ! $first = $date["wday"]; ! $monthName = $this->monthNames[$month - 1]; ! ! $prev = $this->adjustDate($month - 1, $year); ! $next = $this->adjustDate($month + 1, $year); ! ! if ($showYear == 1) ! { ! $prevMonth = $this->getCalendarLink($prev[0], $prev[1]); ! $nextMonth = $this->getCalendarLink($next[0], $next[1]); ! } ! else ! { ! $prevMonth = ""; ! $nextMonth = ""; ! } ! ! $header = $monthName . (($showYear > 0) ? " " . $year : ""); ! //$s .= '<h2>'.$header.'</h2>'; // remove this line #1 ! $s .= "<table class=\"calMonth\">\n"; ! ! ///* // remove this line #2 ! $s .= "<thead>\n"; ! $s .= "<tr class=\"calMonthNav\">\n"; ! $s .= "\t<th class=\"calMonthBackward\">" . (($prevMonth == "") ? " " : "<a href=\"$prevMonth\">«</a>") . "</th>\n"; ! $s .= "\t<th class=\"calMonthCurrent\" colspan=\"5\">$header</th>\n"; ! $s .= "\t<th class=\"calMonthForward\">" . (($nextMonth == "") ? " " : "<a href=\"$nextMonth\">»</a>") . "</th>\n"; ! $s .= "</tr>\n"; ! // */ // remove this line #3 to go to t ! ... [truncated message content] |