Code Igniter Versão 1.5.2 - Guia do Usuário


Classe Calendar

A classe Calendário permite a criação dinâmica de calendários. Os calendários podem ser formatados através do uso de um template, lhe dando liberdade total de cada aspecto do design do mesmo. Além disso, você pode passar dados para as células do seu calendário.

Inicializando a Classe

Assim como a maioria das classes no Code Igniter, a classe de Calendário é inicializada em seu controller usando o método $this->load->library(): $this->load->library('calendar');

Uma vez carregado, o objeto Calendar estará disponível utilizando: $this->calendar

Exibindo um Calendário

Segue um simples exemplo de como exibir um calendário:

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

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

O código acima irá gerar o calendário para o mês e ano corrente, baseado nas configurações do seu servidor. Para exibir um calendário de uma data específica (ano e mês), você pode passar esta informação através do método de geração do calendário:

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

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

O código acima irá gerar o calendário exibindo o mês de Junho de 2006. O primeiro parâmetro especifica o ano, o segundo especifica o mês.

Passando dados para as Células do Calendário

Para adicionar informações às células do calendário, é necessário criar um array associativo onde as chaves correspondem aos dias que você quer popular e os valores do array contém as informações. O array é passado como terceiro parametro do método de geração do calendário. Veja este exemplo:

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

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

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

No exemplo acima, os dias 3, 7, 13 e 26 receberão links apontando para as URLs passadas.

Nota: Por padrão assume-se que seu array conterá links. Na seção que explica os templates do calendário logo abaixo, você verá como customizar como as informações passadas para suas células serão tratadas, assim você poderá passar diferentes tipos de informações.

Definindo Preferências de Exibição

Existem sete preferências que você pode usar para controlar diversos aspectos do calendário. Preferências são definidas passando um array de preferências como segundo parâmetro do método de carregamento. Veja o exemplo:

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

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

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

O código acima iniciaria o calendário no sábado, exibe o nome do mês completo no cabeçalho e os nomes reduzidos dos dias. Mais informações sobre preferências mais abaixo.

Preferências Valor Padrão Opções Descrição
templateNoneNoneUma string contendo o template do seu calendário. Veja a seção de templates abaixo.
local_timetime()NoneUnix timestamp correspondente ao horário atual.
start_daysundayQualquer dia da semana (sunday, monday, tuesday, etc.)Define o dia da semana que o calendário deve iniciar.
month_typelonglong, shortDetermina qual versão do nome do mês deve ser exibido no cabeçalho. long = January, short = Jan.
day_typeabrlong, short, abrDetermina qual versão dos nomes dos dias da semana usar no cabeçalho das colunas. long = Sunday, short = Sun, abr = Su.
show_next_prevFALSETRUE/FALSE (booleano)Determina onde exibis os links permitindo navegar nos meses. Veja mais informações sobre isso abaixo.
next_prev_urlNoneA URLDefine o caminho base usado em seus links de próximo/anterior do calendário.

Exibindo Links de Mês Anterior/Próximo

Para permitir que seu calendário possa navegar entre os dias e meses através de links de próximo/anterior, você deve configurar o calendário de forma parecida ao exemplo abaixo:

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

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

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

Algumas considerações sobre o exemplo acima:

Criando Templates de Calendários

Criando templates de calendários você terá controle total sobre o design do mesmo. Cada componente do seu calendário será definido em pares de pseudo-variáveis, conforme explicado abaixo:

$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();