| Версия 5.2
Введение
Установка
Администрирование
Сеть
Объекты
Почта
Сигналы
Доступ
Услуги
Справочник
Кластеры
Программы
Разное
Лицензирование
Веб Почта
Pronto!
PBX
Программы | Данные | CLI/API | Правила | CG/PL | PBXApp | XIMSS | WebApp | WSSP | Помощники
# Веб Приложения Обработка, независимая от Состояния и Обработка в Сессии Виды Интерфейса Виды WAP/WML Интерфейса Виды cHTML (I-Mode) Интерфейса Иерархия Файлов Вида Интерфейса Языки и Текстовые Наборы Данных Вида Интерфейса Обслуживание Обычных Файлов Обслуживание Файлов Веб Приложений (WSSP) Создание и Обслуживание Вида Интерфейса Редактор в Веб Интерфейсе Администратора CLI/API Виртуальные Области в Хранилище Файлов Обработка Запросов Компоненты для Запросов, независимых от Состояния Страницы Ошибок Компоненты для Сессионных Запросов Общие Компоненты Компоненты для Изображения Сообщений Ответ типа Redirect CG/PL Приложения HTTP Ввод HTTP Вывод Данные Сессии Модуль Веб Приложения CommuniGate Pro обеспечивает доступ к различным объектам CommuniGate Pro (пользователи, сообщения, списки рассылки, файлы) через любой Веб (HTTP/HTML/WML/cHTML) браузер. HTTP модуль получает HTTP запросы браузера клиента, приходящие на порт(ы), предназначенные для обслуживания Веб Интерфейса Пользователя и передаёт запросы в модуль Веб Приложения. Модуль Веб Приложения либо выдаёт требуемый файл, либо запускает внутренний код веб приложения и преобразовывает результат в формат разметки HTML, WML или какой-либо другой. Результат возвращается в HTTP модуль, который уже доставляет его браузеру клиента. Если вы хотите создать ваш собственный Веб Интерфейс Пользователя для Сервера CommuniGate Pro, то ознакомьтесь с этим разделом.

## Обработка, независимая от Состояния и Обработка в Сессии

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

Сервер Веб Приложений позволяет пользователям "войти" на сервер, задав имя Пользователя CommuniGate Pro и пароль пользователя. После каждого успешного входа, начинается Сессия. Сессия хранит информацию о запросах и действиях пользователя, так что все HTTP запросы, отправляемый в рамках одной сессии, используют один и тот же набор данных сессии.

Для того, что бы запросы обслуживались в сессии, они должны иметь следующий вид:

  `http://hostname:serverport/Session/sessionID/sessionRequest`

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

Сессии Веб Приложений имеют счётчики времени. Если сессии не было отправлено никакого HTTP запроса в течении определённого интервала времени, то Сессия закрывается. Пользователь, работающий в сессии, может закрыть сессию, отправив запрос на специальную страницу Bye.

## Виды Интерфейса

В Веб Интерфейсе Пользователя Сервера реализована возможность по изменению Вида Интерфейса. Каждый Вид Интерфейса является набором файлов, которые определяют, в каком виде пользователям будет представляться информация. Файлы Вида Интерфейса включают в себя:

- файлы WSSP, используемые для построения "веб страниц" (HTML, WML и т.п.) и форматирования данных на страницах.
- статические служебный файлы - графические элементы, стили и т.д.
- Языковые файлы, в которых содержатся различные статические текстовые строки (сообщения, заголовки страниц и названия кнопок, тэги и т.д.), на которые ссылаются файлы WSSP.

Программное обеспечение CommuniGate Pro поставляется со стандартным Безымянным Видом Интерфейса, обеспечивающим простые, функциональные HTML и WML интерфейсы. В поставке имеются также несколько визуально более насыщенных стандартных Именованных Видов Интерфейса. Это Стандартные Виды Интерфейса хранятся в директории программ, являются частью программного обеспечения и системные администраторы не должны их изменять.

В CommuniGate Pro могут также использоваться Безымянные и Именованные пользовательские Виды Интерфейса. Пользовательские Виды Интерфейса могут создаваться как Виды Интерфейса, Общие для Сервера. Эти Пользовательские Виды Интерфейса доступны всем пользователям. Каждый Домен CommuniGate Pro также имеет свой собственный набор пользовательских Видов Интерфейсов, доступный только для пользователей из этого Домена.

Когда пользователь соединяется с сервисом Веб Интерфейс Пользователя (через порт HTTP User), строка hostname, указанная в URL независимого от состояния запроса, используется для поиска Домена CommuniGate Pro. При нахождении Домена, из него берутся Настройки WebUser Пользователя по Умолчанию, Имя Вида Интерфейса и Настройки Языка.

Настройка SkinName указывает имя используемого Вида Интерфейса (если эта настройка не задана, то используется Безымянный Вид Интерфейса).

Если Вид Интерфейса с указанным Именем не найден в наборе Видов Интерфейса Домена, то проверяется Набор Видов Интерфейса, Общий для Сервера. Если Вид Интерфейса с указанным именем не найден и в этом наборе, то используется Стандартный Вид Интерфейса с указанным именем. Если Именованный Стандартный Вид Интерфейса также не найден, то используется Безымянный Стандартный Вид Интерфейса.

Так как Домены могут иметь свои собственные Наборы Вида Интерфейса, то такой же запрос, отправленный в другой Домен, может отобразить другую страницу: Настройки WebUser Пользователя по Умолчанию могут иметь различные имена Видов Интерфейса для разных Доменов и даже если Настройки совпадают, в разных Доменах могут существовать разные Виды Интерфейса под одними и теми же именами.

Запросы, независимые от состояния, могут использовать любой доступный Вид Интерфейса для адресуемого Домена. Для использования альтернативного Вида Интерфейса, независимый от состояния HTTP запрос должен задавать имя Вида Интерфейса, используя параметр запроса `Skin`.

Настройка Язык, получаемая из фактически действующих Настроек WebUser Пользователя по Умолчанию, задаёт язык, используемый в странице, независимой от состояния. Для использования другого языка, независимый от Состояния HTTP запрос должен задавать имя языка при помощи параметра запроса `Language`.

Сессионные HTTP запросы не используют строку hostname, указанную в URL. Вместо этого при входе пользователя на сервер создаётся сессия Веб Приложения для указанного Пользователя CommuniGate Pro и для всей этой сессии берутся фактически действующие Настройки WebUser Пользователя. Эти настройки содержат в себе название используемого Вида Интерфейса (пустое значение означает Безымянный Вид Интерфейса). Вид Интерфейса с указанным названием выбирается из набора Видов Интерфейса Домена Пользователя (обратите внимание, что Домен, указанный в URL запроса, может быть другим).
Если в Домене Пользователя указанный Вид Интерфейса отсутствует, то используется Вид Интерфейса, Общий для Сервера.

Сессионные HTTP запросы используют Язык, заданный в Настройках WebUser Пользователя.

### Виды WAP/WML Интерфейса

HTTP модуль проверяет содержимое поля заголовка `Accept` запроса. Если это поле содержит подстроку `wml`, то модуль предполагает, что запрос поступил от WML браузера.

Запросы, приходящие от WML браузеров, обрабатываются с использованием Вида Интерфейса WML. Для Запросов, независимых от Состояния, название Вида Интерфейса берётся из параметра WAP/WML Настроек WebUser по Умолчанию для адресуемого Домена. Когда пользователь входит на сервер, используя WML браузер, то название Вида Интерфейса берётся из параметра WAP/WML Настроек WebUser этого Пользователя.

Все имена Вида Интерфейса, начинающиеся с букв `WML`, считаются Видами WML Интерфейса. Эти Виды Интерфейса появляются в списке доступных Видов Интерфейса для параметров WAP/WML и эти Виды Интерфейса удаляются из списка доступных Видов Интерфейса для параметров обычного Вида Интерфейса.

### Виды cHTML (I-Mode) Интерфейса

HTTP модуль проверяет содержимое поля заголовка запроса `User-Agent`.
Если это поле содержит подстроку `DoCoMo`, то модуль предполагает, то запрос поступил от Японского I-Mode браузера.
Если это поле содержит подстроку `portalmmm`, то модуль предполагает, то запрос поступил от Европейского I-Mode браузера.

Запросы I-Mode обрабатываются специальными I-Mode Видами Интерфейса, аналогично тому, как WML запросы обрабатываются WML Видами Интерфейса. Специальный параметр Настроек WebUser I-Mode/cHTML используется для задания имени используемого I-Mode Вида Интерфейса.

Все имена Вида Интерфейса, начинающиеся с букв `IMode`, считаются cHTML Видами Интерфейса. Эти Виды Интерфейса появляются в списке доступных Видов Интерфейса для параметров I-Mode/cHTML и эти Виды Интерфейса удаляются из списка доступных Видов Интерфейса для параметров обычного Вида Интерфейса.

Для всех страниц, получаемых Японскими cHTML браузерами, кодировка устанавливается в значение `Shift-JIS` и все страницы конвертируются в эту кодировку.
Для всех страниц, получаемых Европейскими cHTML браузерами, кодировка устанавливается в значение `Windows-1251` и все страницы конвертируются в эту кодировку.

## Иерархия Файлов Вида Интерфейса

При обработке запроса Веб Интерфейса Пользователя, Серверу необходимо получать определённый файлы из выбранного Вида Интерфейса. Если требуемый файл не обнаружен в выбранном Виде Интерфейса и выбранный Вид Интерфейса является Видом Интерфейса Домена, то берётся файл с тем же именем из Вида Интерфейса, Общего для Сервера. Если требуемый файл не обнаружен в Виде Интерфейса, Общем для Сервера, то проверяется Стандартный Вид Интерфейса с таким же именем. Если файл не обнаружен и там, и выбранный Вид Интерфейса является Именованным Видом Интерфейса, то проверяются общесерверный Безымянный Вид Интерфейса и безымянный Стандартный Вид Интерфейса.

Первоначально, когда в Домене отсутствуют Пользовательские Виды Интерфейса и нет Видов Интерфейса, Общих для Сервера, все Домены могут использовать только Стандартные Виды Интерфейса. По умолчанию, выбирается Безымянный Вид Интерфейса.
Загружая файлы в общесерверный Безымянный Вид Интерфейса, Администратор Сервера может "заменить" файлы Безымянного Стандартного Вида Интерфейса, что, соответственно, изменит внешний вид приложения для всех Доменов.
Загружая файлы в Безымянный Вид Интерфейса какого-нибудь Домена CommuniGate Pro, Администратор Сервера или Домена может "заменять" файлы Стандартного Вида Интерфейса и файлы общесерверного Безымянного Вида Интерфейса, что, соответственно, изменит внешний вид приложения для этого конкретного Домена.

Такая иерархия позволяет Администраторам Сервера и Домена использовать как новые Виды Интерфейса, созданные "с нуля", так и делать небольшие изменения в Видах Интерфейса, повторно используя уже существующий файлы Видов Интерфейса.

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

## Языки и Текстовые Наборы Данных Вида Интерфейса

Каждый Вид Интерфейса может иметь текстовый набор данных - текстовый файл `strings.data`. Этот файл "языка по умолчанию" содержит словарь. Страницы с WSSP cценариями могут использовать различные команды для получения данных из этого словаря с текстовым набором данных.

Вид Интерфейса может содержать также дополнительные, локализованные файлы с текстовыми наборами данных - файлы `language.data`, где language является названием языка (french.data, japanese.data и т.п.). Если выбран язык, не являющийся языком по умолчанию, то используется Текстовый Набор Данных из соответствующего языкового файла.

Когда выбранный Текстовый Набор Данных для выбранного Вида не содержит требуемых данных, то проверяется Текстовый Набор Данных того же языка во всех "родительских" Видах Интерфейса (как показано выше). Если требуемые данные не найдены и там, то используется Текстовый Набор Данных для "языка по умолчанию".

Используйте кодировку UTF-8 для не ASCII символов в строках в файле с Текстовым Набором Данных. Дополнительную информацию о Юникод и кодировке UTF-8 вы можете найти на сайте http://www.unicode.org.

## Обслуживание Обычных Файлов

Если в URL содержится имя с любым расширением имени файла, отличным от `.wssp`, то модуль Веб Приложения получает этот файл из выбранного Вида Интерфейса, помещает его во внутренний Кэш Вида Интерфейса и возвращает файл браузеру клиента через соединение, установленное HTTP модулем.

Указанные имена файлов всегда преобразовываются в нижний регистр.

Когда модуль Веб Приложения получает запрос на тот же файл, он берётся из Кэша Вида Интерфейса.

Если файл был затребован при помощи сессионного URL, то счётчик времени этой сессии сбрасывается. Это может использоваться для создания фрейма в окне браузера клиента и периодического запроса какого-либо файла с использованием сессионного URL. В результате, таймер неактивности сессии будет сбрасываться и сессия будет оставаться активной все время, пока этот фрейм отображается в браузере клиента.

Администраторы Системы и Домена могут загружать пользовательские файлы в общесерверные и Доменные Виды Интерфейса для изменения внешнего вида Веб Приложений.
Например, Стандартный Вид Интерфейса использует файл `Logo.gif` в большинстве своих страниц. Загрузив пользовательский файл Logo.gif в общесерверный Безымянный Вид Интерфейса, вы можете изменить вид страниц Веб Приложения даже не создавая и не загружая пользовательские файлы WSSP.

