Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Saitistika 4.0.Руководство разработчика.2005

.pdf
Скачиваний:
12
Добавлен:
23.08.2013
Размер:
3.22 Mб
Скачать

Справочник хранимых процедур

Всистеме более 1000 хранимых процедур. Описание всех из них не имеет практического смысла, поэтому описаны только наиболее важные и часто используемые.

Вразделе «База Данных» приведены правила именования хранимых процедур, которые могут быть полезны при работе с хранимыми процедурами.

Таблица хранимых процедур

 

Имя и параметры

 

 

Описание

 

 

AddFile

 

 

Сохраняет информацию о файле, загруженном на сервер в папку

 

@FileName

SString,

 

/common/data/pub/files

 

 

@ContentType

SString,

 

 

 

 

 

@Size

Int

 

 

 

 

 

AddPicture

 

 

Сохраняет в базе изображение. AddPicture Null используется совместно с

 

@pict

image = null

 

последующим вызовом процедуры SetPictureInfo. Возвращает значение ID

 

 

 

 

новой записи в таблицу Pictures.

 

 

DeleteFolder

 

 

Удаляет раздел. При создании новых встроенных типов разделов эта

 

@Login

SString,

 

процедура должна быть соответствующим образом модифицирована

 

@Passwd

SString,

 

 

 

 

 

@Super

INT,

 

 

 

 

 

@FolderID

INT

 

 

 

 

 

Directories_ListFoldersTree

 

Возвращает дерево подразделов начиная с заданного раздела

 

 

@userId

INT,

 

 

 

 

 

@fID

INT,

 

 

 

 

 

@fType

INT = Null,

 

 

 

 

 

@Root

INT = Null

 

 

 

 

 

Datatypes_GetType

 

 

 

 

 

 

@TypeName

SString = null,

 

 

 

 

 

@SubType

INT = NULL

 

 

 

 

 

GetFolderInfo

 

 

Возвращает информацию о разделе

 

 

@Login

SString,

 

 

 

 

 

@Passwd

SString,

 

 

 

 

 

@FolderID

int

 

 

 

 

 

GetSubFolders

 

 

Возвращает подразделы начиная с заданного.

 

 

@id

int,

 

 

 

 

 

@type

int

 

 

 

 

 

NewFolder

 

 

Создает подраздел в заданном разделе подраздел с названием. При создании

 

@Login

SString,

 

новых встроенных типов разделов эта процедура должна быть

 

 

@Passwd

SString,

 

соответствующим образом модифицирована.

 

 

@Super

INT,

 

 

 

 

 

@Title

SString,

 

 

 

 

 

@Type

INT,

 

 

 

 

 

@Desc

LString

 

 

 

 

 

SetPictureInfo

 

 

Изменяет параметры хранящегося в базе изображения.

 

 

@id

int,

 

 

 

 

 

@Label

sstring,

 

 

 

 

 

@Type

sstring,

 

 

 

 

 

@w

int,

 

 

 

 

 

@h

int,

 

 

 

 

 

@size

int

 

 

 

 

 

Sait_Articles_GetMaterial

 

 

Получение информации о материале и содержимого страниц материала

 

oId

int,

 

 

 

 

 

@userID

int = 0 ,

 

 

 

 

 

@State

int = Null ,

 

 

 

 

 

@folder

int = Null ,

 

 

 

 

 

@showhide

bit = 0

 

 

 

 

 

Sait_GetSubFolders

 

 

Выводит дерево подразделов начиная с заданного с учетом прав пользователя

 

@folderId

int ,

 

на эти подразделы.

 

 

@userID

int ,

 

 

 

 

 

@level

int = Null ,

 

 

 

 

 

@type

int = Null ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

 

Страница

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

 

261 из 261

 

@hide

 

int = Null ,

 

 

 

 

 

@ShowRoot

varchar(1) = ''

 

 

 

 

 

@mand

 

int = 0 ,

 

 

 

 

 

@mor1

 

int = Null ,

 

 

 

 

 

@mor2

 

int = 0,

 

 

 

 

 

@Notes

 

SString = '.'

 

 

 

 

 

Tasks_List

 

 

 

Получает список задач, удовлетворяющих заданным параметрам

 

 

@User

 

INT,

 

 

 

 

 

@Lower

 

INT = NULL,

 

 

 

 

 

@Upper

 

INT = NULL,

 

 

 

 

 

@Sort

 

INT = NULL,

 

 

 

 

 

@Name

 

SString = null,

 

 

 

 

 

@SearchStr

LString = null,

 

 

 

 

 

