Скачивание файла только зарегистрированным пользователям — различия между версиями
SerjK (обсуждение | вклад) (Новая страница: «'''Задача:''' Сделать скачивание файла только для зарегистрированных пользователей, а для …») |
Stexe (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | [[Категория: Верстка в XSLT]][[Категория: Вопросы и уроки разработки сайтов на UMI.CMS]] | ||
+ | '''Актуально для версии 2.9.6'''<br/><br/> | ||
'''Задача:''' | '''Задача:''' | ||
− | Сделать скачивание | + | Сделать скачивание файлов доступным только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать пенаправление на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что гость будет попадать на страницу и видеть: |
"Имя файла: | "Имя файла: | ||
Размер файла: Kb | Размер файла: Kb | ||
− | Если закачивание файла не начнется через 10 сек, кликните по этой ссылке" | + | Если закачивание файла не начнется через 10 сек, кликните по этой ссылке". |
'''Решение:''' | '''Решение:''' | ||
− | Мы будем рассматривать реализацию этой задачи на примере | + | Мы будем рассматривать реализацию этой задачи на примере демонстрационного дизайна "Современный интернет-магазин" ("demodizzy"), в котором используется XSLT-шаблонизатор.<br/> |
− | В файл shared_file.xsl | + | В файл '''\templates\demodizzy\xslt\modules\filemanager\shared_file.xsl''' в шаблон: |
− | + | <source lang="xml">result[@module = 'filemanager'][@method = 'shared_file']</source> | |
− | |||
− | <source lang=" | ||
вместо вызова: | вместо вызова: | ||
− | <source lang=" | + | <source lang="xml"><xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" /></source> |
− | + | добавим условие на текущего пользователя: | |
− | <source lang=" | + | <source lang="xml"><xsl:choose> |
<xsl:when test="$user-type = 'guest'"> | <xsl:when test="$user-type = 'guest'"> | ||
Файл доступен только для зарегистрированных пользователей. | Файл доступен только для зарегистрированных пользователей. | ||
Строка 29: | Строка 29: | ||
т.е. если Гость, ты вызываем форму авторизации: | т.е. если Гость, ты вызываем форму авторизации: | ||
− | <source lang=" | + | <source lang="xml"><xsl:apply-templates select="document('udata://users/auth/')/udata" /></source> |
− | |||
− | если не Гость, то | + | если не Гость, то выполняем стандартный вызов, который отобразит данные о файле.<br /> |
− | В основном шаблоне: | + | В основном шаблоне '''\templates\demodizzy\xslt\default.xsl''' должны быть определены следующие переменные: |
− | <source lang=" | + | <source lang="xml"> |
− | + | <xsl:variable name="user-type" select="/result/user/@type" /> | |
− | <xsl:variable name="user-type" select="/result/user/@type" /></source> | + | <xsl:variable name="document-page-id" select="/result/@pageId" /> |
+ | </source> |
Текущая версия на 05:59, 1 июня 2014
Актуально для версии 2.9.6
Задача:
Сделать скачивание файлов доступным только для зарегистрированных пользователей, а для незарегистрированных (Гостей) пользователей делать пенаправление на соответствующую страницу. По умолчанию, выставление прав доступа к этой странице только зарегистрированным пользователям, не решит нашу задачу, потому что гость будет попадать на страницу и видеть: "Имя файла: Размер файла: Kb Если закачивание файла не начнется через 10 сек, кликните по этой ссылке".
Решение:
Мы будем рассматривать реализацию этой задачи на примере демонстрационного дизайна "Современный интернет-магазин" ("demodizzy"), в котором используется XSLT-шаблонизатор.
В файл \templates\demodizzy\xslt\modules\filemanager\shared_file.xsl в шаблон:
result[@module = 'filemanager'][@method = 'shared_file']
вместо вызова:
<xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" />
добавим условие на текущего пользователя:
<xsl:choose>
<xsl:when test="$user-type = 'guest'">
Файл доступен только для зарегистрированных пользователей.
<xsl:apply-templates select="document('udata://users/auth/')/udata" />
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="document(concat('udata://filemanager/shared_file//', $document-page-id))/udata" />
</xsl:otherwise>
</xsl:choose>
т.е. если Гость, ты вызываем форму авторизации:
<xsl:apply-templates select="document('udata://users/auth/')/udata" />
если не Гость, то выполняем стандартный вызов, который отобразит данные о файле.
В основном шаблоне \templates\demodizzy\xslt\default.xsl должны быть определены следующие переменные:
<xsl:variable name="user-type" select="/result/user/@type" />
<xsl:variable name="document-page-id" select="/result/@pageId" />