|
|
Строка 1: |
Строка 1: |
− | = Что такое edit in place? ==
| + | doors.txt;5 |
− | - edit in place (редактирование на месте) - это возможность редактировать свойства объектов и страниц прямо на сайте (без входа в административный интерфейс), возможность наглядно видеть, как будет выглядеть редактируемая страница
| |
− | | |
− | | |
− | == Условия работы ==
| |
− | 1. Пользователь должен быть авторизован и иметь права на использование edit in place
| |
− | 2. Шаблон должен быть сверстан по определенным правилам
| |
− | == Особенности верстки tpl-шаблона ==
| |
− | 1. В шаблоне необходимо объявить пространство имен umi:
| |
− | <source lang="xml">
| |
− | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
| |
− | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" xmlns:umi="http://www.umi-cms.ru/TR/umi">
| |
− | ...
| |
− | </html>
| |
− | </source>
| |
− | 2. Подключить JavaScript'ы для панели быстрого редактирования и для edit in place:
| |
− | <source lang="xml">
| |
− | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
| |
− | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" xmlns:umi="http://www.umi-cms.ru/TR/umi">
| |
− | <head>
| |
− | ...
| |
− | %system includeQuickEditJs()%
| |
− | %system includeEditInPlaceJs()%
| |
− | ...
| |
− | </head>
| |
− | <body>
| |
− | ...
| |
− | </body>
| |
− | </html>
| |
− | </source>
| |
− | 3. Определить редактируемые области (поля), прописав тэгам определенные атрибуты. Смотрите описание пространства имен umi.
| |
− | | |
− | == Особенности верстки xsl-шаблона ==
| |
− | 1. Необходимо определить пространство имен umi
| |
− | 2. Подключить JavaScript'ы для панели быстрого редактирования и для edit in place, используя протокол udata
| |
− | | |
− | Пример шаблона:
| |
− | <source lang="xml">
| |
− | <?xml version="1.0" encoding="UTF-8"?>
| |
− | <!DOCTYPE xsl:stylesheet [
| |
− | <!ENTITY nbsp " ">
| |
− | <!ENTITY middot "·">
| |
− | <!ENTITY copy "©">
| |
− | ]>
| |
− | | |
− | <xsl:stylesheet version="1.0"
| |
− | xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
| |
− | xmlns:php="http://php.net/xsl"
| |
− | xmlns:date="http://exslt.org/dates-and-times"
| |
− | xmlns:udt="http://umi-cms.ru/2007/UData/templates"
| |
− | xmlns:umi="http://www.umi-cms.ru/TR/umi"
| |
− | extension-element-prefixes="php"
| |
− | exclude-result-prefixes="xsl php udt date">
| |
− | | |
− | <xsl:output method="html" version="4.01"
| |
− | encoding="utf-8"
| |
− | doctype-public="-//W3C//DTD HTML 4.01//EN"
| |
− | doctype-system="http://www.w3.org/TR/html4/strict.dtd"
| |
− | indent="yes"
| |
− | cdata-section-elements="script noscript"
| |
− | undeclare-namespaces="yes"
| |
− | omit-xml-declaration="yes"/>
| |
− | | |
− | <xsl:template match="/">
| |
− | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" xmlns:umi="http://www.umi-cms.ru/TR/umi">
| |
− | <head>
| |
− | <xsl:value-of select="document('udata://system/includeQuickEditJs')/udata" disable-output-escaping="yes"/>
| |
− | <xsl:value-of select="document('udata://system/includeEditInPlaceJs')/udata" disable-output-escaping="yes"/>
| |
− | </head>
| |
− | <body>
| |
− | ...
| |
− | </body>
| |
− | </html>
| |
− | </xsl:template>
| |
− | </xsl:stylesheet>
| |
− | </source>
| |
− | 3. Определить редактируемые области (поля), прописав тэгам определенные атрибуты. Смотрите описание пространства имен umi.
| |
− | | |
− | == Описание атрибутов из пространства имен umi ==
| |
− | Атрибуты из пространства имен umi необходимы для указания редактируемых регионов.
| |
− | | |
− | | |
− | '''Список атрибутов:'''
| |
− | '''umi:element-id''' - указывает идентификатор элемента (страницы), соответствующий редактируемой области. При наличии подключенной возможности "[[Виджеты]]" и если этот атрибут указан, создается редактируемый регион и появляется возможность удалить элемент из структуры.
| |
− | | |
− | '''umi:object-id''' - указывает идентификатор объекта, соответствующий редактируемой области. При наличии подключенной возможности "[[Виджеты]]" и если этот атрибут указан, создается редактируемый регион и появляется возможность удалить объект.
| |
− | | |
− | '''umi:field-name''' - указывает идентификатор свойства элемента или объекта (можно смотреть в шаблонах данных), с которым связана редактируемая область. Работает только в связке с umi:element-id или umi:object-id. Если umi:object-id и umi:element-id не указан, пытается взять его у первой родительской редактируемой области. Если этот атрибут указан и определен идентификатор объекта или элемента, создается редактируемый регион с возможностью править свойство.
| |
− | | |
− | '''umi:module''' и '''umi:method''' - указывает какому модулю и методу соответствует редактируемая область. Если оба атрибута указаны, создается редактируемый регион с возможностью добавлять объекты или элементы (при наличии подключенной возможности "[[Виджеты]]"). Если у области указан umi:element-id, то создаваемые элементы (страницы) будут создаваться дочерними от элемента, соответствующего идентификатору umi:element-id
| |
− | | |
− | == Примеры назначения редактируемых регионов ==
| |
− | 1. Создаем редактируемый заголовок в tpl-шаблоне страницы:
| |
− | <source lang="xml">
| |
− | <h1 umi:element-id="%pid%" umi:field-name="h1">%header%</h1>
| |
− | </source>
| |
− | 2. Создаем редактируемый список пользователей с возможностью добавить, удалить пользователя и редактировать имя каждого пользователя. xsl - шаблон:
| |
− | <source lang="xml">
| |
− | <xsl:template match="udata[@module='users'] and udata[@method='list_users']">
| |
− | <ul umi:module="users" umi:method="list_users">
| |
− | <xsl:apply-templates select="items/item" mode="viewuser">
| |
− | </ul>
| |
− | </xsl:template>
| |
− | | |
− | <xsl:template match="item" mode="viewuser">
| |
− | <li umi:object-id="{@id}" umi:field-name="{fname}"><xsl:value-of select="document(concat('uobject://', @id, '.fname'))//value" /></li>
| |
− | </xsl:template>
| |
− | </source>
| |
− | | |
− | 3. Создаем редактируемое меню в tpl-шаблоне. Получаем возможность добавлять в меню страницы на любую вложенность, удалять страницы и изменять имена пунктов меню. Модифицируем шаблон /tpls/content/menu/default.tpl:
| |
− | | |
− | <source lang="php">
| |
− | <?php
| |
− | | |
− | $FORMS = Array();
| |
− | | |
− | | |
− | $FORMS['menu_block_level1'] = <<<END
| |
− | <div id="menu" umi:element-id="%id%" umi:module="content" umi:method="menu">
| |
− | %lines%
| |
− | </div>
| |
− | | |
− | END;
| |
− | | |
− | $FORMS['menu_line_level1'] = <<<END
| |
− | <a href="%link%" umi:element-id="%id%" umi:field-name="name">%text%</a>
| |
− | | |
− | END;
| |
− | | |
− | $FORMS['menu_line_level1_a'] = <<<END
| |
− | <a class="active" href="%link%" umi:element-id="%id%" umi:field-name="name">%text%</a>
| |
− | | |
− | END;
| |
− | | |
− | | |
− | ?>
| |
− | </source>
| |