В результате мы можем поместить все шаблоны, относящиеся к активации аккаунта и восстановлению пароля, в один файл, например ~/users/users.xsl
, подключив его к основному шаблону разметки страниц при помощи <xsl:include>
.
Тогда итоговый шаблон может выглядеть примерно следущим образом:
<xsl:template match="result[@module = 'users' and @method = 'login']">
<xsl:apply-templates select=”document(‘udata://users/auth/’)/udata” />
</xsl:template>
<xsl:template match="result[@module = 'users' and @method = 'auth']">
<xsl:apply-templates select=”document(‘udata://users/auth/’)/udata” />
</xsl:template>
<xsl:template match="udata[@module = 'users' and @method = 'auth']">
<form method="post" action="/users/login_do/">
<div>
<xsl:text>Логин: </xsl:text>
<input type="text" name="login" id="login" />
</div>
<div>
<xsl:text>Пароль:
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value=”Войти” />
</div>
</form>
</xsl:template>
<xsl:template match="result[@method = 'registrate']">
<xsl:apply-templates select="document('udata://users/registrate')/udata" />
</xsl:template>
<xsl:template match="udata[@method = 'registrate']">
<form id="registrate" enctype="multipart/form-data" method="post" action="/users/registrate_do/">
<div>
<xsl:text>Логин:</xsl:text>
<input type="text" name="login" />
</div>
<div>
<xsl:text>Пароль:</xsl:text>
<input type="password" name="password" />
</div>
<div>
<xsl:text>Повторите пароль:</xsl:text>
<input type="password" name="password_confirm" />
</div>
<div>
<xsl:text>Е-mail:</xsl:text>
<input type="text" name="email" />
</div>
<xsl:apply-templates select="document(concat(‘udata://data/getCreateForm/’, type_id))/udata" />
<xsl:apply-templates select="document('udata://system/captcha')/udata" />
<div>
<input type="submit" value="Зарегистрироваться" />
</div>
</form>
</xsl:template>
<xsl:template match="result[@module = ‘users’][@method = 'registrate_done']">
<h4>
<xsl:text>Заголовок </xsl:text>
</h4>
<p>
<xsl:text> Сообщение о пройденной регистрации </xsl:text>
</p>
</xsl:template>
<xsl:template match="result[@module = 'users'][@method = 'activate']">
<h1><xsl:value-of select="@header" /></h1>
<xsl:apply-templates select="document(concat('udata://users/activate/',$param0,'/'))/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'activate']">
<xsl:apply-templates select="document('udata://content/redirect/(/users/auth/)/')/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'activate'][error]">
<xsl:value-of select="error" />
</xsl:template>
<xsl:template match="result[@method = 'forget']">
<form id="forget" method="post" action="/users/forget_do/">
<script>
<![CDATA[
jQuery(document).ready(function(){
jQuery('#forget input:radio').click(function() {
jQuery('#forget input:text').attr('name', jQuery(this).attr('id'));
});
});
]]>
</script>
<div>
<label>
<span>
<input type="radio" id="forget_login" name="choose_forget" checked="checked" />
<xsl:text>Логин</xsl:text>
</span>
</label>
<label>
<span>
<input type="radio" id="forget_email" name="choose_forget" />
<xsl:text>Е-мэйл</xsl:text>
</span>
</label>
</div>
<div>
<input type="text" name="forget_login" />
</div>
<div>
<input type="submit" value="Отправить" />
</div>
</form>
</xsl:template>
<xsl:template match="result[@method = 'forget_do']">
<p>
<xsl:text>Сообщение о том, что на почту выслана ссылка для получения нового пароля</xsl:text>
</p>
</xsl:template>
<xsl:template match="result[@module = 'users'][@method = 'restore']">
<h1><xsl:value-of select="@header" /></h1>
<xsl:apply-templates select="document(concat('udata://users/restore/',$param0,'/'))/udata" />
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'restore'][@status = 'success']">
<div>Пароль успешно изменен, на e-mail адрес, указанный при регистрации выслано уведомление.</div>
<div>
<p>Логин: <xsl:value-of select="login" /></p>
<p>Пароль: <xsl:value-of select="password" /></p>
</div>
</xsl:template>
<xsl:template match="udata[@module = 'users'][@method = 'restore'][@status = 'fail']">
<div>Невозможно восстановить пароль: неверный код активации.</div>
</xsl:template>