Описание форм

Материал из ISPWiki
Перейти к: навигация, поиск

Введение

Мы разделяем все запросы, приходящие в панель при работе с формами, на следующие типы:

  • get - это запрос на открытие формы. Запрос является get, если не содержит параметра sok=ok.
    • setvalues - особая разновидность get-запроса, используется для автозаполнения полей форм. Запрос является setvalues, если не содержит sok=ok и содержит параметр sv_field, указывающий имя изменившегося поля (подробнее смотри поля ввода).
  • set - запрос, приходящий когда пользователь нажимает на форме кнопку ok. Запрос является set, если содержит параметр sok=ok
    • new - запрос на создание. Это set-запрос без параметра или с пустым параметром elid
    • edit - запрос на изменение. Это set-запрос с непустым параметром elid

Следующий атрибут можно использовать в любом тэге внутри метаданных формы:

атрибут remove_if
Любой тэг в описании метаданных формы может иметь атрибут remove_if. Если значение этого атрибута равно new - тэг будет вырезан при get запросе с пустым параметром elid. Если значение атрибута равно edit - тэг будет вырезан при get запросе с непустым параметром elid. Любые другие значения этого атрибута никак не обрабатываются.

Начнем с примера. Следующая XML описывает форму "Настройки панели". Эта статья посвящена описанию тэгов и атрибутов этого XML-кода.

<metadata name="usrparam" type="form">
  <form>
    <field name="name">
      <input type="text" name="name" readonly="yes"/>
    </field>
    <field name="theme">
      <select name="theme"/>
    </field>
    <field name="lang">
      <select name="lang"/>
    </field>
    <field name="atype">
      <select name="atype">
        <if value="atany" hide="addr"/>
      </select>
    </field>
    <field name="addr">
      <input type="text" name="addr" zoom="5" check="iprange"/>
    </field>
    <field name="startpage">
      <select name="startpage"/>
    </field>
    <field name="rows">
      <input type="text" name="rows" maxlength="4" check="int" checkargs="5,9999"/>
    </field>
    <field name="recordlimit">
      <input type="text" name="recordlimit" maxlength="9" check="int" checkargs="1,999999999"/>
    </field>
    <field name="buttonview">
      <select name="buttonview"/>
    </field>
  </form>
</metadata>

Описание внешнего вида

Форма

Все отображаемые элементы формы должны быть описаны внутри тэга form.

атрибут autocomplete
Если имеет значение "off", автозаполнение полей средствами браузера будет отключено.
атрибут cancelrefresh
Если атрибут задан, то список, из которого была вызвана форма, будет обновлён и при нажатии кнопки Отмена.
атрибут maxwidth
Если задан, форма по умолчанию будет открываться максимальной ширины.
атрибут nocancel
Если задан, не будет показываться кнопка Отмена.
атрибут nosubmit
Если задан, не будет показываться кнопка OK.
атрибут target
Если равен '_blank', то ответ форма будет отправлена в новое окно.
атрибут action
Если задан, то форма будет отправлена по адресу из атрибута
атрибут wizard
Если задан, форма будет иметь вид мастера. При этом, значение "first" будет отображать первую страницу, "middle" одну из срединных, "last" последнюю.
атрибут helpurl
Если задан, то при нажатии на кнопку вызова справки будет открыта страница, указанная в значении данного атрибута. Если в URL присутствует макрос __LANG__, он будет заменен на аббревиатуру языка интерфейса пользователя. Если не задан, будет вызвана функция текущей панели help, которой в параметре topic будет передано имя формы. Эта функция должна вернуть URL с документацией по этой форме.
атрибут clear
управляет поведением кнопки "Очистить форму". Если задан, то форма очищается полностью: все поля ввода будут иметь пустое значение, во всех select будет выбрано первое значение, все флажки будут сняты. В противном случае срабатывает встроенный метод формы .reset(), который сбросит значения полей формы в состояние, которое было на момент её загрузки. Данный атрибут удобен при описании форм для фильтров.
атрибут progress
Если имеет непустое значение (рекомендуем использовать значение "yes"), то после отправки формы будут отображаться этапы выполнения запроса. Подробнее смотри progress.get. Если значение атрибута равно "notime", этапы выполнения будут отображаться, но без вывода ожидаемого времени исполнения. Это может быть полезно, если количество шагов заранее неизвестно или время выполнения отдельных шагов сильно отличается. Значение атрибута "wait" говорит о том, что progress может ожидать перезапуска панели (в остальных случаях progress исчезает, как только завершится запрос)
атрибут title
задает имя тега, содержимое которого будет использоваться как имя редактируемого элемента. Если не задан, используется значение elid.
элемент page
см. Вкладки (элемент page)
элемент field
см. Описание полей формы (элемент field)

