Руководтсво администратора/разработчика

Документация

Функции

Расширенные

Функции взаимодействия разных компонентов системы


output

Формирование значений

Функция output производит извлечение свойств переменной конфигурации и формирует значение на основании полученных в контексте данных.

Формат

output element congiguration data type

element - название элемента конфигурации
congiguration - объект конфигурации
data - контекст (объект данных, на основании которого будет формироваться значение
type - формат ответа.

  • по-умолчанию (пустое значение) - тестовый форма вывода.
  • html - выводит преобразованный в формат html. Необходимо в случае наличия в ответе HTML-разметки, в противном случае данный HTML-ответ будет экранирован для обеспечения требований безопасности.

Пример:

{{$f1 := output "field" . $data ""}}

В данном примере в переменную $f1 передается значение, которое было описано в элементе field конфигурации. В качестве данных для его получения был использован текущий контекст (.). Данные выводятся в текстовом формате.


parseparam

Обработка вложенных операций

При разработке когфигурации Блока возникают ситуации, когда необходимо значение одного параметра вложить в другой. Это делается инструацией %параметр%

Пример конфигуации:

{
    "id":{"type":"text","source":"123-123-123"},
    "url":{"type":"text","source":"/path=%id%"}
}

В этом примере видно, что в переменную id было положено значение "123-123-123" и оно будет передано в переменную url в том месте, где указана конструкция %id%.

Для обработке переменной url в Шаблоне необходимо "распарсить" данную переменную, т.е. произвести вычисление переменной id и вставить ее в необходимое место в переменной url, исходя из текущего контекста:

{{ parseparam "переменная" "конфигурация" "данные" "тип_вывода"}}
  • переменная - название переменной из конфигуации, которая содержит внутри себя конструкцию %...% будет "распарсена"
  • конфигурация - объект конфигурации текущего блока
  • данные - объект данных, которые будут использоваться при преобразовании
  • тип вывода - данные могут быть получены в текстовом формате или в формате HTML

Пример

{{$parsedurl := parseparam "url" $.Configuration $data ""}}

Примечание: Данный пример упрощен для понятия, на самом деле можно просто вручную внести данные 123-123-123 :) Но как правило, переменная id может принимать значения данных полей из контекста.


dict

Мультиплексирование параметров

Фукнцкия dict производит мультитпликсирование передаваемых параметров при передаче в шаблонах нескольких параметров, а также может создания структур данных внутри Шаблона.

dict  key1 value1 key2 value2 ....

key1 - ключ
value1 - значение
....  - количество пар может быть неограниченным

Пример мультиплексирования шаблоне:

{{template "sub-template" dict "Data" . "Values" $.Values}}

