From 2e04461162e263aaef88c5b1688956decc897762 Mon Sep 17 00:00:00 2001 From: Timo Stollenwerk Date: Tue, 30 Jun 2009 22:17:42 +0000 Subject: [PATCH] remove nested forms from moderate comments view. rewrite jquery code for comment delete and publish. svn path=/plone.app.discussion/trunk/; revision=27750 --- .../browser/javascripts/moderation.js | 150 +++++++++++------- plone/app/discussion/browser/moderation.pt | 43 ++--- plone/app/discussion/browser/moderation.py | 3 +- .../browser/stylesheets/discussion.css | 6 +- 4 files changed, 113 insertions(+), 89 deletions(-) diff --git a/plone/app/discussion/browser/javascripts/moderation.js b/plone/app/discussion/browser/javascripts/moderation.js index 53624ae..967b3bd 100644 --- a/plone/app/discussion/browser/javascripts/moderation.js +++ b/plone/app/discussion/browser/javascripts/moderation.js @@ -3,47 +3,78 @@ jq(document).ready(function() { /***************************************************************** * Check or uncheck all checkboxes *****************************************************************/ - jq("input[name='check_all']").click(function(){ - if(jq(this).val()==0){ - jq(this).parents("table") - .find("input:checkbox") - .attr("checked","checked"); - jq(this).val("1"); - } - else{ - jq(this).parents("table") - .find("input:checkbox") - .attr("checked",""); + jq("input[name='check_all']").click(function(){ + if(jq(this).val()==0){ + jq(this).parents("table") + .find("input:checkbox") + .attr("checked","checked"); + jq(this).val("1"); + } + else{ + jq(this).parents("table") + .find("input:checkbox") + .attr("checked",""); jq(this).val("0"); - } + } }); /***************************************************************** - * Comment actions (delete, publish) + * Delete comment *****************************************************************/ - jq('form.background-form').submit(function(e) { + jq("input[name='form.button.Delete']").click(function(e) { e.preventDefault(); - var form = jq(this); - var target = jq(this).attr('action'); - var params = jq(this).serialize(); - var cell = jq(this).parent().get(0); - var row = jq(cell).parent().get(0); - var currentFilter = jq(this).find("[name='form.button.Filter']").attr("value"); - var currentAction = jq(this).attr("class"); - var publishButton = jq(this).find(".comment-publish-button"); - jq.post(target, params, function(data) { - if (currentAction == 'background-form workflow_action' && currentFilter == '') { - // remove the publish button - jq(publishButton).fadeOut("normal", function(){ - jq(form).remove(); + var button = jq(this); + var row = jq(this).parent().parent(); + var form = jq(row).parents("form"); + var path = jq(row).find("input:checkbox").attr("value"); + var target = path + "/@@moderate-delete-comment"; + var comment_id = jq(this).attr("id"); + jq.ajax({ + type: "GET", + url: target, + success: function(msg){ + // fade out row + jq(row).fadeOut("normal", function(){ + jq(this).remove(); }); - } else { - // remove the entire row - jq(row).fadeOut("normal", function(){ - jq(this).remove(); - }); - } + }, + error: function(msg){ + alert("Error sending AJAX request:" + target); + }, + }); + }); + + /***************************************************************** + * Publish comment + *****************************************************************/ + jq("input[name='form.button.Publish']").click(function(e) { + e.preventDefault(); + var button = jq(this); + var row = jq(this).parent().parent(); + var form = jq(row).parents("form"); + var path = jq(row).find("input:checkbox").attr("value"); + var target = path + "/@@moderate-publish-comment"; + var currentFilter = jq(form).find("[name='form.button.Filter']").attr("value"); + jq.ajax({ + type: "GET", + url: target, + success: function(msg){ + if (currentFilter == 'pending') { + // fade out row + jq(row).fadeOut("normal", function(){ + jq(this).remove(); + }); + } else { + // fade out button + jq(button).fadeOut("normal", function(){ + jq(this).remove(); + }); + } + }, + error: function(msg){ + alert("Error sending AJAX request:" + target); + }, }); }); @@ -51,49 +82,50 @@ jq(document).ready(function() { /***************************************************************** * Bulk actions (delete, publish) *****************************************************************/ - jq('form.bulkactions').submit(function(e) { + jq("input[name='form.button.BulkAction']").click(function(e) { e.preventDefault(); - var target = jq(this).attr('action'); - var params = jq(this).serialize(); - var valArray = jq('input:checkbox:checked'); - var currentFilter = jq(this).find("[name='form.button.Filter']").attr("value"); - var currentAction = jq(this).find("[name='form.select.BulkAction']").val(); - var selectField = jq(this).find("[name='form.select.BulkAction']"); + var form = jq(this).parents("form") + var target = jq(form).attr('action'); + var params = jq(form).serialize(); + var valArray = jq('input:checkbox:checked'); + var currentFilter = jq(form).find("[name='form.button.Filter']").attr("value"); + var currentAction = jq(form).find("[name='form.select.BulkAction']").val(); + var selectField = jq(form).find("[name='form.select.BulkAction']"); if (valArray.length) { jq.post(target, params, function(data) { valArray.each(function () { - // if bulkaction is delete, or the current filter is - // pending (because then publish also removes the comment), - // remove all selected comments. + // if bulkaction is delete, or the current filter is + // pending (because then publish also removes the comment), + // remove all selected comments. if (currentAction == 'delete' || currentFilter == 'pending') { var row = jq(this).parent().parent(); row.fadeOut("normal", function() { row.remove(); }); } - // bulkaction is publish and there is no current filter - if (currentAction == 'publish' && currentFilter == '') { - // remove the publish button + // bulkaction is publish and there is no current filter + if (currentAction == 'publish' && currentFilter == '') { + // remove the publish button var row = jq(this).parent().parent(); - var form = row.find("form.workflow_action"); + var form = row.find("form.workflow_action"); var publishButton = row.find(".comment-publish-button"); - var selectField = row.find("input:checkbox"); - jq(publishButton).fadeOut("normal", function(){ - jq(form).remove(); - }); - // reset the select fields - selectField.attr("checked",""); - } + var selectField = row.find("input:checkbox"); + jq(publishButton).fadeOut("normal", function(){ + jq(form).remove(); + }); + // reset the select fields + selectField.attr("checked",""); + } }); }); } else { - // The user has submitted a bulk action, but no comment - // was selected. - // Todo: nicer and translated message + // The user has submitted a bulk action, but no comment + // was selected. + // Todo: nicer and translated message alert("You haven't selected anything for this bulk action."); } - // reset the bulkaction select - selectField.find("option[value='-1']").attr( 'selected', 'selected' ); + // reset the bulkaction select + selectField.find("option[value='-1']").attr( 'selected', 'selected' ); }); }); \ No newline at end of file diff --git a/plone/app/discussion/browser/moderation.pt b/plone/app/discussion/browser/moderation.pt index 01da9d4..9eb4c30 100644 --- a/plone/app/discussion/browser/moderation.pt +++ b/plone/app/discussion/browser/moderation.pt @@ -115,32 +115,23 @@ -
- - - - -
-
- - - -
+ + diff --git a/plone/app/discussion/browser/moderation.py b/plone/app/discussion/browser/moderation.py index 7dfdb0a..54201b1 100644 --- a/plone/app/discussion/browser/moderation.py +++ b/plone/app/discussion/browser/moderation.py @@ -104,7 +104,8 @@ class PublishComment(BrowserView): comment = aq_inner(self.context) comment_id = self.context.id - workflow_action = self.request.form['workflow_action'] + #workflow_action = self.request.form['workflow_action'] + workflow_action = 'publish' portal_workflow = getToolByName(comment, 'portal_workflow') portal_workflow.doActionFor(comment, workflow_action) diff --git a/plone/app/discussion/browser/stylesheets/discussion.css b/plone/app/discussion/browser/stylesheets/discussion.css index a826340..2b93ff6 100644 --- a/plone/app/discussion/browser/stylesheets/discussion.css +++ b/plone/app/discussion/browser/stylesheets/discussion.css @@ -79,12 +79,12 @@ ul.filter { margin: 0.45em 0; } -form.workflow_action { +.comment-publish-button { float: left; } -form.delete { - float: right; +.comment-delete-button { + float: right; } #review-comments {