Вкладки (элемент page)

Если ваша форма содержит большое количество полей, желательно группировать поля по смыслу и располагать их на отдельных вкладках форм.

атрибут name
Имя вкладки. Необходимо для связки с языками.
атрибут collapsed
Состояние вкладки. Если равно yes, то вкладка будет свёрнута.
элементы field
Описывают поля, которые есть на данной вкладке. Подробнее см. Описание полей формы (элемент field)

Описание полей формы (элемент field)

Поля формы могут располагаться или на вкладках, или независимо внутри тэга form. Смешивать два этих варианта нельзя. Отображаемое имя поля берется из одноименного сообщения на языке интерфейса. Кроме имени, у поля формы может быть расширенное описание, появляющееся при наведении указателя на имя поля. Оно берется из сообщения с именем hint_<имя поля>.

атрибут name
Имя поля.
атрибут fullwidth
Развернуть горизонтально поле на всю ширину страницы. При этом заголовок поля будет отображен вверху отдельной строкой.
атрибут formwidth
Развернуть горизонтально поле на всю ширину формы. При этом заголовок поля будет отображен вверху отдельной строкой.
атрибут noname
Не показывать заголовок поля.
атрибут fixed
Позиция поля будет зафиксирована в исходном положении, независимо от скроллинга.
элемент input
Соответствует input из HTML
элемент select
Создать выпадающий список
элемент textarea
Многострочное поле ввода
элемент slider
Выбор числа из определенного диапазона
элемент list
Отображения списка с картинками и кнопками на форме
элемент tree
Выбор значения из списка в виде дерева
элемент htmldata
Отображение HTML-данных
элемент textdata
Вывод текстовой информации
элемент frame
Отображение фрейма

Поля ввода

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

атрибут name
Имя поля. Значение поля будет прочитано из тега имя которого соответствует значению данного атрибута. А в момент отправки формы, значение поля будет передано в параметре с таким именем.
атрибут environ
Значение "no", указывает, что значение этого поля не следует передавать во внешние обработчики, используя переменные окружения. Полезен для полей, значение которых может превышать десятки килобайт
атрибут readonly
Если задано, поле будет доступно только для чтения.
атрибут level
См. Введение.
атрибут convert
Задает алгоритм для преобразования значения поля. Значение этого поля будет преобразовано с использованием данного алгоритма при редактировании записи. При ее просмотре будет выполнено обратное преобразование. На данный момент реализованы:
  • punycode при редактировании значение из UTF-8 преобразуется в punycode формат. Предполагается, что этот алгоритм будет использоваться для преобразования доменных имен и адресов электронной почты. В последнем случае, преобразуется только домен, имя почтового ящика остается без изменений.
  • money значение разделяется пробелами на группы по три цифры
  • bytes/abytes значение преобразуется в удобочитаемое представление размера и обратно. Например, значение 2048 будет отображено как "2 Kb". Панель будет преобразовывать числа большие 1000 добавляя соответствующий суффикс вплоть до Tb. Первый производит округление до двух знаков после запятой, второй не преобразует значение, если это приведет к потере точности.

Convert выполняется после выполнения функции-валидатора

атрибут required
Если равно "yes", значение поля не может быть пустым.
атрибут save
Если равно "yes", панель будет запоминать последнее значение, введенное в этом поле при создании нового элемента (когда elid пуст) и предлагать его как значение по умолчанию. Если равно "always", панель будет запоминать последнее значение, даже если elid имеет не пустой.
атрибут setvalues
Если равно "yes", при каждом изменении этого поля на сервер будет отправляться запрос со значениями всех полей и параметром sv_field, в который будет записано имя изменившегося поля. В качестве ответа должен быть получен список значений для полей и содержимое списков (slist), как при открытии формы. Все переданные значения будут подставлены в форму.

Если равно "final", то при изменение пресетом поля с другим пресетом, на этом поле не будет срабатывать setvalues.

Если равно цифре, то setvalues будет срабатывать с периодичностью в эту цифру секунд.

