User Story: As a visitor, I can view portraits, full name and username against each comment, with a link to the author profile
svn path=/plone.app.discussion/trunk/; revision=27188
This commit is contained in:
parent
6c7909a4f7
commit
660ee78ca0
@ -7,23 +7,38 @@
|
|||||||
|
|
||||||
<div class="comment"
|
<div class="comment"
|
||||||
tal:define="reply reply_dict/comment;
|
tal:define="reply reply_dict/comment;
|
||||||
depth reply_dict/depth|python:0;"
|
depth reply_dict/depth|python:0;
|
||||||
|
creator reply/Creator;
|
||||||
|
author_home_url string:${context/portal_url}/author/${reply/author_username};
|
||||||
|
anonymous_creator python:creator in ('Anonymous User', '');"
|
||||||
tal:attributes="class python:'comment replyTreeLevel'+str(depth);
|
tal:attributes="class python:'comment replyTreeLevel'+str(depth);
|
||||||
style string:margin-left: ${depth}em;
|
style string:margin-left: ${depth}em;
|
||||||
id string:comment-${reply/id}">
|
id string:comment-${reply/id}">
|
||||||
|
|
||||||
|
|
||||||
|
<tal:authorimage tal:condition="not:anonymous_creator">
|
||||||
|
<a href="" tal:attributes="href author_home_url">
|
||||||
|
<img src="" alt=""
|
||||||
|
tal:attributes="src string:${context/portal_url}/portal_memberdata/portraits/${reply/author_username};
|
||||||
|
alt reply/creator" />
|
||||||
|
</a>
|
||||||
|
</tal:authorimage>
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
<a name="comments" tal:attributes="name reply/title">
|
<a name="comments" tal:attributes="name reply/title">
|
||||||
<span tal:replace="reply/title">Comment title</span>
|
<span tal:replace="reply/title">Comment title</span>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="documentByLine"
|
<div class="documentByLine">
|
||||||
tal:define="creator reply/Creator;
|
|
||||||
anonymous_creator python:creator in ('Anonymous User', '');">
|
|
||||||
<tal:posted i18n:translate="label_comment_by">Posted by</tal:posted>
|
<tal:posted i18n:translate="label_comment_by">Posted by</tal:posted>
|
||||||
<tal:name content="creator"
|
<tal:name condition="not:anonymous_creator">
|
||||||
condition="not:anonymous_creator">Poster Name</tal:name>
|
<a href=""
|
||||||
|
tal:content="creator"
|
||||||
|
tal:attributes="href author_home_url">
|
||||||
|
Poster Name
|
||||||
|
</a>
|
||||||
|
</tal:name>
|
||||||
<tal:name i18n:translate="label_anonymous_user"
|
<tal:name i18n:translate="label_anonymous_user"
|
||||||
condition="anonymous_creator">Anonymous User</tal:name>
|
condition="anonymous_creator">Anonymous User</tal:name>
|
||||||
<tal:at i18n:translate="label_commented_at">at</tal:at>
|
<tal:at i18n:translate="label_commented_at">at</tal:at>
|
||||||
|
@ -1,19 +1,24 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from zope.interface import implements
|
from zope.interface import implements
|
||||||
|
|
||||||
|
from zope.component import createObject
|
||||||
from zope.component import getMultiAdapter
|
from zope.component import getMultiAdapter
|
||||||
|
|
||||||
from zope.viewlet.interfaces import IViewlet
|
from zope.viewlet.interfaces import IViewlet
|
||||||
|
|
||||||
from Acquisition import aq_inner, aq_parent
|
from Acquisition import aq_inner, aq_parent
|
||||||
|
|
||||||
from Products.Five.browser import BrowserView
|
from Products.Five.browser import BrowserView
|
||||||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
||||||
|
|
||||||
|
from Products.CMFCore.utils import getToolByName
|
||||||
|
|
||||||
from plone.app.discussion.interfaces import IComment, IReplies
|
from plone.app.discussion.interfaces import IComment, IReplies
|
||||||
from plone.app.discussion.conversation import conversationAdapterFactory
|
from plone.app.discussion.conversation import conversationAdapterFactory
|
||||||
|
|
||||||
from plone.app.discussion.comment import CommentFactory
|
from plone.app.discussion.comment import CommentFactory
|
||||||
|
|
||||||
from zope.component import createObject
|
|
||||||
|
|
||||||
class View(BrowserView):
|
class View(BrowserView):
|
||||||
"""Comment View
|
"""Comment View
|
||||||
@ -73,10 +78,23 @@ class AddComment(BrowserView):
|
|||||||
comment.title = subject
|
comment.title = subject
|
||||||
comment.text = text
|
comment.text = text
|
||||||
|
|
||||||
# Add comment to the conversation
|
portal_membership = getToolByName(self.context, 'portal_membership')
|
||||||
conversation.addComment(comment)
|
|
||||||
|
|
||||||
# Redirect to the document object page
|
if portal_membership.isAnonymousUser():
|
||||||
|
# TODO: Not implemented yet
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
member = portal_membership.getAuthenticatedMember()
|
||||||
|
comment.creator = member.getProperty('fullname')
|
||||||
|
comment.author_username = member.getUserName()
|
||||||
|
comment.author_name = member.getProperty('fullname')
|
||||||
|
comment.author_email = member.getProperty('email')
|
||||||
|
comment.creation_date = comment.modification_date = datetime.now()
|
||||||
|
|
||||||
|
# Add comment to the conversation
|
||||||
|
comment_id = conversation.addComment(comment)
|
||||||
|
|
||||||
|
# Redirect to the comment
|
||||||
self.request.response.redirect(aq_parent(aq_inner(self.context)).absolute_url())
|
self.request.response.redirect(aq_parent(aq_inner(self.context)).absolute_url())
|
||||||
|
|
||||||
class ReplyToComment(BrowserView):
|
class ReplyToComment(BrowserView):
|
||||||
|
Loading…
Reference in New Issue
Block a user