@Status

 

SString = null,

 

 

 

 

 

@Executors

SString = null,

 

 

 

 

 

@Priority

SString = null,

 

 

 

 

 

@Control

SString = null,

 

 

 

 

 

@NotWorkflows

SString = null,

 

 

 

 

 

@NotTypes

SString = null,

 

 

 

 

 

@Owner

INT = NULL,

 

 

 

 

 

@ProcessOwner

INT = NULL,

 

 

 

 

 

@Executor

INT = NULL,

 

 

 

 

 

@Project

INT = NULL,

 

 

 

 

 

@Process

INT = NULL,

 

 

 

 

 

@System

BIT = NULL,

 

 

 

 

 

@Active

TINYINT = 1,

 

 

 

 

 

@Deleted

TINYINT = 0,

 

 

 

 

 

@CreatedBegin

DATETIME

 

 

 

 

 

@CreatedEnd

DATETIME

 

 

 

 

 

@DeletedBegin

DATETIME

 

 

 

 

 

@DeletedEnd

DATETIME

 

 

 

 

 

Tasks_DeleteLostProcess

 

 

Удаление подвисших процессов. Они образуются, когда при создании

 

 

 

 

 

 

процесса «забывают» заполнить вторую страницу добавления. Процедура

 

 

 

 

 

 

удаляет начальные задачи процессов (эти задачи считаются аналогом

 

 

 

 

 

 

процессов), если их не передали в течении 6 или более часов.

 

 

 

Tasks_ListNodePeople

 

 

Список пользователей, входящих в роли узлов сценария, отфильтрованный по

 

 

@wId

 

INT,

 

участникам заданного проекта

 

 

 

@Project

INT = NULL

 

 

 

 

 

Tasks_ListWorkflows

 

 

Список активных и валидных сценариев. Filter - фильтрация сценариев.

 

 

@UserID

INT = NULL,

 

 

 

 

 

@Filter

 

BIT = 1

 

 

 

 

 

Tasks_RemoveControl

 

 

Удаление контроля над задачами. Вызывается на странице списка задач.

 

 

@UserID

INT,

 

 

 

 

 

@Process

LString,

 

 

 

 

 

@People

SString = null

 

 

 

 

 

Datatypes_GetType

 

 

Загрузка полной информации о типе данных

 

 

 

@TypeName

SString = null,

 

 

 

 

 

@SubType

INT = NULL

 

 

 

 

 

AddUserToGroup

 

 

Назначение пользователя на группу

 

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@ID

INT,

 

 

 

 

 

 

@Groups SString

 

 

 

 

 

DeleteGroup

 

 

 

Удаление группы пользователей

 

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@GroupID INT

 

 

 

 

 

 

DeleteUser

 

 

 

Удаение пользователя

 

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@ID1 INT,

 

 

 

 

 

 

@ID2 INT

 

 

 

 

 

 

GetGroup_Label

 

 

 

Свойства группы пользователей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

262 из 262

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@GrpID INT

 

 

 

 

 

 

ListGroups_ID_Label_AmountOfPeople

 

Список групп пользователей, с указанием количества входящих

 

 

 

 

 

 

пользователей

 

 

 

ListGroups_ID_Label_UserCheck

 

Список групп пользователей, с указанием вхождения текущего пользователя

 

 

@Login SString,

 

 

 

 

 

 

@Passwd

SString,

 

 

 

 

 

@ID

INT

 

 

 

 

 

 

ListPeople_ID_Login_Title_Groupcheck

 

Список пользователей с указанием вхождения заданной группы

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@GrpID INT

 

 

 

 

 

 

NewGroup

 

 

 

Создание новой группы пользователей

 

 

 

@Login

SString,

 

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@Title

SString,

 

 

 

 

 

 

@Rights SString,

 

 

 

 

 

@People SString,

 

 

 

 

 

@Sites

SString

 

 

 

 

 

 

Projects_ShowInfo

 

 

Возвращает информацию о разделе, назначенном в качестве раздела по-

 

 

@FileName SString

 

умолчанию для вывода проектов.

 

 

 

Projects_List

 

 

 

Возвращает список проектов с учетом пейджинга, фильтров и сортировки, а

 

 

@User INT,

 

 

также общее количество проектов без учета пейджинга.

 

 

 

@Lower INT = NULL,

 

 

 

 

 

@Upper INT = NULL,

 

 

 

 

 

@Sort INT = NULL,

 

 

 

 

 

@Name SString = NULL,

 

 

 

 

 