Если равно blocking, то форма будет заблокирована для изменений, пока не придет ответ от панели.

По setvalues можно изменять:

  • атрибут readonly, для этого надо отдать атрибут readonly=yes в узле значения поля, для присвоения атрибута, либо readonly=no, для снятия атрибута
  • кнопки (<button>), для этого в doc нужно отдать новые кнопки (/doc/buttons/button)
  • атрибут mask, для этого надо отдать атрибут mask="NEW_MASK" в узле значения поля
  • атрибут min/max для элемента slider
  • префикс поля, для этого надо отдать узел <NAME_INPUT_prefix> с новым значением префикса
  • значения списка на форме
  • список значений селекта, мультиселекта
  • новые сообщения для запроса
атрибут secured
Если равно "yes" и была авторизация по COOKIE и запрос не имел заголовка Referer, эти поля и соответствующие им данные будут удалены из ответа
атрибут focus
Принудительно устанавливает фокус на элементе
атрибут source
Должен содержать запрос к панели управления. Если значение для поля ввода не было установлено функцией явно, оно будет взято из результатов запроса
элемент if
для всех полей кроме slider. Подробнее см. сокрытие полей и вкладок
элемент else
для всех полей кроме slider. Подробнее см. сокрытие полей и вкладок

Элемент input

Input предназначен для создания текстовых полей, флажков и полей выбора файла.

атрибут type
Тип поля. Может иметь значения text, checkbox, password, file, hidden.
атрибут checkpasswd
Содержит имя поля, с которым сравнивается значение текущего. Если значения не совпадают — будет выведено сообщение о несовпадающих паролях.
атрибут genpasswd
Будет отображена кнопка генерации пароля, для поля типа password, без подтверждения.
атрибут safevalue
В качестве значения должно быть указано имя параметра. Если этот параметр был передан, он должен содержать значение, которое не требует проверки или проверяется программистом (например: зашифрованное значение пароля). В этом случае, для основного параметра (имя которого передано в атрибуте @name) никаких проверок не выполняется
атрибут date
Если задано, к полю будет прикреплена кнопка вызова календаря. Только для type="text". Если равно month, то календарь только для выбора года и месяца.
атрибут oncesyncfield 
используется совместно с @date, при выборе даты будет задано то же значение в указанное в атрибуте поле, если оно пусто
атрибут maxlength
Максимальная длина поля.
атрибут unlimit
Добавить к полю кнопку установки бесконечного значения. Значение бесконечности передаётся в качестве значения этому атрибуту.
атрибут width
Ширина поля.
атрибут zoom
Добавить функционал разворачивания текстового поля вертикально до заданного количества строк. Например: zoom="5". При этом значение поля разбивается по пробелам и полученные части размещаются в отдельных строках поля. В этом случае валидатор применяется для каждого значения отдельно.
атрибут duplicate
Применяется совместно с атрибутом zoom. Если равно "yes", валидатор пропускает повторяющиеся значения (по умолчанию повторяющиеся значения запрещены).
атрибут check
Имя функции-валидатора, для проверки значения данного поля. Для проверки/корректировки значения будет вызвана функция check.<имя>, которой будут переданы следующие параметры: value - текущее значение поля, name - имя поля, args - значение атрибута checkargs, funcname - имя вызванной функции. Функция должна вернуть новое значение в тэге <value/> или тэг error - с описанием ошибки.
атрибут checkargs
Дополнительные параметры для функции, указанной в атрибуте check.
атрибут prefix
Если задано, то у поля будет отображаться префикс. Значение префикса задается нодой <"имя поля"_prefix>
атрибут plainhint
Отображает под элементом текстовое описание, для определенных значений элемента. Описание берется из сообщений локализации с именем hint_CONTROLNAME__VALUE, где VALUE - значение элемента для которого должно отображаться это текстовое описание. (Только для типа checkbox)
атрибут img
Только для типа checkbox. Отобразить картинку, указанную в атрибуте, перед флажком.
атрибут accept
Только для типа file. Нативный html атрибут. http://htmlbook.ru/html/input/accept
атрибут maxsize
Только для типа file. Делать проверку на клиенте, на максимальный размер загружаемого файла. Значение атрибута должно быть задано в байтах. Сообщение локализации для отображения ошибки с максимально допустимым размером файла берется из maxsize_FIELDNAME.
атрибут mask
Только для поля типа text. Можно задать маску ввода, в теме orion используется следующая библиотека https://github.com/RobinHerbots/jquery.inputmask. Так же маску ввода можно менять по setvalues, смотрится атрибут mask.
атрибут mixed
Если значение "hide", поле будет скрыто при групповом редактировании, если значения в этом поле различаются для различных записей

