NDemia CashMatic KioskBrowser использует специальные URL для
контроля допустимости переходов и для выполнения
автоматических переходов.
Специальные URL настраиваются в системном реестре
Windows.
Используется раздел
HKEY_LOCAL_MACHINE\SOFTWARE\NDemia\CashMatic\URL
При необходимости получить значение специального URL выполняется следующая последовательность действий:
- В указанном разделе реестра проверяется параметр, имя которого равно имени специального URL, тип REG_SZ (например, для специального URL start в указанном разделе реестра может быть задан строковый параметр "start"). Если такой параметр существует и имеет непустое значение, то далее используется его значение (например: http://myserver/start.php).
- Если значение URL-адреса по п.1 не определилось, то рассматривается строковый параметр urlroot. Этот параметр задаёт общий корень (корневой путь) для всех специальных URL (по умолчанию "%ProgramFiles%NDemia\CashMatic\HTML", но может быть и ссылка на интернет-ресурс). К корневому пути добавляется имя специального URL.
- Например, специальный URL start преобразуется в "%ProgramFiles%\NDemia\CashMatic\HTML\start").
- Если полученный по п.1 или п.2 URL-адрес не содержит префикса спецификации протокола (URL-схемы) (примеры префиксов спецификации протокола, или URL-схем: "http:", "CashMatic:", "file:"), то предполагается ссылка на локальный файл.
В этом случае добавляется умолчательное расширение ".html", применяется подстановка значений вставленных в URL-адрес переменных окружения (environment variables, переменная name вставляется как %name%), например, можно в путь вставлять %ProgramFiles%, %APPDATA% и т.п.
Если специальный URL был задан явным параметром (определился по п.1) как локальный файл с относительным путём, то полный путь определяется относительно локального корня HTML (по умолчанию "%ProgramFiles%\NDemia\CashMatic\HTML").
- Пример 1: если параметр start имеет значение "%ProgramFiles%/start", то специальный URL start преобразуется в "C:\Program Files\start.html".
- Пример 2: если параметр start имеет значение "my\start", то специальный URL start преобразуется в "C:\Program Files\NDemia\CashMatic\html\my\start.html".
- Выполняется преобразование URL-адреса, известное как "каноникализация" или "нормализация" (из URL-адреса корректно удаляются элементы "." и "..", выполняется раскодировка специальных знаков, недопустимых для интернет-адресов, и т.п.).
- Пример 1: если параметр start имеет значение "..\my%20start", то специальный URL start преобразуется в "C:\Program Files\NDemia\CashMatic\my start.html".
- Пример 2: если параметр start имеет значение "http://example.com\CashMatic\.\.././start", то специальный URL start преобразуется в "http://example.com/start" (обратные слэши преобразованы в прямые, расширение имени файла не добавлено).
- Пример 3: если параметр start имеет значение "example.com/CashMatic/./..\.\start", то специальный URL start преобразуется в "C:\Program Files\NDemia\CashMatic\html\example.com\start.html" (прямые слэши преобразованы в обратные, умолчательное расширение имени файла добавлено).
Совместимость: Предполагаемая по умолчанию ссылка на локальный файл, подстановка переменных окружения, каноникализация URL поддерживаются в NDemia CashMatic, начиная с версии 2.7.0
Таким образом,
прикладные скрипты и
компоненты расширений могут через ссылки на очень простые по форме специальные URL ссылаться на достаточно сложные конструкции URL-адресов, указывающие как на локальные файлы, так и на интернет-ресурсы.
Приложения могут выполнять вышеописанное преобразование специальных URL через метод
GetSpecialURL объекта
CashMaticHost.
Используя
URL-протокол "CashMatic:", приложения
NDemia CashMatic KioskBrowser могут ссылаться непосредственно на специальные URL по имени, вообще не занимаясь их преобразованием.
Прикладному программисту предоставляется механизм гибкой настройки путей и имён файлов на конкретном терминале без изменений ссылок в HTML и javascript-коде.
Использование системного реестра
Windows для настройки специальных URL позволяет убрать из открытого кода ссылки на реальные имена и пути размещения файлов. Прикладной программист может добавить в реестр имена собственных специальных URL, которые могут быть использованы
прикладными скриптами и
компонентами расширения.
Например, можно в реестре создать параметр
"myfile", настроить его значение на некоторый файл, и ссылаться из
скрипта на этот файл как
"CashMatic:myfile". Реальное полное имя файла доступно для
скрипта через вызов функции
CashMatic.Host.GetSpecialURL("myfile").
Следует обратить внимание, что специальные URL являются в некотором смысле косвенными (ссылаются на настроечные параметры, которые ссылаются на данные), поэтому сами по себе они не являются файловыми путями в общепринятом понимании - они не могут быть относительными, и нельзя задать путь относительно специального URL. Например, адрес
"CashMatic:data\file" зависит от значения настроечного параметра
"data\file", и не зависит от значений
"data" или
"file".