add optional workflow actions to the get_replies method of the comments viewlet.

switch from Acquisition.explicit to Acquisition.implicit for the comment class.
adjust test_comment to work with Acquisition.implicit.

svn path=/plone.app.discussion/trunk/; revision=27406
This commit is contained in:
Timo Stollenwerk
2009-06-13 16:46:37 +00:00
parent 24997f4eb9
commit 8fb254f73d
6 changed files with 55 additions and 34 deletions
+3 -2
View File
@@ -1,8 +1,9 @@
<tal:block define="userHasReplyPermission view/can_reply;
isDiscussionAllowed view/is_discussion_allowed;
isAnonymousDiscussionAllowed view/anonymous_discussion_allowed;
replies view/get_replies;
isAnon view/is_anonymous;
canManage view/can_manage;
replies python:view.get_replies(canManage);
showCommenterImage view/show_commenter_image;
errors options/state/getErrors|nothing;"
tal:condition="isDiscussionAllowed"
@@ -102,7 +103,7 @@
action=""
method="get"
style="display: inline;"
tal:repeat="action reply_dict/actions"
tal:repeat="action python:view.get_workflow_actions(reply)"
tal:attributes="action string:${reply/absolute_url}/content_status_modify;
name action/id">
<input type="hidden" name="workflow_action" tal:attributes="value action/id" />
+21 -7
View File
@@ -8,7 +8,7 @@ from zope.component import createObject, getMultiAdapter, queryUtility
from zope.viewlet.interfaces import IViewlet
from Acquisition import aq_inner, aq_parent
from Acquisition import aq_inner, aq_parent, aq_base
from AccessControl import getSecurityManager
@@ -21,7 +21,7 @@ from plone.registry.interfaces import IRegistry
from plone.app.layout.viewlets.common import ViewletBase
from plone.app.discussion.interfaces import IComment, IReplies, IDiscussionSettings
from plone.app.discussion.interfaces import IConversation, IComment, IReplies, IDiscussionSettings
from plone.app.discussion.conversation import conversationAdapterFactory
from plone.app.discussion.comment import CommentFactory
@@ -60,14 +60,28 @@ class CommentsViewlet(ViewletBase):
conversation = conversationAdapterFactory(self.context)
return conversation.enabled
def get_replies(self):
# Return all direct replies
conversation = conversationAdapterFactory(self.context)
def get_replies(self, workflow_actions=False):
# Acquisition wrap the conversation
context = aq_inner(self.context)
conversation = IConversation(context)
conversation = IConversation(context).__of__(context)
# Return all direct replies
if conversation.total_comments > 0:
return conversation.getThreads()
if workflow_actions:
# Return dict with workflow actions
#context = aq_inner(self.context)
wf = getToolByName(context, 'portal_workflow')
for r in conversation.getThreads():
comment_obj = r['comment']
actions = wf.listActionInfos(object=comment_obj)
return conversation.getThreads()
else:
return conversation.getThreads()
else:
return False
return []
def get_commenter_home_url(self, username):
if username is None: