Merge pull request #140 from RedTurtle/filippo_moderation_js
Notify on comments moderation
This commit is contained in:
commit
25e85a980d
@ -10,7 +10,8 @@ Breaking changes:
|
||||
|
||||
New features:
|
||||
|
||||
- *add item here*
|
||||
- Added notification about the publishing or elimination of a comment.
|
||||
[eikichi18]
|
||||
|
||||
Bug fixes:
|
||||
|
||||
|
@ -6,7 +6,6 @@ from plone.app.registry.browser import controlpanel
|
||||
from plone.registry.interfaces import IRecordModifiedEvent
|
||||
from plone.registry.interfaces import IRegistry
|
||||
from Products.CMFCore.utils import getToolByName
|
||||
from Products.CMFPlone.interfaces.controlpanel import IConfigurationChangedEvent # noqa: E501
|
||||
from Products.CMFPlone.interfaces.controlpanel import IMailSchema
|
||||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
||||
from Products.statusmessages.interfaces import IStatusMessage
|
||||
@ -17,6 +16,13 @@ from zope.component import getUtility
|
||||
from zope.component import queryUtility
|
||||
from zope.component.hooks import getSite
|
||||
|
||||
# try/except was added because Configuration Changed Event was moved inside the
|
||||
# controlpanel file in the PR #2495 on Products.CMFPlone
|
||||
try:
|
||||
from Products.CMFPlone.interfaces.controlpanel import IConfigurationChangedEvent # noqa: E501
|
||||
except ImportError:
|
||||
from Products.CMFPlone.interfaces import IConfigurationChangedEvent
|
||||
|
||||
|
||||
class DiscussionSettingsEditForm(controlpanel.RegistryEditForm):
|
||||
"""Discussion settings form.
|
||||
|
@ -3,6 +3,8 @@ from AccessControl import getSecurityManager
|
||||
from AccessControl import Unauthorized
|
||||
from Acquisition import aq_inner
|
||||
from Acquisition import aq_parent
|
||||
from plone.app.discussion.events import CommentPublishedEvent
|
||||
from plone.app.discussion.events import CommentDeletedEvent
|
||||
from plone.app.discussion.interfaces import _
|
||||
from plone.app.discussion.interfaces import IComment
|
||||
from plone.app.discussion.interfaces import IReplies
|
||||
@ -10,6 +12,7 @@ from Products.CMFCore.utils import getToolByName
|
||||
from Products.Five.browser import BrowserView
|
||||
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
|
||||
from Products.statusmessages.interfaces import IStatusMessage
|
||||
from zope.event import notify
|
||||
|
||||
|
||||
class View(BrowserView):
|
||||
@ -100,6 +103,7 @@ class DeleteComment(BrowserView):
|
||||
if self.can_delete(comment):
|
||||
del conversation[comment.id]
|
||||
content_object.reindexObject()
|
||||
notify(CommentDeletedEvent(self.context, comment))
|
||||
IStatusMessage(self.context.REQUEST).addStatusMessage(
|
||||
_('Comment deleted.'),
|
||||
type='info')
|
||||
@ -183,6 +187,7 @@ class PublishComment(BrowserView):
|
||||
workflowTool.doActionFor(comment, workflow_action)
|
||||
comment.reindexObject()
|
||||
content_object.reindexObject(idxs=['total_comments'])
|
||||
notify(CommentPublishedEvent(self.context, comment))
|
||||
IStatusMessage(self.context.REQUEST).addStatusMessage(
|
||||
_('Comment approved.'),
|
||||
type='info')
|
||||
@ -258,6 +263,7 @@ class BulkActionsView(BrowserView):
|
||||
workflowTool.doActionFor(comment, 'publish')
|
||||
comment.reindexObject()
|
||||
content_object.reindexObject(idxs=['total_comments'])
|
||||
notify(CommentPublishedEvent(content_object, comment))
|
||||
|
||||
def mark_as_spam(self):
|
||||
raise NotImplementedError
|
||||
@ -277,3 +283,4 @@ class BulkActionsView(BrowserView):
|
||||
content_object = aq_parent(conversation)
|
||||
del conversation[comment.id]
|
||||
content_object.reindexObject(idxs=['total_comments'])
|
||||
notify(CommentDeletedEvent(content_object, comment))
|
||||
|
@ -29,6 +29,18 @@
|
||||
name="Comment reply removed"
|
||||
/>
|
||||
|
||||
<interface
|
||||
interface="plone.app.discussion.interfaces.ICommentPublishedEvent"
|
||||
type="plone.contentrules.rule.interfaces.IRuleEventType"
|
||||
name="Notify user on comment publication"
|
||||
/>
|
||||
|
||||
<interface
|
||||
interface="plone.app.discussion.interfaces.ICommentDeletedEvent"
|
||||
type="plone.contentrules.rule.interfaces.IRuleEventType"
|
||||
name="Notify user on comment delete"
|
||||
/>
|
||||
|
||||
</configure>
|
||||
|
||||
|
||||
@ -55,6 +67,16 @@
|
||||
handler=".contentrules.execute_comment"
|
||||
/>
|
||||
|
||||
<subscriber
|
||||
for="plone.app.discussion.interfaces.ICommentDeletedEvent"
|
||||
handler=".contentrules.execute_comment"
|
||||
/>
|
||||
|
||||
<subscriber
|
||||
for="plone.app.discussion.interfaces.ICommentPublishedEvent"
|
||||
handler=".contentrules.execute_comment"
|
||||
/>
|
||||
|
||||
</configure>
|
||||
|
||||
<!-- Content rules strings -->
|
||||
|
@ -4,6 +4,8 @@
|
||||
from plone.app.discussion.interfaces import ICommentAddedEvent
|
||||
from plone.app.discussion.interfaces import ICommentRemovedEvent
|
||||
from plone.app.discussion.interfaces import IDiscussionEvent
|
||||
from plone.app.discussion.interfaces import ICommentDeletedEvent
|
||||
from plone.app.discussion.interfaces import ICommentPublishedEvent
|
||||
from plone.app.discussion.interfaces import IReplyAddedEvent
|
||||
from plone.app.discussion.interfaces import IReplyRemovedEvent
|
||||
from zope.interface import implementer
|
||||
@ -48,3 +50,15 @@ class ReplyAddedEvent(DiscussionEvent):
|
||||
class ReplyRemovedEvent(DiscussionEvent):
|
||||
""" Event to be triggered when a Comment reply is removed
|
||||
"""
|
||||
|
||||
|
||||
@implementer(ICommentDeletedEvent)
|
||||
class CommentDeletedEvent(DiscussionEvent):
|
||||
""" Event to be triggered when a Comment is deleted
|
||||
"""
|
||||
|
||||
|
||||
@implementer(ICommentPublishedEvent)
|
||||
class CommentPublishedEvent(DiscussionEvent):
|
||||
""" Event to be triggered when a Comment is publicated
|
||||
"""
|
||||
|
@ -412,3 +412,13 @@ class IReplyAddedEvent(IDiscussionEvent):
|
||||
class IReplyRemovedEvent(IDiscussionEvent):
|
||||
""" Comment reply removed
|
||||
"""
|
||||
|
||||
|
||||
class ICommentPublishedEvent(IDiscussionEvent):
|
||||
""" Notify user on comment publication
|
||||
"""
|
||||
|
||||
|
||||
class ICommentDeletedEvent(IDiscussionEvent):
|
||||
""" Notify user on comment delete
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user