Для включения ссылки на файл в страницу .wssp, полученную при помощи запроса, независимого от Состояния, используйте префикс %%filesRef%% в .wssp коде:
... href="%%filesRef%%filename.extension" ...
Дополнительную информацию смотрите в разделе Компоненты для Запросов, независимых от Состояния.

Сессии могут использовать Именованные Виды Интерфейса; как правило, сессионным страницам необходимо ссылаться на обычные файлы из того же Вида Интерфейса. Ссылки в "области сессии" (`href="filename.extension"` или `href="/Session/sessionID/filename.extension"`) будут работать, но они не позволят клиентским браузерам кэшировать эти файлы между сессиями, так как каждая сессия имеет свой собственный sessionID и URL файла будет различным для каждой сессии. Для того, что бы позволить браузерам клиентов кэшировать обычные файлы, используйте для URL файлов префикс %%SESSION(filesRef)%%.
... href="%%SESSION(filesRef)%%/filename.extension" ...
Дополнительную информацию смотрите в разделе Наборы Данных Сессии.

## Обслуживание Файлов Веб Приложений (WSSP)

Когда URL указывает на ресурс с именем расширения файла `.wssp`, модуль Веб Приложения получает указанный файл WSSP из Вида Интерфейса, а затем компилирует его в некоторый внутренний код. Затем модуль запускает код Веб Приложения, связанный с именем файла. Этот код производит набор данных, содержащий различные строки, массивы и словарные данные. Затем модуль, используя этот набор данных, запускает внутренний (скомпилированный) код для создания HTML страницы и возвращает результирующую HTML страницу браузеру через соединение, установленное HTTP модулем.

Указанные имена ресурсов всегда преобразовываются в нижний регистр.

Формат WSSP файла описывается в разделе WSSP Сценарии. Администраторы Системы и Домена могут создавать пользовательские WSSP файлы и загружать их в общесерверные и Доменные Виды Интерфейса для изменения внешнего вида Веб Приложений.

В разделе ниже приводятся доступные компоненты Веб Приложений, определяющие набор страниц WSSP, которые могут создаваться в этой версии сервера CommuniGate Pro. В нём также указывается, как каждый компонент обрабатывает параметры отправляемой ему формы и какие данные включаются в создаваемые компонентом наборы данных.

## Создание и Обслуживание Вида Интерфейса

Вы можете создавать Интерфейсы и управлять ими через Веб Интерфейс Администратора, CLI/API или через любой другой клиент/протокол, который может обращаться к Хранилищу Файлов Пользователя (такой, например, как FTP).

### Редактор в Веб Интерфейсе Администратора

Веб Интерфейс Администратора имеет страницы для Редактирования Вида Интерфейса, которые позволяют обслуживать Общие для Сервера, Общие для Кластера и Общие для Домена Виды Интерфейса.

Для обслуживания Общих для Сервера и Общих для Кластера Видов Интерфейса откройте через Веб Интерфейс Администратора область Домены нажмите на ссылку Интерфейсы.

Для обслуживания Вида Интерфейса Домена откройте через Веб Интерфейс Администратора область Домены, выберите требуемый Домен и нажмите на ссылку Интерфейсы. Для создания и изменения Интерфейсов Домена Администратор Домена должен обладать правом доступа "Может модифицировать Интерфейсы".

При открытии страницы Редактирования Видов Интерфейсов Домена, в случае, если Безымянный Вид Интерфейса для Домена отсутствует, то на странице имеется кнопка Создать Особый Интерейс. Нажмите на эту кнопку Для того, что бы создать Безымянный Вид Интерфейса.

Страница Редактирование Вида Интерфейса содержит список всех "видимых" в этом Виде Интерфейса файлов: тут перечисляются как файлы, непосредственно загруженные в этот конкретный Вид Интерфейса, так и все файлы, загруженные в Виды Интерфейса и используемые как источник "файлов по умолчанию" для этого Вида Интерфейса:

| Имя | Размер | Обновлено
--- | --- | --- | ---
| Help.gif | 155 | 25-Сен-06
default | addressbook.wssi | 1143 | 23-Сен-06
default | alerts.wssp | 1727 | 26-Сен-07
default | answeredletter.gif | 890 | 27-Фев-06
default | attachedFile.gif | 1147 | 27-Фев-07
...
default | mailbox.wssp | 5806 | 28-Сен-06
| mailboxes.wssp | 3452 | 02-Окт-06
...
default | strings.data | 28K | 27-Окт-06
default | german.data | 31K | 28-Окт-06
...
default | website.wssp | 592 | 28-Сен-06
default | websitebody.wssi | 2648 | 28-Сен-06

Файлы, непосредственно загруженные в Вид Интерфейса, имеют флажок в столбце Помеченные. Файлы из других Видов Интерфейса, "видимые" в этом Виде Интерфейса, имеют в этом столбце слово `default`.

Вы можете скачать любой файл из Имени Интерфейса, щёлкнув по имени файла.

Вы можете загрузить в Вид Интерфейса файл, нажав на кнопку Browse и выбрав файл, находящийся на вашем компьютере, а затем нажав на кнопку Загрузить Файл.

Вы можете удалить любой из загруженных в Вид Интерфейса файлов, отметив его флажком и нажав на кнопку Удалить Помеченные.

Когда вы загружаете `.wssp` или `.wssi` файл, Редактор сначала пытается скомпилировать этот WSSP файл.
Когда вы загружаете `.wcgp` или `.wcgi` файл, Редактор сначала пытается скомпилировать этот CG/PL файл.
Когда вы загружаете `.data` файл, Редактор сначала пытается разобрать этот файл как словарь.
Если компилятор обнаруживает ошибку, то файл не загружается в Среду, содержимое файла отображается на странице Редактирования, и маркер красного цвета `<--ERROR-->` показывает точное место ошибки.

Если вы загружаете файл в любой Вид Интерфейса, то Кэш Вида Интерфейса очищается автоматически. Если вы загружаете файл в Вид Интерфейса Общего Домена или в Вид Интерфейса, Общий для Кластера, то изменённый файл автоматически распространяется на всех членов Кластера.

Вы можете загрузить набор файлов, выбрав TAR-архив (файл с именем расширения `.tar`). Например, если у вас есть TAR-архив с созданными ранее Видами Интерфейса, вы можете открыть Вид Интерфейса, который вы хотите изменить (общесерверный Безымянный Вид Интерфейса, общедоменный Безымянный Вид Интерфейса или какой-либо Именованный Вид Интерфейса) и загрузить в него файл `.tar`. Сервер распакует архив и будет сохранять каждый файл индивидуально, как будто бы они загружались один за одним.

На странице Редактирования для Безымянного Вида Интерфейса содержится также список всех Именованных Видов Интерфейса:

Именованные Интерфейсы
| GoldenFleece
| IceColdMail

Для создания Именованного Интерфейса, введите его имя и нажмите на кнопку Создать.

Для удаления Именованного Интерфейса, отметьте флажком этот Интерфейс и затем нажмите на кнопку Удалить Помеченные. Удалены могут быть только пустые Интерфейсы (Интерфейсы без каких-либо файлов).

Для удаления Безымянного Интерфейса, удалите все его файлы и все Именованные Интерфейсы, а затем нажмите на кнопку Удалить Особый Интерфейс.

Для того, что бы открыть Интерфейс, щёлкните мышкой по его имени. Редактор отобразит Имя Интерфейса и ссылку `Наверх`, с помощью которой вы можете вернуться к Безымянному Интерфейсу.

Редактор Именованных Видов Интерфейса позволяет вам переименовать Вид Интерфейса, введя Имя Нового Интерфейса и нажав на кнопку Переименовать Интерфейс.

### CLI/API

Для управление Интерфейсами может также использоваться Интерфейс Командной Строки / API. Дополнительную информацию смотрите в разделе Администрирование Вида Веб Интерфейса.

### Виртуальные Области в Хранилище Файлов

Интерфейсы могут быть измененены через клиентов, работающих по протоколом FTP или HTTP, через CG/PL приложения или при помощи любого другого метода, который обеспечивает доступ к Хранилищу Файлов Пользователя.
Специальные директории `$DomainSkins`, `$ServerSkins` и `$ClusterSkins` обеспечивают доступ к Интерфейсам Общим для Домена, Общим для Сервера, Общим для Кластера.

## Обработка Запросов

Модуль Веб Приложения CommuniGate Pro обрабатывает запросы для WSSP файлов вызывая компонент, который создаёт набор данных - словарь, содержащий ключи - текстовые строки и значения, связанный с этими ключами. Значения могут быть текстовыми строками, массивами значений или словарями.

Например, когда требуется вывести страницу Домена по умолчанию, вызывается специальный компонент и он создаёт словарь, в котором содержатся такие ключи, как `canAutoSignup`, `hasMailLists`, `hasCertificate`.

Модуль Веб Приложения может затем использовать код сценария из WSSP файла для преобразования этих данных в HTML страницу или в любой другой язык разметки страниц.

В этом разделе перечисляются доступные компоненты CommuniGate Pro, указывается, когда вызываются такие компоненты, объясняется, как компоненты обрабатывают параметры <FORM> и приводится содержимое набора данных, создаваемого такими компонентами.

## Компоненты для Запросов, независимых от Состояния

Модуль Веб Приложения проверяет HTTP параметр `Skin` для всех запросов, независимых от Состояния. Если этот параметр существует, то модуль пытается открыть Именованный Вид Интерфейса с указанным именем; в противном случае используется Безымянный Интерфейс (для адресуемого Домена).

Модуль Веб Приложения проверяет HTTP параметр `Language` для всех запросов, независимых от Состояния. Если этот параметр существует, то модуль использует его для выбора Текстового Набора Данных, не применяемого по умолчанию для выбранного Вида Интерфейса.

Модуль Веб Приложения помещает определённые данные в наборы данных, создаваемые всеми компонентами Запросов, независимых от Состояния. В следующим списке приводятся эти "общие" элементы набора данных, которые могут использоваться во всех Независимых от Состояния WSSP страницах:

`filesRef`
  Значением этого элемента является строка, которая может использоваться для формирования URL, ссылающегося на файл (изображение, стиль, данные и т.д.) в этом Интерфейсе и в этом Домене. Элемент HTML `<img src="%%filesRef%%Logo.jpeg">` отобразит файл `Logo.jpg` "видимым" для текущего Вида Интерфейса.
`serverName`
  Значением этого элемента является строка с именем сервера CommuniGate Pro Сервер (Именем его Главного Домена).
`skinName`
  Значением этого опционального элемента является строка с именем текущего Вида Интерфейса.
`language`
  Если был выбран язык не по умолчанию, то этот опциональный элемент содержит в себе строку с именем выбранного языка.
`domainName`
  Значением этого элемента является строка с именем Домена CommuniGate Pro. Этот элемент существует, только если Сервер успешно направил Запрос, независимый от Состояния, на один из Доменов Сервера.
`charset`
  Значением этого элемента является значение элемента `charset` из Текстового Набор Данных Вида Интерфейса Домена. Индивидуальные компоненты могут присваивать другие значения элементу `charset` (смотрите ниже).
`secureChannel`
  Этот элемент существует и имеет строковое значение `YES`, если запрос был получен через безопасное (HTTPS) соединение.
`isWML`
  Этот элемент существует и имеет строковое значение `YES`, если запрос был получен через WML браузер.

В следующем разделе приводятся независимые от Состояния URLы, имена вызываемых компонентов, действия, предпринимаемые этими компонентами и имена WSSP файлов, используемые для формирования HTTP ответов.

URLы: `/`, `/default.html`

эти URLы используются для обработки операции входа.

Действия

  Если HTTP запрос имеет параметры `username` и `password`, то, используя эти параметры, предпринимается попытка аутентифицировать клиента. Если полученная пара параметров является корректной, то создаётся новая Сессия WebUser и в эту Сессию направляется запрос на "начальную страницу". Обычно этот запрос возвращает HTML "страницу переадресации", которая отсылается обратно браузеру пользователя. Она заставляет браузер войти в "область Сессии".

  Если запрос имеет параметр `DisableIPWatch`, то "Защита по Фиксированному Адресу" будет для этой сессии выключена, даже если в Настройках WebUser Пользователя она было включена.

  Если запрос имеет параметр `DisableUseCookie`, то "Защита при помощи Cookies" для этой сессии будет выключена, даже если в Настройках WebUser Пользователя она было включена.

  Если запрос имеет параметр `SessionSkin` со строковым значением, не равным `*`, то сессия открывается с использованием Вида Интерфейса, заданного этим параметром. Вид Интерфейса ищется в том Домене, куда фактически вошёл пользователь (который может отличаться от Домена, показываемого на Странице Входа).

