CodeIgniter User Guide Version 2.0.0


Класс Calendaring (календарь)

Класс Calendaring позволяет вам динамически создавать календари. Ваши календари могут быть отформатированы с использованием шаблонов, позволяющих на 100% контролировать каждый аспект дизайна. К тому же, вы можете выводить данные в ячейки календаря.

Инициализация класса

Как большинство других классов в CodeIgniter, класс Calendaring инициализируется в вашем контроллере с помощью функции $this->load->library:

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

Загруженный объект Calendaring доступен через: $this->calendar

Отображение календаря

Вот простой пример, показывающий вам, как можно вывести календарь:

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

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

Приведенный выше код будет генерировать календарь за текущий месяц/год, основываясь на текущем времени вашего сервера. Для того, чтобы показать календарь на определенный месяц и год, передайте эту информацию генерирующей функции:

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

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

Этот код генерирует календарь на июнь 2006 года. Первый параметр обозначает год, второй — месяц.

Отправка данных в ячейки вашего календаря

Для того, чтобы добавить данные в ваш календарь, нужен ассоциативный массив с ключами, соответствующими дням, и значениями — которые необходимо передать в ячейки. Массив передается третьим параметром в генерирующую функцию. Рассмотрим пример:

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

В этом примере дни под номерами 3, 7, 13 и 26 станут ссылками, указывающими на указанные вами URL-ы.

Примечание: По умолчанию предполагается, что массив содержит ссылки. Ниже вы сможете увидеть, что возможно настроить передачу данных в ячейки, а можно передавать различные виды информации.

Настройка параметров отображения

Есть несколько настроек, которые вы можете использовать для того, чтобы контролировать календарь. Настройки устанавливаются посредством передачи массива во второй параметр функции. Вот пример:

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

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

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

Этот код генерирует календарь, начиная с субботы. Используется «длинное» название месяца, и «короткое» название дня. Подробная информация ниже.

Параметр Значение по умолчанию Доступные опции Описание
templateСтрока, содержащая шаблон календаря (см. ниже).
local_timetime()Текущее время в формате Unix timestamp.
start_daysundayAny week day (sunday, monday, tuesday, etc.)Первый день недели.
month_typelonglong, shortОпределяет тип названия месяца. Длинный long = Январь, короткий short = Янв.
day_typeabrlong, short, abr Определяет тип названия дня. Длинный long = Воскресенье, Короткий short = Вос, аббревиатура abr = Вс.
show_next_prevFALSETRUE/FALSE (boolean) Отображать ли ссылки «Следующий/Предыдущий». Подробности ниже
next_prev_urlA URL Устанавливает основной путь для ссылок «Следующий/Предыдущий».

Отображение ссылок «Следующий/Предыдущий»

Следующий код позволит вашему календарю отображать ссылки «Следующий/Предыдущий»:

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

Вы заметите в этом примере:

Создание шаблона календаря

Создавая собственный шаблон календаря вы контролируете на 100% его дизайн. Каждый компонент будет отображен в соответствии с парой псевдопеременных, как показано здесь:

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