Логотип

Документация по макросам и шаблонам UMI.CMS

Не используется.

Пример вызова

udata://blogs20/editUserBlogs

XML-ответ UData

<udata module="blogs20" method="editUserBlogs" generation-time="0.013707">
  <blogs>
    <item>
      <bid>70</bid>
      <path>/blog1/</path>
      <friends>
        <option value="2373">Гость</option>
        <option value="14">sv</option>
        <option value="27248">user1</option>
        <option value="27237">user2</option>
      </friends>         
<current_page>/udata/blogs20/editUserBlogs/</current_page> </item> <item> <bid>64</bid> <title>Еще блог</title> <description>Блог второй. Тоже для примера.</description> <path>/ewe_blog1/</path> <friends> <option value="2373">Гость</option> <option value="14">sv</option> <option value="27248" selected>user1</option> <option value="27237" selected>user2</option> </friends> <current_page>/udata/blogs20/editUserBlogs/</current_page> </item> </blogs> </udata>

Элементы и атрибуты

<blogs>

ветвь, содержащая элементы item — список блогов

<item>

ветвь, описывающая блог

<bid>

идентификатор блога

<path>

путь до блога

<friends>

ветвь, использующая для создания списка друзей — элементы option

<option>

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

@selected

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

<current_page>

URL страницы, с которой произошел вызов.

Пример использования

Сначала вызовем макрос в нужном месте выбранного шаблона (например, шаблон для "users/settings")

<xsl:apply-templates select="document('udata://blogs20/editUserBlogs/')" />

Создадим шаблон обработки этого вызова и наполним его директивами. Например, так:

<xsl:template match="udata[@module = 'blogs20'][@method = 'editUserBlogs']">
 <div style="display:block;width:100%;margin-top: 40px;">
  <h3>Мои блоги</h3>
  <span style="display:block; margin:20px 20px 20px 20px; font-size:11pt;">
   <a href="/blogs20/draughtsList/" style="color:#777;text-decoration:none;" title="Черновики">
    <img src="/images/cms/blogs20/draught.png" alt="Черновики" title="Черновики" style="border:0;vertical-align:middle;" />
    →
   </a>
   <a href="/blogs20/draughtsList/" style="color:#777;vertical-align:middle;" title="Черновики">Черновики публикаций</a>  
  </span>
  
  <xsl:apply-templates select="document('udata://blogs20/editUserBlogs/')/udata/blogs/item" mode="user_blogs"/>
  
 </div>
</xsl:template>

<xsl:template match="item" mode="user_blogs">
 <div style="padding-top:10px;">
  <h4><xsl:value-of select="title" /></h4>
  <br />
  Ссылка на сайте: <a href="{path}"><xsl:value-of select="path" /></a>
  <br /><br />
  <div style="padding-left:15px;">
   <form id="form_{bid}_edit" method="post" action="/blogs20/editUserBlogs/{bid}/">
    <input type="hidden" name="redirect" value="{current_page}" />
    <label for="blog_{bid}_title">Заголовок</label><br />
    <input type="text" id="blog_{bid}_title" name="blog[{bid}][title]" style="width:99%;border:1px solid #ccc;" value="{title}" /><br /><br />   
    <label for="blog_{bid}_description">Описание</label><br />
    <input type="text" id="blog_{bid}_description" name="blog[{bid}][description]" style="width:99%;border:1px solid #ccc;" value="{description}" /><br /><br />
    <label for="blog_{bid}_friendlist">Друзья</label><br />
    <select id="blog_{bid}_friendlist" name="blog[{bid}][friendlist][]" multiple="multiple" style="width:99%;height:100px;border:1px solid #ccc;"><xsl:value-of select="document('udata://blogs20/editUserBlogs/44/')/udata/blogs/item/friends" disable-output-escaping="yes" /></select><br /><br />
    
    <span style="display:block;text-align:right;"><input type="submit" value="Сохранить" /></span>
   </form>
  </div>
 </div>
</xsl:template>

<xsl:template match="item[bid = 'new']" mode="user_blogs">
 <div style="padding-top:10px;">
  <h3>Создать новый блог</h3>
  <div style="padding-left:15px;">
   <form id="form_{bid}_edit" method="post" action="/blogs20/editUserBlogs/{bid}/">
    <input type="hidden" name="redirect" value="{current_page}" />
    <label for="blog_{bid}_title">Название</label><br />
    <input type="text" id="blog_{bid}_title" name="blog[{bid}][title]" style="width:99%;border:1px solid #ccc;" value="{title}" /><br /><br />   
    <label for="blog_{bid}_description">Описание</label><br />
    <input type="text" id="blog_{bid}_description" name="blog[{bid}][description]" style="width:99%;border:1px solid #ccc;" value="{description}" /><br /><br />
    <label for="blog_{bid}_friendlist">Друзья</label><br />
    <select id="blog_{bid}_friendlist" name="blog[{bid}][friendlist][]" multiple="multiple" style="width:99%;height:100px;border:1px solid #ccc;"><xsl:value-of select="document('udata://blogs20/editUserBlogs/44/')/udata/blogs/item/friends" disable-output-escaping="yes" /></select><br /><br /> 
    
    <span style="display:block;text-align:right;"><input type="submit" value="Сохранить" /></span>
   </form>
  </div>
 </div>
</xsl:template>

Стоит отметить, что, в отличие от старых блогов, теперь сохранение производится не сразу всех блогов, а только того, для которого была нажата кнопка "сохранить".

Пример вызова

%blogs20 editUserBlogs()%

Используемые блоки

blog_edit_block

выводит содержимое публикации

%lines%

указывает место, куда выводится список блогов из блока blog_edit_line

blog_edit_line

редактирование существующего блога

%bid%

идентификатор блога

%title%

тайтл блога

%description%

описание

%path%

путь к блогу на сайте

%friends%

друзья (строка с выбором значений для селекта)

%current_page%

текущая страница

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

вставляет порядковый номер в списке

blog_new_line

Создание нового блога

%bid%

идентификатор блога (всегда new)

%friends%

друзья (строка с выбором значений для селекта)

%current_page%

текущая страница

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

вставляет порядковый номер в списке

Название

%blogs20 editUserBlogs()% — выводит форму редактирования/добавления пользовательских блогов.

Параметры: blogs20 editUserBlogs (blogId[, template = 'default'])

blogId

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

template

tpl-шаблон вывода (по умолчанию - default.tpl). В XSLT-шаблонизаторе игнорируется.

Описание

Выводит форму редактирования/добавления пользовательских блогов.