diff --git a/CHANGES.txt b/CHANGES.txt index 74490b6..b9371db 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -4,6 +4,9 @@ Changelog 1.0RC1 (unreleased) ------------------- +- Disable all commenting options in the discussion control panel when comments + are disabled globally. + - Check for the 'review comments' permission instead of 'manage' to decide if the user should see a 'this comment is pending' message. [timo] diff --git a/plone/app/discussion/browser/controlpanel.pt b/plone/app/discussion/browser/controlpanel.pt new file mode 100644 index 0000000..3fb5288 --- /dev/null +++ b/plone/app/discussion/browser/controlpanel.pt @@ -0,0 +1,45 @@ + + + + + + + + + + +
+ + + +
+ Portal status message +
+ + + Site Setup + › + +

View Title

+ +
+ +
+ +
+ + diff --git a/plone/app/discussion/browser/controlpanel.py b/plone/app/discussion/browser/controlpanel.py index 326347a..a52aeac 100644 --- a/plone/app/discussion/browser/controlpanel.py +++ b/plone/app/discussion/browser/controlpanel.py @@ -1,14 +1,18 @@ # -*- coding: utf-8 -*- +from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile + from Products.statusmessages.interfaces import IStatusMessage from plone.app.registry.browser import controlpanel -from plone.app.discussion.interfaces import IDiscussionSettings, _ +from plone.registry.interfaces import IRegistry from z3c.form import button from z3c.form.browser.checkbox import SingleCheckBoxFieldWidget +from plone.app.discussion.interfaces import IDiscussionSettings, _ + class DiscussionSettingsEditForm(controlpanel.RegistryEditForm): @@ -65,7 +69,12 @@ class DiscussionSettingsEditForm(controlpanel.RegistryEditForm): "info") self.request.response.redirect("%s/%s" % (self.context.absolute_url(), self.control_panel_view)) - + def anonymous_discussion_allowed(self): + # Check if anonymous comments are allowed in the registry + registry = queryUtility(IRegistry) + settings = registry.forInterface(IDiscussionSettings, check=False) + return settings.anonymous_comments class DiscussionSettingsControlPanel(controlpanel.ControlPanelFormWrapper): form = DiscussionSettingsEditForm + index = ViewPageTemplateFile('controlpanel.pt') diff --git a/plone/app/discussion/browser/javascripts/controlpanel.js b/plone/app/discussion/browser/javascripts/controlpanel.js new file mode 100644 index 0000000..b7ae7d2 --- /dev/null +++ b/plone/app/discussion/browser/javascripts/controlpanel.js @@ -0,0 +1,46 @@ +/****************************************************************************** + * + * jQuery functions for the plone.app.discussion comment viewlet and form. + * + ******************************************************************************/ +(function ($) { + // This unnamed function allows us to use $ inside of a block of code + // without permanently overwriting $. + // http://docs.jquery.com/Using_jQuery_with_Other_Libraries + + //#JSCOVERAGE_IF 0 + + /************************************************************************** + * Window Load Function: Executes when complete page is fully loaded, + * including all frames, + **************************************************************************/ + $(window).load(function () { + + /********************************************************************** + * If the user hits the "clear" button of an open reply-to-comment form, + * remove the form and show the "reply" button again. + **********************************************************************/ + $("input[name='form.widgets.globally_enabled:list']").bind("change", function (e) { + if ($(this).attr("checked")) { + // enable commenting globally + $('#formfield-form-widgets-anonymous_comments').removeClass('unclickable'); + $('#formfield-form-widgets-text_transform').removeClass('unclickable'); + $('#formfield-form-widgets-captcha').removeClass('unclickable'); + $('#formfield-form-widgets-show_commenter_image').removeClass('unclickable'); + $('#formfield-form-widgets-moderator_notification_enabled').removeClass('unclickable'); + $('#formfield-form-widgets-user_notification_enabled').removeClass('unclickable'); + } else { + $('#formfield-form-widgets-anonymous_comments').addClass('unclickable'); + $('#formfield-form-widgets-text_transform').addClass('unclickable'); + $('#formfield-form-widgets-captcha').addClass('unclickable'); + $('#formfield-form-widgets-show_commenter_image').addClass('unclickable'); + $('#formfield-form-widgets-moderator_notification_enabled').addClass('unclickable'); + $('#formfield-form-widgets-user_notification_enabled').addClass('unclickable'); + } + }); + + }); + + //#JSCOVERAGE_ENDIF + +}(jQuery)); diff --git a/plone/app/discussion/browser/stylesheets/discussion.css b/plone/app/discussion/browser/stylesheets/discussion.css index 08ef46a..daec738 100644 --- a/plone/app/discussion/browser/stylesheets/discussion.css +++ b/plone/app/discussion/browser/stylesheets/discussion.css @@ -121,7 +121,14 @@ padding: 2em 1em; } +/* Discussion Control Panel + -------------------------------------------------------------------------- */ +.template-discussion-settings .unclickable { + background: #f2f2f2; + opacity:0.6; + filter: alpha(opacity = 50); +} /* Plone 4 Styles -------------------------------------------------------------------------- */