Вопрос по plone, dexterity – Невозможно активировать обсуждения типов ловкости Plone (папка)

6

Я работал над приложением для ловкости на основе ловкости. Я создал пару новых типов. Это то, что я сделал, чтобы активировать комментарии к определенному типу контента «Ловкость» под названием «Activity_report»:

In Plone Control Panel

вDiscussion В разделе я включил следующее:

globally enable comments enable anonymous comments

вTypes Раздел Я выбрал & quot; Отчет о деятельности & quot; введите из выпадающего списка и включил «Разрешить комментарии» вариант.

On the file system

В файле FTI активностьreport.xml:

<code><property name="allow_discussion">True</property>
</code>

Я перезапустил экземпляр и даже переустановил продукт, но не могу активировать секцию комментариев в типе ловкости.

Стоит отметить, что стандартный тип (например, страница) может иметь активированный модуль обсуждения.

Есть ли что-то, что мне не хватает?

Я думаю, что моя проблема также связана с тем фактом, что мой тип контента является папочным. Как разрешить обсуждение по типу папок? jcuot

Ваш Ответ

4   ответа
3

сех контейнеров (см.https://dev.plone.org/ticket/11245 для обсуждения).

Я использовал патч обезьяны, подобный следующему в одном проекте, чтобы замкнуть обычную проверку и убедиться, что комментирование было включено для моего типа содержимого папок:

from Acquisition import aq_inner
from Products.highcountrynews.content.interfaces import IHCNNewsArticle
from plone.app.discussion.conversation import Conversation
old_enabled = Conversation.enabled
def enabled(self):
    parent = aq_inner(self.__parent__)
    if parent.portal_type == 'my_portal_type':
        return True
    return old_enabled(self)
Conversation.enabled = enabled

где «мой_портал_тип»; это, конечно, тип портала, для которого вы хотите включить комментирование.

Спасибо Дэвид! Это похоже на решение, которое я приму. Я также рассматриваю возможность превращения шрифтов в простые документы. В моем случае единственным преимуществом использования папочных типов было бы хранение связанных документов в контейнере. jcuot
2

вы можете просто переопределить метод enable класса разговора. Я бы порекомендовал использовать следующий подход, который немного чище, чем обезьяна, исправляющая класс разговора:

https://github.com/plone/plone.app.discussion/blob/master/docs/source/howtos/howto_override_enable_conversation.txt

Недавно я добавил поддержку типов ловкости в plone.app.discussion, поэтому, как только выйдет новый выпуск, вам больше не нужно будет настраивать класс разговора:

https://github.com/plone/plone.app.discussion/commit/0e587a7d8536125acdd3bd385e880b60d6aec28e

Обратите внимание, что этот метод поддерживает комментирование ON-объектов. Пока нет поддержки, чтобы включать / отключать комментирование для объектов ВНУТРИ папок.

Если вы хотите иметь возможность включать / выключать комментирование с помощью поля поведения / виджета:

https://github.com/plone/plone.app.dexterity/commit/0573df4f265a39da9efae44e605e3815729457d7

Мы надеемся, что это войдет и в следующую версию plone.app.dexterity.

Хорошее решение, так как все изменения находятся за пределами любой кладки яиц. & Quot; howto_override_enable_conversation.txt & quot; в основном работал на меня. До & quot; если context.allow_discussion не имеет значение None & quot; Я должен был проверить, существует ли атрибут в контексте (или добавил блок try, catch).
@RyanAnderson, не могли бы вы поменять руководство и сделать запрос на удаление, чтобы я мог обновить документы?
2

plone.app.discussion.browser.conversation.ConversationView :

from Acquisition import aq_inner
from plone.app.discussion.browser.conversation import ConversationView
old_enabled = ConversationView.enabled

def enabled(self):
    parent = aq_inner(self.__parent__)
    if parent.portal_type == 'My_type':
        return True
    return old_enabled(self)

Это работает для Plone 4.2 по крайней мере. Однако спасибо Дэвиду за подсказку.

1

<interface interface="Products.CMFPlone.interfaces.INonStructuralFolder" />

<class class="Products.PloneHelpCenter.types.Definition.HelpCenterDefinition">
  <implements interface="Products.CMFPlone.interfaces.INonStructuralFolder" />
</class>

ОБНОВЛЕНИЕ: это не очень хорошая идея. У меня были проблемы с отсутствующим меню добавления для каждого типа контента, имеющего это исправление.

Похожие вопросы