Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - MIke

Страницы: [1]
1
если вам нужно защитить файлы, и вы пошли по пути написание кастома, то скорее всего имеет смысл положить файлы в отдельную папку. Запретить к ней доступ (например через htaccess) и высылать   ссылка на временную копию файла сгенерированного на ограниченное время или ограниченное количество скачивания.
Ну с помощью PHP это понятно, можно наделать всяких изощрений.
Но вопрос, почему все же не отрабатывается простая установка прав на файл в UMI? Ведь есть пункт меню "Скачивание файлов. Или он для другого?

2
по сути код должен работать, а как происходит вызов самого узла udata в вашем шаблоне? просто может его перекрывают более подходящие правила...
Ну метод же кастомный и вызов его в одном месте, как и писал ранее:
<a href="/udata/filemanager/price_download/price/price2.xls">Скачать прайс-лист</a>

И потом, если бы его перекрывали другие правила, то не выводилось бы наверное такое на странице: "This XML file does not appear to have any style information associated with it. The document tree is shown below."

3
Ну что, господа, неужели никто не переопределял вывод ошибок?
:)

4
Создан кастомный макрос в модуле filemanager.
Вызывается так: 
<a href="/udata/filemanager/price_download/price/price2.xls">Скачать прайс-лист</a>
На него установлены права.
Отрабатывается все правильно. У пользователей без прав появляется страница:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="filemanager" method="price_download" generation-time="0.048547">
<error code="require-more-permissions">
Ваших прав недостаточно, чтобы совершить это действие
</error>
</udata>

В документации (http://dev.docs.umi-cms.ru/shablony_i_makrosy/obrabotka_i_otobrazhenie_oshibok_makrosov/oshibki_vyzova_makrosa/) по UMI написано: При желании на этот случай мы можем описать шаблон (задав соответствие match="udata[error]") и обработать нужным образом результат.

Так вот, пытаюсь обработать и выдать пользователю свою страницу, но ничего не происходит.
В шаблоне пишу так:
<xsl:template match="udata[@module = 'filemanager'][@method = 'price_download'][error]">
  <p>Для скачивания прайс-листа необходима авторизация!</p>
</xsl:template>

5
Как обычно сам с собой говорю.
:)

Затупил совсем. Ясно что вызов по ссылке такой:
<a href="/udata/custom/price_download/price/price2.xls">Скачать прайс-лист</a>

6
Реализовал в шаблоне, по типу пользователей.
Незарегистрированным показывается форма авторизации.
После авторизации появляется ссылка на файл.
Но в таком варианте любой другой может, зная прямую ссылку, скачать не заходя на страницу и не регистрируясь.
Поэтому скачивание решено организовать кастомным макросом.

Функция вызывается так:
<xsl:value-of select="document('udata://custom/price_download/price/price2.xls')/udata" />

Только что-то не соображу, как сделать чтобы она не сразу выполнялась, а по нажатии на какую-нибудь кнопку или ссылку?

7
Ай, спасибо!

Ведь видел где-то, да забыл.
:)

8
Есть кастомный макрос типа function p_2($str).
Нужно при вызове из шаблона в $str передать строку содержащую "/".

Т.е.:
<xsl:value-of select="document(concat('udata://custom/p_2/','kat/mat/sat'))/udata" />

Как реализовать?

9
вообще, должна выдаваться стрница с запросом авторизации, у вас ничего не выводиться в том месте где вызывается макрос %content% или вообще белая страница?
На странице с результатом (самим файлом) в контенте стоит ссылка:
<p><a href="/files/Price1.xls">Скачай прайс!</a></p>

Вывод контента в шаблоне реализован стандартно:
<xsl:value-of select="document(concat('upage://',page/@id))/udata/page/properties/group[@name='common']/property[@name='content']/value" disable-output-escaping="yes"/>

Если гость открывает, то никаких запросов, просто белая страница.


10
Вы создаете страницу типа "Скачиваемый файл" в которой есть поле которое указывает какой файл будет вкачиваться при заходе на эту страницу. Вместо ссылки на файл, вы вставляете ссылку на эту страницу.

А права на скачивание назначаете через права на просмотр страницы (при редактировании страницы "Скачиваемый файл" в самом нигу... убираете галочку около иконки глазик у "Все" и добавляете новую группу полей у которых проставляете галочку у глазика)
Да, так-то отрабатывает. Но!
Гость при таком подходе видит пустую страницу. Т.е. ничего не видит.
:)
А надо бы сообщение выдать типа "авторизуйтесь для скачивания файла" или сразу окно с авторизацией.

11
если шаблонизатор xslt, то попробуй в месте вывода ссылки сделать так:
<xsl:if test="result/user/@status='auth'" >
  код вывода ссылки
</xsl:if>
При таком подходе гостям ссылка не видна будет.
А сайт в принципе не использует авторизацию, за ненадобностью, только на одной странице и нужна.
Идеально было бы так: все видят ссылку (или кнопку), при нажатии идет проверка на группу, если гость, то появляется окно авторизации.

12
Приветствую всех.
Недавно передали на обслуживание сайт на UMI, а в ней я новичок.

Задача такая:
на сайте размещена ссылка на файл Excel (прайс-лист).
Необходимо разрешить его скачивать только зарегистрированным пользователям определенной группы.
Гостям скачивать запрещено.

На данный момент пробую на локальной машине.
Размещаю файл в файловом менеджере.
У пользователя "Гость" убираю галочки "Просмотр файлов для скачивания" и "Скачивание файлов".
На странице размещаю ссылку на файл (типа http://localhost/files/Price1.xls).
Захожу без регистрации, гостем.
При нажатии на ссылку качается без проблем.

Кто-нибудь может подсказать в каком месте у меня кривизна рук?
:)

Страницы: [1]