@Status SString = NULL,

 

 

 

 

 

@Types SString = NULL,

 

 

 

 

 

@Owner INT = NULL,

 

 

 

 

 

@System BIT = NULL,

 

 

 

 

 

@Active TINYINT = 1,

 

 

 

 

 

@Deleted TINYINT = 0,

 

 

 

 

 

@Quantity INT = NULL,

 

 

 

 

 

@Fields INT = 0,

 

 

 

 

 

 

@Rights INT = NULL

 

 

 

 

 

Roles_AddRole

 

 

 

Создание новой роли

 

 

 

@Name SString

 

 

 

 

 

 

Roles_Assign_Group

 

 

Назначение группы пользователей на роль

 

 

 

@RoleID int,

 

 

 

 

 

 

@GroupID int,

 

 

 

 

 

 

@Assign bit = 1

 

 

 

 

 

 

Roles_Assign_ObjectType

 

 

Назначение типа данных на роль

 

 

 

@RoleID int,

 

 

 

 

 

 

@ObjectTypeID int,

 

 

 

 

 

@Assign bit = 1

 

 

 

 

 

 

Roles_Assign_User

 

 

Назначение пользователя на роль

 

 

 

@RoleID int,

 

 

 

 

 

 

@UserID int,

 

 

 

 

 

 

@Assign bit = 1

 

 

 

 

 

 

Roles_ListGroupRoles

 

 

Список ролей, на которые назначена заданная группа пользователей

 

 

@GroupID int

 

 

 

 

 

 

Roles_ListRoles

 

 

 

Список всех ролей. Указывается количество пользователей, Групп

 

 

 

 

 

 

пользователей, Типов данных, Узлов и Связей сценариев, назначенных на

 

 

 

 

 

 

каждую роль.

 

 

 

Roles_ListUserRoles

 

 

Первый рекордсет список всех ролей, с указанием прямого вхождения

 

 

@UserID int

 

 

пользователя в роль

 

 

 

 

 

 

 

Второй рекордсет список всех ролей, с указанием вхождения пользователя в

 

 

 

 

 

 

роль через группы, на которые он назначен

 

 

 

Roles_RoleProperties

 

 

Свойства роли.

 

 

 

@RoleID int

 

 

 

 

 

 

Roles_RoleProperties_Set

 

 

Изменение свойств роли

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

263 из 263

 

 

@RoleID int,

 

 

 

 

 

@Name SString,

 

 

 

 

 

@Description LString,

 

 

 

 

 

@Deleted bit = 0,

 

 

 

 

 

@TaskTracking bit = 0

 

 

 

 

 

Users_Add2Clients

 

 

Добавление / изменение свойств клиента

 

 

 

@login as SString ,

 

 

 

 

 

@passwd as SString ,

 

 

 

 

 

@email as SString ,

 

 

 

 

 

@Comment as SString ,

 

 

 

 

 

@uId as int

 

 

 

 

 

 

Users_Add2People

 

 

Добавление / изменение свойств пользователя

 

 

 

@login as SString ,

 

 

 

 

 

@passwd as SString ,

 

 

 

 

 

@email as SString ,

 

 

 

 

 

@fname as SString ,

 

 

 

 

 

@lname as SString ,

 

 

 

 

 

@picture as int,

 

 

 

 

 

@Comment as SString ,

 

 

 

 

 

@userId as int ,

 

 

 

 

 

@uId as int,

 

 

 

 

 

@SMode tinyint = null,

 

 

 

 

 

@UCHSecSettings bit = Null

 

 

 

 

 

Users_CheckLogin

 

 

Проверка на существование пользователя с заданным ID и логином

 

 

@login as SString ,

 

 

 

 

 

@uid as INT

 

 

 

 

 

Users_GetUserInfo

 

 

Свойства пользователя

 

 

 

@userId as int

 

 

 

 

 

Users_SetGroupSettings

 

Изменение свойств группы пользователей

 

 

 

@Login SString,

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@gId Int ,

 

 

 

 

 

 

@Title

SString,

 

 

 

 

 

@Rights SString,

 

 

 

 

 

@Sites

SString,

 

 

 

 

 

@DelPeople SString,

 

 

 

 

 

@AddPeople SString

 

 

 

 

 

Users_SetUserInfo

 

 

Изменение свойств пользователя

 

 

 

@Login SString,

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@Id

INT,

 

 

 

 

 

@Enabled bit ,

 

 

 

 

 

@PublishInfo bit ,

 

 

 

 

 

@FOEnabled bit

 

 

 

 

 

Users_SetUserLogonDates

 

