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
-------------------------------------------------------------------------- */