Plone — В viewlet с информацией о названии / авторе, почему ссылка на историю скрыта для пользователей без роли владельца?

#python #plone #dexterity #plone-4.x

#python #plone #ловкость #plone-4.x

Вопрос:

У меня есть тип контента dexterity с собственным рабочим процессом, и я пытаюсь заставить ссылку на историю отображаться в viewlet, в котором указаны название, автор, дата создания / изменения.

В шаблоне моего типа контента у меня есть:

 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
  xmlns:tal="http://xml.zope.org/namespaces/tal"
  xmlns:metal="http://xml.zope.org/namespaces/metal"
  xmlns:i18n="http://xml.zope.org/namespaces/i18n"
  lang="en"
  metal:use-macro="context/main_template/macros/master"
  i18n:domain="my.product">

    <body>

        <metal:content-core fill-slot="content-core">
            <metal:content-core define-macro="content-core">

            ....

            </metal:content-core>
        </metal:content-core>        
    </body>

</html>
  

Что странно, так это то, что если я перейду на саму страницу истории, вручную введя URL-адрес, отображается история, отображающая созданные, измененные и изменения рабочего процесса. Ролям, которые имеют доступ к истории, назначается просмотр содержимого портала (роли, которые могут утверждать / отклонять) и запрос проверки (роли, которые могут отправлять на проверку), но сама ссылка не отображается.

Требуется ли отдельное разрешение?

Редактировать: я взглянул на plone.app.layout.viewlets.content, который я вижу в в HistoryByLineView функция с именем show_history, которая проверяет, есть ли у пользователя разрешение «CMFEditions: доступ к предыдущим версиям», и возвращает False, если у них его нет. В шаблоне history_view это, по-видимому, вызывается относительно того, отображать или нет ссылку на представление истории. Это разрешение, которое я действительно ищу?

Редактировать: моя версия Plone — 4.3.11.

Ответ №1:

Я взглянул на plone.app.layout.viewlets.content, который я вижу в в HistoryByLineView функция с именем show_history, которая проверяет, есть ли у пользователя разрешение «CMFEditions: доступ к предыдущим версиям», и возвращает False, если у них его нет. В шаблоне history_view это, по-видимому, вызывается относительно того, отображать или нет ссылку на представление истории. Это разрешение, которое я действительно ищу?

Я думаю, вы правы. В CMFEditions это разрешение назначается только менеджеру и администратору сайта

 AccessPreviousVersions = 'CMFEditions: Access previous versions'
setDefaultRoles(AccessPreviousVersions, ('Manager', 'Site Administrator'))
  

Вы можете попытаться назначить ее другой роли (например. Reviewer или Member ) в /manage_access .

Комментарии:

1. Это будет ошибка, не так ли?

2. Спасибо за ваш ответ! Я ценю это. manage_access действительно удобен для этого случая. Хотя я нахожу их использование разрешения немного странным. Учитывая, что я все еще могу получить доступ к странице истории без разрешения CMFEditions: Доступ к предыдущим версиям, я думаю, было бы разумнее, если бы они использовали те же разрешения, которые требуются для просмотра истории, чтобы перечислить внесенные изменения. Я могу понять, что необходимо скрыть окно просмотра истории.