Установка дат активности пользователя

 

 

 

@UserID

INT,

 

 

 

 

 

@StartDate DATETIME,

 

 

 

 

 

@EndDate

DATETIME

 

 

 

 

 

Users_UsersList

 

 

 

Список пользователей

 

 

 

@login as SString ,

 

 

 

 

 

@email as SString ,

 

 

 

 

 

@sort as int ,

 

 

 

 

 

@groups as LString ,

 

 

 

 

 

@uIsnotgroup as bit ,

 

 

 

 

 

@uIsdisabled as bit ,

 

 

 

 

 

@dat_beg as varchar(8) = Null,

 

 

 

 

 

@dat_end as varchar(8) =Null ,

 

 

 

 

 

@L as int = 1,

 

 

 

 

 

@U as int = 20 ,

 

 

 

 

 

@sIgnoreGroups

 

 

 

 

 

SetUserSetting

 

 

 

Установка / изменение пользовательских настроек

 

 

 

@Login SString,

 

 

 

 

 

@Passwd SString,

 

 

 

 

 

@name SString,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

264 из 264

 

 

@page SString,

 

 

 

 

 

@Value SString

 

 

 

 

 

GetUserSetting

 

Считывание пользовательских настроек

 

 

 

@Login SString,

 

 

 

 

 

@Passwd SString,

 

 

 

 

@name SString,

 

 

 

 

 

@page SString

 

 

 

 

 

Sait_Common_GetClientSettings

Считывание клиентских настроек

 

 

 

@ClientID

INT,

 

 

 

 

@Key

SString,

 

 

 

 

@SettID

INT = NULL

 

 

 

 

Sait_Common_SetClientSettings

Запись клиентских настроек

 

 

 

@ClientID

INT,

 

 

 

 

@SettID

INT = NULL,

 

 

 

 

@Key

SString,

 

 

 

 

@Expired

DATETIME,

 

 

 

 

@Int

INT = NULL,

 

 

 

 

@Float

FLOAT = NULL,

 

 

 

 

@String

SString = NULL,

 

 

 

 

@String2

SString = NULL,

 

 

 

 

@String3

SString = NULL,

 

 

 

 

@Text

TEXT = NULL

 

 

 

 

GetRegField_Value

 

Значение поля из формы регистрации

 

 

 

@UserID

Int,

 

 

 

 

@Field

Int

 

 

 

 

access_Add_ORights

 

Добавить запись о правах пользователя на объект

 

 

 

@accountId

INT,

 

 

 

 

@oType

char(2),

 

 

 

 

@ObjID

int,

 

 

 

 

@ORights

int,

 

 

 

 

@Inherited

bit

 

 

 

 

access_DelORights

 

Удалить запись о правах пользователя на объект

 

 

 

@accountId

INT,

 

 

 

 

@oType

char(2),

 

 

 

 

@ObjID

int

 

 

 

 

access_GetUserObjectRights

Получить групповые и индивидуальные права пользователя на объект

 

 

@userId

int,

 

 

 

 

@oId

int,

 

 

 

 

@oType

char(1)

 

 

 

 

access_SetORights

 

Обновить запись о правах пользователя на объект. Если такой записи нет, она

 

 

@accountId

INT ,

автоматически добавляется в таблицу. Если право наследуемое и bDeleted = 1,

 

 

@oType

char(2) ,

запись о правах из таблицы удаляется

 

 

 

@oId

INT ,

 

 

 

 

@rights

INT ,

 

 

 

 

@inherited

bit =0,

 

 

 

 

@bDeleted

bit =0

 

 

 

 

Forms_ListTree

 

Получить восстановленное дерево разделов со всеми формами системы

 

 

@UserID

INT

 

 

 

 

Forms_LoadProperties

 

Получить свойства формы по идентификатору раздела

 

 

 

@FolderID

INT,

 

 

 

 

@user_id

INT

 

 

 

 

Forms_SaveProperties

 

Сохранить свойства формы

 

 

 

@FolderID

INT,

 

 

 

 

@EMail

VARCHAR(256),

 

 

 

 

@Action

INT,

 

 

 

 

@Message

LString,

 

 

 

 

@URL VARCHAR(2048)

 

 

 

 

Sait_Search_List

 

Выполнение поиска (используется на странице результатов поиска). При

 

 

@userID int,

 

поиске физических файлов учитывается значение параметра @onlydocs. Если

 

 

@searchStr varchar(1024),

он равен нулю, то поиск производится во всех файлах, если 1, то поиск

 

 

