CommuniGate Pro
Версия 5.2
Программы
 
 
 
WebApp

Веб Приложения

Модуль Веб Приложения 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.


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

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

Программное обеспечение 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. В нём также указывается, как каждый компонент обрабатывает параметры отправляемой ему формы и какие данные включаются в создаваемые компонентом наборы данных.


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

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

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

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

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

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

 ИмяРазмерОбновлено
Help.gif15525-Сен-06
defaultaddressbook.wssi114323-Сен-06
defaultalerts.wssp172726-Сен-07
defaultansweredletter.gif89027-Фев-06
defaultattachedFile.gif114727-Фев-07
...
defaultmailbox.wssp580628-Сен-06
mailboxes.wssp345202-Окт-06
...
defaultstrings.data28K27-Окт-06
defaultgerman.data31K28-Окт-06
...
defaultwebsite.wssp59228-Сен-06
defaultwebsitebody.wssi264828-Сен-06

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Модуль Веб Приложения 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 для обра