Результирующий Набор Данных
  Если параметры `username` или `password` не были указаны или Сессия WebUser не была создана, то компонент генерирует следующий набор данных:
  `autoSignup`
    этот элемент (имеющий строковое значение `YES`) добавляется в набор данных, если для адресуемого Домена разрешена Свободная Регистрация.
  `clientAddress`
    этот строковый элемент содержит IP адрес браузера пользователя.
  `errorCode`
    этот элемент добавляется в набор данных, если операция Входа закончилась неуспешно. Значением является строка с кодом ошибки.
  `forgotPassword`
    этот элемент (имеющий строковое значение `YES`) добавляется в набор данных, если значением `errorCode` является "Incorrect Password" ("Неверный Пароль") или "Unknown Account" ("Неизвестный Пользователь").
  `hasCertificate`
    этот элемент (имеющий строковое значение `YES`) добавляется в набор данных, если для адресуемого Домена имеется пользовательский Сертификат.
  `hasDirectory`
    этот элемент (имеющий строковое значение `YES`) добавляется в набор данных, если Вид Интерфейса по умолчанию для адресуемого Домена в своём Текстовом Наборе Данных имеет массив элементов `GuestDirectoryFields` и этот массив не пустой.
  `hasLists`
    этот элемент (имеющий строковое значение `YES`) добавляется в набор данных, если для адресуемого Домена существует хотя бы один Список Рассылки. Этот элемент всегда добавляется, если адресуемый Домен является Общим Доменом.
  `skinNames`
    этот элемент содержит массив - список имён Видов Интерфейсов, доступных в адресуемом Домене.
  `loginName`
    этот строковый элемент добавляется в набор данных, если пользователь попытался войти на сервер и попытка окончилась неуспешно. Значение, указанное в параметре username, становится значением элемента loginName.
  `restoreSessionPage`
    этот строковый элемент добавляется в набор данных, если пользователь был отсоединён. Он содержит имя страницы, на которой была прервана сессия.
    Для того, что бы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должен быть включён HTTP параметр `restoreSessionPage` со значением этого элемента.
  `restoreCharset`
    этот строковый элемент добавляется в набор данных, если пользователь был отсоединён. Он содержит кодировку, использованную в прерванной сессии.
    Для того, что бы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должен быть включён HTTP параметр `restoreCharset` со значением этого элемента.
  `restoreParameters`
    этот массив элементов добавляется в набор данных, если пользователь был отсоединён. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
    `name`
      имя параметра прерванного запроса.
    `value`
      закодированное значение прерванного параметра запроса.
    Для того, что бы продолжить прерванный запрос, в HTTP запрос, сгенерированный этой страницей, должны быть включены параметры с этими именами и значениями.
страница WSSP
  страница `login.wssp` используется для генерации HTTP ответа. Если запрос является WML запросом, то используется страница `wlogin.wssp`.

Если операция Входа завершилась успешно, то возвращается ответ HTTP Redirect, с URL переадресации, указывающим на WSSP страницу StartPage с вновь созданной Сессией. StartPage указывается как строка Вида Интерфейса `StartPage` (для WML сессий - `wStartPage`).

Если операция Входа закончилась успешно, но в запросе содержится параметр `restoreSessionPage`, то отображается страница `resume.wssp` (как независимая от Состояния), а для WML сессии - страница `wresume.wssp`.

Результирующий Набор Данных для этой страницы содержит:

`restoreParameters`
  смотрите описание выше.
`sessionID`
  SessionID для вновь созданной сессии (имеет то же значение, что и значение функции `SESSION(ID)`, которая может использоваться в wssp страницах сессии).
`jumpPage`
  страница wssp, открываемая в случае, если пользователь хочет продолжить прерванную операцию (включает в себя опциональные параметры).

URL: `/RecoveryPassword.wssp`

этот URL используется для обработки операций по Восстановлению Пароля.

Действия
  Если HTTP запрос имеет параметры `username` и `Send`, то компонент пытается найти указанного Пользователя, получить пароль Пользователя и значение Настройки Пользователя `RecoverPassword`. Если пароль может быть расшифрован и настройка RecoverPassword задана, то на адрес, определённый в настройке RecoverPassword высылается сообщение электронной почты, в котором содержится пароль.
Результирующий Набор Данных
  `errorCode`
    этот элемент добавляется в набор данных, если операция Восстановления Пароля закончилась неуспешно. Значением является строка с кодом ошибки.
  `messageCode`
    этот элемент добавляется в набор данных, если операция Восстановления Пароля закончилась успешно. Значение является строкой `PasswordSent`.
страница WSSP
  страница `recoverypassword.wssp` используется для генерации HTTP ответа.

URL: `/Signup.wssp`

этот URL используется для обработки операций по Свободной Регистрации.

Действия
  Если HTTP запрос имеет параметры `username`, `password1`, `password2` и `realName`, то компонент пытается создать указанного Пользователя. До создания Пользователя проверяется совпадение строк `password1` и `password2`. Если новый Пользователь создан, то его установка `UseAppPassword` устанавливается в значение `YES`, а `Password` и `RealName` устанавливаются в заданные значения. Если HTTP запрос имеет также непустой параметр ForgotPassword, то он используется в качестве значения Настройки Пользователя RecoverPassword.

  Компонент проверяет содержит ли запрос один (или более) строковый параметр `PublicInfo`. Значением этого параметра должны быть Публично Доступные атрибуты, указанные в установках Центрального Справочника. Затем компонент проверяет, существует ли непустой параметр запроса с таким именем и добавляет значение параметра в начальные Установки Пользователя.
  Пример: для того, что бы добавить поле `City` на странице Регистрации, добавьте управляющий элемент `<INPUT type="hidden" name="PublicInfo" value="City">` и управляющий элемент `<INPUT type="text" name="City" value="" size=30 maxlength=255>` в HTML код страницы Signup.wssp.

  Если Пользователь был создан, то создаётся новая Сессия WebUser, и в эту Сессию направляется запрос на "начальную страницу" (смотрите выше).

Результирующий Набор Данных
  Если параметры `username`, `password1`, `password2` или `realName` не были указаны в HTTP запросе или новый Пользователь не был создан, то компонент генерирует следующий набор данных:
  `errorCode`
    этот элемент добавляется в набор данных, если операция Регистрации закончилась неуспешно. Значением является строка с кодом ошибки.
  `userName`
    этот элемент добавляется в набор данных, если HTTP запрос содержит непустой параметр `userName`. Значением этого элемента является значение параметра.
  `realName`
    этот элемент добавляется в набор данных, если HTTP запрос содержит непустой параметр `realName`. Значением этого элемента является значение параметра.
  `recoverPassword`
    этот элемент добавляется в набор данных, если HTTP запрос содержит непустой параметр `recoverPassword`. Значением этого элемента является значение параметра.
страница WSSP
  страница `signup.wssp` используется для генерации HTTP ответа.

URL: `/List/`, `/List/default.html`

этот URL используется для получения списка доступных к просмотру Списков Рассылки Домена.

Действия
  Параметры HTTP запроса не обрабатываются.
Результирующий Набор Данных
  Компонент генерирует следующий набор данных:
  `errorCode`
    этот элемент добавляется в набор данных, если операция получения списка закончилась неуспешно. Значением является строка с кодом ошибки.
  `lists`
    этот элемент содержит массив описателей списка рассылки. Каждый описатель является словарём, в котором содержатся следующие ключи и их значения:
    `name`
      строка с названием списка рассылки.
    `realName`
      строка с "описанием" списка рассылки.
    `browse`
      строка, в которой описываются правила просмотра архива списка рассылки. строка может иметь значение `anyone` или `subscribers`.
страница WSSP
  страница `listlist.wssp` используется для генерации HTTP ответа.

URL: `/List/listname/`, `/List/listname/List.html`

этот URL используется для получения части записей списка рассылки для Списков Рассылки listname.

Этот компонент фактически использует общий компонент Mailbox.

Действия
  Компонент проверяет, содержит ли HTTP запрос параметр `NextMessage` с числовым значением. Если он существует, то это значение интерпретируется как уникальный идентификатор сообщения (UID) в архивной папке списка рассылки и компонент пытается найти это сообщение в выбранном режиме просмотра папки, а также пытается найти следующее сообщение в этом режиме просмотра.

  Компонент проверяет, содержит ли HTTP запрос параметр `PrevMessage` с числовым значением. Если он существует, то это значение интерпретируется как уникальный идентификатор сообщения (UID) в архивной папке списка рассылки и компонент пытается найти это сообщение в выбранном режиме просмотра папки, а также пытается найти предыдущее сообщение в этом режиме просмотра.

  Если следующее или предыдущее сообщение найдено, то его UID добавляется в набор данных (смотрите ниже) и общий компонент Mailbox не используется для обработки.

  Если следующего/предыдущего сообщение не было найдено, то для обработки параметров HTTP запроса и генерации результирующего набора данных используется общий компонент Mailbox.

Результирующий Набор Данных
  `listName`
    строка с названием Списка Рассылки.

  Если следующее или предыдущее сообщение найдено:
  `messageJump`
    строка с UID найденного сообщения.

  Если следующее или предыдущее сообщение не запрашивалось в параметрах HTTP запроса или оно не было найдено:
  `realName`
    строка с Описанием Списка Рассылки
  `charset`
    строка с Предпочтительной Кодировкой Списка Рассылки

  для генерирования остальной части результирующего набора данных используется общий компонент Mailbox.
страница WSSP
  страница `listmailbox.wssp` используется для генерации HTTP ответа.

URL: `/List/listname/Message/uid.html`

этот URL используется для получения сообщения с уникальным идентификатором uid из архива списка рассылки listname.

Фактически компонент использует общий Компонент Message.

Действия
  Общий компонент Message используется для обработки параметров HTTP запроса и для создания результирующего набора данных.
Результирующий Набор Данных
  `listName`
    строка с названием Списка Рассылки.
  `nextMsg`
    этот элемент добавляется, если в просмотре архива списка рассылки есть следующее сообщение. Значением элемента является строка с UID следующего сообщения.
  `prevMsg`
    этот элемент добавляется, если в просмотре архива списка рассылки есть предыдущее сообщение. Значением элемента является строка с UID предыдущего сообщения.
  Для генерирования остальной части результирующего набора данных используется обычный компонент Message.
страница WSSP
  страница `listmessage.wssp` используется для генерации HTTP ответа.

## Страницы Ошибок

Механизм WSSP используется для генерации тела HTTP ответов для сообщений об ошибках. В следующей таблице приводится список кодов ошибок HTTP, ситуаций, когда возникает такая ошибка и WSSP файлов, используемых для создания тела HTTP ответа об ошибке.

Код | Условие возникновения Ошибки | используемый WSSP файл
--- | --- | ---
301 | местонахождение требуемого ресурса изменено | `moved.wssp`
404 | требуемый ресурс не существует | `notfound.wssp`
401 | для получения требуемой страницы необходима HTTP Авторизация (заголовок запроса) | `unauthorized.wssp`
401 | имя пользователя и пароль в заголовке запроса HTTP Авторизации неверны | `denied.wssp`
500 | общая ошибка системы | `failure.wssp`
501 | общая ошибка системы | `error.wssp`

Эти WSSP страницы обрабатываются с использованием наборов данных, создаваемых для всех запросов, независимых от Состояния, в которых содержатся следующие дополнительные элементы:

`errorCode`
  этот элемент добавляется в набор данных, если существует код ошибки, о котором пользователь будет уведомлён.
`hostName`
  этот элемент добавляется в набор данных, если HTTP запрос содержит поле `Host:`. Значением этого элемента является этот параметр поля запроса.

Страница `disconnected.wssp` используется, если HTTP запрос был отправлен в Сессию WebUser, но сессия не была найдена. Эта страница обрабатывается с использованием набора данных, создаваемого для всех запросов, независимых от Состояния.

## Компоненты для Сессионных Запросов

При создании новой Сессии WebUser открывается и используется в качестве "Интерфейса Сессии" Вид Интерфейса, указанный Настройках WebUser Пользователя. Из Текстового Набора Данных Вида Интерфейса берётся строка `StartPage`, создаётся страница переадресации и отправляется браузеру клиента. Страница переадресации перенаправляет браузер пользователя в "Область Сессии", на страницу, заданную строкой `StartPage`.

HTTP запросы в "область Сессии" (запросы, в которых URL начинается с `/Session/`) обрабатываются как Сессионные Запросы. Вторым компонентом URL Сессионного Запроса является уникальный идентификатор Сессии, используемый HTTP модулем для нахождения сессии WebUser.

Если указанная сессия не найдена или у Сессии установлена опция `Защита по Фиксированному Адресу`, но HTTP запрос поступил с IP адреса, отличного от того, с которого поступил запрос на Вход, начавший сессию, то отображается страница `disconnected.wssp` (смотрите выше).

После того, как Сессия найдена, Модуль Веб Приложения обрабатывает оставшуюся часть URL запроса как "запрос внутри области сессии". Если URL запроса указывает на обычный файл, то этот файл берётся из Вида Интерфейса Сессии и отправляется обратно браузеру клиента.

Для каждого `.wssp` запросы вызывается соответствующий компонент. Он обрабатывает параметры HTTP запроса и создаёт результирующий набор данных. Затем из Вида Интерфейса берётся .wssp файл, который используется для создания HTTP ответа.