@addStr varchar(1024),

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

 

 

@sFolders SString ,

авторе, ключевые слова и т.д.

 

 

 

@authorSString ,

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2005 Individ company

Страница

 

 

 

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

265 из 265

 

@dat_beg datetime,

 

@dat_end datetime,

 

@sort int,

 

@bMaterials bit,

 

@bNews bit,

 

@bForums bit,

 

@bConfs bit,

 

@bShops bit,

 

@bFiles bit,

 

@bLabel bit,

 

@bAnnotate bit,

 

@bContent bit,

 

@bKeyWord bit,

 

@mask int,

 

@L int,

 

@U int,

 

@onlydocs bit = 0

 

Events_AddEvent

Добавление события с указанными параметрами в таблицу Events

@EventType char(2),

 

@ObjectID int = 0,

 

@ObjectType char(2),

 

@UserID int,

 

@SessionID int,

 

@FolderID int,

 

@ClientIP varchar(15),

 

@URI LString,

 

@UserAgent SString,

 

@Referer LString,

 

@Authorized int,

 

@AdditionalParams int = NULL,

 

@StaticString varchar(900) = NULL,

 

@Status int = 0,

 

@Reserved SString = '',

 

@GuestID int = 0

 

Events_MakeObjectStaticString

Формрование стандартной суммарной строки события. Если @outputtoresult =

@UserID int,

0, то параметр @result игнорируется и суммарная строка возвращается в виде

@ObjectID int,

рекордсета. Если @outputtoresult <> 0, то рекордсета не возвращается, а

@ObjectType char(2),

суммарная строка записывается в параметр @result.

@FolderID int = NULL,

 

@ArticleID int = NULL,

 

@outputtoresult int = 0,

 

@result varchar(6000) = NULL output

 

Events_LinkEvent

Связывание двух событий (передаются их идентификаторы из таблицы

@EventID int,

Events). Если @CopyAttributes <> 0, то некоторые поля главного события

@MasterEventID int,

копируются в соответствующие поля связаного события, что удобно при

@CopyAttributes int = 1

добавлении связанного события из хранимой процедуры (хотя такой способ

 

добавления события не рекомендуется), когда неизвестен, например, IP

 

пользователя и другие параметры. Копируются следующие поля таблицы

 

Events: UserID, Authorized, SessionID, FolderID, ClientIP, URI, UserAgent,

 

Referer, GuestID

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

266 из 266

 

 

Системные компоненты и внешние модули

Визуальный редактор

Визуальный редактор предназначен для редасктирования содержимого материалов в режиме html и source.

Логика работы

Файлы визуального редактора находятся в каталоге /VR/ бэкофиса системы. Главным файлом является файл NoMenus.asp. Этот файл должен выводиться в теге iframe страницы редактирования материала /aspscripts/materials/material-page.asp, на некоторые элементы которой ссылаются скрипты из файла NoMenus.asp и которая используется для формирования и обработки POST-запросов. Для вывода iframe визуального редактора в format.xsl определен специальный шаблон – visualeditor.

Для редактирвания документа пользователем в режиме html используется внешний компонент – DHTML Editing Control, находящийся в файле dhtmled.cab. Для загрузки вставленных в визуальный редактор изображений на сервер используется компонент Uplx, находящийся в файле uplx.cab и устанавливающийся на компьютере клиента. Компонент генерирует POST-

запрос на страницу /aspscripts/materials/getimagepost.asp в формате multipart/form-data, которая производит всю необходимую обработку. Редактирование документов в режиме source происходит в <textarea>.

При открытии страницы материала на редактирование в журнал событий записывается событие типа «Открытие объекта на редактирование» («ME»). Если страница уже была открыта на редактирование в течение часа, то при загрузке страницы выводится alert, содержащий информацию о том, кто и когда открывал страницу на редактирование последний раз.

Сохранение материала происходит через POST на страницу /aspacripts/materials/material-savepage.asp. Эта страница загружается в невидимом iframe и использует кустомную обработку ошибок SQL с целью вывести пользователю сообщение об ошибке связи с базой данных в понятном виде, если такая ошибка возникла. Если в системе включено автоматическое созранение версий при сохранении материала, то новая версия материала при сохранении создается автоматически каждые 10 минут или чаще, если сохранение идет несколькими пользователями. Другими словами, если в течение последних 10 минут пользователь уже сохранял документ и это образовало новую версию, а другие пользователи после этого не производили сохранение документа, то новая версия перезаписывает последнюю созданную, во всех остальных случаях новая версия добавляется к истории версий материала. Версию материала можно также сохранить принудительно, пользуясь специальной формой на странице редактирования страницы материала. Версии содержимого материалов хранятся в таблице PageVersions. Включение и выключение опции автоматического сохранеия версий материала происходит на странице настроек контента и отражается в значении поля EnableSaveInterval таблицы SystemSettings.

