Added an optional conversationCanonicalAdapterFactory showing how to share comments across all translations with LinguaPlone, by storing and retrieving the conversation from the canonical object.

svn path=/plone.app.discussion/trunk/; revision=33546
This commit is contained in:
Hanno Schlichting
2010-01-28 13:44:56 +00:00
parent 9c80b99ead
commit 405ecc1268
2 changed files with 25 additions and 0 deletions
+21
View File
@@ -341,6 +341,7 @@ class Conversation(Traversable, Persistent, Explicit):
for k, v in self._comments.iteritems():
yield (k, v.__of__(self),)
@implementer(IConversation)
@adapter(IAnnotatable)
def conversationAdapterFactory(content):
@@ -356,6 +357,26 @@ def conversationAdapterFactory(content):
conversation = annotions[ANNOTATION_KEY]
return conversation.__of__(content)
try:
from Products.LinguaPlone.interfaces import ITranslatable
except ImportError:
pass
else:
@implementer(IConversation)
@adapter(IAnnotatable)
def conversationCanonicalAdapterFactory(content):
"""Adapter factory to fetch the default conversation from annotations.
Will create the conversation if it does not exist.
This adapter will fetch and store all comments on the canonical object,
so that comments will be shared across all translations.
"""
if ITranslatable.providedBy(content):
content = content.getCanonical()
return conversationAdapterFactory(content)
class ConversationReplies(object):
"""An IReplies adapter for conversations.