Вы посетитель |
В качестве примера написания собственного приложения для АСР LANBilling мы рассмотрим включение в интерфейс LANBilling отчета,
показывающего списания АП, который вызывается из формы свойств соответствующей учетной записи.
Необходимые изменения мы будем производить в файлах:
К примеру это может быть шаблон строки таблицы обработанной несколько раз и содержащей список разных данных. Как правило блоки в шаблоне имеют метки начала и конца. Если во время выполнения скрипта блок не был объявлен для обработки, то он пропускается и не попадает в результат страницы. Шаблон может содержать переменные, которые исполняемый скрипт заполнит в ходе обработки, они обрамляются фигурными скобками. Поскольку создаваемый нами отчет основывается на клиентском скриптовом языке, то большую часть изменений мы сделаем в vg_edit.tpl. Для корректной работы отчета нужно подключить составляющие основу файлы ExtJS со скриптами и стилями. В большинстве страниц интерфейса это уже сделано и подобные действия не потребуются. Одной из ссылок будет указатель на наш файл с функцией, который создадим в папке resources с именем myreport.js Чтобы в отчете все надписи в заголовках отображались на понятном пользователю языке добавим в блок объявляющий JavaScript следующий код. Обратите внимание на переменные в фигурных скобках, поскольку эти же названия нужно будет определить и в исполняемом файле php. Вызов самой функции разместим в заголовке основной таблицы. Отыщем строку 216 и вставим элемент «button» с указанием вызова функции showVgIDRent по событию OnClick в ячейку таблицы. В результате код кнопки вставленной в заголовок будет выглядеть следующим образом: Теперь перейдем к редактированию исполняемого файла create_vg.php. В строке 943 создан класс для работы с шаблонами, переменная $tpl. С помощью вызова функций этого класса зададим логику обработки шаблона для нашего кода. Функция setCurrentBlock устанавливает указатель на тот блок, который должен быть обработан, parseCurrentBlock закрывает указатель. Установить значение переменной в шаблоне нужно функцией setVariable, где первый параметр — переменная в шаблоне, вторая — присваиваемое значение. В примере ниже все передаваемые значения берутся из определений описанных в локализации (localize.php), вы можете указать свои. Убедившись, что страница, сформированная сервером, отображает нужный элемент управления приступим к написанию самой функции JavaScript, для этого в созданный файл myreport.js в папке resources добавим структуру описывающую способ получения данных со стороны сервера. Объект Ext.data.Store , в нем определим:
В следующем шаге опишем структуру таблицы, которую наша программа должна отобразить. Объект Ext.grid.ColumnModel. Описание колонок таблицы передается в виде массива, по этому важно соблюдать очередность:
Сводим воедино два объекта в Ext.grid.EditorGridPanel. В store определяем данные от сервера, а в cm: структуру таблицы. В терминах ExtJS созданный нами объект является своего рода панель на которой можно разместить не только табличную сетку, а так же дополнительные элементы управления. К примеру, чтобы организовать постраничный просмотр данных, нужно для нижнего колонтитула bbar создать объект Ext.PagingToolbar. Результатом отображения будет «окно» созданное с помощью объекта Ext.Window
Таким образом, мы сформировали на основании полученных данных от сервера отчет о списаниях АП для выбранной учетной записи. Ниже представлен полный текст функции. Не стоит забывать о том, что описанный пример является клиентской стороной приложения и для полноты работы потребуется серверная часть, которая сформирует данные, полученные на основании требований клиента и результата sql-запроса. Предполагается, что отправляемые данные сервером будут в текстовом структурированном формате (JSON) и кодировке UTF-8, если же результатом от сервера должен быть XML документ, то в vgIdDataStore.reader нужно использовать другой объект ExtJS для чтения данных. Подробнее об этом можно узнать из документации на сайте разработчика библиотеки http://extjs.com/deploy/dev/docs/ Несомненно, встраивание своих функций в код интерфейса АСР с помощью линкования файлов является наиболее разумным и лаконичным решением с точки зрения трафика между сервером и клиентом, но возможным вариантом может быть и полное описание функции в самом файле шаблона, что позволяет усложнить и сделать более гибкой логику формирования кода страницы за счет динамических блоков. В начало страницы |
|