Класс Calendar предназначен для отображения динамического календаря. Вы можете поместить данные в ячейки календаря, добавить внешние ячейки к календарю и т.д. При клике на ячейке календаря появляется форма добавления объекта, который будет отображен в ячейке.
Инициализация класса. Инициализация класса присходит в соответствии с методиками ООП:
include_once(SYS_BASE_PATH.'main/classes/calendar.class.php');
$w = new calendar('sys_objects');
Во всех последующих примерах используется объект класса календаря - $w,объект класса PagePаrser - $parser.
Основные параметры класса
| Параметр | Значение по умолчанию | Описание |
| q | null | wSql-объект. |
| f | null | Объект класса wPrototype. |
| _data | array() | Массив данных для календаря, если они поступают не в результате sql-запроса к БД. |
| sql | Sql-запрос для формирования данных таблицы. | |
| caption | Заголовок страницы. | |
| minTime | 8 | Первая временная метка, которая может быть отображена. |
| maxTime | 21 | Вторая временная метка, которая может быть отображена. |
| editable | 1 | Возможность редактирования записей в календаре |
| selectable | 1 | Установка режима просмотра (без возможности редактирования данных в ячейках календаря). |
| theme | true | Использование jQuery UI темизации. |
| start_field | starton | Начальное временное поле объекта, который будет отображен в календаре. |
| end_field | finishon | Конечное временное поле объекта, который будет отображен в календаре. |
| title_field | title | Поле заголовка объекта, который будет отображен в календаре. |
| cardurl | Url для карточки объекта | |
| year | 0 | Начальное значение года для календаря. |
| _caption_cells | array() | Дополнительные ячейки в области заголовка календаря. |
| defaultView | true | Шаблон для календаря. |
| popup_script | false | Подключение popupWindow.js |
Описание методов
show()
Метод служит для отображения календаря и помещения данных в ячейки календаря.
Чаще всего в ячейки календаря помещаются данные из базы. В панели управления в меню Настройки-Таблицы создадим ссылку на таблицу projects в БД (п.Работа с таблицами).
Создайте следующие поля в таблице:
Перейдите на вкладку Данные, расположенную в верхнем меню. Добавьте в таблицу строку с данными:
После создания полей таблицы нажмите кнопку Создать таблицу над списком полей таблицы – будет создана физическая таблица projects в базе данных.
В контроллер страницы приложения вставьте следующий код для вывода календаря:
include_once(SYS_BASE_PATH.'main/classes/calendar.class.php');
$w = new calendar('projects');
$w->q->select('o.id');
$w->q->select('o.title');
$w->q->select('o.starton');
$w->q->select('o.finishon');
$w->q->from('projects o');
$w->q->where("o.id<>'0'");
$w->q->where('(o.starton>=:start: AND o.finishon<:end:)
OR (o.starton:start:)
OR (o.starton=:end:)');
$w->caption = $this->parser->gt('calendar');
$w->defaultView = 'agendaWeek';
$w->show();
Зайдите на страницу и, если вы все сделали правильно, увидите созданный проект. Можно кликнуть по любой ячейке календаря для отображения формы добавления записи. Добавьте запись аналогично добавлению данных в панели управления.
addCell()
public function addCell($text = '', $align = '')
Добавление ячейки в область заголовка календаря. В каждой ячейке данные могут быть расположены на каком-нибудь фоне. Добавим ячейку, в которой будет отображаться фильтр по цветам. При выборе одной из опций фильтра будут показываться данные в тех ячейках, где совпадет цвет.
include_once(SYS_BASE_PATH.'main/classes/calendar.class.php');
$w = new calendar('projects');
$pars = array();
$pars['onchange'] = "postAction('',0)";
$pars['name'] = 'filter_color';
$pars['val'] = $filter_color;
$pars['colored'] = true;
//выводим из БД значения цвета
$pars['sql'] = 'SELECT objid, name_'.$parser->lang_suff." FROM sys_objects WHERE ob-jtype='sys_interface_colors' ORDER BY name_".$parser->lang_suff;
$w->addCell($parser->utils->dropdownMenu($pars));
$w->show();
addHidden()
public function addHidden($name = '', $val = '')
Добавляет скрытое поле к календарю.
include_once(SYS_BASE_PATH.'main/classes/calendar.class.php');
$w = new calendar('projects');
$w->addHidden('name_hidden','value_hidden');
$w->show();
В результате работы этого примера в календаре появляется дополнительный html-код:
< input id="name_hidden" name="name_hidden" value="value_hidden" type="hidden" >
getEvents()
public function getEvents($start = 0, $end =0)
Получение всех событий между стартовой и конечной точкой, заданной в календаре.
include_once(SYS_BASE_PATH.'main/classes/calendar.class.php');
$w = new calendar('projects');
print_r($w->getEvents($start,$end));