Merge pull request #140 from RedTurtle/filippo_moderation_js

Notify on comments moderation
Tento commit je obsažen v:
Jens W. Klein 2018-10-25 17:27:47 +02:00 odevzdal GitHub
revize 25e85a980d
V databázi nebyl nalezen žádný známý klíč pro tento podpis
ID GPG klíče: 4AEE18F83AFDEB23
6 změnil soubory, kde provedl 62 přidání a 2 odebrání

Zobrazit soubor

@ -10,7 +10,8 @@ Breaking changes:
New features:
- *add item here*
- Added notification about the publishing or elimination of a comment.
[eikichi18]
Bug fixes:

Zobrazit soubor

@ -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.

Zobrazit soubor

@ -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))

Zobrazit soubor

@ -28,6 +28,18 @@
type="plone.contentrules.rule.interfaces.IRuleEventType"
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>
@ -54,6 +66,16 @@
for="plone.app.discussion.interfaces.IReplyRemovedEvent"
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>

Zobrazit soubor

@ -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
"""

Zobrazit soubor

@ -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
"""