author_notification field added.
svn path=/plone.app.discussion/branches/notification/; revision=33867
This commit is contained in:
parent
23eeb041aa
commit
c4dbf971fb
@ -19,6 +19,7 @@ from zope.viewlet.interfaces import IViewlet
|
|||||||
|
|
||||||
from z3c.form import form, field, button, interfaces, widget
|
from z3c.form import form, field, button, interfaces, widget
|
||||||
from z3c.form.browser.textarea import TextAreaWidget
|
from z3c.form.browser.textarea import TextAreaWidget
|
||||||
|
from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget
|
||||||
|
|
||||||
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
|
||||||
@ -55,19 +56,19 @@ class CommentForm(extensible.ExtensibleForm, form.Form):
|
|||||||
'modification_date',
|
'modification_date',
|
||||||
'author_username')
|
'author_username')
|
||||||
|
|
||||||
|
def updateFields(self):
|
||||||
|
self.fields['author_notification'].widgetFactory = SingleCheckBoxFieldWidget
|
||||||
|
self.move('author_notification', after='text')
|
||||||
|
|
||||||
def updateWidgets(self):
|
def updateWidgets(self):
|
||||||
super(CommentForm, self).updateWidgets()
|
super(CommentForm, self).updateWidgets()
|
||||||
self.widgets['in_reply_to'].mode = interfaces.HIDDEN_MODE
|
self.widgets['in_reply_to'].mode = interfaces.HIDDEN_MODE
|
||||||
portal_membership = getToolByName(self.context, 'portal_membership')
|
portal_membership = getToolByName(self.context, 'portal_membership')
|
||||||
self.widgets['text'].addClass("autoresize")
|
self.widgets['text'].addClass("autoresize")
|
||||||
|
self.widgets['author_notification'].label = _(u"")
|
||||||
if not portal_membership.isAnonymousUser():
|
if not portal_membership.isAnonymousUser():
|
||||||
self.widgets['author_name'].mode = interfaces.HIDDEN_MODE
|
self.widgets['author_name'].mode = interfaces.HIDDEN_MODE
|
||||||
self.widgets['author_email'].mode = interfaces.HIDDEN_MODE
|
self.widgets['author_email'].mode = interfaces.HIDDEN_MODE
|
||||||
# XXX: Since we are not using the author_email field in the
|
|
||||||
# current state, we hide it by default. But we keep the field for
|
|
||||||
# integrators or later use.
|
|
||||||
self.widgets['author_email'].mode = interfaces.HIDDEN_MODE
|
|
||||||
|
|
||||||
|
|
||||||
def updateActions(self):
|
def updateActions(self):
|
||||||
super(CommentForm, self).updateActions()
|
super(CommentForm, self).updateActions()
|
||||||
|
@ -61,6 +61,8 @@ class Comment(CatalogAware, WorkflowAware, DynamicType, Traversable,
|
|||||||
|
|
||||||
author_name = None
|
author_name = None
|
||||||
author_email = None
|
author_email = None
|
||||||
|
|
||||||
|
author_notification = None
|
||||||
|
|
||||||
# Note: we want to use zope.component.createObject() to instantiate
|
# Note: we want to use zope.component.createObject() to instantiate
|
||||||
# comments as far as possible. comment_id and __parent__ are set via
|
# comments as far as possible. comment_id and __parent__ are set via
|
||||||
@ -126,3 +128,25 @@ def notify_content_object(obj, event):
|
|||||||
"""
|
"""
|
||||||
content_obj = aq_parent(aq_parent(obj))
|
content_obj = aq_parent(aq_parent(obj))
|
||||||
content_obj.reindexObject(idxs=('total_comments', 'last_comment_date', 'commentators',))
|
content_obj.reindexObject(idxs=('total_comments', 'last_comment_date', 'commentators',))
|
||||||
|
|
||||||
|
def notify_user(obj, event):
|
||||||
|
"""Tell the user when a comment is added
|
||||||
|
"""
|
||||||
|
acl_users = getToolByName(obj, 'acl_users')
|
||||||
|
mail_host = getToolByName(obj, 'MailHost')
|
||||||
|
portal_url = getToolByName(obj, 'portal_url')
|
||||||
|
|
||||||
|
portal = portal_url.getPortalObject()
|
||||||
|
sender = portal.getProperty('email_from_address')
|
||||||
|
|
||||||
|
if not sender:
|
||||||
|
return
|
||||||
|
|
||||||
|
subject = "Is this you?"
|
||||||
|
message = "A presenter called %s was added here %s" % (obj.title, obj.absolute_url(),)
|
||||||
|
|
||||||
|
matching_users = acl_users.searchUsers(fullname=obj.title)
|
||||||
|
for user_info in matching_users:
|
||||||
|
email = user_info.get('email', None)
|
||||||
|
if email is not None:
|
||||||
|
mail_host.secureSend(message, email, sender, subject)
|
@ -171,6 +171,8 @@ class IComment(Interface):
|
|||||||
# for anonymous comments only, set to None for logged in comments
|
# for anonymous comments only, set to None for logged in comments
|
||||||
author_name = schema.TextLine(title=_(u"Name"), required=False)
|
author_name = schema.TextLine(title=_(u"Name"), required=False)
|
||||||
author_email = schema.TextLine(title=_(u"Email"), required=False)
|
author_email = schema.TextLine(title=_(u"Email"), required=False)
|
||||||
|
|
||||||
|
author_notification = schema.Bool(title=_("Notify me of new posts via email"), required=False)
|
||||||
|
|
||||||
title = schema.TextLine(title=_(u"Subject"))
|
title = schema.TextLine(title=_(u"Subject"))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user