Выпадающий список (элемент select)

Select предназначен для создания выпадающих списков и переключателей

атрибут type
Тип select'а, используется для вставки переключателей в форму - значение type="radio", мультиселекта - значение type="multiple", переключателя с картинками - значение type="radioimg", список с автодополнением - значение type="autocomplete". Если не указан, будет создан выпадающий список.
атрибут inline
Показывать переключатели горизонтально, только для type="radio". Значение атрибута указывает максимальное количество значений select, которое может быть отображено. Если список содержит большее количество значений, он будет преобразован в обычный выпадающий список.
атрибут depend
Если задано, показываемый выбор этого списка будет зависеть от текущего значения другого списка, имя которого передано в качестве значения этому атрибуту. depend от выпадающих списков типа multiple пока не реализован.
атрибут sort
Задает тип сортировки. Возможные значения: alpha (алфавитная сортировка; по умолчанию), calpha (регистронезависимая алфавитная сортировка), digit (сортировка в порядке числового возрастания), version (сортировка версий программного обеспечения) и ip (сортировка IP-адресов).
атрибут sorted
Отсортировать по описанию значений. Возможные значения: asc (в прямом порядке), desc (в обратном порядке). Сортировка происходит по отображаемым значениям.
атрибут required
Для выпадающего списка типа multiple требует выбора хотя бы одного значения. Для остальных типов - никак не влияет на обработку
атрибут maxselect
Только для списка типа multilple, задает максимальное количество выбранных элементов.
атрибут source
В отличии от других полей ввода, для select из указанного источника берется не только значение, но и список возможных значений. В качестве источника может выступать другая форма, возвращающая slist или список. В случае, если это список, список значений будет построен из колонок с именем key и keyname (если он задан).
атрибут plainhint
Отображает под элементом текстовое описание, для определенных значений элемента. Описание берется из сообщений локализации с именем hint_CONTROLNAME__VALUE, где VALUE - значение элемента для которого должно отображаться это текстовое описание.

Значения

Список значений будет взят из тэга <slist name="имя select"/>, который должен быть сформирован панелью при обработке get запроса. Например:

<slist name="lang">
  <msg>ru</msg>
  <val key="en">English</val>
</slist>

Список lang будет содержать 2 значения: ru и en. Отображаемая строка для тэгов <msg> (в данном случае значение: ru) будет взята из соответсвующего сообщения, а для en будет отображено English. Для совместимости с сообщениями для значений столбцов списков, вначале проверяется сообщение с именем <имя select>_<значение тэга msg>, если таковое не найдено, берется сообщение с именем соответствующим значение тэга msg (исключительно для совместимости, рекомендуем использовать префиксы вариант).

Для тэгов внутри <slist> (<val> или <msg>) вы можете использовать следующие атрибуты:

атрибут key
Позволяет указать значение, которое будет передано панели при выборе этого пункта, в противном случае будет использовано содержимое тэга
атрибут depend
Задает значение из базового списка. Данный пункт будет доступен только если в базовом списке выбрано соответствующее значение. Если depend не задан, пункт будет доступен вне зависимости от того, что выбрано в базовом списке
атрибут priority
Значение - целое число, задает приоритет для сортировки. Значения будут отсортированы в порядке возрастания приоритета, а уже потом в том порядке, который установлен атрибутами @sort и @sorted соответствующего поля ввода
атрибут img
Задает имя картинки из темы, которую нужно отображать напротив значения. Только для обычного select и type="radioimg"
атрибут image
Задает путь до картинки вне темы, которую нужно отображать напротив значения. Только для обычного select и type="radioimg"
атрибут width
Задает ширину отображаемой картинки. Используется только с атрибутом image.
атрибут height
Задает высоту отображаемой картинки. Используется только с атрибутом image.

Связанные списки

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

<metadata name="some_form" type="form">
  <form>
    <field name="company">
      <select name="company"/>
    </field>
    <field name="product">
      <select name="product" depend="company"/>
    </field>
  </form>
</metadata>
 
