Calendar - класс вывода календаря
- Автор mityok on августа 5th, 2008
Класс Calendar позволяет вам динамически создавать календари. Календари можно форматировать при помощи шаблона календаря, что позволяет вам на 100% контролировать любой аспект дизайна. Кроме того, вы можете задавать данные для ячеек календаря.
Инициализация класса
Как и большинство классов в CodeIgniter, класс Calendar инициализируется при помощи конструкции $this->load->library :
$this->load->library('calendar');
После инициализации объект Calendar доступен как $this->calendar.
Вывод календаря
Вот простой пример вывода календаря:
$this->load->library('calendar');
Код в примере выше сгенерирует календарь используюя текущий день и месяц опираясь на текущее серверное время. Чтобы сгенерировать календарь на определенный месяц и год, нужно передать эти данные функции генерирования календаря:
$this->load->library('calendar');
Код в примере выше сгенерирует календарь для июня 2006 года. Первый параметр указывает год, второй - месяц.
Передача данных для ячейки календаря
Для того, чтобы передать данные для ячеек календаря, нужно указать ассоциативный массив, в котором ключи являются днями месяца, а значения - данными, которые нужно передать в соответствующую ячейку каленадря. Данный массив передается третьим параметром функции генерации календаря:
$this->load->library('calendar'); 3 => 'http://your-site.com/news/article/2006/03/', 7 => 'http://your-site.com/news/article/2006/07/', 13 => 'http://your-site.com/news/article/2006/13/', 26 => 'http://your-site.com/news/article/2006/26/' );
В приведенном выше примере ячейки для чисел 2,7,13,26 станут ссылками на заданные URL.
Примечание: по умолчанию подразумевается, что переданный массив содержит ссылки. Далее будет рассмотрена тема шаблонов календаря, которые позволяют определить, какие данные передаются в ячейки календаря и как они обрабатываются.
Настройки отображения календаря
Существует семь опций, которые вы можете задать для управления различными аспектами календаря. Настройки задаются при за счет передачи массива в качестве второго параметра функции загрузки класса:
'start_day' => 'saturday', 'month_type' => 'long', 'day_type' => 'short' ); $this->load->library('calendar', $prefs);
Приведенный выше код задает субботу в качестве первого дня недели, использование "длинного" заголовка месяца и "коротких" названий дней недели. Более детальная информация о настройках класса:
| Параметр | Значение по умолчанию | Опции | Описание |
|---|---|---|---|
| template | нет | нет | Строка содержащая шаблон календаря (см. ниже) |
| local_time | time() | нет | Время в формате Unix соответствующее текущему времени |
| start_day | воскресенье | любой день недели (sunday,monday ...) | Задает первый день недели календаря |
| month_type | long | long, short | Задает формат вывода названия месяца. long - Январь, short - Янв |
| day_type | abr | long,short,abr | Задает формат вывода названия дня недели.long - Воскресенье, short - Воскр, abr - Вс |
| show_next_prev | FALSE | TRUE/FALSE (boolean) | Указывает, нужно ли отображать ссылки на следующий/предыдущий месяц. Данная функциональность описана ниже. |
| next_prev_url | нет | URL | Указывает базовый URL для ссылок на предыдущий/следующий месяц |
Вывод ссылки на следующий/предыдущий месяц
Для того, чтобы календарь автоматически переключался на следующий/предыдущий месяц при помощи соответствующих ссылок, нужно настроить его при помощи кода, близкого к данному примеру:
'show_next_prev' => TRUE, 'next_prev_url' => 'http://www.your-site.com/index.php/calendar/show/' ); $this->load->library('calendar', $prefs);
Обратите внимание на следующее:
- Нужно установить параметр show_next_prev в TRUE
- Необходимо передать URL в качестве базового при помощи параметра next_prev_url
- Нужно передать год и месяц в качестве параметров функции генерации календаря на основе сегментов URL (Класс Calendar автоматически добавит сегменты URL к базовому адресу, который вы зададите.
Разработка шаблона календаря
За счет разрабоки шаблона календаря вы получаете полный контроль над дизайном календаря. Каждый из элементов календаря будет размещен в рамках псевдо-переменных как показано в следующем примере:
$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}"><<</a></th>{/heading_previous_cell} {heading_title_cell}<th colspan="{colspan}">{heading}</th>{/heading_title_cell} {heading_next_cell}<th><a href="{next_url}">>></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} {/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);

Отправить комментарий