Если Результирующий Набор Данных не содержит элемента `blockAlerts`, то модуль Веб Приложения проверяет, не существует ли для пользователя сессии ожидающих его Предупреждений. Если найдено одно или несколько предупреждений, то вызывается компонент `Alerts` и для создания HTTP запроса используется файл `Alerts.wssp`.

Модуль Веб Приложения проверяет определённые параметры HTTP запроса и обрабатывает их при запросах всех .wssp страниц. В следующим списке приводятся эти "общие" действия:

`EmptyTrashNow`
  Если HTTP запрос содержит этот параметр и папка (или псевдоним папки с именем `Trash`) может быть открыта с правами доступа к папке "Может Удалять", то компонент удаляет все сообщения из этой папки. Если эта операция заканчивается неуспешно, то код ошибки помещается в строковый элемент `errorCode` результирующего набора данных.
`SMIMEUnlock`
  Если HTTP запрос содержит этот параметр, сессия не имеет Активного Закрытого Ключа, в Установках Пользователя содержится зашифрованный Закрытый Ключ и HTTP запрос содержит параметр `SMIMEPassword`, то модуль пытается активировать ("разблокировать") Закрытый Ключ, используя полученный пароль. Если операция заканчивается неуспешно, то код ошибки помещается в строковый элемент `SMIMEError` результирующего набора данных.

Модуль Веб Приложения помещает определённые данные в наборы данных, создаваемые всеми компонентами Сессионных Запросов. В следующим списке приводятся эти "общие" элементы набора данных, которые могут использоваться во всех Сессионных WSSP страницах:

`messageText`
  Этот строковый элемент добавляется, если HTTP запрос содержит параметр `messageText`. Значение этого элемента совпадает со значением HTTP параметра.
`messageCode`
  Этот строковый элемент добавляется, если HTTP запрос содержит параметр `messageCode`. Значение этого элемента совпадает со значением HTTP параметра.
`secureChannel`
  Этот элемент существует и имеет строковое значение `YES`, если запрос был получен через безопасное (HTTPS) соединение.
`isWML`
  Этот элемент существует и имеет строковое значение `YES`, если запрос был получен через WML браузер.
`charset`
  Этот строковый элемент содержит Предпочтительную Кодировку, выбранную в Настройках Пользователя, если режим UTF8 установлен в значение Никогда. В противном случае, этот элемент содержит строку `utf-8`.
  Обратите внимание: это просто значение по умолчанию, для этого элемента набора данных индивидуальные компоненты могут задавать разные значения.
`SMIMEActive`
  Этот элемент существует и имеет строковое значение `YES`, если в сессии есть разблокированный (Активный) Закрытый ключ S/MIME.
`SMIMEInactive`
  Этот элемент существует и имеет строковое значение `YES`, если в сессии отсутствует разблокированный (Активный) Закрытый ключ S/MIME, но в Установках Пользователя имеется Закрытый Ключ и этот Ключ может быть разблокирован.
`mailboxes`
  Список всех папок, которые видны пользователю.

Если .wssp запрос указывает на неизвестный компонент, но .wssp файл с указанным именем может быть получен из Вида Интерфейса Сессии, то этот .wssp файл обрабатывается с использованием только "общих" элементов набора данных и результат отправляется обратно браузеру клиента.

  Пример: В Стандартном Виде Интерфейса используются запросы `Hello.wssp`. Компонент с таким именем отсутствует, следовательно, создаётся набор данных только с общими значениями и для обработки этого набора данных используется файл `Hello.wssp`.

В следующем разделе приводятся названия существующих компонентов (имена для .wssp запросов), действия, предпринимаемые этими компонентами и наборы данных, создаваемые этими компонентами.

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

Имя: `Mailboxes`, `wMailboxes`

Действия

Если HTTP запрос содержит параметр `Create` и параметр `NewName` не является пустой строкой, то компонент пытается создать папку с указанными именем. Если эта операция заканчивается неуспешно, то в результирующий набор данных добавляется элемент `errorCode` с текстом кода ошибки. Если папка создана, то элемент `messageCode` со строковым значением `MailboxCreated` добавляется в результирующий набор данных и, если в Настройках WebUser Пользователя выбрана опция "Показывать Все Подписанные Папки", то имя созданной папки добавляется в список подписанных папок.
Если запрос содержит параметр `newClass`, то созданная папка получает указанный класс.

Если HTTP запрос содержит параметр `Filter`, то в список включаются только те папки, в чьих именах содержится значение этого параметра.

Результирующий Набор Данных

Компонент создаёт список всех Папок Пользователя и Псевдонимов Папок (если в Настройках WebUser Пользователя выбрана опция "Показывать Все мои Папки") или список всех подписанных папок (если выбрана опция "Показывать Все Подписанные Папки"). Если выбраны обе опции, то эти два списка объединяются в один.

`filter`
  этот строковый элемент содержит текущее значение HTTP параметра `Filter`.
`newName`
  этот строковый элемент содержит текущее значение HTTP параметра `NewName`.
`mailboxClasses`
  эти элементы массива содержат строки с именами всех поддерживаемых классов папок.
`mailboxList`
  этот элемент является массивом с одним элементом типа словарь для каждой папки в сформированном списке папок. Каждый словарь содержит следующие элементы:
  `mailboxName`
    этот строковый элемент содержит имя папки.
  `parent`
    этот строковый элемент существует, если папки является подпапкой какой-либо другой папки. Строка содержит имя той родительской Папки.
  `nonSelectable`
    этот строковый элемент со значением `Yes` добавляется, если папку нельзя выбрать. Если он добавлен, то следующие элементы к словарю не добавляются.
  `isList`
    этот элемент добавляется, если папка является главной папкой (архивом) Cписка Рассылки (это означает, что существует Cписок Рассылки с таким же именем).
  `nMessages`
    этот строковый элемент содержит число сообщений в папке. Если число не может быть получено, то значением элемента является строка `???`.
  `nRecent`
    этот строковый элемент содержит число "Недавних" ("Recent") сообщений в папке.
  `numUnread`
    этот строковый элемент содержит имя Непрочитанных ("Unseen") сообщений в папке.
  `size`
    этот строковый элемент содержит "приблизительный" размер папки.
  `mailboxClass`
    этот опциональный строковый элемент содержит класс папки (для не почтовых папок).
  `mailboxPage`
    этот строковый элемент содержит имя страницы wssp, используемой для обработки такого класса папки.
`nSelected`
  этот строковый элемент содержит число элементов в массиве `mailboxList`.
`trashSize`
  этот строковый элемент добавляется только если Пользователь имеет папку `Trash`. В нём содержится размер папки `Trash`.
`currentStorage`
  этот строковый элемент содержит "округлённый вверх" общий размер всех Папок Пользователя.
`storageLimit`
  этот строковый элемент содержит "округлённое вверх" ограничение на общий размер папок Пользователя. Если Пользователь не имеет лимита на общий размер Папкок, то в этом элементе содержится строка `unlimited`.

Имя: `Mailbox`, `wMailbox`

HTTP запрос должен содержать параметр `Mailbox` - имя отображаемой Папки.

Действия

Для каждой Папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта, эти параметры устанавливаются в соответствующие значения из Настроек WebUser.

Параметры `Msg` HTTP запроса интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор Сообщения в Папке.

Если HTTP запрос содержит параметр `Forward` или параметр `Redirect`, и параметр `RedirectAddresses` не является пустым, то "набор сообщений" создаётся с использованием параметров `Msg` и сообщения из набора сообщений переадресуются или перенаправляются на указанные адреса.
Если HTTP запрос содержит параметр `ListApprove` и папка является папкой "approval" или "requests" для какого-либо списка рассылки, то запрос обрабатывается как запрос `Redirect`, с фактическим адресом, являющимся адресом списка рассылки или запросом "subscription" для этого списка.
Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `MessagesForwardedInfo` или `MessagesRedirectedInfo`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если HTTP запрос содержит параметр `Copy` или параметр `Move`, а параметр `MailboxName` содержит имя какой-либо "выбираемой" папки, то "набор сообщений" создаётся с использованием параметров `Msg` и сообщения из набора сообщений копируются в указанную папку. Если был указан параметр `Move`, то сообщения из набора сообщений, в зависимости от Настроек WebUser, либо помечаются как Удалённые, либо физически удаляются, либо передвигаются в Мусорную Корзину.
Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `MessagesCopiedInfo`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если опция Способ Стирания установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Delete`, то "набор сообщений" создаётся с использованием параметров `Msg` и сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка `Trash` не существует, то она будет создана.

Если HTTP запрос содержит параметр `DeleteAll`, то все сообщения из папки удаляются с использованием метода, указанного в опции "Способ Стирания" Настроек WebUser.

Если HTTP запрос содержит параметры `read`, `unread`, `flag`, `unflag`, `delete` или `undelete`, то "набор сообщений" создаётся с использованием параметров `Msg` и у сообщений из набора сообщений изменяются соответствующие флаги. Параметры `delete` и `undelete` обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину`.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Purge`, то все сообщения папки, имеющие флаг `Deleted`, удаляются.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если HTTP запрос имеет параметр `NextMessage` с числовым значением, то значение интерпретируется как уникальный идентификатор (UID) сообщения папки и компонент пытается найти следующее сообщение папки. Если такое сообщение найдено, то UID добавляется в Результирующий Набор Данных как элемент `messageJump`.

Если HTTP запрос имеет параметр `PrevMessage` с числовым значением, то значение интерпретируется как уникальный идентификатор (UID) сообщения папки и компонент пытается найти предыдущее сообщение папки. Если такое сообщение найдено, то UID добавляется в Результирующий Набор Данных как элемент `messageJump`.

Если HTTP запрос имеет параметр `NextUnread` и в папке содержится непрочитанное сообщение, то UID этого непрочитанного сообщения добавляется в Результирующий Набор Данных как элемент `messageJump`.

Если элемент messageJump не был добавлен в Результирующий Набор Данных, то компонент использует общий компонент Mailbox для обработки параметров HTTP запроса и для формирования результирующего набора данных.

Результирующий Набор Данных

`mailbox`
  строка с именем папки.
`mailboxClass`
  если этот строковый элемент существует, то в нём содержится имя папки.
`mailboxPage`
  этот строковый элемент содержит имя страницы wssp, которое должно использоваться для отображения такого класса папки.
`isSentBox`
  этот элемент существует и содержит строку YES, если текущая папка является папкой, выбранной для сохранения копий отправленных сообщений.
`isDraftsBox`
  этот элемент существует и содержит строку YES, если текущая папка является папкой, выбранной для сохранения черновиков сообщений.

Если найдено следующее, следующее непрочитанное или предыдущее сообщение:

`messageJump`
  строка с UID найденного сообщения.

Если следующее непрочитанное, следующее или предыдущее сообщение не запрашивалось в параметрах HTTP запроса или оно не было найдено:

`refreshTime`
  время обновления показа папки (в секундах), полученное из Настроек WebUser.
`listApproval`
  этот строковый элемент существует, если папка является папкой approval для списка рассылки. Этот элемент содержит адрес электронной почты этого списка рассылки.

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

Имя: `Contacts`, `wContacts`

Обрабатывается также, как страница Mailbox.

Имя: `Notes`, `wNotes`

Обрабатывается также, как страница Mailbox.

Имя: `Calendar`, `wCalendar`

HTTP запрос должен содержать параметр `Mailbox` - имя отображаемой Папки типа Календарь.

Действия

Для каждой папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта, эти параметры устанавливаются в соответствующие значения из Настроек WebUser. Объект также содержит номер месяца для "помесячного просмотра календаря". Первоначально его значение устанавливается равным текущему месяцу. Объект содержит номер дня, задающий первый день, который должен отображаться при просмотре календаря. Объект также содержит флаг "byDay", управляющий тем, как данные календаря сохраняются в наборе данных (по дням или по временным интервалам).

Параметр HTTP запроса `prevMonthlyCalendar` может задавать число месяцев, которое будет вычитаться из номера месяца при "помесячном просмотре календаря".

Параметр HTTP запроса `nextMonthlyCalendar` может задавать число месяцев, которое будет добавляться к номеру месяца при "помесячном просмотре календаря".

Параметр HTTP запроса `JumpDay` может задавать "номер дня в эпохе", задающий первый день, который должен отображаться при просмотре календаря.

Параметр HTTP запроса `byDay` может указывать новое значение флага byDay.

Параметры `Msg` HTTP запроса интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор сообщения в папке.

Если опция Способ Стирания установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Delete`, то "набор сообщений" создаётся с использованием параметров `Msg`, а сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка `Trash` не существует, то она будет создана.

Если HTTP запрос содержит параметры `read`, `unread`, `flag`, `unflag`, `delete` или `undelete`, то "набор сообщений" создаётся с использованием параметров `Msg` и у сообщений из набора сообщений изменяются соответствующие флаги. Параметры `delete` и `undelete` обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину`.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Purge`, то все сообщения папки, имеющие флаг `Deleted`, удаляются.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Результирующий Набор Данных

`mailbox`
  строка с именем папки.
`refreshTime`
  время обновления показа папки (в секундах), полученное из Настроек WebUser.
`weekDayNames`
  массив, содержащий строки с названиями дней недели, начиная со дня, заданного в Настройках WebUser как начало недели.
