Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Что видим – то и получаем

eto'o

Хакер, номер #082, стр. 082-124-5


[капаем внутри]

Если ты откроешь главную страничку редактора, то на самом верху увидишь следующие строки:

gt;

.edx { behavior:url(edx.htc); }

gt;

Теперь если опуститься в самый низ документа, ты увидишь главный DIV-контейнер с редактируемым контентом. Среди его параметров указан следующий: class=edx. Все это означает, что для создания редактора используется механизм html-behaviors, с помощью которого программисты могут определять собственные HTML-документы, с собственным набором свойств и методов, с которым можно работать абсолютно так же, как и с любым стандартным элементом. Это действительно удобный пример, почитать подробнее о котором ты можешь все на том же MSDN:

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/behaviors/overview/elementb_ovw.asp.

Не вдаваясь в подробности, отмечу, что в файле edx.htc, содержимое которого ты можешь видеть на соответствующем скрине, содержится перечисление всех методов и свойств элемента; там же подключаются js-файлы с описанием всей функциональности нового объекта.

[контроль за редактированием]

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

Указывается этот файл следующим образом:

gt;

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

Весь файл состоит из шаблонов, которые задаются тэгом edx:template. Шаблонов может быть сколько угодно, и для каждого XML-узла задается конкретный шаблон, при помощи которого будет отображен этот элемент. Обработка начинается с коренного шаблона, который содержит в себе ссылки на другие шаблоны, каждый из которых обрабатывает дочерние элементы. Совершенно понятно, что шаблоны, обрабатывающие эти дочерние элементы также могут содержать ссылки на другие темплейты, и так до тех пор, пока мы не дойдем до текстовых данных: в этом случае, как правило, используется встроенный шаблон с именем field:flow, который просто выводит текстовое содержимое элемента.

У каждого шаблона обязательно есть свойство type: оно может содержать либо region, либо container. В первом случае подразумевается, что соответствующий шаблону элемент содержит в себе разношерстные узлы, и для каждого из них будет указан соответствующий темплейт. Во втором же случае имеется в виду, что узлы однотипные и обрабатываются при помощи одного и того же шаблона, как бы в цикле.

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

[коренной шаблон]

gt;

gt;

Назад на стр. 082-124-4  Содержание  Вперед на стр. 082-124-6