#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: Доступ к предыдущим версиям, я думаю, было бы разумнее, если бы они использовали те же разрешения, которые требуются для просмотра истории, чтобы перечислить внесенные изменения. Я могу понять, что необходимо скрыть окно просмотра истории.