где, "sub-template" - название шаблона, в который передаются значения
"Data" - название параметра, в который будет передано значение_1
. - переданные значения (в данном примере - текущий контекст)
"Values" - название параметра, в который будут передано значение_2
$.Values - передаваемые значения (в данном примере структура Values из корневого контекста ($)

Пример создания переменной структуры:

{{ $new_structure := dict "param" "value" }}


set

Задать значение в структуре

Функция set создает новое/меняет значение в имеющейся структуре. Возвращает текущую структуру, в которую добавлялось поле.

Формат:

set struct key value

struct - структура
key - ключ в структуре (строка)
value - значение (любые значения)

Пример:

{ $_ := set $.Value "fisher" "Грека"}

В данном примере в структуру Value из полученного контекста мы добавили поле "fisher" и положили значение "Грека".

Примечание: Чтобы не отображать возвращаемое функцией значение мы присваеваем его нулевой переменной "$_"


get

Получение значения структуры

Функция get получает значение в имеющейся структуре. Возвращает текущуее значение поля.

Формат:

get struct key

struct - структура
key - ключ в структуре (строка)

Пример:

{ $res := get $.Value "fisher"}

>> Грека

В данном примере из структуры Value будет получено значение поля "fisher" - "Грека".


confparse

Обработка @-функции внутри конфигурации

Функция confparse производит обработку @-функций внутри конфигурации.

Формат:

confparse ConfigurationRaw Request Data


ConfigurationRaw - системная переменная, содержащаю "сырую" конфигурацию (без обработки @-функций.

Request - системная переменная запроса

Data - переменная, которая содержит контекст данных, которые будут использованы при обработки @-функций конфигурации.

Пример:

{{$ConfigurationNew := confparse $.ConfigurationRaw $.Request $Data}}

 

Описание:

Конфигурация, доступная в переменной $.Configuration в HTML-шаблоне и имеющая @-функции, обрабатывается при генерации формы. При обработки выполняются все @-функции с использованием текущего контекста. В момент генерации формы этот контект - объект страницы формы.

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

В этом случае, значение переменной (например uid-объекта "uid":{"type":"text","source":"2019-12-20T10-33-43Z-ca7908"},) в конфигурации будет содежать uid-объекта формы, а нам необходимо получать uid-перебираемых объектов. (конечно, всегда можно напрямую обратиться к свойству uid объекта внутри HTML-шаблона, но предположим, что мы хотим это значение задавать через переменную конфигурации)

Для этих целей существует текстовая переменная контекста $.ConfigurationRaw, которая содержит конфигурацию, без обработанных @-фукнций.

Для ее обработки необходимо добавить ее в цикл получения объектов и выполнять обработку @-функций внутри конфигурации при каждой итерации с новым объектом.


sendmail

Отправка email-письма со страницы

Функция sendmail позволяет отправить email при вызове страницы. Возвращает значение true (сообщение отправлено) или сообщение ошибки отправки (описание ошибки).

Формат:

sendmail server port user pass from to subject message turbo
  • server - почтовый сервера (например: smtp.gmail.com)
  • port - номер smtp-порта почтового сервера (строка)
  • user - пользователь почтового сервера
  • pass - пароль пользователя на почтовом сервере
  • from - от кого отправляется  (email-адрес)
    Можно указать только email-адрес (без указания имени отправителя, например petrov@mail.ru), а можно указать email-адрес с именем пользователя (формат: Петров Илья [petrov@mail.ru] или Петров Илья <petrov@mail.ru>)
  • to - кому (можно несколько через запятую - , )
    Можно указать только email-адрес (без указания имени получателя, например petrov@mail.ru), а можно указать email-адрес с именем получателя (формат: Петров Илья [petrov@mail.ru] (или Петров Илья <petrov@mail.ru>) или несколько через запятую: Петров Илья [petrov@mail.ru], Иванов Илья [ivanov@mail.ru] (или Петров Илья <petrov@mail.ru>)
  • subject - заголовок письма
  • message - сообщение может быть как в текстовом формате, в формате html, а также ссылкой на html-версию письма (передается только адрес), которое будет в момент отправки загружено и отправлено получателю.
    Обратите внимание, что для корректного отображения письма получателем необходимо, чтобы все ссылки имели полные адреса (например: http://yoursite.ru/img/foto.jpg)
  • turbo - режим турбо-отправки (значения: true/false или on/off или пустое значение - выключено). Турбо-режим не дожидается завершения отправки, а сразу продолжает генерацию страницы. Удобен, если вы уверены в том, что письмо дойдёт или статус доставки не должен обрабатываться на странице, которая вызвала отправку письма (всегда вернёт true).

Пример

{{$mes := "Текст отправляемого сообщения"}}
{{$ressend := sendmail "smtp.gmail.com" "587" "sendaccount@gmail.com" "12345" "Петров [fromuser@gmail.com]" "Иванов [touser@gmail.com], Сидоров [touser2@gmail.com]" "Новое в итальянской кухне" $mes "" }}
{{if eq $ressend "true"}}
     Отправлено
{{end}}
>> Отправлено

Примеры различных вариатов отправки

{{$mes := "Текст отправляемого сообщения"}} - отправляем текстовое сообщение
{{$mes := "<h1>Текст</h2> отправляемого сообщения"}} - отправляем сообщение в html-формате
{{$mes := "http://your_site.com/templates/template_mail.html"}} - отправляем ссылку на получение подготовленной версии письма в html-формате


dogparse

Обработка @-функций в шаблонизаторе

Функция dogparse позволяет обрабатывать системные @-функции внутри html-кода страницы применительно к строковым значениям.

Формат:

dogparse string request data

string - строка, в которой содержатся @-фукнции
request - системное значение состояния запроса ($.Request)
data - данные, которые могут быть использованы при обработки @-функции (как правило полученные из запроса)

Пример

{{ $str := "Идентификатор пользователя = @User(UID)" }}
{{ dogparse $str $.Request $.Data.default.Data }}
>> Идентификатор пользователя = cf8f33e4-1fed-4521-9515-23d5b77e0345