Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
форма создания новой темы для модуля форум

Автор izen29Раздел Шаблоны XSLT

Ответов: 4
Просмотров: 3920
Последний ответ 13 Февраля 2013, 22:49:13
от Rodogor
Форма добавления сообщения в топик форума

Автор vslstdРаздел Шаблоны XSLT

Ответов: 3
Просмотров: 3241
Последний ответ 03 Сентября 2011, 14:46:03
от admin
Форма обратной связи в версии Start

Автор BabajkaРаздел Шаблоны XSLT

Ответов: 2
Просмотров: 17562
Последний ответ 15 Января 2013, 15:04:33
от PHOENIX-75
Форма добавления комментариев (xslt)

Автор wolfmanРаздел Шаблоны XSLT

Ответов: 23
Просмотров: 18556
Последний ответ 30 Июля 2012, 22:54:24
от BaceH
пользовательская форма вопроса для модуля faq

Автор izen29Раздел Шаблоны XSLT

Ответов: 5
Просмотров: 3772
Последний ответ 16 Февраля 2013, 13:27:15
от Rodogor

0 Пользователей и 1 Гость просматривают эту тему.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Своя форма отправки заявки
« : 28 Февраля 2016, 19:38:20 »
Есть форма для записи на прием.
Я создала форму по шаблону обратной связи,
На странице 244, в которой форма %webforms add(138)%

			<a href="#x" class="overlay" id="win1"></a>
<div class="popup">
  <div class="popup-block">
<xsl:apply-templates select="document('udata://webforms/add/138')/udata"/>
  </div>
<a class="close" title="Закрыть" href="#close"></a>
</div>

Но теперь я не могу понять как ее изменить, добавить свои блоки и классы, а форма у меня сложная, честно в ужасе от того, что с ней надо что то делать... Т____Т
Думала сперва ее просто закинуть в шаблон, и сделать привязку полей в input и т.д., самое сложное это select, не представляю как вытащить туда список направления, хотя поставила назначение его как справочника. Но это еще как и отправить то надо -_-

				<form action="#" class="form form-sign">
<h4>Записаться</h4>
<div class="tabs-select">
<input id="tab-select3" class="tab-select" type="radio" name="tabs" checked="checked" />
<label for="tab-select3" title="Первичная запись">Первичная запись</label>

<input id="tab-select4" class="tab-select" type="radio" name="tabs" />
<label for="tab-select4" title="Вторичная запись">Вторичная запись</label>

<section id="content-select3" class="content-select">
<hr noshade="noshade" />
<fieldset>
<label>Ваше имя</label>
<input name="" type="text" required="required" placeholder="Фамилия Имя Отчество" />
</fieldset>
<fieldset class="one-line">
<label>E-mail</label>
<input name="" type="text" required="required" placeholder="Адрес электронной почты" />
<label class="tel">Телефон</label>
<input name="" type="text" required="required" placeholder="Контактный телефон" />
</fieldset>
<fieldset>
<label>Направление</label>
<div class="stylized_select">
<select name="" onchange="this.parentNode.getElementsByTagName('input')[0].value = this.options[this.selectedIndex].innerHTML;">
<option value="1">Тест</option>
<option value="2">Тест</option>
<option value="3">Тест</option>
<option value="4">Тест</option>
</select>
<div class="input_wrapper">
<input type="text" name="noname" value="" />
</div>
</div>
</fieldset>
<fieldset>
<label>Фамилия</label>
<input name="" type="text" required="required" placeholder="Фамилия" />
</fieldset>
<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>
<hr noshade="noshade" />
<fieldset>
<img src="images/recaptcha.png" alt="reCAPTCHA" />
<img src="images/5_discount.png" alt="Скидка 5%" />
</fieldset>
<fieldset>
<input type="button" name="" value="Записаться" class="button" />
</fieldset>
</section>

<section id="content-select4" class="content-select">
<hr noshade="noshade" />
<fieldset>
<label>Ваше ID</label>
<input name="" type="text" required="required" placeholder="Ваше ID" />
</fieldset>
<fieldset class="one-line">
<label>E-mail</label>
<input name="" type="text" required="required" placeholder="Адрес электронной почты" />
<label class="tel">Телефон</label>
<input name="" type="text" required="required" placeholder="Контактный телефон" />
</fieldset>
<fieldset>
<label>Направление</label>
<div class="stylized_select">
<select name="" onchange="this.parentNode.getElementsByTagName('input')[0].value = this.options[this.selectedIndex].innerHTML;">
<option value="1">Тест</option>
<option value="2">Тест</option>
<option value="3">Тест</option>
<option value="4">Тест</option>
</select>
<div class="input_wrapper">
<input type="text" name="noname" value="" />
</div>
</div>
</fieldset>
<fieldset>
<label>Фамилия</label>
<input name="" type="text" required="required" placeholder="Фамилия" />
</fieldset>
<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>
<hr noshade="noshade" />
<fieldset>
<img src="images/recaptcha.png" alt="reCAPTCHA" />
<img src="images/5_discount.png" alt="Скидка 5%" />
</fieldset>
<fieldset>
<input type="button" name="" value="Записаться" class="button" />
</fieldset>
</section>
</div>
</form>
Вот такая форма

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #1 : 29 Февраля 2016, 15:32:10 »
Доброе время суток.
На странице прописано в административной части umi (в блоке для контента): %webforms add(138)%

На странице шаблона прописано обращение:
				<a href="#x" class="overlay" id="win1"></a>
<div class="popup">
  <div class="popup-block">
<xsl:apply-templates select="document('udata://webforms/add/138')/udata"/>
  </div>
<a class="close" title="Закрыть" href="#close"></a>
</div>


Попробовала я сделать изменения на основание add_popup.xsl
Получается что он мне каждый label и input прописывает в блоке fieldset, но у меня есть fieldset со своими классами и по несколько input/label.
Как разбить-то такую форму :(((

    <xsl:template match="udata[@module = 'webforms'][@method = 'add']">
<form class="form form-sign" method="post" action="/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.data.check(this);" enctype="multipart/form-data">
<h4>Записаться</h4>
<div class="tabs-select">
<input id="tab-select3" class="tab-select" type="radio" name="tabs" checked="checked" />
<label for="tab-select3" title="Первичный прием">Первичная запись</label>

<input id="tab-select4" class="tab-select" type="radio" name="tabs" />
<label for="tab-select4" title="Вторичный прием">Вторичная запись</label>

<section id="content-select3" class="content-select">
<hr noshade="noshade" />

<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="/webforms/posted/{/udata/@form_id}/" />
<fieldset>
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</fieldset>
<fieldset>
<input type="submit" class="button" value="Записаться" />
</fieldset>
</section>

<section id="content-select4" class="content-select">
<hr noshade="noshade" />
тест
</section>
</div>
</form>
    </xsl:template>

Например вот так:
							<fieldset class="one-line">
<label>E-mail</label>
<input name="" type="text" required="required" placeholder="Адрес электронной почты" />
<label class="tel">Телефон</label>
<input name="" type="text" required="required" placeholder="Контактный телефон" />
</fieldset>

Или так:
							<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #2 : 29 Февраля 2016, 15:51:33 »
Что-то я в целом задачу понял - "кастомизировать" (в терминах документации UMI.CMS) форму - а вот остальное описание не понял.

Предположим, что нам нужно кастомизировать форму, вызываемую в XSLT шаблоне таким образом:

<xsl:apply-templates select="document('udata://webforms/add/138')/udata"/>

1. Находим в коде шаблона, где у нас описывается шаблон для webforms::add.

Как правило, это .../xslt/modules/webforms/add.xsl в стандартных шаблонах.
Если что - в стандартных шаблонах файло .../xslt/modules/webforms/add_popup.xsl как правило не подключается. Можно убедиться, зайдя в файло .../xslt/modules/webforms/common.xsl

2. Находим шаблон. Он будет приблизительно такой

<xsl:template match="udata[@module = 'webforms'][@method = 'add']">
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>

Копируем этот код, добавляем mode="myForm"
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="myForm"> .....</xsl:template>
И добавляем в "точку вызова" - <xsl:apply-templates select="document('udata://webforms/add/138')/udata" mode="myForm"/>

Теперь добавляем какую-нибудь метку, что бы понять, что теперь у нас "код пошёл по ветке с mode myForm", и далее кастомизируем....

P.S. если в админке написать %webforms add(138)% и вывести этот код, то будет использован TPL шаблон, а не XSLT, поэтому рекомендую сначала определиться "с точкой входа" - где именно вызывается вывод формы и что именно нужно кастомизировать.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #3 : 29 Февраля 2016, 16:05:18 »
Получается так? Вроде форма 138 вывелась

	<xsl:template match="udata[@module = 'webforms'][@method = 'add'][@pageId='244']" mode="initial_reception" >
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>

<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<xsl:apply-templates select="document('udata://webforms/add/138')/udata" mode="initial_reception"/>
</xsl:template>


Я вроде оборачиваю input и label в fieldset, но тут получается они по парно находятся в fieldset, а у меня вот такие например блоки.
Как к ним сделать по нескольку в fieldset или чтобы у fieldset был свой класс.... и т.д.

							<fieldset class="one-line">
<label>E-mail</label>
<input name="" type="text" required="required" placeholder="Адрес электронной почты" />
<label class="tel">Телефон</label>
<input name="" type="text" required="required" placeholder="Контактный телефон" />
</fieldset>
<fieldset>
<label>Отделение</label>
<div class="stylized_select">
<select name="" onchange="this.parentNode.getElementsByTagName('input')[0].value = this.options[this.selectedIndex].innerHTML;">
<option value="1">Отделение</option>
<option value="2">Отделение</option>
<option value="3">Отделение</option>
<option value="4">Отделение</option>
</select>
<div class="input_wrapper">
<input type="text" name="noname" value="" />
</div>
</div>
</fieldset>
<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #4 : 29 Февраля 2016, 16:13:33 »
а черт, не могу сделать изменений..
несмотря на то, что я убрала из контента %webforms add(138)%, форма все равно вызывается, но свой мод не подключился...

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #5 : 29 Февраля 2016, 16:17:14 »
а черт, не могу сделать изменений..
несмотря на то, что я убрала из контента %webforms add(138)%, форма все равно вызывается, но свой мод не подключился...

Даю подсказку -

<xsl:template match="udata[@module = 'webforms'][@method = 'add'][@pageId='244']" ....../>

Сдаётся мне, что понимание XSLT ещё не появилось. :)
Попробуйте разобраться зачем именно нужен выделенный "элемент" и получиться ли его увидеть, если udata://webforms/add/138 выполнить в адресной строке



*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #6 : 29 Февраля 2016, 16:30:55 »
Ну грубо говоря, он приписывает вывод информации на странице с данным id?
хотя еще надо было бы тогда прописать result, да?

Но для веб формы походу это не применимо, так?

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

Получается у меня сейчас вызывает мою форму вот это блок:
	<xsl:template match="udata[@module = 'webforms'][@method = 'add']">
<form class="form form-sign" method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>

И я правильно поняла вот так надо прописать mode?
	<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);" enctype="multipart/form-data">
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>

<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<xsl:apply-templates select="document('udata://webforms/add/138')/udata" mode="initial_reception"/>
</xsl:template>

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

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #7 : 29 Февраля 2016, 16:45:19 »
1. Вызов шаблона.


<xsl:template match="...."/> - описывает шаблон,
<xsl:apply-templates select="... /> - "вызывает" шаблон.



Нужно найти точку вызова шаблона и удостовериться, что это именно она и только потом уже переходить к редактированию шаблона. К примеру, можно обрамить её какими-нибудь символами, что бы понять, что выводится. Всё, что выведется внутри этих символов - результат работы шаблона.


|<xsl:apply-templates select="document('udata://webforms/add/138')/udata" mode="initial_reception"/>|
и после этого смотреть на всё то, что выводится внутри ||

2.  ...И я правильно поняла вот так надо прописать mode?...
[b][u]это не правильно[/u][/b]
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<xsl:apply-templates select="document('udata://webforms/add/138')/udata" mode="initial_reception"/>
</xsl:template>

Это будет зацикленный код, тот самый "бесконечный цикл".

Нужно так, заодно добавим метку, что бы было видно, что "заработало":

<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<form method="post" action="{$lang-prefix}/webforms/send/" onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);" enctype="multipart/form-data">
[b]<b>!!!! НАКОНЕЦ-ТО ЗАРАБОТАЛО!!!</b>[/b]
<xsl:apply-templates select="items" mode="address" />
<xsl:apply-templates select="groups/group" mode="webforms" />
<input type="hidden" name="system_form_id" value="{/udata/@form_id}" />
<input type="hidden" name="ref_onsuccess" value="{$lang-prefix}/webforms/posted/{/udata/@form_id}/" />
<div class="form_element">
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</div>
<div class="form_element">
<input type="submit" class="button" value="Отправить" />
</div>
</form>
</xsl:template>

А вызов этого шаблона должен выглядеть так:

<xsl:apply-templates select="document('udata://webforms/add/138')/udata"  mode="initial_reception"/>

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #8 : 29 Февраля 2016, 17:05:39 »
аааааа.....
Я не про тот вызов подумала, думала что вы только про содержимое в add говорите.
Почему сознание не поняло про какой именно вызов говориться ><

Блин, глупо-то как -_-"

Тогда остается только вопрос с fieldset...

Два дня вожусь с xslt и мозги уже просто пухнут

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #9 : 29 Февраля 2016, 17:16:34 »
И еще такой вопрос, я первый раз программирую форму...
Если в сплывающем окне две вкладки с двумя формами, то лучше делать два разных <form>...</form>, так?

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #10 : 29 Февраля 2016, 17:19:38 »
И еще такой вопрос, я первый раз программирую форму...
Если в сплывающем окне две вкладки с двумя формами, то лучше делать два разных <form>...</form>, так?
Если отправить одну форму - то отправятся только данные, находящиеся внутри неё, если не предусмотреть заранее на JS/JQUERY другой вариант, когда данные из всех форм собираются вместе и отправляются.

Так что если это реально две разные формы - лучше делать две разные формы, а если это вкладки внутри формы - лучше делать одну форму и в ней вкладки.

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #11 : 29 Февраля 2016, 17:46:45 »
Понятно, тогда переделать надо

Так что делать, если в xslt в одном fieldset создается одна пара из input и  label. А если их в fieldset надо сделать несколько пар и при том label или input тоже могут нести свой класс, а не только fieldset
Для примера:
							<fieldset class="one-line">
<label>E-mail</label>
<input name="" type="text" required="required" placeholder="Адрес электронной почты" />
<label class="tel">Телефон</label>
<input name="" type="text" required="required" placeholder="Контактный телефон" />
</fieldset>
<fieldset>
<label>Отделение</label>
<div class="stylized_select">
<select name="" onchange="this.parentNode.getElementsByTagName('input')[0].value = this.options[this.selectedIndex].innerHTML;">
<option value="1">Отделение</option>
<option value="2">Отделение</option>
<option value="3">Отделение</option>
<option value="4">Отделение</option>
</select>
<div class="input_wrapper">
<input type="text" name="noname" value="" />
</div>
</div>
</fieldset>
<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>

Или это каждый fieldset описывать с разными mode? Но это сколько ж строк в итоге будет О_О
вот почему для не знакомого с этим всем человеку, достался такой сложный сайт для первого раза-_-"

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #12 : 01 Марта 2016, 13:42:38 »
Нашла вот такой пример. Можете ответить на комментарии в коде, я просто многое не поняла...
  <xsl:template match="/">	
<xsl:apply-templates select="document('udata://webforms/add/127')/udata" mode="onlineWebform"/>  <!-- тут идет вывод формы -->
  </xsl:template>
  <xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="onlineWebform">
        <p class="req">* Поля, обязательные для заполнения</p>
        <form id="full_form" method="post"  action="/webforms/send/" enctype="multipart/form-data">
            <fieldset>
                <input type="hidden" name="system_email_to" value="572"/> <!-- это id адреса -->
                <input type="hidden" name="system_form_id" value="{@form_id}"/>  <!--  Что это за id должен быть?-->
                <input type="hidden" name="ref_onsuccess" value="/webforms/posted/"/> <!-- Как поняла это какой-то стандартный вывод? Просто в папке webforms в файле common все include закомментированы -->
                <xsl:apply-templates select=".//group" mode="form-group"/> <!--скажем так, здесь идет вывод полей так? -->

                <xsl:apply-templates select="document('udata://system/captcha')/udata[url]" mode="cap_cont1"/>
                <input type="submit" value="Отправить" class="btn lightRed sendMessage"/>
                <div style="clear:both"></div>
            </fieldset>
        </form>
    </xsl:template>

    <xsl:template match="group" mode="form-group">
        <xsl:variable name="name" select="@name"/>
        <div class="{$name}"> <!-- получается он просто вызывает сами блоки формы, которые созданы в обратной связи? -->
            <h4> <xsl:value-of select="@title"/> </h4>
            <xsl:apply-templates select=".//field" mode="fields-label"/> <!-- как посмотреть xml (?) чтобы увидеть field -->
        </div>
        <div style="clear: both"></div>
    </xsl:template>

    <xsl:template match="field[@type = 'relation']" mode="fields-label">
        <label>
            <xsl:value-of select="@title"/>
            <select name="{@input_name}">
                <option value="577">  <xsl:value-of select=".//item[@id=577]" />  </option>
                <option value="578">  <xsl:value-of select=".//item[@id=578]" />  </option>
                <option value="579">  <xsl:value-of select=".//item[@id=579]" />  </option>
                <option value="1014">  <xsl:value-of select=".//item[@id=1014]" />  </option>
                <option value="1015">  <xsl:value-of select=".//item[@id=1015]" />  </option>
                <option value="1016">  <xsl:value-of select=".//item[@id=1016]" />  </option>


            </select>
        </label>
    </xsl:template>

<!-- а вот отсюда и дальше не пойму, один и тот же мод с вызывом разных типов полей, так?
Тогда что такое field в принципе?
и получается там где был первый вызов fields-label будут подставляться по порядку все вызванный ниже блоки?-->
    <xsl:template match="field[@type = 'string']" mode="fields-label">
        <label>
            <xsl:value-of select="@title"/>
            <input  name="{@input_name}"  type="text"/>
        </label>
    </xsl:template>

    <xsl:template match="field[@type = 'text']" mode="fields-label">
        <label class="textArea"><span><xsl:value-of select="@title"/></span> <textarea  rows="3" cols="20" name="{@input_name}" /></label>
    </xsl:template>

    <xsl:template match="field[@type = 'date']" mode="fields-label">
        <label><xsl:value-of select="@title"/> <input  name="{@input_name}"  type="date"/></label>
    </xsl:template>

    <xsl:template match="field[@type = 'boolean']" mode="fields-label">
        <label> <input  name="{@input_name}"  type="checkbox"/>  &#160;<xsl:value-of select="@title"/>
            <xsl:if test="@tip">
            &#160;<span>(<xsl:value-of select="@tip"/>)</span>
            </xsl:if>
       </label>
</xsl:template>


    <xsl:template match="field[@type = 'file' or @type = 'img_file' or @type = 'swf_file' or @type = 'video_file']" mode="fields-label">
        <div class="file_upload">
            <input type="file" name="{@input_name}" id="{@input_name}_hidden" class="upload_hidden"  onchange="document.getElementById('{@name}_visible').innerHTML  = this.value;"/>
            <span class="button" onclick="document.getElementById('{@input_name}_hidden').click();" >Выберите файл</span>
            <span  class="upload_visible"  id='{@name}_visible'>Файл не выбран</span>
        </div>
    </xsl:template>



    <xsl:template match="field[@required = 'required']" mode="fields-label">
        <label class="required"><xsl:value-of select="@title"/><span> *</span> <input  name="{@input_name}"  type="text" required="required"/></label>
    </xsl:template>



*

aghigay

  • *****
  • 611
  • +28/-3
  • Просто пытаюсь помочь. Иногда пинком
    • Просмотр профиля
    • umicms.me
Re: Своя форма отправки заявки
« Ответ #13 : 01 Марта 2016, 14:41:02 »
system_form_id - это system (системный) form (формы) id (идентификатор) - фактически ID формы. В случае примера - 127

ref_onsuccess - это переход на какую страницу делать в случае успешной отправки формы. Можно на /webforms/posted/ - как тут, а можно передать туда какой-то параметр или еще что-то и понимать с какой формы пришел пользователь. Можно указать реально существующую страницу.

<xsl:apply-templates select=".//group" mode="form-group"/> - это вывод всех групп (то есть секций с тегом group) по шаблону с режимом form-group

Вообще говоря apply-templates - это по-русски "применить шаблоны". select говорит к чему именно нужно применить. А mode говорит об особенностях шаблона. Например, к одному и тому же тегу могут применяться разные шаблоны в зависимости от ситуации

Мой блог http://umicms.me

*

Sumrakrnd

  • ****
  • 311
  • +1/-0
  • Учусь «на примерах»
    • Просмотр профиля
Re: Своя форма отправки заявки
« Ответ #14 : 01 Марта 2016, 16:41:06 »
Если я уберу fieldset и поставлю вместо div, то я получается внутри fieldset будет несколько input/label, так?
Грубо говоря группы являются fieldset, так?
Вот так, я вопросы опять же написала в комментариях кода:
	<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="onlineWebform">
        <p class="req">* Поля, обязательные для заполнения</p>
        <form id="full_form" method="post"  action="/webforms/send/" enctype="multipart/form-data">
<input type="hidden" name="system_email_to" value="572"/> <
<input type="hidden" name="system_form_id" value="{@form_id}"/>
<input type="hidden" name="ref_onsuccess" value="/webforms/posted/"/>
<xsl:apply-templates select=".//group" mode="form-group"/>

<xsl:apply-templates select="document('udata://system/captcha')/udata[url]" mode="cap_cont1"/> <!-- сюда ж можно поставить reCAPTCHA? -->
<input type="submit" value="Отправить" class="btn lightRed sendMessage"/>
        </form>
    </xsl:template>

    <xsl:template match="group" mode="form-group">
        <xsl:variable name="name" select="@name"/>
        <fieldset class="{$name}">
            <xsl:apply-templates select=".//field" mode="fields-label"/>
        </fieldset>
    </xsl:template>

    <xsl:template match="field[@type = 'string']" mode="fields-label">
        <label><xsl:value-of select="@title"/></label>
        <input  name="{@input_name}"  type="text"/>
    </xsl:template>
<!-- можно так прописывать класс? Но получается надо менять мод -->
<xsl:template match="field[@type = 'string']" mode="fields-label">
        <label class="tel"><xsl:value-of select="@title"/></label>
        <input  name="{@input_name}"  type="text"/>
    </xsl:template>

<!-- вопрос обязательны ли эти id в option, если в к select будет привязываться справочник через админку?
вот так прописать можно:
<xsl:template match="field[@type = 'relation']" mode="fields-label">
<label><xsl:value-of select="@title"/></label>
<select name="{@input_name}">
<xsl:apply-templates select="item" mode="form-select"/>
</select>
</xsl:template>
<xsl:template match="item" mode="form-select">
<option value="{@id}">
<xsl:value-of select="." />
</option>
</xsl:template>
-->
    <xsl:template match="field[@type = 'relation']" mode="fields-label">  <!-- Кстати, а как посмотреть тип данных? -->
<label><xsl:value-of select="@title"/></label>
            <select name="{@input_name}">
                <option value="577">  <xsl:value-of select=".//item[@id=577]" />  </option>
                <option value="578">  <xsl:value-of select=".//item[@id=578]" />  </option>
                <option value="579">  <xsl:value-of select=".//item[@id=579]" />  </option>
                <option value="1014">  <xsl:value-of select=".//item[@id=1014]" />  </option>
                <option value="1015">  <xsl:value-of select=".//item[@id=1015]" />  </option>
                <option value="1016">  <xsl:value-of select=".//item[@id=1016]" />  </option>
            </select>
    </xsl:template>

<!--ии... вот тут произошло зависание
как это должно выглядить?  Т_Т А то тут классы и input и label есть, а так же есть id
-->
<fieldset>
<label class="data_text">Дата и время</label>
<input type="text" id="datepicker_1" name="" placeholder="3 декабря 2015" class="data"/>
<input type="text" name="amount-time" id="amount-time1" class="time with" value="12:00" />
<div id="slider-time" class="time-runner"></div>
<input type="text" name="amount-time" id="amount-time2" class="time to" value="18:30" />
</fieldset>