anonymous comments added.
svn path=/plone.app.discussion/trunk/; revision=27352
This commit is contained in:
parent
22a4916afa
commit
353c6acfd0
@ -1,5 +1,6 @@
|
|||||||
<tal:block define="userHasReplyPermission view/can_reply;
|
<tal:block define="userHasReplyPermission view/can_reply;
|
||||||
isDiscussionAllowed view/is_discussion_allowed;
|
isDiscussionAllowed view/is_discussion_allowed;
|
||||||
|
isAnonymousDiscussionAllowed view/anonymous_discussion_allowed;
|
||||||
replies view/get_replies;
|
replies view/get_replies;
|
||||||
isAnon view/is_anonymous;
|
isAnon view/is_anonymous;
|
||||||
errors options/state/getErrors|nothing;"
|
errors options/state/getErrors|nothing;"
|
||||||
@ -7,7 +8,7 @@
|
|||||||
i18n:domain="plone">
|
i18n:domain="plone">
|
||||||
|
|
||||||
<div class="reply"
|
<div class="reply"
|
||||||
tal:condition="isAnon">
|
tal:condition="python:isAnon and not isAnonymousDiscussionAllowed">
|
||||||
<form tal:attributes="action view/login_action">
|
<form tal:attributes="action view/login_action">
|
||||||
<input class="standalone"
|
<input class="standalone"
|
||||||
style="margin-bottom: 1.25em;"
|
style="margin-bottom: 1.25em;"
|
||||||
@ -95,7 +96,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="reply"
|
<div class="reply"
|
||||||
tal:condition="python: isAnon and replies">
|
tal:condition="python: isAnon and not isAnonymousDiscussionAllowed and replies">
|
||||||
<form tal:attributes="action view/login_action">
|
<form tal:attributes="action view/login_action">
|
||||||
<input class="standalone"
|
<input class="standalone"
|
||||||
style="margin-bottom: 1.25em;"
|
style="margin-bottom: 1.25em;"
|
||||||
@ -183,4 +184,120 @@
|
|||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div id="commenting" class="reply"
|
||||||
|
tal:condition="python:isAnon and isAnonymousDiscussionAllowed">
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
|
||||||
|
<legend i18n:translate="legend_add_comment">Add comment</legend>
|
||||||
|
<p i18n:translate="description_add_comment">
|
||||||
|
You can add a comment by filling out the form below. Plain text
|
||||||
|
formatting.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<form name="reply"
|
||||||
|
action=""
|
||||||
|
method="get"
|
||||||
|
tal:attributes="action string:${context/absolute_url}/++conversation++default/@@add-comment">
|
||||||
|
|
||||||
|
<div class="field"
|
||||||
|
tal:define="error errors/subject|nothing;"
|
||||||
|
tal:attributes="class python: error and 'field error' or 'field'">
|
||||||
|
|
||||||
|
<label for="author_username" i18n:translate="label_author_username">Author username</label>
|
||||||
|
|
||||||
|
<span class="fieldRequired" title="Required"
|
||||||
|
i18n:attributes="title title_required;"
|
||||||
|
i18n:translate="label_required">(Required)</span>
|
||||||
|
|
||||||
|
<div tal:content="error">Validation error output</div>
|
||||||
|
|
||||||
|
<input name="author_username"
|
||||||
|
id="author_username"
|
||||||
|
value=""
|
||||||
|
size="40"
|
||||||
|
tal:attributes="value request/subject|request/title_override|nothing;" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field"
|
||||||
|
tal:define="error errors/subject|nothing;"
|
||||||
|
tal:attributes="class python: error and 'field error' or 'field'">
|
||||||
|
|
||||||
|
<label for="author_email" i18n:translate="label_author_email">Author email</label>
|
||||||
|
|
||||||
|
<span class="fieldRequired" title="Required"
|
||||||
|
i18n:attributes="title title_required;"
|
||||||
|
i18n:translate="label_required">(Required)</span>
|
||||||
|
|
||||||
|
<div tal:content="error">Validation error output</div>
|
||||||
|
|
||||||
|
<input name="author_email"
|
||||||
|
id="author_email"
|
||||||
|
value=""
|
||||||
|
size="40"
|
||||||
|
tal:attributes="value request/subject|request/title_override|nothing;" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field"
|
||||||
|
tal:define="error errors/subject|nothing;"
|
||||||
|
tal:attributes="class python: error and 'field error' or 'field'">
|
||||||
|
|
||||||
|
<label for="subject" i18n:translate="label_subject">Subject</label>
|
||||||
|
|
||||||
|
<span class="fieldRequired" title="Required"
|
||||||
|
i18n:attributes="title title_required;"
|
||||||
|
i18n:translate="label_required">(Required)</span>
|
||||||
|
|
||||||
|
<div tal:content="error">Validation error output</div>
|
||||||
|
|
||||||
|
<input name="subject"
|
||||||
|
id="subject"
|
||||||
|
value=""
|
||||||
|
size="40"
|
||||||
|
tal:attributes="value request/subject|request/title_override|nothing;" />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field"
|
||||||
|
tal:define="error errors/body_text|nothing;"
|
||||||
|
tal:attributes="class python: error and 'field error' or 'field'">
|
||||||
|
|
||||||
|
<label for="body_text" i18n:translate="label_comment">Comment</label>
|
||||||
|
|
||||||
|
<span class="fieldRequired" title="Required"
|
||||||
|
i18n:attributes="title title_required;"
|
||||||
|
i18n:translate="label_required">(Required)</span>
|
||||||
|
|
||||||
|
<div tal:content="error">Validation error output</div>
|
||||||
|
|
||||||
|
<textarea name="body_text"
|
||||||
|
id="body_text"
|
||||||
|
cols="40"
|
||||||
|
rows="8"
|
||||||
|
tal:content="request/body_text|request/text_override | nothing"></textarea>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="formControls">
|
||||||
|
|
||||||
|
<input class="context"
|
||||||
|
type="submit"
|
||||||
|
value="Add Comment"
|
||||||
|
name="form.button.AddComment"
|
||||||
|
i18n:attributes="value label_add_comment;" />
|
||||||
|
|
||||||
|
<input class="standalone cancelreplytocomment"
|
||||||
|
type="submit"
|
||||||
|
name="form.button.Cancel"
|
||||||
|
value="Cancel"
|
||||||
|
i18n:attributes="value label_cancel;" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="form.submitted" value="1" />
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
</tal:block>
|
</tal:block>
|
@ -4,8 +4,7 @@ from urllib import quote as url_quote
|
|||||||
|
|
||||||
from zope.interface import implements
|
from zope.interface import implements
|
||||||
|
|
||||||
from zope.component import createObject
|
from zope.component import createObject, getMultiAdapter, queryUtility
|
||||||
from zope.component import getMultiAdapter
|
|
||||||
|
|
||||||
from zope.viewlet.interfaces import IViewlet
|
from zope.viewlet.interfaces import IViewlet
|
||||||
|
|
||||||
@ -18,9 +17,11 @@ from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
|||||||
|
|
||||||
from Products.CMFCore.utils import getToolByName
|
from Products.CMFCore.utils import getToolByName
|
||||||
|
|
||||||
|
from plone.registry.interfaces import IRegistry
|
||||||
|
|
||||||
from plone.app.layout.viewlets.common import ViewletBase
|
from plone.app.layout.viewlets.common import ViewletBase
|
||||||
|
|
||||||
from plone.app.discussion.interfaces import IComment, IReplies
|
from plone.app.discussion.interfaces import IComment, IReplies, IDiscussionSettings
|
||||||
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
|
||||||
@ -80,6 +81,12 @@ class CommentsViewlet(ViewletBase):
|
|||||||
else:
|
else:
|
||||||
return self.portal_membership.getPersonalPortrait(username);
|
return self.portal_membership.getPersonalPortrait(username);
|
||||||
|
|
||||||
|
def anonymous_discussion_allowed(self):
|
||||||
|
# Check if anonymous comments are allowed in the registry
|
||||||
|
registry = queryUtility(IRegistry)
|
||||||
|
settings = registry.for_interface(IDiscussionSettings)
|
||||||
|
return settings.anonymous_comments
|
||||||
|
|
||||||
def is_anonymous(self):
|
def is_anonymous(self):
|
||||||
return self.portal_state.anonymous()
|
return self.portal_state.anonymous()
|
||||||
|
|
||||||
@ -102,6 +109,8 @@ class AddComment(BrowserView):
|
|||||||
|
|
||||||
subject = self.request.get('subject')
|
subject = self.request.get('subject')
|
||||||
text = self.request.get('body_text')
|
text = self.request.get('body_text')
|
||||||
|
author_username = self.request.get('author_username')
|
||||||
|
author_email = self.request.get('author_email')
|
||||||
|
|
||||||
# The add-comment view is called on the conversation object
|
# The add-comment view is called on the conversation object
|
||||||
conversation = self.context
|
conversation = self.context
|
||||||
@ -114,8 +123,10 @@ class AddComment(BrowserView):
|
|||||||
portal_membership = getToolByName(self.context, 'portal_membership')
|
portal_membership = getToolByName(self.context, 'portal_membership')
|
||||||
|
|
||||||
if portal_membership.isAnonymousUser():
|
if portal_membership.isAnonymousUser():
|
||||||
# TODO: Not implemented yet
|
comment.creator = author_username
|
||||||
pass
|
comment.author_name = author_username
|
||||||
|
comment.author_email = author_email
|
||||||
|
comment.creation_date = comment.modification_date = datetime.now()
|
||||||
else:
|
else:
|
||||||
member = portal_membership.getAuthenticatedMember()
|
member = portal_membership.getAuthenticatedMember()
|
||||||
comment.creator = member.getProperty('fullname')
|
comment.creator = member.getProperty('fullname')
|
||||||
|
Loading…
Reference in New Issue
Block a user