Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ WEB Разработка ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Codeigniter: calendaring


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

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

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

Загруженный объект класса доступен через $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://site/index.php/blog/blog/calendar/',
    7 => 'http://site/index.php/blog/blog/calendar/',
    12 => 'http://site/index.php/blog/blog/calendar/'
);

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

Используя пример выше, дни номер 3, 7, 12 будут содержать ссылки, указывающие на URLы, которые вы указали.

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

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

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

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

Код выше начнет календарь в понедельник, использует «длинные» названия месяцев, и «короткие» названия дней. Больше информации о настройках смотрите ниже.

Параметр         Значение по умолчанию     Опции                         Описание 

template         None                 None                             Строка, содержащая шаблон календаря. Смотрите раздел шаблона ниже.
 
local_time        time()                 None                             Временная метка Unix, обозначающая текущее время.
 
start_day         sunday                 Любой день недели (sunday, monday, tuesday...)     Устанавливает день недели, с которого начинается календарь.

month_type         long                 long, short                         Определяет, какую версию названия месяца использовать в календаре. Длинный = January, короткий = Jan.

day_type         abr                 long, short, abr                         Определяет, какую версию названий дней недели показывать в заголовках столбцов. long = Sunday, short = Sun, abr = Su. 

show_next_prev                     FALSE TRUE/FALSE (boolean)             Определяет, показывать ли ссылки, разрешающие переход к следующему и предыдущему месяцам. Смотрите информацию об этой опции ниже. 

next_prev_url     None                 A 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));

Вы должны установить "show_next_prev" в TRUE.

Вы должны передать URL к контроллеру, содержащему ваш календарь, в параметре "next_prev_url". 

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

Создание шаблона календаря
Создав шаблон календаря вы на 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();


Теперь вернем роутинг(application/config/routes.php) к виду (Все остальное добавленное нами ранее удалим):

$route['blog'] = 'blog';
$route['default_controller'] = 'blog';

Вот мой пример функции blog.php:

<?php
class Blog extends CI_Controller {

        public function index()
        {
            //$prefs = array (
            //    'start_day' => 'monday',
            //    'month_type' => 'long',
            //    'day_type' => 'short'
            //);
            
            //$this->load->library('calendar', $prefs);
            
            //$data = array(
            //    3 => 'http://site/index.php/blog/blog/calendar/',
            //    7 => 'http://site/index.php/blog/blog/calendar/',
            //    12 => 'http://site/index.php/blog/blog/calendar/'
            //);
            
            //echo $this->calendar->generate(2006, 6, $data); 
            
            $prefs = array (
                'show_next_prev' => TRUE,
                'next_prev_url' => 'http://site/index.php/blog/index/',
                'start_day' => 'monday',
                'month_type' => 'long',
                'day_type' => 'short',
                'template' => '

               {table_open}<table border="0" cellpadding="5" 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($this->uri->segment(3), $this->uri->segment(4));

        }
        

        
}

И вызовем: http://site/index.php/blog/


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект