Есть форма для записи на прием.
Я создала форму по шаблону обратной связи,
На странице 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>
Вот такая форма
Доброе время суток.
На странице прописано в административной части 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>
Что-то я в целом задачу понял - "кастомизировать" (в терминах документации 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, поэтому рекомендую сначала определиться "с точкой входа" - где именно вызывается вывод формы и что именно нужно кастомизировать.
Получается так? Вроде форма 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>
Ну грубо говоря, он приписывает вывод информации на странице с данным 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>
но в этом блоке изменения на сайте не отражаются (честно, сперва думала сложность в том, что форма в сплывающем окне)
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"/>
Понятно, тогда переделать надо
Так что делать, если в 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? Но это сколько ж строк в итоге будет О_О
вот почему для не знакомого с этим всем человеку, достался такой сложный сайт для первого раза-_-"
Нашла вот такой пример. Можете ответить на комментарии в коде, я просто многое не поняла...
<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"/>  <xsl:value-of select="@title"/>
<xsl:if test="@tip">
 <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>
Если я уберу 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>
Группы не являются fieldset.
Вот этот шаблон говорит:
<xsl:template match="group" mode="form-group"> <!-- Каждая группа по режиму form-group выводится так: -->
<xsl:variable name="name" select="@name"/> <!-- определяем переменную $name как аттрибут(@) группы с названием name -->
<fieldset class="{$name}"> <!-- выводим html тег fieldset с классом, название которого берем из переменной $name-->
<xsl:apply-templates select=".//field" mode="fields-label"/> <!-- каждое поле (field) внутри текущей группы (.) с любым уровнем вложенности (//) выводить по режиму "fields-label" -->
</fieldset> <!-- закрываем html тег -->
</xsl:template>
Я очень рекомендую почитать про xslt или взять частные уроки, может консультации, так как, если я правильно понимаю, уровень у вас - начинающий. Без базовых знаний будет сложно быстро двигаться в этой области.
Да я бы с удовольствием, но проблема в том, что времени нет, сайт сделать надо в ближайшее время, вот и разбираюсь на ходу....
Сейчас я знаю в каком направление изучать xslt, не стой стороны показал изучение мой предшественник >< если смотреть он мне ничего и не объяснил получается
Да и было это меньше половины дня =_="
Я вроде как понимаю, но до конца не понимаю как происходят, скажем так, вызовы разных ф-ций, типов, данных и т.д.
Вот простую форму я поняла как вызвать, но как сделать эту часть формы, если стоит такая жесткая привязка по блокам:
- Здесь вызов календаря
- И с помощью ползунка выбирается время с и до.
В верстке блок выглядит так
В Umi это группа с тремя полями и типом Строка.
<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>
Ну вообще-то основная часть вопроса была в том, как вывести очень не стандартную группу label/input, в которой у каждого label/input есть свой id и class
Я в теме не раз приводила этот пример выбора даты и выбора времени с помощью ползунка, время с и до:
<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>
Так же верстка формы тоже приведена, для представления поля и какая разбивка.
Хоть ей и так придется переделывать внутренние блоки для группировки полей -_-" , но на наличие полей это не повлияет.
А вот про copy-of не подумала, просто как-то забыла про него ><
Он очень даже подойдет для вывода структуры формы.
Вообще самое интересное, что мое решение я нашла совершенно не в разделах связанных с формой О_о
Точнее в темах посвященных "классическим" фильтрам каталогов. Точнее этой Фильтр цены с бегунком (http://wiki.umisoft.ru/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D1%86%D0%B5%D0%BD%D1%8B_%D1%81_%D0%B1%D0%B5%D0%B3%D1%83%D0%BD%D0%BA%D0%BE%D0%BC)
Copy-of очень сильно помог, чтобы быстро смотреть все нужные мне название (сайт находится локально )
Но почему-то не показывается капча, хотя я ничего не трогала, только обернула в fieldset (без него она тоже не отображается)
<!-- *** Первичный и вторичный ***-->
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="initial_reception" >
<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">
<hr noshade="noshade" />
<fieldset>
<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}/" />
</fieldset>
<hr noshade="noshade" />
<fieldset>
<xsl:apply-templates select="document('udata://system/captcha/')/udata" />
</fieldset>
<fieldset>
<input type="submit" class="button" value="Записаться" />
</fieldset>
</form>
</xsl:template>
<!-- *** /Первичный и вторичный прием ***-->
<!-- Связь -->
<xsl:template match="group[@name = 'svyaz']" mode="webforms">
<div class="one-line">
<xsl:apply-templates select="field" mode="webforms-one" />
</div>
</xsl:template>
<xsl:template match="field" mode="webforms-one">
<label>
<xsl:apply-templates select="." mode="webforms_required" />
<xsl:value-of select="@title" /><xsl:text>:</xsl:text>
</label>
<xsl:apply-templates select="." mode="webforms_input_type" />
</xsl:template>
<xsl:template match="field[@name = 'telefon']" mode="webforms-one">
<label class="tel">
<xsl:apply-templates select="." mode="webforms_required" />
<xsl:value-of select="@title" /><xsl:text>:</xsl:text>
</label>
<xsl:apply-templates select="." mode="webforms_input_type" />
</xsl:template>
<!-- /Связь -->
<!-- Отделение -->
<xsl:template match="group[@name = 'otdelenie']" mode="webforms">
<div>
<xsl:apply-templates select="field" mode="webforms-otdelenie" />
</div>
</xsl:template>
<xsl:template match="field" mode="webforms-otdelenie">
<label>
<xsl:apply-templates select="." mode="webforms_required" />
<xsl:value-of select="@title" /><xsl:text>:</xsl:text>
</label>
<xsl:apply-templates select="." mode="webforms_input_type" />
</xsl:template>
<xsl:template match="field[@title = 'Отделение']" mode="webforms_input_type">
<div class="stylized_select">
<select name="{@input_name}" onchange="this.parentNode.getElementsByTagName('input')[0].value = this.options[this.selectedIndex].innerHTML;">
<xsl:if test="@multiple">
<xsl:attribute name="multiple">
<xsl:text>multiple</xsl:text>
</xsl:attribute>
</xsl:if>
<option value=""></option>
<xsl:apply-templates select="values/item" mode="webforms_input_type" />
</select>
<div class="input_wrapper">
<input type="text" name="noname" value="" />
</div>
</div>
</xsl:template>
<!-- /Отделение -->
<!-- Дата и время -->
<xsl:template match="group[@name = 'data_i_vremya']" mode="webforms">
<div>
<xsl:apply-templates select="field" mode="webforms-data" />
</div>
</xsl:template>
<xsl:template match="field[@name = 'data']" mode="webforms-data">
<label class="data_text">
<xsl:apply-templates select="." mode="webforms_required" />
<xsl:value-of select="@title" /><xsl:text>:</xsl:text>
</label>
<xsl:apply-templates select="." mode="webforms_input_type" />
</xsl:template>
<xsl:template match="field" mode="webforms-data">
<xsl:apply-templates select="." mode="webforms_required" />
<xsl:apply-templates select="." mode="webforms_input_type" />
</xsl:template>
<xsl:template match="field[@name = 'data']" mode="webforms_input_type">
<input type="text" name="{@input_name}" class="textinputs data" id="datepicker_1"/>
</xsl:template>
<xsl:template match="field[@name = 'time_with']" mode="webforms_input_type">
<input type="text" name="{@input_name}" class="textinputs time with" id="amount-time1" value="12:00" />
<div id="slider-time" class="time-runner"></div>
</xsl:template>
<xsl:template match="field[@name = 'time_to']" mode="webforms_input_type">
<input type="text" name="{@input_name}" class="textinputs time to" id="amount-time2" value="20:00" />
</xsl:template>
<!-- /Дата и время -->
А насчет основ, скажем так, я может и знаю что-то, но вопрос в том как это применить не имею представления в тех или иных случаях.
Мой предшественник(аля наставник) потратив пол дня объяснений о umi (что самое интересное, того что мне сейчас очень нужно не объяснял) собрал вещи и уволился.
Я имею представление скажем о структуре запроса, даже представляю что с чем должно быть связано, НО каким способом это должно быть связано между собой не знаю или просто не понимаю, как уже говорила, что это что-то в данном случае может быть применено.
p.s.: Мой совет, если вас в какой-то день вымораживают женщины, то не ходите на форумы
Возник маленький вопрос.
У меня в модальном окне, есть форма обратной связи.
Вот тут она выводится:
<a href="#x" class="overlay" id="win2"></a>
<div class="popup popup-call">
<xsl:apply-templates select="document('udata://webforms/add/163')/udata" mode="request_call"/>
<a class="close" title="Закрыть" href="#close"></a>
</div>
Здесь идет запрос, надо чтобы было сообщение об успешной отправке.
Я поставила стандартный код, который был в Umi форме.
Но вот как сделать, чтобы сообщение отобразилось в том же модальном окне, что и форма?
И где надо прописывать само сообщение?
<xsl:template match="udata[@module = 'webforms'][@method = 'add']" mode="request_call">
<form class="form form-call" method="post" action="{$lang-prefix}/webforms/send/"
onsubmit="site.forms.data.save(this); return site.forms.errors.check(this);"
enctype="multipart/form-data">
<legend>Позвоните мне!</legend>
<hr noshade="noshade"/>
<fieldset>
<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}/"/> <!-- стандартный umi -->
</fieldset>
<fieldset>
<input type="submit" class="button" value="Запросить звонок"/>
</fieldset>
</form>
</xsl:template>
P.S.: я нашла posted.xsl, но куда идет результат этого файла?