<slist name="company">
  <val>Canon</val>
  <val>Nikon</val>
</slist>
 
<slist name="product">
  <val depend="Canon">EOS 1100D</val>
  <val depend="Canon">EOS 5D Mark III</val>
  <val depend="Nikon">D800</val>
  <val depend="Nikon">D4</val>
</slist>

В этом случае при выборе company=Canon будут доступны для выбора продукты: EOS 1100D и EOS 5D Mark III. А при выборе Nikon: D800 и D4.

Список с автодополнением

Список с автодополнением работает через механизм пресетов. При клике по полю отправляется пресет-запрос для получения значений списка по умолчанию. При наборе пользователем текста отправляется пресет-запрос на получение списка значений найденных по введенным пользователем данных. При отправке формы всегда прилетает только key от списка.

Многострочное поле ввода (элемент textarea)

атрибут height
Высота поля.
атрибут rows
Количество строк в поле ввода.
атрибут wrap
Если "off", строки не будут переноситься.
атрибут quote
Добавляет кнопку "цитировать".
атрибут editor
Добавляет подсветку синтаксиса для поля.
атрибут codelang
Подсветку синтаксиса какого языка отображать.
атрибут texteditor
Добавляет WYSIWYG - редактор для поля.
атрибут bcolor
Задает цвет бэкграунда, например: red, #CCCCCC

При редактировании файлов стоит иметь ввиду, что по умолчанию при отправке формы все переносы строк кодируются в \r\n http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4

Плагин для WYSIWYG-редактора

Для WYSIWYG-редактора tinymce есть плагин для вставки макросов. Называется "isp_bill_macro".


Список макросов, берется из элемента olist, по имени исходной textarea.

XML:

<olist name="content">
  <val key="<xsl:value-of select='/doc/one'/>">one</val>
  <val key="<xsl:value-of select='/doc/two'/>">two</val>
  <val key="<xsl:value-of select='/doc/three'/>">three</val>
  <val key="<xsl:value-of select='/doc/four'/>">four</val>
</olist>

Элемент Slider

Элемент для выбора числа из определенного диапазона.

атрибут min
Задает нижнее ограничение значения поля. Это значение может быть изменено, через параметр min тэга, содержащего значение данного поля.
атрибут max
Задает верхнее ограничение значения поля. Это значение может быть изменено, через параметр max тэга, содержащего значение данного поля.
атрибут step
Задает шаг слайдера.

Значения min и max в дальнейшем могут быть заданы непосредственно в тэге, содержащем значение поля. В следующем примере будет отображен slider с минимальным значением 10 и максимальным 20 (хотя в метаданных заданы другие ограничения):

<metadata name="test" type="form">
  <form>
    <field name="field">
      <slider name="sl_field" min="0" max="100"/>
    </field>
  </form>
</metadata>
 
<sl_field min="10" max="20">15</sl_field>

Элемент period

Элемент для выбора перида времени - двух дат в формате YYYY-MM-DD.

атрибут default
Значение по умолчанию для периода. Может принимать значения: today, currentweek, currentmonth, currentyear, lastday, lastweek, lastmonth, lastyear, nodate.

Данный элемент будет преобразован в select и два input. Введенные значения будут доступны в параметрах internal_<@name>start и internal_<@name>end или через IParam, в этом случае префикс internal_ добавлять не надо.

Элемент list

Элемент отображения списка на форме

<metadata name="sel.form.basket" type="form" mgr="testmgr" decorated="yes">
  <form>
    <field name="list">
      <list name="list" key="id">
        <col name="image" type="img" width="48px" height="48px"/>
        <col name="desc" type="data"/>
        <col name="frommsg" type="msg"/>
        <col name="price" type="data" align="right"/>
        <col name="checkbox" type="control" align="right"/>
        <col name="action" type="button" align="right"/>
      </list>
    </field>
    <buttons/>
  </form>
</metadata>
атрибут key
идентификатор строки, будет отправлен в виде параметра при нажатии кнопки из этой строки
атрибут type
тип отображения (необязательный атрибут)

типы отображения:

  • block - отобразить в виде блоков
  • table - отобразить в виде таблицы, заголовки таблицы будут браться из локализованных сообщений по имени колонки с префиксом list_
элемент col
описывает колонку таблицы списка
атрибут type(элемента col)
задает тип данных колонки

типы данных колонки:

  • data: текст или html
  • msg: текст из локальных сообщений
  • img: картинка
  • button: кнопка
  • control: контрол (пока только checkbox)
атрибут align(элемента col)
задает горизонтальное выравнивание текста, может быть right, center, left
атрибут width(элемента col)
задает ширину колонки (значение указывается в px, т.е. "30px"), для типа img это еще и ширина картинки
атрибут height(элемента col)
задает высоту картинки, только для типа img

Значения

Содержимое списка будет взято из тэга <list name="имя list"/>

<list name="list">
  <elem>
    <id>2</id>
    <image>/manimg/common/img/mb-sysstat.png</image>
    <desc>ЖК Монитор 17''</desc>
    <price>1238.00 RUB</price>
    <action>
      <button name="edit" type="setvalues"/>
      <button name="delete" type="setvalues"/>
    </action>
  </elem>
</list>

Элемент tree

Элемент отображения дерево выбора

<metadata name="file.folder" type="form">
  <form>
    <field name="dirlist" fullwidth="yes">
      <tree name="dirlist" rows="20" multiple="yes"/>
    </field>
  </form>
</metadata>
атрибут rows
Задает высоту дерева, например 20
атрибут multiple
Задает возможность выбора более одного элемента дерева

Значения

Содержимое списка будет взято из тэга <tlist name="имя tree"/>

<tlist name="dirlist">
  <val key="2f" img="p-file-0">
    /
    <tlist>
      <val key="2f62696e" img="p-file-0">bin</val>
      <val key="2f626f6f74" img="p-file-0">boot</val>
      <val key="2f726f6f74" img="p-file-0">
        root
        <tlist>
          <val key="2f726f6f742f2e617567656173" img="p-file-0">.augeas</val>
          <val key="2f726f6f742f2e6361636865" img="p-file-0" collapsed="yes">.cache</val>
          <val key="2f726f6f742f2e636f6e666967" img="p-file-0" collapsed="yes">.config</val>
          <val key="2f726f6f742f2e6c6f63616c" img="p-file-0" collapsed="yes">.local</val>
        </tlist>
      </val>
      <val key="2f72756e" img="p-file-0" collapsed="yes">run</val>
      <val key="2f7362696e" img="p-file-0">sbin</val>
      <val key="2f73656c696e7578" img="p-file-0">selinux</val>
    </tlist>
  </val>
</tlist>

Описание атрибутов элемента val:

атрибут img
задает картинку перед название элемента
атрибут key
задает значение элемента
атрибут collapsed
говорит о том, что элемент имеет дочерние элементы; подгрузка дочерних элементов будет происходить по средствам setvalues, для получения дочерних элементов будет послан запрос вида: func=FUNC&elid=ELID&plid=PLID&FIELD_NAME=FIELD_VALUE&sv_field=FIELD_NAME&sv_tree=yes, где FUNC - имя ф-ции формы, ELID - elid формы, PLID - plid формы, FIELD_NAME - имя дерева, FIELD_VALUE - значение выбранного элемента

Информативные поля

Следующие типы полей служат для отображения информации, но не дают возможности её редактирования.

Элемент htmldata

Поле служит для отображения HTML-данных. HTML будет передан браузеру без всяких преобразований.

атрибут chheight
Позволить изменять высоту htmldata за счёт другого поля ввода (должно находиться ниже), id которого передано в качестве значения атрибута.
атрибут height
Высота поля.

Вывод текстовой информации (элемент textdata)

Поле служит для отображения дополнительного текста в форме.

атрибут type
Обязательное поле определяющее тип источника данных.
атрибут warning
Задает красный цвет текста

Возможные типы:

  • msg содержимое будет взято из локализованного сообщения. Имя сообщения будет взято из атрибута name. (имя field не должно совпадать с именем элемента, из-за особенностей отображения в теме sirius )
  • msgdata содержимое будет взято из локализованного сообщения. Имя сообщения будет прочитано из тэга, имя которого указано в атрибуте name.
  • data содержимое будет взято из тэга, имя которого указано в атрибуте name.

Элемент img

Используется в связке с textdata и htmldata, служит для вывода картинки слева от элемента.


атрибут width
задает ширину картинки
атрибут height
задает высоту картинки
атрибут img
имя картинки из спрайта темы

путь к картинке указывается в значении поля. Если указан атрибут img, то картинка будет браться из спрайта темы.

<field name="textdata_img">
  <img name="image_field" width="48" height="48"/>
  <textdata name="textdata_img" type="data"/>
</field>

Вывод текстовой информации (элемент desc)

Используется только со связкой input, checkbox и slider , служит для вывода дополнительной информации, справа от элемента.

<field name="dummy_name">
  <input type="checkbox" name="checkbox_name"/>
  <desc name="some_name"/>
</field>

Ссылка (элемент link)

Используется для отображения ссылки на форме.

Внимание! Отображаемое имя ссылки будет браться из сообщений локализации по имени элемента. Поэтому для отображения имени поля вам нужно иметь различные названия у поля и элемента, либо использовать атрибут noname поля, чтобы не отображать название вовсе.

атрибут target
нативный атрибут ссылки (http://htmlbook.ru/html/a/target)
атрибут internal
если равно yes, то ссылка откроется как дочерний таб внутри манагера
атрибут newtab
используется совместно с атрибутом internal, ссылка будет открыта в новом табе манагера
<metadata type="form">
  <form>
    <field name="link">
     <link name="link" target="_blank"/>
    </field>
  </from>
</metadata>
<link>http://ru.5.ispdoc.com/</link>

Элемент frame

Используется для отображения фрейма.

атрибут height
задает высоту элемента
<metadata type="form">
  <form>
    <field name="myframe">
     <frame name="myframe" height="50px"/>
    </field>
  </from>
</metadata>
<myframe>http://ru.5.ispdoc.com/</myframe>

Элемент отображения времени и даты datetime

Служит для отображения даты и времени. Будет отображать текущее время в формате YYYY-MM-DD HH:MM:SS.

Datetime.png

XML:

<metadata type="form">
  <form>
    <field name="mydatetime">
     <datetime name="mydatetime" setvalues="30"/>
    </field>
  </from>
</metadata>
<mydatetime>2014-12-15 10:11:16</mydatetime>
атрибут name 
имя элемента
атрибут setvalues 
время вызова setvsalues в секундах

Несколько элементов в одном поле

Есть возможность отображать два элемента в одном поле.

Доступны следующие комбинации:

  • Элемент input (типа text) + Элемент select
  • Элемент input (типа text) + Элемент link
  • Элемент input (типа text) + Элемент input (типа text)
  • Элемент input (типа text) + Элемент input (типа checkbox)
  • Элемент select + Элемент link

Кнопки (секция buttons)

Предназначена для описания кнопок на форме.

По умолчанию выводятся две кнопки OK и Отмена. Но есть возможность убрать любую из них, либо добавить еще 4-ре - сброс формы, назад, вперед и кнопку вызова пресета.

Логика работы следущая, если секции buttons нет, то обрабатывются атрибуты формы @nocancel, @nosubmit и в зависимости от них выводятся или не выводятся кнопки OK и Отмена.

Если секция buttons существует, то выводятся кнопки описанные в ней, атрибуты формы игнорируются.

Элемент button

Элемент описывает кнопку.

атрибут name
имя кнопки, от него зависит надпись на кнопке, берется из локальных сообщений по значению атрибута, с префиксом msg_
атрибут keepform
используется совместно с атрибутом type=blank, если равно yes, то не закрывает форму после отправки
атрибут type
тип кнопки, определяет поведение кнопки
атрибут func
только для типа cancel, после закрытия формы вы будете перенаправлены в модуль из атрибута
атрибут blocking 
только для типа setvalues, при нажатии будет отображаться лоадер, пока не отработает механизм пресетов
атрибут disabled 
кнопка будет неактивной

Возможные типы:

  • ok отправляет форму
  • cancel закрывает форму
  • reset сбрасывает значения формы на дефолтные
  • next кнопка для визардов, добавляет к форме параметр snext=ok
  • back кнопка для визардов, добавляет к форме параметр sback=ok
  • blank отправляет форму в новое окно
  • setvalues вызывает пресет, в значение параметра sv_field отправляется имя кнопки
  • func открывает дочерний список/форму, имя ф-ции указывается в атрибуте func

Пример xml со всеми видами кнопок:

<form ...>
  <buttons>
    <button name="back" type="back"/>
    <button name="ok" type="ok"/>
    <button name="cancel" type="cancel"/>
    <button name="next" type="next"/>
    <button name="reset" type="reset"/>
    <button name="blank" type="blank"/>
    <button name="setvalues" type="setvalues"/>
  </buttons>
</form>

Сокрытие полей и вкладок (тэги if и else)

Web интерфейс CORE позволяет скрывать некоторые элементы форм в зависимости от значений других элементов. Для этого служат два тега: if и else. В теге if необходимо указать значение, на которое будет срабатывать условие. Условие else сработает, если не было найдено ни одного if с соответствующим значением. Условие else можно использовать только в select полей.

Если вам необходимо спрятать несколько полей по одному условию, необходимо написать несколько тэгов if с одинаковым условием и различным значением атрибута hide. Или несколько тэгов else.

Внимание: прятать можно только поля и вкладки описанные после. Если ваше поле находится на второй вкладке, то, в зависимости от его значения, вы можете скрывать поля находящиеся на этой вкладке после вашего. Или, вы можете скрывать вкладки начиная с третьей. Значение сокрытого поля никак не влияет на видимость других полей.

атрибут empty
если значение атрибута равно "yes", if должен срабатывать при пустом значении поля, если "no" - при непустом. Этот атрибут можно использовать только в условиях внутри input полей.
атрибут value
задает значение для if условия. Для checkbox значение этого атрибута может быть только "on" или "off". Этот атрибут нельзя использовать в условиях внутри input полей.
атрибут hide
задает имя поля формы или имя вкладки, которую необходимо спрятать.
атрибут shadow
Если его значение равно "yes", поле формы будет не полностью скрыто, а лишь сделано недоступным для изменения. Описание этого поля будет дополнено сообщением с именем shadow_hint_<имя поля>.

Select в следующем примере будет прятать элемент формы с именем second, если выбрано значение "show first", или прятать элемент с именем "first" в противном случае.

  <select name="list_name">
    <if value="show first" hide="second"/>
    <else hide="first"/>
  </select>

Если вам необходимо спрятать поле при всех возможных значениях select кроме одного - вы можете написать следующее:

  <select name="list_name">
    <if value="show first"/>
    <else hide="first"/>
  </select>

Локализация

Для описания сообщений используемых формой необходимо добавить одноименную секцию messages.

Например следующий XML описывает сообщения для формы просмотра фоновых заданий:

<?xml version="1.0"?>
<mgrdata>
  <lang name="ru">
    <messages name="longtask.edit">
        <msg name="title">Фоновое задание</msg>
        <msg name="hint_name">Имя скрипта или исполняемого файла</msg>
        <msg name="hint_queue">Имя очереди, в которую было помещено задание</msg>
        <msg name="hint_id">Порядковый номер задания в очереди</msg>
        <msg name="hint_pidfile">Путь до PID-файла</msg>
        <msg name="hint_params">Список параметров задания</msg>
        <msg name="name">Имя скрипта</msg>
        <msg name="pidfile">PID-файл</msg>
        <msg name="queue">Имя очереди</msg>
        <msg name="id">Номер в очереди</msg>
        <msg name="depends">Зависимости</msg>
        <msg name="startdate">Время запуска</msg>
        <msg name="enddate">Время завершения</msg>
        <msg name="params">Доп. информация</msg>
    </messages>
  </lang>
</mgrdata>

Эти сообщения используются следующим образом:

  • Для вкладок и полей описание берется из одноименного тэга <msg>.
  • При наведении на имя поля появляется подсказка. Эта подсказка берется из <msg> с именем "hint_<имя поля>"
  • Для текстовых полей ввода можно задать заполнитель (placeholder) - текст, который будет отображаться в поле, имеющем пустое значение. Заполнитель берется из <msg> с именем "placeholder_<имя поля>"
  • Заголовок формы:
    • для new запросов берется из тега <msg> с именем "title_new" или с именем "title", если <msg name="title_new"> не найден.
    • для edit запросов берется из <msg> с именем "title". Кроме того, в конец сообщения будет добавлено содержимое тэга, имя которого указано в атрибуте @title тэга form. Или из тэга <elid>, если атрибут @title для form не задан.

Если какое-то из вышеперечисленных сообщений не задано явно, CORE пытается найти его в секции messages с именем common.

  • для кнопки Ok используется сообщение с именем "msg_ok"
  • для кнопки Cancel используется сообщение с именем "msg_cancel"

Полный список сообщений используемых в формах можно посмотреть в секции messages с именем form. Вы можете переопределить любое из них в сообщениях вашей формы.