Udvid kalender
Jeg har en kalender-kode som viser ugen pt. med datoer osv.Det jeg gerne vil have er at man kan hoppe frem og tilbage i denne kalender, samt klikke ind på hver enkelt dato som har sit specielle id alt efter datoen.
Så snart man har klikket sig ind på datoen, skal man kunne tilføje beskeder osv, men det skal jeg nok selv lave. Bare man kan hoppe frem og tilbage i kalenderen samt klikke ind på hver dato!
Her er koden (ved godt det er meget):
--------------------------------------------------------
<?
class Calendar {
function Calendar() {}
function getDayNames() { return $this->dayNames; }
function setDayNames($names) { $this->dayNames = $names; }
function getMonthNames() { return $this->monthNames; }
function setMonthNames($names) { $this->monthNames = $names; }
function getStartDay() { return $this->startDay; }
function setStartDay($day) { $this->startDay = $day; }
function getStartMonth() { return $this->startMonth; }
function setStartMonth($month) { $this->startMonth = $month; }
function getCalendarLink($month, $year) { return ""; }
function getDateLink($day, $month, $year) { return ""; }
function getCurrentMonthView() { $d = getdate(time()); return $this->getMonthView($d["mon"], $d["year"]); }
function getCurrentYearView() { $d = getdate(time()); return $this->getYearView($d["year"]); }
function getMonthView($month, $year) { return $this->getMonthHTML($month, $year); }
function getYearView($year) { return $this->getYearHTML($year); }
function getDaysInMonth($month, $year) { if ($month < 1 || $month > 12) { return 0; }
$d = $this->daysInMonth[$month - 1];
if ($month == 2) {
if ($year%4 == 0) {
if ($year%100 == 0) {
if ($year%400 == 0) {
$d = 29; }} else {
$d = 29; }}}
return $d; }
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 .= "<table class=\"calendar\">\n";
$s .= "<tr>\n";
$s .= "<td align=\"center\" valign=\"top\">" . (($prevMonth == "") ? " " : "<a href=\"$prevMonth\"><<</a>"). "</td>\n";
$s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\" colspan=\"5\">$header</td>\n";
$s .= "<td align=\"center\" valign=\"top\">" . (($nextMonth == "") ? " " : "<a href=\"$nextMonth\">>></a>"). "</td>\n";
$s .= "</tr>\n";
$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";
$d = $this->startDay + 1 - $first;
while ($d > 1) { $d -= 7; }
$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 href=\"$link\">$d</a>");
} else {
$s .= " "; }
$s .= "</td>\n";
$d++; }
$s .= "</tr>\n"; }
$s .= "</table>\n";
return $s; }
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 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 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; }
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; }
var $startDay = 0;
var $startMonth = 1;
var $dayNames = array("S", "M", "T", "W", "T", "F", "S");
var $monthNames = array("Januar", "Februar", "Marts", "April", "Maj", "Juni",
"Juli", "August", "September", "Oktober", "November", "December");
var $daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); }
$cal = new Calendar;
echo $cal->getCurrentMonthView();
?>