Класс 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));