nette Event kalendar jak na nej?
- zdrhal
- Člen | 42
Zdravim vsechny,
nevi nekdo kde sehnat plne funkcni a dobre zdokumentovany event kalendar. Nebo
pomoci jak rozbehat EventCalendar. At
delam co delam nedokazu rozbehat ani jedno demo, dokumentace k tomu neni
(nefunkcni link). Jedine co se mi povedlo je rozbehat tu zakladni verzi
kalendare, kdy se me vypise obycejny kalendar. Ale ja bych chtel rozchodit
pridavani Eventu a to me hazi jednu chybu za druhou. Strasne by pomohlo kdyby
nekdo nekde mel jeste dokumentaci, protoze link od Kubicka
nefunguje. Diky..
Editoval zdrhal (4. 4. 2014 13:59)
- zdrhal
- Člen | 42
Jojo na to uz jsem taky prisel uplne jsem se na to vykaslal a zahodil to a udelal si svuj kalendar :) Vzhledem k tomu ze mam i svoje metody pro praci s db tak si to aspon rovnou udelam tak jak potrebuji. Ale doufal jsem ze to bude funkcni.
Muj kalendar:
model:
<?php
namespace App\Model;
use Nette;
class Calendar extends Nette\Object
{
private $month;
private $year;
public function __construct()
{
}
// funkce nastaví mesic
function setMonth($month)
{
$this->month = $month;
}
// funkce nastavi rok
function setYear($year)
{
$this->year = $year;
}
// funkce vrati nazvy dnu
function getDays()
{
return array(1 => "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota", "Neděle");
}
// funkce vrati mesice
function getMonths()
{
return array(1 => "Leden", "Unor", "Brezen", "Duben", "Kveten", "Cerven", "Cervenec", "Srpen", "Zari", "Rijen", "Listopad", "Prosinec");
}
// funkce vrati pocet dnu
function countDays()
{
return cal_days_in_month(CAL_GREGORIAN, $this->month, $this->year);
}
// nastaveni prvniho dne v kalendari
function firstDay()
{
$eng = date("w", mktime(0, 0, 0, $this->month, 1, $this->year));
return ($eng==0) ? 7 : $eng;
}
// nastaveni bunky v kalendari
function cell($row, $column, $firstDay, $countDays)
{
$days = $this->getDays();
if ($row ==1 ) return $days[$column];
$value = ($row-2)*7 + $column - $firstDay+1;
if ($value < 1 || $value > $countDays) return " "; else return $value;
}
// vrátí pole ve kterém je nadefinovaný kalendář
function extractCalendar()
{
$months = $this->getMonths();
$countDays = $this->countDays($this->month, $this->year);
$firstDay = $this->firstDay($this->month, $this->year);
$countRows = date("W", mktime(0, 0, 0, $this->month, $countDays-7, $this->year)) - date("W", mktime(0, 0, 0, $this->month, 1+7, $this->year))+4;
for ($row = 1; $row <= $countRows; $row++)
{
for($column = 1; $column <= 7; $column++)
{
$extractCalendar[$row][$column] = $this->cell($row, $column, $firstDay, $countDays);
}
}
return $extractCalendar;
}
}
presenter:
/** @var Model\Calendar */
private $calendar;
public function __construct(Model\Calendar $calendar)
{
$this->calendar = $calendar;
}
public function renderDefault()
{
$this->calendar->setMonth(Date('n'));
$this->calendar->setYear(Date('Y'));
$this->template->calendar = $this->calendar->extractCalendar();
}
Sablona:
<table class="calendar">
<tr>
<th colspan="7">Kalendář</th>
</tr>
{for $i = 1; $i <= count($calendar); $i++}
<tr>
{for $j = 1; $j <= 7; $j++}
{if $i == 1}
<th>{$calendar[$i][$j]}</th>
{else}
{if $calendar[$i][$j] == " "}
<td class="free"> </td>
{else}
<td>{$calendar[$i][$j]}</td>
{/if}
{/if}
{/for}
</tr>
{/for}
</table>
Třeba se to nekomu bude hodit :) Preju hezky den.
EDIT: Je tam nekde mala chybka. Behem par hodin to fixnu a upravim. ;)
EDIT2: Chyba nalezena ted je to plne funkcni :)
Editoval zdrhal (5. 4. 2014 22:40)