erwin15
Administrator

Dołączył: 29 Sty 2008 |
Posty: 25 |
Przeczytał: 0 tematów
|
Ostrzeżeń: 0/5
|
|
|
 |
Wysłany: Sob 3:20, 23 Lut 2008 |
|
 |
|
 |
 |
blicks zarejestruj się i dopiero pytaj
Kalendarz.
Skrypt ten umożliwia nam umieszczenie kalendarza na stronie (lub kilku), możemy definiować święta, które będą w nim zaznaczane oraz inne ważne dla nas wydarzenia. eCalendar może także wyswietlać imieniny (jeśli pobrana została tekstowa baza imion), można nim "sterować" z poziomu przeglądarki.
Kod PHP kalendarza (do umieszczenia na początku strony):
<?php
//========eCalendar v1.0.3=========
// Autor: Emdek <emdek@epf.pl>
// Licencja: GPL
// W skrypcie wykorzystano bazę danych z imionami z: "Imieniny - skrypt pochodzi ze strony [link widoczny dla zalogowanych]
// Skrypt bazuje na rozwiązaniach zastosowanych w skrypcie calendar.php 1.4 autorstwa Bena Frame <ben@networkscompany.com>
function namedays ($Day, $Month, $Path, $Small) {
if (file_exists ($Path.'1.inc')) {
$NameDays = file ($Path.$Month.'.inc');
return (($Small?', i':'I').'mieniny: '.trim ($NameDays[$Day]));
}
}
function calendar ($ID, $Date = 'NOW', $Path = './imieniny/') { // KONFIGURACJA
$DayWeekStarts = 2; // Numer dnia od którego wyświetlane są dni w kalendarzu (2 - poniedziałek)
$Months = array ('', 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień');
$Months2 = array ('', 'stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia');
$Days = array ('', 'Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota');
$ImportantDays = array (1 => array (14 => 'Jakaś data'), 10 => array (1 => 'Urodziny Zenka')); // "ważne dni"
$Holidays = array (1 => array (1 => 'Nowy Rok'), 5 => array (1 => 'Święto pracy', 3 => 'Święto konstytucji'), 8 => array (15 => 'Wniebowzięcie NMP'), 11 => array (1 => 'Święto Zmarłych', 11 => 'Święto Niepodległości'), 12 => array (25 => 'Boże Narodzenie', 26 => 'Boże Narodzenie')); // święta
if (!empty($_POST['d']) && $_POST['id'] == $ID) $Date = $_POST['year'].'-'.$_POST['month'].'-'.$_POST['d'];
else if(!empty($_POST['y']) && $_POST['id'] == $ID) {
if ($_POST['y'] == '»') $_POST['y'] = $_POST['year'] + 1;
else if ($_POST['y'] == '«') $_POST['y'] = $_POST['year'] - 1;
if ($_POST['year'] < 1971 || $_POST['year'] > 2036) $_POST['y'] = 2000;
if ($_POST['day'] < 10) $_POST['day'] = '0'.$_POST['day'];
$Date = $_POST['y'].'-'.$_POST['month'].'-'.$_POST['day'];
}
else if (!empty($_POST['m']) && $_POST['id'] == $ID) {
if ($_POST['m'] == '»') $_POST['m'] = $_POST['month'] + 1;
else if ($_POST['m'] == '«') $_POST['m'] = $_POST['month'] - 1;
if ($_POST['m'] == 13) {
$_POST['m'] = 1;
$_POST['year']++;
}
else if ($_POST['m'] == 0) {
$_POST['m'] = 12;
$_POST['year'] = $_POST['year'] - 1;
}
if ($_POST['m'] < 10) $_POST['m'] = '0'.$_POST['m'];
if ($_POST['day'] < 10) $_POST['day'] = '0'.$_POST['day'];
if ($_POST['year'] < 1971 || $_POST['year'] > 2036) $_POST['year'] = 2000;
$Date = $_POST['year'].'-'.$_POST['m'].'-'.$_POST['day'];
}
$Date = getdate (strtotime ($Date));
$Holidays[date ('n', easter_date ($Date['year']))][date ('j', easter_date ($Date['year']))] = 'Wielkanoc'; // data Wielkanocy
if (date ('t', easter_date ($Date['year'])) == 31) $Holidays[4][1] = 'Poniedziałek Wielkanocny'; // Ponioedziałek Wielkanocy
else $Holidays[date ('n', easter_date ($Date['year']))][date ('j', easter_date ($Date['year'])) + 1] = 'Poniedziałek Wielkanocny'; // Ponioedziałek Wielkanocy
$NumberOfDays = date (t, mktime (0, 0, 0, $Date['mon'] + 1, 0, $Date['year'], -1));
$FirstDayOfWeek = date (w, mktime (0, 0, 0, $Date['mon'], 1, $Date['year']));
$CalendarData = array (array (1, 0, 6, 5, 4, 3, 2, 1), array (2, 1, 0, 6, 5, 4, 3, 2), array (3, 2, 1, 0, 6, 5, 4, 3), array (4, 3, 2, 1, 0, 6, 5, 4), array (5, 4, 3, 2, 1, 0, 6, 5), array (6, 5, 4, 3, 2, 1, 0, 6), array (7, 6, 5, 4, 3, 2, 1, 0));
$Offset = $CalendarData[$FirstDayOfWeek][$DayWeekStarts];
$DayOfWeekNum = $CalendarData[$FirstDayOfWeek][0];
$Calendar = '<form action="'.$_SERVER['PHP_SELF'].($_SERVER['QUERY_STRING']?'?'.$_SERVER['QUERY_STRING']:'').'" method="post" id="calendar_'.$ID.'">
<table cellspacing="0" cellpadding="0" class="calendar"><thead>
<tr>'."n".'<th class="b">
<input type="submit" name="m" value="«" class="p" />
<input type="submit" name="y" value="«" class="p" />
</th>'."n".'<th colspan="5" class="b">
'.$Months[$Date['mon']].'
'.$Date['year'].'
<input type="hidden" name="year" value="'.$Date['year'].'" />
<input type="hidden" name="month" value="'.$Date['mon'].'" />
<input type="hidden" name="day" value="'.$Date['mday'].'" />
<input type="hidden" name="id" value="'.$ID.'" />
</th>'."n".'<th class="b">
<input type="submit" name="m" value="»" class="p" />
<input type="submit" name="y" value="»" class="p" />
</th>'."n".'</tr>'."n".'<tr>'."n";
for ($i = 0; $i <= 6; $i++) $Calendar.= '<th title="'.$Days[($i + $DayWeekStarts - (($i + $DayWeekStarts > 7)?7:0))].'">'.substr ($Days[($i + $DayWeekStarts - (($i + $DayWeekStarts > 7)?7:0))], 0, 1).'</th>'."n";
$Calendar.= '</tr>'."n".'</thead>'."n".'<tbody>'."n".'<tr>'."n".(($Offset > 0)?'<td colspan="'.$Offset.'" class="c"> </td>'."n":'');
for ($i = 1; $i <= $NumberOfDays; $i++) {
$DayOfWeek = date (l, mktime (0, 0, 0, $Date['mon'], $i, $Date['year']));
$Calendar.= (($DayOfWeekNum == $DayWeekStarts)?'<tr>'."n":'').'<td><input type="submit" name="d" class="'.((!empty ($Holidays[$Date['mon']][$i]))?(($i == $Date['mday'])?'t':'h'):(($i == $Date['mday'])?'t':((in_array (($i + $Offset) / 7, array (1,2,3,4,5,6)))?'h':((!empty ($ImportantDays[$Date['mon']][$i]))?'i':((in_array (($i + $Offset + 1) / 7, array (1,2,3,4,5,6)))?'s':'n'))))).'" title="'.((!empty ($Holidays[$Date['mon']][$i]))?$Holidays[$Date['mon']][$i].namedays ($i, $Date['mon'], $Path, 1):((!empty ($ImportantDays[$Date['mon']][$i]))?$ImportantDays[$Date['mon']][$i].namedays ($i, $Date['mon'], $Path, 1):namedays ($i, $Date['mon'], $Path, 0))).'" value="'.$i.'" /></td>'."n".(($DayOfWeekNum == ($DayWeekStarts - 1))?'</tr>'."n":'');
if ($DayOfWeekNum == 7) $DayOfWeekNum = 1;
else $DayOfWeekNum++;
}
if (!in_array (($Offset + $NumberOfDays) / 7, array (1, 2, 3, 4, 5, 6))) $Calendar.= ((((($Offset == 5) && ($NumberOfDays > 30)) || (($Offset == 6) && ($NumberOfDays > 29)) && (42 - $NumberOfDays - $Offset > 0)) || (($NumberOfDays != 28) || ($Offset > 0) && (35 - $NumberOfDays - $Offset > 0)))?('<td colspan="'.((($NumberOfDays != 28) || ($Offset > 0) && (35 - $NumberOfDays - $Offset > 0))?(42 - $NumberOfDays - $Offset):(35 - $NumberOfDays - $Offset)).'" class="c"> </td>'."n".'</tr>'."n"):'</tr>'."n");
return ($Calendar.'<tr>'."n".'<td colspan="7" class="b" style="font-size:12px;">'.$Days[$Date['wday'] + 1].', '.$Date['mday'].' '.$Months2[$Date['mon']].' '.$Date['year'].' r.
'.($Holidays[$Date['mon']][$Date['mday']]?'<b style="color:#F3333F;">'.$Holidays[$Date['mon']][$Date['mday']].'</b>
':'').($ImportantDays[$Date['mon']][$Date['mday']]?'<b style="color:#333FF3;">'.$ImportantDays[$Date['mon']][$Date['mday']].'</b>
':'').((file_exists ($Path.'1.inc'))?namedays ($Date['mday'], $Date['mon'], $Path, 0):'').'</td>'."n".'</tr>'."n".'</tbody></table></form>'."n");
}
?> |
Kod CSS (należy go umieścić pomiędzy znacznikami STYLE):
.calendar {border-top:1px solid black;border-right:1px solid black;text-align:center;width:144px;font-family:Arial, sans-serif;}
.calendar td {font-size:1px;}
.calendar td input {width:25px;border:0;border-bottom:1px solid black;border-left:1px solid black;color:black;font-size:12px;}
th {background:#DEDEDE;text-align:center;border-bottom:1px solid black;border-left:1px solid black;}
.n {background:#F0F0F0;}
.t {background:#CFFFFC;font-weight:bold;}
.h {color:#F3333F;font-weight:bold;background:#FFC00F;}
.i {color:#333FF3;font-weight:bold;}
.s {color:#399003;font-weight:bold;background:#F7E00F;}
.b {background:#E8E8E8;border-bottom:1px solid black;border-left:1px solid black;font-size:12px;}
.c {border-bottom:1px solid black;border-left:1px solid black;font-size:1px;}
.p {background:transparent;border:0;width:20px;font-weight:bold;} |
Wywołanie funkcji kalendarza (pierwszy parametr: ID kalendarza (można umieszczać kilka kalendarzy o różnych ID i datach), drugi: data, która ma być wyświetlona w kalendarzu (opcja), trzeci: ścieżka do katalogu z bazą danych imion (opcja)):
<?= calendar ('pierwszy'); ?> |
P.S: Kalendarz pochodzi z CBA.pl
|