`todayDay`
  число месяца из текущей даты.
`todayMonth`
  текущий месяц.
`todayYear`
  текущий год.
`todayDayNum`
  "номер дня в эпохе" для текущего дня.
`monthlyCalendar`
  массив, содержащий один элемент для каждой недели из месяцев, отображаемых при "помесячном просмотре календаря". Каждый элемент недели является массивом из 7 элементов. Если элемент не соответствует дню месяца (то есть, элемент соответствует дню до первого дня месяца или дню после последнего дня месяца), то элемент является пустой строкой. В противном случае элемент является словарём, в котором содержатся следующие подэлементы:
  `day`
    строка с днём месяца, соответствующая этому элементу.
  `workDay`
    опциональная строка YES добавляется, если день является рабочим днём.
  `dayNum`
    "номер дня в эпохе" для этого дня.
`year`
  строка с номером года, которому принадлежит первый отображаемый день.
`byDay`
  опциональный элемент, содержащий строку YES. Он добавляется, если установлен флаг byDay.
`timeSlices`
  массив, содержащий временной период начал событий (встреч), если флаг byDay установлен. Каждый элемент является словарём, содержащим следующие значения:
  `hour`
    значение часов в 24-часовом формате.
  `PMhour`
    значение часов в 12-часовом формате, если значение часа 12 или выше.
  `minute`
    номер минуты. Всегда 2 цифры.
`calendarDays`
  массив, содержащий элементы просмотра календаря, если флаг byDay установлен. Каждый элемент является словарём, представляющим данные календаря для одного дня. В нём содержатся следующие элементы:
  `weekDay`
    имя дня недели этого дня
  `year`
    номер года, которому принадлежит этот день.
  `month`
    имя месяца, которому принадлежит этот день
  `day`
    номер дня в месяце.
  `dayNum`
    "номер дня в эпохе"
  `allDayEvents`
    опциональный массив, содержащий описатели для события (для встречи) на весь день для этого дня. Каждый элемент массива является словарём, в котором содержатся "элементы Встречи" (смотрите ниже))
  `events`
    массив, содержащий описатели встречи для этого дня. Каждый описатель соответствует одному временному интервалу; он является словарём, содержащим "элементы Встречи" (если в этом временном интервале есть Встреча) и следующие элементы:
    `nTimeSlices`
      длина временного интервала описателя, выраженная во временных интервалах.
    `conflicts`
      опциональный массив, содержащий UIDы других Встреч, конфликтующих с Встречей, отображаемой в этом временном интервале.
    `status`
      если временной интервал не содержит Встречи и не относится к "рабочему времени", то в этом элементе содержится строка `UNAVAILABLE`.
`calendarDays`
  массив, содержащий дни календаря, если флаг byDay не установлен. Каждый элемент является словарём, содержащим следующие значения:
  `weekDay`
    имя дня недели этого дня
  `year`
    номер года, которому принадлежит этот день.
  `month`
    имя месяца, которому принадлежит этот день
  `day`
    номер дня в месяце.
  `dayNum`
    "номер дня в эпохе"
`allDayEvents`
  массив, содержащий информацию о Встречах На Весь День, если флаг byDay не установлен. Массив имеет по одному элементу для каждого отображаемого дня. Этот элемент является пустой строкой, если в этот день отсутствует Встреча На Весь День, или он является массивом, содержащим подэлементы словаря для каждой происходящей в этот день Встречи На Весь День. Каждый подэлемент словаря содержит "элементы Встречи" для одной Встречи На Весь День.
`calendarSlices`
  массив, содержащий информацию для временного интервала, если флаг byDay не установлен. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
  `hour`
    значение часов в 24-часовом формате.
  `PMhour`
    значение часов в 12-часовом формате, если значение часа 12 или выше.
  `minute`
    номер минуты. Всегда 2 цифры.
  `days`
    массив с данными календаря для этого временного интервала в каждом дне. Каждый элемент является словарём с данными дня, содержащими "элементы Встречи" (если этот временной интервал содержит Встречу в этот день), а также содержащим следующие элементы:
    `nTimeSlices`
      длина временного интервала описателя, выраженная во временных интервалах.
    `conflicts`
      опциональный массив, содержащий UIDы других Встреч, конфликтующих с Встречей, отображаемой в этом временном интервале.
    `status`
      если временной интервал не содержит Встречи и не относится к "рабочему времени", то в этом элементе содержится строка `UNAVAILABLE`.

"Элементами Встречи" являются:

`summary`
  строка с текстом "Темы Встречи".
`ID`
  числовая строка с UID сообщения со Встречей в папке.
`status`
  строка со статусом занятости Встречи.
`priority`
  число со значением приоритета Встречи. Этот элемент существует, только если приоритет встречи не равен нулю.

Имя: `Tasks`, `wTasks`

HTTP запрос должен содержать параметр `Mailbox` - имя отображаемой Папки типа Задания.

Действия

Для каждой папки модуль создаёт объект сессии, в котором содержатся параметры просмотра Папки. При создании такого объекта, эти параметры устанавливаются в соответствующие значения из Настроек WebUser. Объект содержит номер дня, задающий первый день, который должен отображаться при просмотре Заданий.

Параметр HTTP запроса `JumpDay` может задавать "номер дня в эпохе", задающий первый день, который должен отображаться при просмотре Заданий.

Параметры `Msg` HTTP запроса интерпретируются как "элементы набора сообщений". Запрос может содержать несколько параметров и каждый параметр должен иметь числовое значение - Уникальный Идентификатор сообщения в папке.

Если опция Способ Стирания установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Delete`, то "набор сообщений" создаётся с использованием параметров `Msg`, а сообщения из набора сообщений копируются в папку Trash и удаляются. Если папка `Trash` не существует, то она будет создана.

Если HTTP запрос содержит параметры `read`, `unread`, `flag`, `unflag`, `delete` или `undelete`, то "набор сообщений" создаётся с использованием параметров `Msg` и у сообщений из набора сообщений изменяются соответствующие флаги. Параметры `delete` и `undelete` обрабатываются таким образом только в том случае, если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину`.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Если опция "Способ Стирания" в Настройках WebUser не установлена в значение `Перенести в Корзину` и HTTP запрос содержит параметр `Purge`, то все сообщения папки, имеющие флаг `Deleted`, удаляются.
Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

Параметр HTTP запроса `showCompleted` может указывать новое значение флага showCompleted.

Результирующий Набор Данных

`mailbox`
  строка с именем папки.
`refreshTime`
  время обновления показа папки (в секундах), полученное из Настроек WebUser.
`showCompleted`
  опциональный элемент, содержащий строку YES. Он добавляется, если установлен флаг showCompleted.
`numTotal`
  общее число записей типа календарь в папке.
`numSelected`
  общее число выбранных Заданий.
`tasks`
  массив с выбранными задачами. Каждый элемент является словарём, описывающим задачу. В нём содержатся следующие элементы:
  `nBefore`
    эта числовая строка существует, если Задание начинается после первоначального времени, отображаемого при просмотре Заданий. Она показывает, сколько временных периодов просмотра Заданий должно быть пропущено до начала Задания.
  `nDuration`
    эта числовая строка задаёт интервал времени (в периодах времени) между временем начала Задания или временем первого отображения Просмотра Задания (в зависимости от того, что наступает позже) и между сроком выполнения Задания или между временем последнего отображения Задания (в зависимости от того, что наступает раньше).
  `nAfter`
    эта числовая строка существует, если Задание заканчивается до времени окончания просмотра задания. Она показывает, сколько временных периодов просмотра Заданий должно быть пропущено после окончания Задания.
  `ID`
    строка с UID сообщения с Заданием в папке.
  `percentComplete`
    числовая строка со значением Процента Выполнения объекта Задания.
  `summary`
    строка с темой Задания.
  `priority`
    числовая строка с приоритетом Задания, если он был задан (не нулевой).

Имя: `Message`

HTTP запрос должен содержать параметр `Mailbox` - имя папки, содержащей отображаемые сообщения и параметр `MSG` - Уникальные Идентификаторы этих сообщений в папке.

Действия
  Если HTTP запрос содержит параметр `Copy` или параметр `Move`, а параметр `MailboxName` содержит имя какой-либо "выбираемой" папки, то сообщение копируется в указанную папку. Если был указан параметр `Move`, то сообщение помечается как удалённое или удаляется - в зависимости от Настроек WebUser.
  Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `MessageCopied`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.
  Если операция Move закончилась успешно, то в результирующий набор данных добавляется элемент `backToMailbox` со значением `YES` и компонент прекращает обработку запроса.

  Если HTTP запрос содержит параметр `Redirect` и параметр `RedirectAddresses` не является пустым, то сообщение перенаправляется на указанные адреса.
  Если HTTP запрос содержит параметр `ListApprove` и папка сообщений является папкой "approval" для какого-либо списка рассылки, то запрос обрабатывается как запрос `Redirect`, с фактическим адресом, являющимся адресом списка рассылки.
  Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `MessageRedirected`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Если HTTP запрос содержит параметр `TakeAddress`, то адрес `From:` сообщения добавляется в записную книгу Пользователя.

  Если HTTP запрос содержит параметр `TakeCertificate`, то сертификат из цифровой подписи сообщения добавляется в записную книгу Пользователя.

  Если HTTP запрос содержит параметр `StoreFiles` и параметр `selectedWebFolder` содержит имя папки Хранилища Файлов, то файловые части сообщения (приложения, изображения) сохраняются в указанную папку.
  Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `FilesCopied`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Если HTTP запрос содержит параметры `read`, `unread`, `flag`, `unflag`, `delete` или `undelete`, то у сообщения изменяются соответствующие флаги.
  Если эта операция не закончилась успешно, то в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Затем компонент использует общий компонент Message для обработки параметров HTTP запроса и для создания результирующего набора данных.

Результирующий Набор Данных
  `mailbox`
    Строка с именем папки.

  Если сообщение было удалено:
  `MSG`
    Строка с идентификатором сообщения (message UID).
  `flagged`, `recent`, `deleted`, `flagged`, `media`, `isDraft`
    Эти элементы со значением `Yes` добавляются, если сообщение имеет соответствующий флаг.
  `status`
    Этот строковый элемент имеет следующие значения:
    - `Deleted` - если у сообщения установлен флаг Deleted, иначе
    - `Draft` - если у сообщения установлен флаг Draft, иначе
    - `Redirected` - если у сообщения установлен флаг Redirected, иначе
    - `Unread` - если у сообщения не установлен флаг Seen, иначе
    - `Answered` - если у сообщения установлен флаг Answered, иначе
    - `Read`
  `messageBody`
    Строка с HTML представлением сообщения, созданная с использованием общего компонента Message.
  `charset`
    Кодировка, используемая для показа сообщения. Этот элемент может быть установлен общим компонентом Message.
  `nextMsg`
    этот элемент добавляется, если в просмотре папки есть следующее сообщение. Значением элемента является строка с UID следующего сообщения.
  `prevMsg`
    этот элемент добавляется, если в просмотре папки есть предыдущее сообщение. Значением элемента является строка с UID предыдущего сообщения.
  `hasFiles`
    этот строковый элемент `YES` добавляется, если в сообщении существует часть с файлом.
  `editableContact`
    этот строковый элемент `YES` добавляется, если сообщение является объектом VCard, который может быть изменён.
  `editableGroup`
    этот строковый элемент `YES` добавляется, если сообщение является объектом Группа, который может быть изменён.
  `editableNote`
    этот строковый элемент `YES` добавляется, если сообщение является объектом Заметка, который может быть изменён.
  `editableEvent`
    этот строковый элемент `YES` добавляется, если сообщение является Встречей, "опубликованной" этим пользователем, которая может быть изменена.
  `editableTask`
    этот строковый элемент `YES` добавляется, если сообщение является Заданием, "опубликованным" этим пользователем, которое может быть изменено.
  `canCancelEvent`
    этот строковый элемент `YES` добавляется, если сообщение является Встречей, которую этот пользователь может отменить.
  `canCancelTask`
    этот строковый элемент `YES` добавляется, если сообщение является Заданием, которое этот пользователь может отменить.
  `canAcceptDecline`
    этот строковый элемент `YES` добавляется, если сообщение является запросом на Встречу или Заданием.
  `percentComplete`
    этот элемент, содержащий число, добавляется, если сообщение является Заданием, назначенным этому пользователю кем-либо другим.
  `statusCode`
    этот опциональный элемент с типом строка содержит статус сообщения, если сообщение является Заданием или Встречей.
  `conflictingID`
    этот опциональный элемент с типом строка содержит UID сообщения в папке Календарь, используемой по умолчанию, которое конфликтует с показываемым Приглашением на Встречу.
  `canUpdatePartStatus`
    этот строковый элемент `YES` добавляется, если сообщение является ответом на Указание Задания или ответом на Приглашение на Встречу пользователя.
  `canCancelEvent`
    этот строковый элемент `YES` добавляется, если сообщение является Отменой Встречи от Организатора Встречи.
  `canCancelTask`
    этот строковый элемент `YES` добавляется, если сообщение является Отменой Задания от Организатора Задания.
  `listApproval`
    этот строковый элемент существует, если папка сообщения является папкой approval для списка рассылки. Этот элемент содержит адрес электронной почты этого списка рассылки.

Имя: `Compose`

Действия
  Если HTTP запрос содержит параметр `charset`, то значение параметра используется как желаемая кодировка - кодировка, которая будет использоваться при создании сообщения.

  Опциональный параметр `Operation` HTTP запроса указывает тип операции Создания и он может иметь значение `Reply`, `ReplyAll`, `Forward` или `EditDraft`.
  Если задан этот параметр, то должен быть указан также параметр `OrigMessage` (с UID оригинального сообщения) и параметр `OrigMailbox` (с именем папки, в которой содержится оригинальное сообщение).

  Если HTTP запрос содержит параметр Operation и он не содержит параметра `filled`, то поля заголовков оригинального сообщения используются для создания полей Тема, Кому, Копия и тела нового сообщения.
  В противном случае для данных нового сообщения используются параметры HTTP запроса `Subject`, `To`, `Cc`, `Bcc` и `Body`.

  Если HTTP запрос содержит параметр `AddressBook` и не содержит параметра `CloseBook` или если HTTP запрос содержит параметр `OpenBook`, то для обработки параметров запроса и для формирования некоторых элементов результирующего набора данных используется общий компонент AddressBook.

  Если HTTP запрос содержит параметр `isEvent`, то в Календаре создаётся запись о Встрече. Если HTTP запрос содержит параметр `isTask`, то в Заданиях создаётся запись о Задании. Если HTTP запрос содержит параметр `isNote`, то в Блокноте создаётся запись с Заметкой.

  Если HTTP запрос содержит параметр `Send`, то создаваемое сообщение передаётся в Очередь Сервера. Если HTTP запрос содержит параметр `Save`, то создаваемое сообщение сохраняется как Черновик в выбранной папке для Черновиков.
  В обоих случаях все параметры `Attachment` HTTP запроса добавляются к сообщению как вложения.

Результирующий Набор Данных
  `operation`
    Этот элемент добавляется в набор данных, если HTTP запрос содержит параметр `Operation`. Значение элемента равно значению параметра запроса.
  `origMessage`
    Этот элемент, содержащий UID оригинального сообщения, добавляется в результирующий набор данных, если HTTP запрос содержит параметр `OrigMessage`.
  `origMailbox`
    Этот элемент, содержащий UID оригинального сообщения, добавляется в результирующий набор данных, если HTTP запрос содержит параметр `OrigMessage`.
  `sentOrSaved`
    Этот элемент, имеющий значение `Yes`, добавляется в результирующий набор данных, если операция Send или SaveDraft Входа завершилась успешно. Если этот элемент добавляется:
    - Элемент `sent`, имеющий значение `Yes`, добавляется, если операция была операцией Send.
    - Элемент `messageCode` со значением `MessageSent` или `MessageSaved` добавляется в набор данных.
    - Элементы, перечисленные ниже, не добавляются в результирующий набор данных.
  `Subject`, `To`, `Cc`, `Bcc`
    Эти элементы содержат строки с текущими данными из полей заголовков.
  `From`
    Этот элемент содержит строку с адресом `От Кого`, указанным в Настройках WebUser.
  `addressBook`
    Этот элемент со значением `Yes` добавляется в результирующий набор данных, если HTTP запрос содержит параметр `AddressBook` и не содержит параметра `CloseBook` или если HTTP запрос содержит параметр `OpenBook`.
  `body`
    Этот строковый элемент содержит текст тела текущего сообщения.
  `mailerWidth`
    Этот строковый элемент содержит значение опции `MailerWidth` Настроек WebUser.
  `forwardedMessage`
    Этот опциональный элемент с типом строка содержит HTML представление оригинального сообщения. Этот элемент добавляется в результирующий набор данных, если параметр `Operation` HTTP запроса имеет значение `Forward`.
  `DSN`
    Этот элемент со значением `Yes` добавляется в результирующий набор данных, если HTTP запрос содержит параметр `DSN`.
  `SaveSent`
    Этот элемент со значением `Yes` добавляется в результирующий набор данных, если в Настройках WebUser содержится непустая опция `SentBox` и HTTP запрос не содержит параметра `Filled` или параметра `SaveSent`.
  `desiredCharset`
    Этот строковый элемент содержит название кодировки, используемой для создания сообщения.
  `charset`
    Этот элемент является строкой `UTF-8`, если опция `Использовать Unicode (UTF-8)` Настроек WebUser установлена в значение "Для Всего". В противном случае, этот элемент содержит такое же значение, как и элемент `desiredCharset` результирующего набора данных.
  `isEvent`
    Этот элемент, имеющий значение `Yes`, добавляется в результирующий набор данных, если запись была создана в Календаре как Встреча.
  `isTask`
    Этот элемент, имеющий значение `Yes`, добавляется в результирующий набор данных, если запись была создана в Календаре как Задание.
  `isNote`
    Этот элемент, имеющий значение `Yes`, добавляется в результирующий набор данных, если запись была создана как Заметка.

  Следующие элементы добавляются, если запись была создана как запись Календаря:
  `allDayEvent`
    Этот элемент, имеющий значение `Yes`, добавляется в результирующий набор данных, запись является Встречей На Весь День. Значение этого элемента управляется значением одноимённого параметра HTTP.

Имя: `MailboxSettings`

HTTP запрос должен содержать параметр `Mailbox` - имя папки, которой необходимо управлять.

Действия

  Если HTTP запрос содержит параметр `Remove`, то папка удаляется. Если HTTP запрос содержит также параметр `RemoveSub`, то все подпапки также удаляются.
  Если операция закончилась успешно и в Настройках WebUser выбрана опция "Показывать Все Подписанные Папки", то удаляемые папки убираются из списка подписки Пользователя.
  Если операция закончилась успешно, то элемент `removed` со строковым значением `Yes` добавляется в результирующий набор данных и компонент прекращает обработку запроса. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Если HTTP запрос содержит параметр `Rename` и параметр `NewName` не является пустым, то папка переименовывается. Значение параметра NewName преобразовывается в формат "UTF-7 Кодировка Имени Папки" и используется как новое имя папки.
  Если HTTP запрос также содержит параметр `RenameSub`, то переименовываются и все подпапки.
  Если операция закончилась успешно и в Настройках WebUser выбрана опция "Показывать Все Подписанные Папки", то папки переименуются также и в списке подписки Пользователя.
  Если операция закончилась успешно, то элемент `removed` со строковым значением `Yes` добавляется в результирующий набор данных и компонент прекращает обработку запроса. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Если HTTP запрос содержит параметр `Update`, то компонент получает из запроса все параметры `Acc`. Каждый параметр `Acc` должен иметь числовое значение. Для каждого полученного значения nnn параметра `Acc`, запрашивается параметр `Znnn`. Если он содержит непустую строку, то запрашиваются все параметры запроса `Knnn`, где K является буквой, обозначающей право доступа к папке.
  Список строк с именем `Znnn` с набором параметров `Knnn` используется для формирования и установления нового списка ACL (Списка Прав Доступа) для выбранной папки.
  Если операция изменения ACL закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `Updated`. В противном случае в результирующий набор данных добавляется элемент `errorCode`, содержащий строку с текстом кода ошибки операции.

  Если HTTP запрос содержит параметр `DeleteAll`, то все сообщения из папки удаляются с использованием метода, указанного в опции "Способ Стирания" в Настройках WebUser. Если операция закончилась успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `MessagesDeleted`.

Результирующий Набор Данных
  `renamed`
    Этот элемент, имеющий строковое значение `YES`, добавляется в набор данных, если папка была переименована. В этом случае никакие другие элементы не добавляются в результирующий набор данных.
  `removed`
    Этот элемент, имеющий строковое значение `YES`, добавляется в набор данных, если папка была удалена. В этом случае никакие другие элементы не добавляются в результирующий набор данных.
  `rights`
    Этот массив содержит элементы ACL папки (элементы Списка Прав Доступа к Папке). Каждый элемент массива является словарём, в котором содержатся следующие элементы:
    `ident`
      этот строковый элемент содержит элемент name ACL.
    `оглавление`
      этот строковый элемент содержит номер элемента в наборе ACL.
    `lookup`, `select`, `seen`, `flags`, `insert`, `post`, `create`, `delete`, `admin`
      эти элементы со строковым значением `Yes` добавляются, если элемент ACL включает в себя эти права доступа к папке.

Имя: `Alerts`

Этот компонент может вызываться неявно, если модуль Веб Приложения обнаруживает ожидающие сообщения с Предупреждениями.

Действия

  Если HTTP запрос содержит параметр `AlertTime`, то этот параметр должен содержать отметку о времени в формате ACAP. Компонент подтверждает все Предупреждения старше указанного времени.

  Если HTTP запрос имеет параметр `returnURL`, то значение параметра добавляется в Результирующий Набор Данных (как элемент `returnURL`).

Результирующий Набор Данных
  `alerts`
    Этот элемент добавляется в результирующий набор данных, если для пользователя сессии есть ожидающие его Предупреждения. Значением этого элемента является массив с элементами типа словарь; каждый элемент описывает одно сообщение предупреждения. Каждый словарь содержит следующие элементы:
    `time`
      Строковый элемент, в котором содержится время опубликования предупреждения.
    `text`
      Строковый элемент, в котором содержится текст сообщения предупреждения.
  `currentTime`
    Этот элемент добавляется в результирующий набор данных, если для пользователя сессии есть ожидающие его Предупреждения. Этот строковый элемент содержит текущее время в формате ACAP.
  `returnURL`
    Если страница с Предупреждениями была получена и показана автоматически, в то время как должна была быть показана какая-либо другая страница, то в этот строковый элемент помещается URL (преобразованный в корректный вид) этой другой страницы.

Имя: `Subscription`

Действия

  Если HTTP запрос содержит параметр `Open`, то значение параметра `MailboxName` конвертируется в формат "UTF-7 Кодировки Имени Папки", конвертированная строка добавляется в результирующий набор данных как элемент `jump` и обработка завершается.

  Если HTTP запрос содержит параметр `Update`:
  - Запрашиваются все параметры `Elem` запроса, преобразовываются в формат "UTF-7 Кодировки Имени Папки" и формируется новый список подписки Пользователя.
  - Запрашиваются все параметры запроса `AliasName`; они должны содержать числовые значения. Для каждого полученного числового значения nnn, запрашивается пара параметров `annn` и `mnnn`. Если оба параметра существуют и содержат непустые строки, то эти строки преобразовываются в формат "UTF-7 Кодировки Имени Папки" и используются для формирования нового набора Псевдонимов Папки Пользователя.
  - Если операция Subscription или операция изменения Псевдонимов Папки заканчивается неуспешно, то в результирующий набор данных добавляется элемент `errorCode`. В противном случае в результирующий набор данных добавляется элемент `messageCode` со строковым значением `Updated`.
Результирующий Набор Данных
  `jump`
    В этом параметре задаётся имя папки, которую надо открыть ("перейти в неё"). Если этот элемент существует, то следующие элементы к словарю не добавляются.
  `subscription`
    В этом массиве содержится список подписки Пользователя. Каждый элемент массива должен быть строкой с каким-либо именем папки.
  `aliases`
    Этот массив содержит список Псевдонимов Папки Пользователя. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
    `index`
      Строка с индексом элемента с Псевдонимом Папки.
    `name`
      Строка с именем Псевдонима Папки.
    `ref`
      Строка с именем папки, на которую указывает этот Псевдоним.

Имя: `Password`

Действия
  Если HTTP запрос содержит параметр `ModifyPassword`, то запрос также должен содержать параметр `OldPassword` и этот параметр должен соответствовать текущему паролю Пользователя. Если значение параметра `OldPassword` является корректным:
  - Значение параметра `RecoverPassword` запроса устанавливается как новое значение Установки `RecoverPassword` Пользователя. В результирующий набор данных добавляется элемент `messageCode` со строковым значением `Updated`.
  - Если Пользователю разрешено изменять пароль, то проверяются параметры `NewPassword1` и `NewPassword2`. Если они не пустые и соответствуют друг-другу, то пароль Пользователя изменяется с использованием значения этих параметров.

  Если изменение пароля завершилось успешно, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `PasswordChanged`. Если эта операция по изменению пароля закончилась неуспешно, то в результирующий набор данных добавляется элемент `errorCode`.

Результирующий Набор Данных
  `RecoverPassword`
    Этот строковый элемент содержит значение Установки `RecoverPassword` Пользователя.

Имя: `PublicInfo`

Действия

  Если HTTP запрос содержит параметр `Update`, то запрос также должен содержать ноль, один или несколько параметров `ID`, каждый из которых имеет числовое значение. Для каждого параметра ID, его числовое значение nnn используется для получения пары строковых параметров `Nnnn` и `Vnnn`. Значение параметра `Nnn` указывает на имя настройки Пользователя "О Себе" (настройка Публично Доступные), а значение параметра `Vnnn` указывает на значение этой настройки. Эти пары используются для установки новых значений настроек Публично Доступные Пользователя. Если в качестве значения настройки указана пустая строка, то настройка удаляется из Настроек Пользователя.

  Если настройки "О Себе" (Публично Доступные) были успешно изменены, то в результирующий набор данных добавляется элемент `messageCode` со строковым значением `Updated`. Если эта операция по изменению пароля закончилась неуспешно, то в результирующий набор данных добавляется элемент `errorCode`.

Результирующий Набор Данных
  `publicInfo`
    Этот массив элементов содержит набор элементов "Публично Доступные". Он содержит один элемент для каждой Публично Доступной Настройки, задаваемой в установках Центрального Справочника. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
    `id`
      этот строковый элемент содержит номер элемента в наборе.
    `name`
      этот строковый элемент содержит имя настройки О Себе (Публично Доступные.
    `value`
      этот строковый элемент содержит текущее значение настройки Публично Доступные. Этот элемент существует, только если у Пользователя имеются настройки "О Себе".

Имя: `WebSite`

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

Результирующий Набор Данных
  `fileRef`
    Строка `WebFile/`.
  `pageRef`
    Строка `website.wssp`.

Имя: `Bye`

Действия
  Компонент удаляет старые сообщения из Корзины (задаваемой в настройках WebUser) и закрывает сессию. Сессия будет уничтожена, как только этот HTTP запрос будет обработан, так что страница `bye.wssp` сможет использовать данные сессии, но создаваемый ею HTML код не должен содержать ссылки на объекты в сессии.
Результирующий Набор Данных
  `blockAlerts`
    Этот элемент имеет строковое значение `Yes`. Он добавляется в результирующий набор данных для предотвращения обработки Предупреждений.

## Общие Компоненты

Модуль Веб Приложения имеет несколько общих компонентов, используемых как для обработки запросов, независимых от состояния, так и для обработки сессионных запросов.

Общий компонент `Mailbox`

Действия
  Если HTTP запрос содержит параметры `Filter`, `Search`, `Limit`, то значения этих параметров используются для изменения "просмотра" папки - текущих значений Filter, Search, Limit.

  Если существует параметр `Skip` HTTP запроса, то он должен иметь числовое значение. Это число используется для задания текущего индекса первого сообщения - номера первого сообщения, отображаемого на странице.

  Если HTTP запрос содержит параметр `Next`, то текущий индекс первого сообщения увеличивается на текущее значение Limit.

  Если HTTP запрос содержит параметр `Prev`, то текущий индекс первого сообщения уменьшается на текущее значение Limit.

  Если HTTP запрос содержит параметр `Sort`, то его числовое значение указывает номер столбца, по которому проводится сортировка (для просмотра папки, отсортированной по первому столбцу, параметр `Sort` должен иметь значение 0).

  Если HTTP запрос содержит параметр `SDir`, то его числовое значение определяет порядок сортировки: значение 1 устанавливает сортировку по возрастанию, значение 0 - сортировку по убыванию, значение -1 - меняет текущий порядок сортировки.

Результирующий Набор Данных
  `checkAll`
    Этот элемент имеет строковое значение `CHECKED`. Он добавляется в результирующий набор данных, если HTTP запрос содержит параметры `MarkAll`.
  `filter`
    Строковое значение этого элемента является текущей строкой Filter.
  `search`
    Строковое значение этого элемента является текущей строкой Search.
  `limit`
    Строковое значение этого элемента является текущим значением Limit (числом).
  `sentBox`
    Этот элемент имеет строковое значение `Yes` и существует, только если эта папка является папкой для `отправки` сообщений.
  `headers`
    Массив значений этого элемента содержит заголовки столбцов для просмотра папки. Каждый элемент массива является словарём, в котором содержатся следующие элементы:
    `index`
      Этот строковый элемент содержит номер столбца.
    `name`
      Этот строковый элемент содержит имя столбца.
    `hilited`
      Этот элемент имеет строковое значение `Yes` и существует, только если этот столбец является столбцом, по которому производится сортировка.
    `sdir`
      Если этот столбец не является столбцом, по которому производится сортировка, то этот элемент содержит текущий порядок сортировки (`0` или `1`). Если этот столбец является столбцом, по которому производится сортировка, то этот элемент содержит обратный к текущему порядок сортировки (`1 - текущий порядок сортировки`).
    `ralign`
      Этот элемент имеет строковое значение `Yes` и существует, только если этот столбец является столбцом с датой или размером и, следовательно, для него требуется обратное горизонтальное выравнивание.
  `messages`
    Массив значений этого элемента содержит данные для просмотра папки. Каждый элемент массива является словарём с данными сообщения и он содержит следующие элементы:
    `id`
      этот элемент содержит Уникальный Идентификатор сообщения(UID)
    `color`
      если сообщение имеет поле заголовка `X-Color` с корректной HTML строкой для "цвета", то этот элемент существует и содержит значение этого поля заголовка.
    `notText`
      этот опциональный элемент имеет строковое значение `Yes`; он существует, только если сообщение не является текстовым (Content-Type сообщения не имеет значения `text`).
    `notAltText`
      этот опциональный элемент имеет строковое значение `Yes`; он существует, только если сообщение не является текстовым (Content-Type сообщения не имеет значения `text`) и Content-Type/Subtype не является `multipart/alternative`.
    `fields`
      элементы этого массива содержат данные столбцов сообщения. Эти столбцы хранятся в том же порядке, что и столбцы в элементах `заголовков` результирующего набора данных. Каждый элемент является словарём. В нём содержатся следующие элементы:
      `hilited`
        Этот элемент имеет строковое значение `Yes` и существует, только если этот столбец является столбцом, по которому производится сортировка.
      `sdir`
        Если этот столбец не является столбцом, по которому производится сортировка, то этот элемент содержит текущий порядок сортировки (`0` или `1`); если этот столбец является столбцом, по которому производится сортировка, то этот элемент содержит обратный к текущему порядок сортировки (`1 - текущий порядок сортировки`).
      `ralign`
        Этот элемент имеет строковое значение `Yes` и существует, только если этот столбец является столбцом с датой или размером и, следовательно, для него требуется обратное горизонтальное выравнивание.
      `isRef`
        Этот элемент существует для выбранного столбца и для первого "кликабельного" столбца. Если он существует, то он содержит строку `YES`.
      `value`
        Этот элемент содержит данные столбца. Он существует для всех столбцов, кроме столбца Состояние. Элементы в столбцах Записано и Отправлено содержат значения "даты" - значения такого типа могут показываться при помощи префиксов `DATE:`, `DATETIMESHORT` и им подобных.
      `isStatus`
        Строковый элемент со значением `"YES"` существует, если столбец является Состоянием.
      `isDate`
        Строковый элемент со значением `"YES"` существует, если столбец является столбцом Записано или Отправлено и `значение` элемента содержит значение типа "дата".
      `isPty`
        Строковый элемент со значением `"YES"` существует, если столбец является столбцом Важн (Важность).
      `status`
        Этот элемент существует, если столбец является Состоянием. Если он существует, то он содержит одну из следующих строк:
        - `Deleted` - если у сообщения установлен флаг Deleted, иначе
        - `Draft` - если у сообщения установлен флаг Draft, иначе
        - `Redirected` - если у сообщения установлен флаг Redirected, иначе
        - `Unread` - если у сообщения не установлен флаг Seen, иначе
        - `Answered` - если у сообщения установлен флаг Answered, иначе
        - `Read`
      `flagged`
        Этот элемент существует, если столбец является Состоянием и сообщение имеет флаг Flagged. Если он существует, то он содержит строку `YES`.
      `recent`
        Этот элемент существует, если столбец является Состоянием и сообщение имеет флаг Recent. Если он существует, то он содержит строку `YES`.
      `hidden`
        Этот элемент существует, если столбец является Состоянием и сообщение имеет флаг Hidden. Если он существует, то он содержит строку `YES`.
      `media`
        Этот элемент существует, если столбец является Состоянием и сообщение имеет флаг Media. Если он существует, то он содержит строку `YES`.
  `firstNumber`
    Этот строковый элемент содержит номер первого сообщения в просмотре.
  `firstNumber1`
    Этот строковый элемент содержит номер первого сообщения в просмотре, увеличенный на 1.
  `lastNumber`
    Этот строковый элемент содержит номер первого сообщения в просмотре, увеличенный на число элементов массива `messages`, если массив не является пустым, или увеличенный на 1, если массив `messages` является пустым.
  `numTotal`
    Общее число сообщений в этой папке.
  `numUnread`
    Общее число непрочитанных сообщений в этой папке (сообщений, не имеющих флага Seen).
  `numSelected`
    Общее число сообщений папки, которое может быть показано с текущими значениями Filter и Search.
  `multiPage`
    Этот элемент, имеющий строковое значение `YES`, добавляется, если значение `nSelected` не равно числу элементов массива `messages`.
  `sortColumn`
    Этот элемент содержит номер текущего столбца сортировки.
  `sortAscending`
    Этот элемент содержит `1` если текущий порядок сортировки является по возрастанию, и `0`, если текущий порядок является порядком по убыванию.

Общий компонент `Message`

Общий компонент Message используется для преобразования сообщения в формате RFC822 в HTML текст. Он обрабатывает как простые сообщения, так и сообщения, имеющие несколько частей - вложения, подписи, вложенные изображения и другие части. Для того, что бы построить HTML представление, компонент использует Компоненты для Изображения Сообщений.

## Компоненты для Изображения Сообщений

Модуль Веб Приложения может показывать изображения, преобразовывая их в текст языка разметки (HTML). Эта обработка управляется самим модулем Приложения. Он определяет MIME структуру сообщения, и рекурсивно обрабатывает каждую часть. Для каждой части создаётся набор данных и используется .wssp файл для создания представления на языке разметки.

Компоненты для Изображения Сообщений не производят никаких действий.

Результирующий Набор Данных, создаваемый каждым компонентом для Изображения Сообщений, включает в себя следующие поля:

`MIMEPart`
  этот строковый элемент содержит URL на сообщение или на часть сообщения, для которого создаётся изображение.
`filesRef`
  этот строковый элемент содержит префикс URL, необходимый для получения файлов из правильного Вида Интерфейса. Когда в ходе какой-либо Сессии WebUser создаётся вид изображения сообщения, эта строка совпадает со строкой `SESSION(filesRef)`.
`isWML`
  этот строковый элемент существует и содержит строку `YES`, если сообщение должно быть показано с использованием языка разметки WML.
`printVersion`
  этот строковый элемент существует и содержит строку `YES`, если сообщение должно быть показано в виде, подходящем для распечатки.

Реализованы следующие компоненты для Изображения Сообщений:

Имя: `RFC822Message`

Этот компонент используется для создания изображения почтового сообщения - сообщения, хранящегося в папке или для создания изображения MIME части `message/rfc822` какого-либо другого сообщения.

Результирующий Набор Данных

`RFC822Header`
  этот строковый элемент содержит представление на языке разметки для RFC822 заголовка.
`RFC822Body`
  этот строковый элемент содержит представление на языке разметки для RFC822/MIME тела сообщения.
`isSubPart`
  этот элемент существует и имеет строковое значение YES, если сообщение является MIME-частью какого-либо другого сообщения.

Имя: `RFC822Header`

Этот компонент используется для построения изображения RFC822 заголовка почтового сообщения.

Результирующий Набор Данных

`RFC822Fields`
  этот элемент является массивом с одним элементом типа словарь для каждого "видимого" поля в заголовке. Каждый словарь содержит следующие элементы:
  `name`
    этот строковый элемент содержит имя поля заголовка.
  `value`
    этот строковый элемент содержит MIME-декодированное значение поля.

Имя: `AttachmentPart`, `ImagePart`

Этот компонент используется для построения изображения картинки или файла с приложением. Изображения и приложения могут быть как отдельными частями MIME, так и встроенными в текстовую часть при помощи UUENCODE кодирования.

Результирующий Набор Данных

`attachmentName`
  Эта строка содержит имя файла, так, как оно хранится в данных сообщения.
`fileName`
  Эта строка содержит "очищенное" имя файла (с удалённым путём и добавленным, при необходимости, суффиксом для файла с изображением).
`embeddedPart`
  если этот строковый параметр существует, то в данные UUENCODE "вложен" файл и строка указывает номер встроенного компонента внутри MIME части.
`decodedSize`
  этот строковый элемент содержит "приблизительный" размер декодированных данных файла.

Имя: `DeliveryReportPart`

Этот компонент используется для построения изображения MIME части `message/report`.

Результирующий Набор Данных

`MessageFields`
  а этом массиве содержится по одному элементу типа словарь для каждого поля уведомления уровня сообщения. Каждый словарь содержит следующие элементы:
  `name`
    этот строковый элемент содержит имя поля уведомления.
  `value`
    этот строковый элемент содержит MIME-декодированное значение поля уведомления.
`Reports`
  в этом массиве содержится по одному элементу типа массив для каждого уведомления получателя. Каждое уведомление получателя является массивом, в котором содержится по одному элементу типа словарь для каждого поля уведомления уровня получателя. Каждый словарь содержит следующие элементы:
  `name`
    этот строковый элемент содержит имя поля уведомления.
  `value`
    этот строковый элемент содержит MIME-декодированное значение поля уведомления.

Имя: `DispositionReportPart`

Этот компонент используется для построения изображения MIME части `message/disposition-notification`.

Результирующий Набор Данных

`fields`
  а этом массиве содержится по одному элементу типа словарь для каждого поля уведомления уровня сообщения. Каждый словарь содержит следующие элементы:
  `name`
    этот строковый элемент содержит имя поля уведомления.
  `value`
    этот строковый элемент содержит MIME-декодированное значение поля уведомления.

Имя: `EncryptedPart`

Этот компонент используется для построения изображения зашифрованной MIME части.

Результирующий Набор Данных

`decryptedPart`
  этот массив содержит представленное при помощи языка разметки расшифрованное содержимое. Этот элемент существует, только если расшифровка прошла успешно.
`decryptionErrorCode`
  если этот строковый элемент существует, то в нём содержится сообщение об ошибке, объясняющее причину неуспешной расшифровки.
`cipherName`
  Этот строковый элемент содержит название шифра, использованного для зашифровки содержимого.
`keyLength`
  Этот строковый элемент содержит размер ключа шифрования (в битах).

Имя: `SignedPart`

Этот компонент используется для построения изображения подписанной MIME части.

Результирующий Набор Данных

`signedPart`
  этот массив содержит представленное при помощи языка разметки подписанное содержимое. Этот элемент существует, только если проверка подписи прошла успешно.
`encoding`
  этот строковый элемент содержит слова "Binary" или "Text", в зависимости от формата подписанной части.
`decryptionErrorCode`
  если этот строковый элемент существует, то в нём содержится сообщение о ошибке, объясняющее причину неуспешного декодирования подписи.
`digesterName`
  Этот строковый элемент содержит название алгоритма, используемого для создания "дайджеста" сообщения (цифровой подписи сообщения).
`signatures`
  Если этот массив существует, то подписанное содержимое было проверено при помощи как минимум одной цифровой подписи. Каждый элемент этого массива является словарём с данными подписи. Эти словари содержат следующие элементы:
  `contact`
    этот строковый элемент содержит адрес электронной почты подписавшего
  `commonName`
    этот строковый элемент содержит "настоящее имя" подписавшего.
  `Country`, `Province`, `Organization`, `Unit`
    эти опциональные строковые элементы содержат дополнительную информацию о подписавшем.

Имя: `CalendarPart`

Этот компонент используется для построения изображения iCalendar части.

Результирующий Набор Данных

`Summary`, `Location`, `Comment`
  эти строковые элементы содержат данные атрибутов iCalendar.
`Priority`
  эта числовая строка содержит элемент iCalendar со значением атрибута `PRIORITY`.
`dateFrom`
  этот элемент с датой содержит элемент iCalendar со значением атрибута `DTSTART`.
`method`
  этот строковый элемент содержит объект параметр METHOD объекта iCalendar.
`description`
  этот строковый элемент содержит форматированное значение атрибута `DESCRIPTION`.
`organizer`
  в этом опциональном элементе типа словарь содержится атрибут `ORGANIZER`. Этот словарь может содержать различные параметры, заданные для этого атрибута ("cn" и т.д.). Адрес электронной почты (значение) атрибута доступно как элемент `theValue` этого словаря.
`attendees`
  этот опциональный массив содержит элементы типа словарь для каждого атрибута `ATTENDEE`. Каждый словарь может содержать различные параметры, заданные для этого атрибута ("cn", "role" и т.д.). Адрес электронной почты (значение) атрибута доступно как элемент `theValue` этого словаря.
`isEvent`
  этот строковый элемент существует и содержит строку YES, если элементом iCalendar является VEVENT. Следующие опциональные элементы могут существовать только если этот элемент isEvent существует:
  `allDayEvent`
    этот опциональный элемент существует и содержит строку YES, если VEVENT является Встречей На Весь День.
  `recurrence`
    этот опциональный элемент существует и содержит строку YES, если VEVENT является повторяющимся Событием (Встречей).
  `duration`
    этот опциональный числовой элемент существует и содержит продолжительность События (Встречи) в секундах, если VEVENT является повторяющимся Событием (Встречей).
  `dateTill`
    этот опциональный элемент существует и содержит строку "последнюю дату" События (Встречи), если Событие (Встреча) не является повторяющимся и если оно не является однодневным Событием (Встречей) На Весь День.
  `busyStatus`
    этот опциональный элемент с типом строка содержит статус События (Встречи), если методом iCalendar является PUBLISH.
`isTask`
  этот строковый элемент существует и содержит строку YES, если элемент iCalendar является VTODO. Следующие опциональные элементы могут существовать, только если существует элемент isTask:
  `dateTill`
    этот опциональный элемент содержит "срок" для VTODO.
  `percentComplete`
    эта числовая строка содержит значение атрибута VTODO PERCENT-COMPLETE.

Имя: `vCardPart`

Этот компонент используется для построения изображения vCard части.

Результирующий Набор Данных

`FN`
  этот строковый элемент содержит форматированное значение атрибута vCard Name.
`UID`
  этот строковый элемент содержит значение атрибута vCard UID.
`REV`
  этот элемент с датой содержит значение атрибута vCard REV.
`elements`
  этот опциональный массив содержит элементы типа словарь для других атрибутов vCard. Каждый словарь содержит следующие элементы:
  `name`
    строка с именем атрибута vCard
  `value`
    значение элемента vCard. Значение может быть словарём или массивом с элементами типа словарь, если vCard имеет несколько атрибутов с одинаковым именем. Каждый словарь содержит параметры атрибута и значение атрибута как элемент `theValue`.

## Ответ типа Redirect

Сессионные запросы и запросы, независимые от Состояния, обрабатываются с использованием WSSP файлов, создающих документы на языке разметки. До отправки этих документов браузеру клиента, проверяются их первые строки. Если первая строка документа начинается с тэга <REDIRECT>, то остальная часть документа интерпретируется как URL.

Сервер возвращает код ответа 301 ("Передвинуто") с заголовком Location, содержащим указанный URL.

Сервер также обрабатывает тэг <RELREDIRECT> в начале документа. Он обрабатывается так же, как тэг <REDIRECT>, но URL, помещаемый в заголовок Location, имеет префикс http или https, а имя сервера (опционально с номером порта) берётся из URL запроса.

## CG/PL Приложения

Сессионные запросы и запросы, независимые от Состояния, могут быть обработаны с использованием CG/PL приложений (в отличие от компонентов, встроенных в Сервер). Эти CG/PL приложения называются Веб Приложениями.

Запрос, независимый от Состояния, обращающийся к ресурсу `/programName.wcgp` или `/programName.wcgp/some_url` заставляет Сервер загрузить из выбранного Вида Интерфейса файл `programname.wcgp` - CG/PL приложение.
Если это приложение осуществляет некоторый вывод, то он возвращается браузеру криента, в противном случае возвращается ошибка 404 Not Found.

Приложение может быть запущено при обращении к ресурсу `/auth/programName.wcgp` или `/auth/programName.wcgp/some_url`. Такой HTTP запрос сначала аутентифицируется, а затем приложение выполняется от имени аутентифицированного Пользователя.

Приложение может быть запущено при обращении к ресурсу `/sys/programName.wcgp`. Приложение выполняется в Общей для Кластера или Общей для Сервера среде Безымянного Вида Интерфейса от имени Пользователя `postmaster` Главного Домена. Выполняется раздел кода `sysEntry` файла programName.wcgp.

Сессионные запросы, обращающиеся к `/programName.wcgp` в Сессии (область `/Session/sessionID/`) приводят к тому, что Сервер загружает из Вида Интерфейса Сессии файл `programname.wcgp` - CG/PL приложение.
Поддреживаются только следующие HTTP запросы: `GET`, `POST` и `HEAD` .
Если это приложение осуществляет некоторый вывод, то он возвращается браузеру криента, в противном случае возвращается ошибка 404 Not Found.
Приложение выполняется от имени того Пользователя, которому принадлежит эта Сессия.

Когда CG/PL модуль загружается для обработки HTTP запроса, то выполняется точка входа `main` модуля.

Веб Приложения могут использовать поддерживаемую в CG/PL возможность внешнего объявления. Когда вызывается раздел кода (процедура или функция), объявленный как внешний, то из текущего Вида Интерфейса загружается файл с именем раздела кода и расширением `.wcgi`. Код программы в этом файле должен содержать раздел кода с указанным именем и требуемым типом (процедуру или функцию).
Код программы в `.wcgi` файле может содержать также и другие разделы кода.

В CG/PL Веб Приложении могут использоваться следующие встроенные процедуры и функции.

### HTTP Ввод

`GetHTTPParameter(name,index)`
  Эта функция получает параметр HTTP запроса. Параметры HTTP запроса включают параметры URL и/или поля формы.
  Значение name должно быть строкой, задающей имя параметра запроса.
  HTTP запрос может содержать несколько параметров с одинаковым именем. Значение index должно быть числом, указывающим, какой параметр с указанным именем должен быть получен.
  Если HTTP запрос содержит параметр `FormCharset`, то его значение интерпретируется как имя кодировки. Функция конвертирует необработанные данные параметра в кодировку UTF-8. Если параметр `FormCharset` отсутствует, то предполагается, что необработанные данные параметра закодированны в кодировке UTF-8.
  Если в значении параметра содержится несколько строк, то символы EOL (разделители строки) конвертируются согласно правил, принятых для ОС Сервера.
  Эта функция возвращает строку, содержащую значение параметра. Если параметр с указанным именем и номером не найден, то эта функция возвращает нулевое значение.
`GetHTTPBinaryParameter(name,index)`
  Эта функция получает необработанные данные параметра HTTP запроса.
  Эта функция возвращает блок данных, в котором содержится значение параметра. Если параметр с указанным именем и номером не найден, то эта функция возвращает нулевое значение.
`GetHTTPField(name)`
  Эта функция получает поле name HTTP запроса.
  Поддерживаются следующие поля: `Authorization`, `Referer`, `Destination`, `Cookie`, `User-Agent`, `Host`.
  Если значением `name` является пустая строка, то возвращается URL HTTP запроса (без опциональных параметров URL).
  Если значением `name` является строка `Schema`, то возвращается использованная схема URL запроса (строка `http` или `https`).
  Если указанное имя поле не входит в поддерживаемый набор или если запрос не содержит указанного поля, то эта функция возвращает нулевое значение.
`GetHTTPQuery()`
  Эта функция получает строку параметров из URL HTTP запроса.
  Если URL запроса не содержит параметров, то функция возвращает нулевое значение.
`GetHTTPMethod()`
  Эта функция возвращает строку с методом HTTP запроса (GET, POST и т.п.).
`GetHTTPType()`
  Эта функция получает Тип Содержимого (Content type) тела HTTP запроса.
`GetHTTPSubtype()`
  Эта функция получает Подтип Содержимого (Content subtype) тела HTTP запроса.
`GetHTTPData(name)`
  Эта функция получает тело HTTP запроса.
  Если подтипом содержимого тела запроса является `xml` или подтип оканчивается на `+xml`, то функция пытается пробразовать содержимое тела в XML и вернуть XML объект.
  Если типом содержимого тела запроса является `text`, то функция конвертирует тело содержимого в UTF-8 и возвращает строку.
  В противном случае функция возвращает блок данных.
  Если операция конвертирования закончилась неуспешно, а также если тело запроса отсутствует или слушком длинное, то функция возвращает нулевое значение.

### HTTP Вывод

`SetHTTPResponseData(data)`
  Эта процедура задаёт тело HTTP ответа.
  Значение data должно быть строкой, блоком данных, словарём или XML Объектом.
`SetHTTPResponseType(mimeType,subtype)`
  Эта процедура устанавливает значение поля Content-Type HTTP ответа.
  Значение mimeType и subtype должны быть строками, содержащими корректные элементарные объекты MIME.
`SetHTTPResponseCode(code)`
  Эта процедура задаёт код HTTP ответа.
  Значенем code должно быть число из диапазона 200..999.
`RemoteIPAddress()`
  Эта функция возвращает объект типа IP адрес, содержащий IP адрес, с которого был получен HTTP запрос.
`ProxiedIPAddress()`
  Если HTTP запрос поступил через какой-либо внешний HTTP прокси, то эта функция возвращает оригинальный IP адрес Клиента. В противном случае функция возвращает нулевой объект.
`AddHTTPResponseField(fieldName,fieldValue)`
  Эта процедура добавляет поле в HTTP ответ.
  Значения fieldName и fieldValue должны быть строками.
`ProcessWSSP(pageName,resultSet)`
  Эта процедура формирует тело HTTP ответа, используя указанную страницу WSSP и результирующий набор данных.
  Значение pageName должно быть строкой с именем страницы (без суффикса `wssp`). Эта страница берётся из текущего выбранного Вида Интерфейса.
  Значение resultSet должно быть словарём. Сервер изменяет этот словарь, добавляя обрабатываемые общие Сессионные или независимые от состояния элементы (смотрите выше), а затем передаёт его интерпретатору WSSP.
  Получившаяся страница выступает в качестве тела HTTP ответа.

### Данные Сессии

Функции и процедуры, перечисленные в этом разделе, доступны только для Сессионных HTTP запросов.

`SessionData()`
  Эта функция возвращает словарь Набор Данных Сессии.

Руководство CommuniGate® Pro. Copyright © 1998-2009, Stalker Software, Inc.