Login
Libri
Home Le Classi Classe Calendar

Classe Calendar

Share

La classe Calendare permette di creare dinamicamente calendari. I calendari potranno essere formattati grazie ai template attraverso i quali si potrài avere il controllo completo di ogni aspetto del design. In aggiunta sarà possibile passare inofrmazioni alle celle del proprio calendario.

Inizializzare la Classe

Come altre classi in CodeIgniter, la classe Calendar si inizializza nel proprio controller attraverso la funzione $this->load->library function:


$this->load->library('calendar');

Una volta caricata, l'oggetto Calendar sarà disponibile utilizzando: $this->calendar

Visualizzare un Calendario

Di seguito un semplice esempio su come è possibile visualizzare un calendario:


$this->load->library('calendar');

echo $this->calendar->generate();

Il codice precedente generà un calendario del corrente mese/anno basandosi sui dati prelevati dal proprio server. Per mostrare il calendario di uno specifico mese e anno sarà necessario passare queste informazione alla funzione:


$this->load->library('calendar');

echo $this->calendar->generate(2006, 6);

Il codice precedente genereà un calendario del mese di Giugno del 2006. Il primo parametro specifica l'anno, mentre il secondo indicherà il mese.

Passare dati alle Celle del Calendario

Per aggiungere informazioni al calendario è necessario creare un array associativo la cui chiave corrisponde al giorno che si vuole popolare e il valore dell'array conterrà i dati. L'array è passato come terzo parametro della funzione che genera il calendario. Considera questo esempio:


$this->load->library('calendar');

$data = array(
3  => 'http://example.com/news/article/2006/03/',
7  => 'http://example.com/news/article/2006/07/',
13 => 'http://example.com/news/article/2006/13/',
26 => 'http://example.com/news/article/2006/26/'
);

echo $this->calendar->generate(2006, 6, $data);

Usando l'esempio precedente, i giorni 3, 7, 13 e 26 diventeranno link agli URLs inseriti.

Nota: Di default si assume che gli array conterranno links. Nella sezione successiva che spiega i template dei calendari, sarà possibile vedere come personalizzare i dati passati alle celle del calendario in modo da assegnare tipi di informazione differenti.

Configurare le Preferenze di Visualizzazione

Ci sono sette preferenze da configurare per controllare vari aspetti del calendario. Le preferenze sono impostate passando un array di preferenze come secondo parametro della funzione di caricamento. Qui un esempio:


$prefs = array (
'start_day'    => 'saturday',
'month_type'   => 'long',
'day_type'     => 'short'
);

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();

Il codice precedente mostra come far iniziare il Calendario di Sabato, usando l'intestazione "lunga" dei mesi, ed il nome "corto" dei giorni. A seguire una tabella riepilogativa delle impostazioni.

Preferenze Valore di Default Opzioni Descrizione
template None None Una stringa contenente il template del calendario. Si veda di seguito nella sezione template.
local_time time() None Un timestamp Unix corrispondente all'ora corrente.
start_day sunday Any week day (sunday, monday, tuesday, etc.) Imposta il giorno della settimana dal quale inizierà il calendario.
month_type long long, short Determina quale vertsione del nome del mese si vuole utilizzare nell'intestazione. long = January, short = Jan.
day_type abr long, short, abr Determina quale versione del nome del giorno della settimana si vuole utilizzare come intestazione della colonna. long = Sunday, short = Sun, abr = Su.
show_next_prev FALSE TRUE/FALSE (boolean) Determina se visualizzare i link al mese precedente/successivo. Si vedano maggiori informazioni di seguito.
next_prev_url None A URL Imposta la basepath usata per i link al calendario precedente/successivo.

Mostrare i links al mese Successivo/Precedente

Per permettere al proprio calendario di incrementarsi/decrementarsi dinamicamente attraverso i link successivo/precedeten è necessario configurare il calendario in modo simile all'esempio seguente:


$prefs = array (
'show_next_prev'  => TRUE,
'next_prev_url'   => 'http://example.com/index.php/calendar/show/'
);

$this->load->library('calendar', $prefs);

echo $this->calendar->generate($this->uri->segment(3), $this->uri->segment(4));

Da notare alcuni particolari dell'esempio precedente:

  • Impostare "show_next_prev" a TRUE.
  • Si deve fornire l'URL al controller contenente il calendario nelle preferenze "next_prev_url".
  • Si deve fornire l'anno ed il mese alla funzione che genera il calendario attraverso i segmenti URI dove appariranno (Nota: la classe Calendar aggiunge automaticamente i segmenti anno/mese all'URL di base.).

Creare un Template per il Calendario

Nella creazione di un template per il calendario si ha il 100% del controllo sul design. Ogni elemento del calendario puà essere posizionato all'interno di una coppia di pseudo-classi  come mostrato di seguito:


$prefs['template'] = '

{table_open}<table border="0" cellpadding="0" cellspacing="0">{/table_open}

{heading_row_start}<tr>{/heading_row_start}

{heading_previous_cell}<th><a href="/{previous_url}">&lt;&lt;</a></th>{/heading_previous_cell}
{heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell}
{heading_next_cell}<th><a href="/{next_url}">&gt;&gt;</a></th>{/heading_next_cell}

{heading_row_end}</tr>{/heading_row_end}

{week_row_start}<tr>{/week_row_start}
{week_day_cell}<td>{week_day}</td>{/week_day_cell}
{week_row_end}</tr>{/week_row_end}

{cal_row_start}<tr>{/cal_row_start}
{cal_cell_start}<td>{/cal_cell_start}

{cal_cell_content}<a href="/{content}">{day}</a>{/cal_cell_content}
{cal_cell_content_today}<div class="highlight"><a href="/{content}">{day}</a></div>{/cal_cell_content_today}

{cal_cell_no_content}{day}{/cal_cell_no_content}
{cal_cell_no_content_today}<div class="highlight">{day}</div>{/cal_cell_no_content_today}

{cal_cell_blank}&nbsp;{/cal_cell_blank}

{cal_cell_end}</td>{/cal_cell_end}
{cal_row_end}</tr>{/cal_row_end}

{table_close}</table>{/table_close}
';

$this->load->library('calendar', $prefs);

echo $this->calendar->generate();

Ultimo aggiornamento ( Venerdì 17 Dicembre 2010 05:51 )