Технология Версия 2.5 |
Все права на технологию Optimizer ä принадлежат компании Гарант-Парк-Интернет Москва, 2002 |
Optimizer поставляется в виде двух основных программных компонент.
q <prefix>_mso25_se. DLL – клон ядра Optimizer. Поставляется в скомпилированном виде.
q Gp_<Prefix>_mso25_se. DLL – WebClass-обертка для вызова ядра. Поставляется в исходном виде.
Для расширения возможностей проекта, созданного на базе Optimizer есть два подхода:
q Создание обработчиков собственных команд.
q Создание обработчиков специализированных действий.
Для этого разработчик должен обладать следующей квалификацией:
q Знание Visual Basic 6.0.
q Владение созданием IIS приложений с помощью технологии WebClasses VB 6.0 (http://msdn. microsoft. com/library/default. asp? url=/library/en-us/vbcon98/html/vbcondevelopingiisapplications. asp)
q Знание SQL 2000
q Знание HTML
Обработка собственных команд
WebClass-приложение Optimizer состоит из следующих классов:
q Admin. dsr – используется для публикатора
q Config. dsr – используется для конфигуратора
q Client. dsr – используется для клиентской части
q Mail. dsr – используется для формирования почтовых шаблонов
В зависимости от того, для какой части системы вносятся изменения, правится соответствующий класс.
Рассмотрим более подробно клиентский класс (Client. dsr). Он состоит из следующих WebItems:
q Attach – используется для работы с присоединенными документами
q Service – используется для работы с сервисами (форум, регистрация и т. д.)
q Default – используется для всех остальных операций
Предположим, что нам необходимо разработать новую команду, которая будет выполнять какие-то операции. Для примера она будет кодировать содержимое.
Для этого необходимо модифицировать функцию ModuleTags (теги обработки модуля).
Обычно код функции выглядит так:
Public Function ModuleTags(ByRef sTagName$, ByRef sTagContents$) As Boolean
If moService Is Nothing Then
ModuleTags = moConfig. ModuleTags(sTagName, sTagContents, mlTagIndex)
Else
ModuleTags = moService. ModuleTags(sTagName, sTagContents, mlTagIndex)
End If
End Function
При этом функция обрабатывает теги вида <gp@имя команды> (общие теги) и теги вида <gp@mso@имя_команды> (теги Optimizer).
Чтобы избежать конфликта имен команд, собственные команды должны иметь собственный префикс. Например, my. Тогда в шаблонах необходимо будет использовать их в виде <gp@my@имя_команды>.
Добавим теперь в функцию ModuleTags обработку команды Encode с префиксом my.
Public Function ModuleTags(ByRef sTagName$, ByRef sTagContents$) As Boolean
If moService Is Nothing Then
ModuleTags = moConfig. ModuleTags(sTagName, sTagContents, mlTagIndex)
Else
ModuleTags = moService. ModuleTags(sTagName, sTagContents, mlTagIndex)
End If
If Not ModuleTags Then
' Теги еще не обработаны, значит, это, возможно, наша команда
' При обработке префикс GP@ был уже вырезан из переменной sTagName
Dim sPrefix$
sPrefix = "MY@"
If Left(sTagName, Len(sPrefix)) = sPrefix Then
' Это команда для нашего модуля
sTagName = Mid(sTagName, Len(sPrefix) + 1)
ModuleTags = True
Select Case sTagName
Case "ENCODE"
sTagContents = MyEncode(sTagContents)
Case Else
sTagContents = ""
End Select
End If
End If
End Function
Этот тег будет обрабатываться во всех шаблонах модуля.
Обработка собственных действий
Для создания обработчика специализированных действий, в рамках нужного WebClass проекта, создаем новый WebItem.
Например, добавляем WebItem Special.
В свойствах необходимо обязательно установить следующие свойства WebItem:
q ReScanReplacements = True
q TagPrefix = GP@
Далее создаются обработчики двух событий:
Private Sub Special_ProcessTag(ByVal TagName As String, TagContents As String, SendTags As Boolean)
If ModuleTags(TagName, TagContents) Then Exit Sub
End Sub
Private Sub Special_Respond()
Dim sTmpl$
' В BeginRequest на проверке авторизации мог произойти
' Redirect и тогда дальше работать не нужно
If mbRedirect Then Exit Sub
' Здесь можно написать свой код.
' Имя шаблона можно получить или через функцию GetTemplate,
' или по своим собственным правилам
sTmpl = moConfig. GetTemplate
If mbDebugTreeCheck Then
Response. Write moUtils. DebugTreeShow(sTmpl, Me, Server, Request)
Else
Special. WriteTemplate sTmpl
End If
End Sub
Функция GetTemplate определяет имя шаблона по следующим правилам:
Берем имя ASP-файла без расширения и возвращаем путь к файлу Application(“TMPL_PATH”)/show/<имя ASP-файла без расширения>.htm



