Avatar billede hejmedmigselv Nybegynder
08. januar 2003 - 19:44 Der er 2 kommentarer og
1 løsning

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 == "") ? "&nbsp;" : "<a href=\"$prevMonth\">&lt;&lt;</a>"). "</td>\n";
$s .= "<td align=\"center\" valign=\"top\" class=\"calendarHeader\" colspan=\"5\">$header</td>\n";
$s .= "<td align=\"center\" valign=\"top\">" . (($nextMonth == "") ? "&nbsp;" : "<a href=\"$nextMonth\">&gt;&gt;</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 .= "&nbsp;"; }
$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 == "") ? "&nbsp;" : "<a href=\"$prev\">&lt;&lt;</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 == "") ? "&nbsp;" : "<a href=\"$next\">&gt;&gt;</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();
?>
Avatar billede hejmedmigselv Nybegynder
08. januar 2003 - 19:45 #1
Hvis der er nogen der kender en god simpel PHP kalender som kan det er jeg også interesseret i det!
Og lad hver med at poste links til f.eks. hotscripts.com osv. hvor jeg selv skal lede de mange kalendre igennem :-)
Avatar billede hejmedmigselv Nybegynder
09. januar 2003 - 18:15 #2
Slet ingen der ved hvor der findes en rigtig god simpel kalender?
Avatar billede hejmedmigselv Nybegynder
10. januar 2003 - 17:15 #3
Det var ikke meget respons!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester