Поля переменных данных

В любом месте абзаца или на отдельной строке секций .text и .htmx можно вставить поле переменных данных. Эти объекты используются для вставки информации, которая может часто обновляться, вычисляться встроенными в документ программами, зависеть от конкретного пользователя или установок конфигурации.
Начало поля - комбинация символов {*
Конец поля - комбинация символов *}
{*описание поля*}
После символов начала поля должен идти символ кода операции:
! - вставка внутренней ссылки;
$ - вставка внешней ссылки;
@ - вставка значения переменной;
= - вставка значения выражения;
? - ввод значения переменной.
При вставке внутренних ссылок (!) далее можно указать либо номер (имя) записи документа, на который должна указывать ссылка, либо полный текст запроса с параметрами. В первом случае будет сформирована ссылка, переход по которой откроет указанный документ. Во втором случае - ссылка, переход по которой вызовет выполнение затребованной функции. Второй способ для начинающих пользователей не актуален, поскольку в этом случае нужно знать коды операций, выполняемых системой, а также назначение параметров, которые должны быть ей переданы. Опытные пользователи, пройдя по разным ссылкам сайта могут эмпирически догадаться, какие коды операций следует использовать при вызове тех или иных функций и какие параметры им нужно передавать.
После указания номера записи или URI можно через пробел указать текст, под которым будет фигурировать ссылка. Если этого не сделать, то в качестве текста будет подставлен сформированный код запроса, что обычно выглядит очень неэстетично.
Ссылки формируются таким образом, что результат перехода будет отображаться в новой вкладке (окне) браузера. Если нужно, чтобы результат был отображен в текущей вкладке (окне), то после символа ! следует указать двоеточие (:).
Примеры написания полей внутренней ссылки:
{*!46 Открыть документ с номером 46 в новой вкладке*}
{*!:46 Открыть документ с номером 46 в текущей вкладке*}
{*!index.php?act=29 Открыть меню пользователя*}
{*!:?act=96 Вывести общую статистику доступа к сайту в текущей вкладке*}
Результат интерпретации полей:
Открыть документ с номером 46 в новой вкладке
Открыть документ с номером 46 в текущей вкладке
Открыть меню пользователя
Вывести общую статистику доступа к сайту в текущей вкладке
Разумеется, оформить ссылку можно и напрямую, не используя поля (A href=...), но для внутренних ссылок это будет неправильно. Дело в том, что для авторизованных пользователей к любому запросу, адресуемому внутрь сайта система автоматически прикрепляет параметр ps, с уникальной для каждого пользователя (да еще и изменяющейся во времени!) информацией. Если напрямую написать A href=..., без пристыковки параметра ps, то после перехода по такой ссылке система будет считать, что к ней обратился неавторизованный пользователь. То есть при формировании документов, содержащих ссылки на другие документы сайта без полей внутренних ссылок обойтись нельзя (если, конечно, не использовать встроенную функцию link() - см. раздел "Встроенные функции").
При вставке внешних ссылок правила оформления полей те же, но запрос на внешний ресурс нужно писать полностью. Ссылка будет сформирована без ps. Здесь уже можно напрямую использовать A href=... вместо поля.
Пример вставки значения переменной:
@a=230
Значение переменной a={*@a*}
Значение переменной a=230
Пример вставки значения выражения:
Результат вычисления sin(534)+cos(99)={*=sin(534)+cos(99)*}
Сейчас у вас {*=now()*} сначала дата, потом время
Ваше имя в системе {*=user()*}
Результат вычисления sin(534)+cos(99)=-0.030871217940234
Сейчас у вас 2017-11-21 03:47:05 сначала дата, потом время
Ваше имя в системе #54.198.108.19
Поля ввода значений переменных, в общем случае, имеют следующую структуру:
?имя:тип:д1:д2
имя - имя переменной
тип - тип переменной
д1 - параметр длины1
д2 - параметр длины2
Имя переменной должно начинаться с латинской буквы, далее - латинские буквы, цифры или знак подчеркивания (_).
Тип переменной:
C строка символов;
L checkbox;
M многострочная переменная;
P поле ввода пароля.
Для типов C и P: д1 - видимая длина поля ввода, д2 - максимальная длина вводимой строки. По умолчанию 10 и 60.
Для типа M: д1 - число строк видимой части поля ввода, д2 - число столбцов видимой части поля ввода. По умолчанию 10 и 60.
Для типа L д1 и д2 игнорируются.
Пример:
Использование полей ввода позволяет превратить документ в бланк со свободным расположением "окошек" для ввода данных. Здесь будет вводиться переменная x={*?x}. Далее, введем переменную y={*?y:8:100*}. А здесь ответим на вопрос: {*?be_or_not:L*} - быть или не быть? И далее, конечно, надо пространно объяснить "почему?", "кто виноват?" и "что делать?". Для этого стоит перейти на следующую строку
{*?text:M:5:100%*}
Использование полей ввода позволяет превратить документ в бланк со свободным расположением "окошек" для ввода данных. Здесь будет вводиться переменная x= . Далее, введем переменную y= . А здесь ответим на вопрос: - быть или не быть? И далее, конечно, надо пространно объяснить "почему?", "кто виноват?" и "что делать?". Для этого стоит перейти на следующую строку
Если Вы авторизованный пользователь, то в самом низу документа можно найти кнопку "Принять". Нажав ее можно сохранить, то, что Вы набрали. И эти значения сохранятся до тех пор, пока Вы их не измените сами. Для других читателей этого документа будут сохраняться другие значения.
Математические функции
Функции обработки массивов
Команды первой позиции
Функции формирования выходного документа
Структура данных, навигация и основные манипуляции с данными