Написание пакета для PFSense: Элементы управления09.08.2014 23:33
В предыдущей статье был рассмотрен процесс создания простого GUI пакета для pfSense. Пакет содержал одно единственное поле с элементом управления типа checkbox, описанное в разделе fields XML файла пакета.
Перед продолжением необходимо дать некоторые пояснения по структуре раздела fields. В этом разделе содержится описание полей формы текущей страницы GUI. Каждое поле описывается в узле field и содержит элементы:
fielddescr — название поля, выводится в левой части формы перед элементом управления;
fieldname — имя поля, под которым оно будет доступно в системе при обработке введенных данных;
description — комментарий, описывающий данное поле, выводится под элементом управления;
type — тип элемента управления, используемого в данном поле.
На рисунке ниже показано соответствие элементов XML структуры пакета и элементов графического интерфейса.
Элементы управленияРассмотрим простые элементы управления графического интерфейса пакетов pfSense: сheckbox
input
password
textarea
select
interfaces_selection
Элемент CHECKBOXПредставляет собой обычный «флажок», позволяющий пользователю возможность сделать выбор да/нет.
EnableenableCheck this for enable package.checkbox
Элемент INPUTПредставляет собой простое текстовое поле для ввода однострочной текстовой информации. Параметр size позволяет задать ширину окна этого элемента.
LoginpkgloginEnter package login.input30
Элемент PASSWORDЯвляется разновидностью элемента input и служит для ввода пароля в WEB форме пакета. Но введенные данные здесь отображаются в виде звёздочек.
PasswordpkgpassEnter package password.password30
Элемент TEXTAREAПредставляет собой многострочное текстовое поле. Кроме стандартных опций XML стуктуры поля содержит в описании параметры cols и rows, задающие размеры элемента в колоноках и строках соответственно. Имеется также параметр encoding, указывающий в какой кодировке сохранять введенные пользователем данные. Обычно это кодировка Base64.
Commentspkgcomments
Enter you coments here.
textarea603base64
Элемент SELECTПредставляет собой выпадающий список значений в виде combo box, задаваемых в секции options. Модификатор multiple превращает обычный combo box в элемент list box, позволяющий выбирать несколько значений одновременно (нажатием Control + Лев. клик). Параметр default_value задает значение по умолчанию из списка в секции options.
AgepkgageChoose your age.selectadl
Элемент INTERFACES_SELECTIONЯвляется специальной разновидностью элемента select. В этот список выводятся все основные сетевые интерфейсы pfSense. Также как и в элементе select здесь доступны дополнительные опции multiple и default_value.
Interfacepkginterface
Select interface (s) for using in the package. Use 'Ctrl' + L_click for multiple selection.
interfaces_selectionlan
Собрав приведенные выше описания элементов управления в один XML файл получим следующую форму Web интерфейса:
Для того, чтобы эта форма выполняла какие-либо действия, необходимо задать обработчики событий и написать соответствующий PHP код. Об этом речь пойдет в следующей статье.
Исходный код XML файла к статье.
mypkgMy First PackageTest0.1/usr/local/pkg/mypkg.incMy Package/pkg_edit.php? xml=mypkg.xmlEnableenableCheck this for enable package.checkboxInterfacepkginterfaceSelect interface (s) for using in the package. Use 'Ctrl' + L_click for multiple selection.interfaces_selectionlanLoginpkgloginEnter package login.input30PasswordpkgpassEnter package password.password30Commentspkgcomments
Enter you coments here.
textarea603base64AgepkgageChoose your age.selectadl
PS: Прошу прощения у коллег за такое дробление материала, но не хочется делать длинные статьи.