adding zend project folders into old campcaster.
This commit is contained in:
parent
56abfaf28e
commit
7ef0c18b26
4045 changed files with 1054952 additions and 0 deletions
240
library/pear/Calendar/docs/examples/20.php
Normal file
240
library/pear/Calendar/docs/examples/20.php
Normal file
|
@ -0,0 +1,240 @@
|
|||
<?php
|
||||
/**
|
||||
* Description: demonstrates a decorator used to "attach a payload" to a selection
|
||||
* to make it available when iterating over calendar children
|
||||
*/
|
||||
|
||||
//if you use ISO-8601 dates, switch to PearDate engine
|
||||
define('CALENDAR_ENGINE', 'PearDate');
|
||||
|
||||
if ( !@include 'Calendar/Calendar.php' ) {
|
||||
define('CALENDAR_ROOT','../../');
|
||||
}
|
||||
|
||||
require_once CALENDAR_ROOT . 'Month/Weekdays.php';
|
||||
require_once CALENDAR_ROOT . 'Day.php';
|
||||
require_once CALENDAR_ROOT . 'Decorator.php';
|
||||
|
||||
// accepts multiple entries
|
||||
class DiaryEvent extends Calendar_Decorator
|
||||
{
|
||||
var $entries = array();
|
||||
|
||||
function DiaryEvent($calendar) {
|
||||
Calendar_Decorator::Calendar_Decorator($calendar);
|
||||
}
|
||||
|
||||
function addEntry($entry) {
|
||||
$this->entries[] = $entry;
|
||||
}
|
||||
|
||||
function getEntry() {
|
||||
$entry = each($this->entries);
|
||||
if ($entry) {
|
||||
return $entry['value'];
|
||||
} else {
|
||||
reset($this->entries);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MonthPayload_Decorator extends Calendar_Decorator
|
||||
{
|
||||
//Calendar engine
|
||||
var $cE;
|
||||
var $tableHelper;
|
||||
|
||||
var $year;
|
||||
var $month;
|
||||
var $firstDay = false;
|
||||
|
||||
function build($events=array())
|
||||
{
|
||||
require_once CALENDAR_ROOT . 'Day.php';
|
||||
require_once CALENDAR_ROOT . 'Table/Helper.php';
|
||||
|
||||
$this->tableHelper = & new Calendar_Table_Helper($this, $this->firstDay);
|
||||
$this->cE = & $this->getEngine();
|
||||
$this->year = $this->thisYear();
|
||||
$this->month = $this->thisMonth();
|
||||
|
||||
$daysInMonth = $this->cE->getDaysInMonth($this->year, $this->month);
|
||||
for ($i=1; $i<=$daysInMonth; $i++) {
|
||||
$Day = new Calendar_Day(2000,1,1); // Create Day with dummy values
|
||||
$Day->setTimeStamp($this->cE->dateToStamp($this->year, $this->month, $i));
|
||||
$this->children[$i] = new DiaryEvent($Day);
|
||||
}
|
||||
if (count($events) > 0) {
|
||||
$this->setSelection($events);
|
||||
}
|
||||
Calendar_Month_Weekdays::buildEmptyDaysBefore();
|
||||
Calendar_Month_Weekdays::shiftDays();
|
||||
Calendar_Month_Weekdays::buildEmptyDaysAfter();
|
||||
Calendar_Month_Weekdays::setWeekMarkers();
|
||||
return true;
|
||||
}
|
||||
|
||||
function setSelection($events)
|
||||
{
|
||||
$daysInMonth = $this->cE->getDaysInMonth($this->year, $this->month);
|
||||
for ($i=1; $i<=$daysInMonth; $i++) {
|
||||
$stamp1 = $this->cE->dateToStamp($this->year, $this->month, $i);
|
||||
$stamp2 = $this->cE->dateToStamp($this->year, $this->month, $i+1);
|
||||
foreach ($events as $event) {
|
||||
if (($stamp1 >= $event['start'] && $stamp1 < $event['end']) ||
|
||||
($stamp2 >= $event['start'] && $stamp2 < $event['end']) ||
|
||||
($stamp1 <= $event['start'] && $stamp2 > $event['end'])
|
||||
) {
|
||||
$this->children[$i]->addEntry($event);
|
||||
$this->children[$i]->setSelected();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fetch()
|
||||
{
|
||||
$child = each($this->children);
|
||||
if ($child) {
|
||||
return $child['value'];
|
||||
} else {
|
||||
reset($this->children);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Calendar instance used to get the dates in the preferred format:
|
||||
// you can switch Calendar Engine and the example still works
|
||||
$cal = new Calendar;
|
||||
|
||||
$events = array();
|
||||
//add some events
|
||||
$events[] = array(
|
||||
'start' => $cal->cE->dateToStamp(2004, 6, 1, 10),
|
||||
'end' => $cal->cE->dateToStamp(2004, 6, 1, 12),
|
||||
'desc' => 'Important meeting'
|
||||
);
|
||||
$events[] = array(
|
||||
'start' => $cal->cE->dateToStamp(2004, 6, 1, 21),
|
||||
'end' => $cal->cE->dateToStamp(2004, 6, 1, 23, 59),
|
||||
'desc' => 'Dinner with the boss'
|
||||
);
|
||||
$events[] = array(
|
||||
'start' => $cal->cE->dateToStamp(2004, 6, 5),
|
||||
'end' => $cal->cE->dateToStamp(2004, 6, 10, 23, 59),
|
||||
'desc' => 'Holidays!'
|
||||
);
|
||||
|
||||
|
||||
|
||||
$Month = & new Calendar_Month_Weekdays(2004, 6);
|
||||
$MonthDecorator = new MonthPayload_Decorator($Month);
|
||||
$MonthDecorator->build($events);
|
||||
|
||||
?>
|
||||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title> Calendar </title>
|
||||
<style text="text/css">
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
caption {
|
||||
font-family: verdana;
|
||||
font-size: 14pt;
|
||||
padding-bottom: 4pt;
|
||||
}
|
||||
th {
|
||||
font-family: verdana;
|
||||
font-size: 11px;
|
||||
text-align: center;
|
||||
background-color: #e7e3e7;
|
||||
padding: 5pt;
|
||||
line-height: 150%;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
td {
|
||||
font-family: verdana;
|
||||
font-size: 11px;
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
td.calCell {
|
||||
border: 1px solid #b5bece;
|
||||
padding: 3px;
|
||||
}
|
||||
td.calCellEmpty {
|
||||
background-color: #f3f3f7;
|
||||
}
|
||||
td.calCellBusy {
|
||||
background-color: #efeffa;
|
||||
}
|
||||
div.dayNumber {
|
||||
text-align: right;
|
||||
background-color: #f8f8f8;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
ul {
|
||||
margin-left: 0;
|
||||
margin-top: 5pt;
|
||||
padding: 0 10pt 0 12pt;
|
||||
list-style-type: square;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h2>Sample Calendar Payload Decorator (using <?php echo CALENDAR_ENGINE; ?> engine)</h2>
|
||||
<table class="calendar" width="98%" cellspacing="0" cellpadding="0">
|
||||
<caption>
|
||||
<?php echo $MonthDecorator->thisMonth().' / '.$MonthDecorator->thisYear(); ?>
|
||||
</caption>
|
||||
<tr>
|
||||
<th>Monday</th>
|
||||
<th>Tuesday</th>
|
||||
<th>Wednesday</th>
|
||||
<th>Thursday</th>
|
||||
<th>Friday</th>
|
||||
<th>Saturday</th>
|
||||
<th>Sunday</th>
|
||||
</tr>
|
||||
<?php
|
||||
while ($Day = $MonthDecorator->fetch()) {
|
||||
|
||||
if ($Day->isFirst()) {
|
||||
echo "<tr>\n";
|
||||
}
|
||||
|
||||
echo '<td class="calCell';
|
||||
if ($Day->isSelected()) {
|
||||
echo ' calCellBusy';
|
||||
} elseif ($Day->isEmpty()) {
|
||||
echo ' calCellEmpty';
|
||||
}
|
||||
echo '">';
|
||||
echo '<div class="dayNumber">'.$Day->thisDay().'</div>';
|
||||
|
||||
if ($Day->isEmpty()) {
|
||||
echo ' ';
|
||||
} else {
|
||||
echo '<div class="dayContents"><ul>';
|
||||
while ($entry = $Day->getEntry()) {
|
||||
echo '<li>'.$entry['desc'].'</li>';
|
||||
//you can print the time range as well
|
||||
}
|
||||
echo '</ul></div>';
|
||||
}
|
||||
echo '</td>';
|
||||
|
||||
if ($Day->isLast()) {
|
||||
echo "</tr>\n";
|
||||
}
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue