Итак, мы рассмотрели архитектуру приложения, базу данных, поль¬зовательский интерфейс и серверные сценарии, и настало время свя¬зать все компоненты воедино с помощью JavaScript. Для начала опре¬делим несколько констант. В первую очередь опишем константы, оп¬ределяющие местоположение различных ресурсов, которые понадо¬бятся приложению AjaxMail:
var sAjaxMailURL = "AjaxMailAction.php";
var sAjaxMailNavigateURL = "AjaxMailNavigate.php";
var sAjaxMailAttachmentURL = "AjaxMailAttachment.php";
var sAjaxMailSendURL = "AjaxMailSend.php";
var slmagesDir = "images/";
var sRestorelcon = slmagesDir + "icon_restore.gif"; 'var sDeletelcon = slmagesDir + "icon_delete.gif"; var slnfolcon = slmagesDir + "icon_info.gif"; var sErrorlcon = slmagesDir + "icon_alert.gif";
var aPreloadimages = [sRestorelcon, sDeletelcon, slnfolcon, sErrorlcon];
Первый фрагмент кода определяет несколько URL, по которым! выполняться запросы к серверу. Они понадобятся позднее для i грации технологии Ajax в интерфейс приложения. Второй фр определяет имена файлов с изображениями, которые будут вые в качестве элементов интерфейса, и помещает их в массив с aPreloadlmages. Эти изображения будут предварительно за и сохранены на стороне клиента для ускорения реакции интер
for (var i=0; i < aPreloadlmages.length; i++) { var olmg = new ImageO; olmg.src = aPreloadImages[i]; ,
В этом фрагменте задействован объект класса Image, который : представляет собой невидимый элемент . Не все эти изобр нужны сразу после загрузки, поэтому большинство из них по; нию были бы загружены, когда они потребуются в первый раз. жет привести к задержкам, которые, скорее всего, неприятны i вателю. Предварительная загрузка изображений решает эту i
Далее следуют определения некоторых сообщений, отобра ред пользователем. Этот прием упрощает смену сообщений, > возникнет необходимость:
var sEmptyTrashConfirm =
"Сообщения, удаляемые из Корзины; нельзя будет восстановить. Продолжить?";
var sEmptyTrashNotice = "Корзина очищена."; var sDeleteMailNotice = "Сообщение было перемещено в Корзину."; var sRestoreMailNotice = "Сообщение было перемещено в папку Входящие.' var sRestore = "Восстановить"; var sDelete = "Переместить в Корзину"; var sTo = "Кому "; var sCC = "Копия "; var sBCC = "Скрытая копияС ";
var sFrom = "От "; . • .
При отображении одного из уведомлений необходимо, чтобы < валось на экране непродолжительное время, не раздражало i теля и подходило по смыслу к текущему содержимому экрана. I целью определена переменная IShowNoticeTime, которая задает i жительность (в миллисекундах) отображения уведомления на i По умолчанию принято значение 5 секунд (5000 миллисекунд):
var IShowNoticeTime = 5000;
И последнее, что требует предварительного объявления, - это i ко констант и массив:
var INBOX = 1;
В данном фрагменте первые две переменные являются константами, которые определяют числовые идентификаторы для папок Inbox и Trash. Они совпадают с числовыми идентификаторами этих папок в базе дан¬ных. Массив строк содержит названия папок, таким образом, отпадает необходимость обращаться к базе данных, чтобы получить название цапки по ее числовому идентификатору. Первая строка в массиве пус¬тая, поскольку она никогда не будет использоваться в программе. (В базе данных нет папки с числовым идентификатором, равным 0.)
В реальном приложении значения этих переменных желательно получать с помощью серверного сценария, который прочитает эти значения из ба¬зы данных и преобразует их в соответствующий код JavaScript Однако для упрощения данного примера эти значения жестко зашиты прямо в код JavaScript