В различных конфигурациях операционной системы и броузера пользователя кодировка символов, используемая JavaScript, может не совпадать с кодировкой символов, используемой компонентом DHTML Editing Control. При этом после загрузки содержимого страницы материала на русском (или другом, использующем символы с кодами более 127) языке в визуальный редактор (которое происходит через JavaScript, как и множество других операций на странице визуального редактора) пользователь видит неправильные символы, которые затем сохраняются в том же виде при сохранении документа. Содержимое материала при этом теряется. Для помощи пользователю в такой ситуации в визуальном редакторе имеется механизм перекодировки символов, который запускается каждый раз при загрузке содержимого в визуальный редактор через JavaScript. Механизм перекодировки находится в файле xlat.js. В настоящее время реализована перекодировка windows-1251 à Unicode, разрешающая проблему перекодировки на компьютерах с конфигурацией Windows NT 4.0 + IE 5.0, но возможно добавление других перекодировок. Для реализации новой перекодировки необходимо сгенерировать новую таблицу перекодировки. ASP-код генерации таблицы перекодировки приведен в комментарии в начале файла xlat.js. Для его использования требуется создать временную ASP-страницу, вставить в нее прилагаемый код, и загрузить ее, установив в броузере желаемую кодировку. В результате работы страницы будет сгенерирован js-код массива, являющегося таблицей перекодировки. Внимательно просмотрите этот массив на предмет наличия «лишних» символов (например, в таблице перекодировки windows1251 à Unicode существует лишний символ «пробел», заменяющийся на символ с кодом 240 (в восьмеричной системе), что приводит к замене пробела на  . Эта ситуация возникла, т.к. при копировании из броузера и вставке кода в файл xlat.js пробел с кодом 240 автоматически преобразовался к пробелу с кодом 32, в то же время пробел с кодом 240 в исходном документе возможно заменять ни на что и не требуется). Вставив таблицу перекодировки в файл xlat.js и исправив имя соответствующим образом, доработайте функцию в том же файле, добавив в нее новый case аналогично уже существующему case ‘windows-1251’. Для того чтобы новую перекодировку можно было выбрать в персональных настройках пользователя, в ASP-коде страницы /aspscripts/settings/settings-personal.asp в select с именем vrCoding (под заголовком «Перекодировка для визуального редактора») следует добавитьновый option с именем, понятным для пользователя, и значением, равным значению для нового case, добавленного в функцию xlat(t, coding) файла xlat.js.

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

267 из 267

 

 

Загрузчик изображений для визуального редактора

Загрузчик изображений для визуального редактора является ActiveX-компонентом, загружаемым на компьютер клиента и устанавливаемым на нем при первой загрузке страницы визуального редактора. Код компонента находится в файле /VR/uplx.cab от каталога бэкофиса. CAB-файл компонента подписан цифровой подписью. Компонент читает содержимое файла, указанного в свойствах, и формирует POST-запрос в формате multipart/form-data на указанную веб-страницу. На этой веб-странице можно воспользоваться компонентом DrAsp.Upl для загрузки файла на сервер (файл находится в поле с именем «file»). Перед вызовом методов компонента требуется проинициализировать его свойства path и url. Ниже описаны свойства и методы компонента.

Константы:

1.uplxOK = 0 – операция зваершена успешно

2.uplxErrorOpenFile = 1 – ошибка при открытии файла

3.uplxErrorBigFile = 2 – слишком большой размер файла

4.uplxErrorInet = 3 – ошибка компонента MsInet

5.uplxErrorServer = 4 – ошибка на стороне сервера (при POST-запросе)

6.uplxErrorBadHeader = 5 – неверный ответ сервера (при POST-запросе)

7.uplxUninitialized = 100 – не был выполнен ни один из методов

Свойства:

1.path – путь до подгружаемого файла на компьютере клиента.

2.url – url страницы для обработки POST-запроса.

3.status – содержит статус вызова последнего метода. Значение является равным одному из перечисленных значений констант.

4.cookie – не используется.

5.src – после успешного вызова метода SendFile содержит url на сервере, по которому было подгружено изображение.

6.w – после успешного вызова метода SendFile содержит ширину подгруженного изображения.

7.h – после успешного вызова метода SendFile содержит высоту подгруженного изображения.

8.maxsize – максимальный размер файла (в Кб), который разрешено подгружать. При попытке подгрузки файла больше этого размера возвращается статус uplxErrorBigFile. Значение по умолчанию – 1024 (1 Мб).

Методы:

1.SendFile – выполнение подгрузки файла. Возвращает true (успешно)/false (неуспешно). Более детальную информацию о выполнении операции можно получить через свойство status.

2.TestConnection – тестирование сединения с сервером. Производит те же операции, что и SendFile, но не читает файл и не посылает его содержимое. Возвращает true (успешно)/false (неуспешно). Более детальную информацию о выполнении операции можно получить через свойство status.

Требования к странице, обрабатывающей POST-запрос (обычно это /aspscripts/materials/getimagepost.asp):

1.В случае неуспеха страница должна возвратить статус «500 NON».

2.В случае успеха страница должна возвратить статус «200 OK» и следующие заголовки сервера:

Image-Src – url подгруженного изображения на сервере.

Image-Widthширина подгруженного изображения.

Image-Heightвысота подгруженного изображения.

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

268 из 268

 

 

Программа установки

Система установки это стандартное диалоговое Win32-приложение, осуществляющее установку Saitistika на сервер.

Вся работа по предоставлению пользовательского интерфейса и установке ведется в классе главного диалога программы – CInstallerDlg. В функции OnInitDialog происходит общая инициализация, включающая в себя чтение конфигурации из ini- файла. Последовательный вывод дочерних диалогов пользовательского интерфейса происходит в функциях OnBack и OnForward, вызывающихся при нажатии кнопок соответственно «Назад» и «Далее». После завершающего шага сбора сведений выполняется процесс установки с помощью вызова метода DoInstall.

Для выполнения операций установки существует класс CInstall.

INI-файл конфигурации

При инициализации диалога CInstallerDlg производится чтение данных из файла конфигурации. Этот файл является INI- файлом в стандартном формате и содержит как информацию, необходимую для правильной обработки данных в архиве Data.exe, так и значения по умолчанию полей диалогов сбора сведений. Файл конфигурации должен иметь имя setup.ini, находиться в одной директории с файлом Setup.exe и иметь следующую структуру:

1.Секция [common]. Содержит следующие параметры:

1.1.Path – путь по умолчанию, по которому будет установлена документация, например, C:\Saitistika\Documentation\

1.2.ComponentPath – путь по умолчанию для установки компонентов, например, C:\Saitistika\Components\

1.3.ComponentDirectory – путь к директории компонентов внутри архива Data.exe от корня архива без \ в начале,

например, COMponents.

1.4.Readme – имя с расширением файла Readme.txt. Этот файл должен находиться в одной директории с Setup.exe,

например, Readme.txt

1.5.Version – имя системы, содержащее информацию о версии, например, Saitistika Software 4.0

2.Секция [system]

2.1.Name – имя системы, например, Saitistika 4.0

2.2.ApplicationName – имя приложения IIS (используется только для IIS верси не ниже 6.0).

3.Секция [database]. Содержит следующие параметры:

3.1.Source – имя и расширение файла бэкапа базы данных, находящегося в корне архива Data.exe, например, Saitistika40.bak

3.2.Name – имя по умолчанию для создаваемой при установке базы данных, например, Saitistika40

3.3.Alias – значение по умолчанию псевдонима для сервера БД, например, S40

3.4.Path – путь по умолчанию для файлов базы данных, например, C:\Saitistika\Database\

3.5.Filename – имя создаваемого при установке файла базы данных, например, Saitistika40

4.Секция [backoffice]. Содержит следующие параметры:

4.1.Path – путь по умолчанию для установки файлов сайта бэкофиса, например, C:\Inetpub\Saitistika\BackOffice\

4.2.Directory – имя директории внутри архива Data.exe, в которой находятся файлы сайта бэкофиса, например, BackOffice

4.3.Name – имя бэкофиса по умолчанию, например, Saitistika 4.0 (бэкофис)

4.4.Domain – значение по умолчанию для создаваемого домена бэкофиса, например, saitistika.project.ru

4.5.Login – значение по умолчанию логина NT-пользователя, под которым будет работать сайт бэкофиса. Для этого параметра значение можно оставить пустым, если при каждой установке требуется вводить логин пользователя бэкофиса вручную.

4.6.Password – значение по умолчанию пароля NT-пользователя, под которым будет работать сайт бэкофиса. Для этого параметра значение можно оставить пустым, если при каждой установке требуется вводить пароль пользователя бэкофиса вручную. Так как пароль задается в файле конфигурации в текстовой форме, то подтверждение этого пароля в Setup.exe запрашиваться не будет, однако если изменить значение по умолчанию, то подтверждение пароля будет запрашиваться. Пароль NT-пользователя игнорируется, если указан логин локального NT- пользователя. Локальным пользователем считается пользователь, в имени которого нет символа «\» (отделяющего имя компьютера от собственно имени пользователя). Если даже имя компьютера в имени пользователя совпадает с именем компьютера, на котором производится установка, такой пользователь все равно считается сетевым. Для того, чтобы пользователь считался локальным, не включайте имя компьютера и символ «\» в его имя.

5.Секции [frontoffice1] … [frontofficeN]. Этих секций должно быть столько, сколько различных версий фронтофиса находится в архиве Data.exe. Каждая из секций содержит следующие параметры:

5.1.Path – путь по умолчанию для установки файлов сайта фронтофиса, например, C:\Inetpub\Saitistika\FrontOffice\

5.2.Directory – имя директории внутри архива Data.exe, в которой находятся файлы сайта фронтофиса, например, FrontOffice

5.3.Name – имя фронтофиса по умолчанию, например, Saitistika 4.0

5.4.Domain – значение по умолчанию для создаваемого домена фронтофиса, например, www.project.ru

5.5.Login – значение по умолчанию логина NT-пользователя, под которым будет работать сайт фронтофиса. Для этого

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

269 из 269

 

 

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

5.6.Password – значение по умолчанию пароля NT-пользователя, под которым будет работать сайт бэкофиса. Для этого параметра значение можно оставить пустым, если при каждой установке требуется вводить пароль пользователя этого фронтофиса вручную. Поведение этого параметра аналогично поведению параметра Password, описанного в секции [backoffice].

5.7.ID – идентификатор сайта фронтофиса в базе данных, например, 1

5.8.ThemeName – имя темы, присвоенной этому фронтофису, например, default.

Установочные модули

Процесс установки разбит на установочные модули. Установочный модуль это класс, унаследованный от класса Installation::CInstallationModule. Установочный модуль может быть временным (удаляется после завершения установки) или постоянным (удаляется только при удалении продукта). В классах, унаследованных от CInstallationModule, обычно требуется переопределить 3 функции: OnInstall, OnRollback, Serialize. Функция OnInstall вызывается для установки модуля, OnRollback

для удаления модуля и Serialize – для стандартной процедуры сериализации.

Установочные модули образуют древовидную структуру. Главный установочный модуль, производящий установку и удаление всех модулей, называется менеджер установки (класс Installation::CInstallationManager). Менеджер установки напрямую содержит шаги установки (классы, унаследованные от Installation::CInstallationStep), которые содержат собственно установочные модули.

Модернизация ядра

При следующих изменениях требуется доработка и перекомпиляция файла Setup.exe:

1.Изменение структуры ВИРТУАЛЬНЫХ директорий БО и ФО.

2.Изменение расстановки прав

3.Изменение маппинга

4.Изменение состава ISAPI-фильтров

5.Изменение состава используемых компонентов

6.Изменение пользовательского интерфейса инсталлятора

7.Изменение остального состава дистрибутива, кроме сайтов и БД.

Используемые таблицы и хранимые процедуры

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

Используемые таблицы:

1.FilesPaths

2.Folders

3.Pages

4.ScheduleSettings

5.Sites

6.SystemSettings

Используемые хранимые процедуры:

1.CreateFTCatalog2000

2.CreateFullTextSchedule

3.Installer_SetupRussianSearch_70

4.Installer_SetupRussianSearch_2000

5.Material_GetReplaceList

Класс Utils

Содержит статические вспомогательные методы.

Методы:

1.LoadString – загрузка строки из реестра за 1 шаг.

2.Format, FormatV, FormatMessage, FormatMessageV – форматирование строк за 1 шаг.

3.GetErrorMessage – получение описания ошибки по ее коду (SCODE или HRESULT), а также по объекту _com_error.

4.GetComputerName – получение имени компьютера. Результат кэшируется.

5.GetPrimaryDomainName – возвращает имя главного домена на контроллере домена и имя компьютера на других компьютерах. Результат кэшируется.

6.FullLogin – если логин не содержит домена (или имени компьютера), то дописывает к логину результат выполнения

Copyright © 2005 Individ company

Страница

Контакты: www.saitistika.ru | support@saitistika.ru | (0852) 321464

270 из 270