From 2ff95fe847bd3a88d0538023152adeff2f7b8249 Mon Sep 17 00:00:00 2001 From: Timo Stollenwerk Date: Fri, 24 Sep 2010 14:57:19 +0000 Subject: [PATCH] Make sure the moderation JS functions are executed after the page is fully loaded. svn path=/plone.app.discussion/trunk/; revision=40215 --- .../browser/javascripts/comments.js | 1 - .../browser/javascripts/moderation.js | 261 ++++++++++-------- 2 files changed, 140 insertions(+), 122 deletions(-) diff --git a/plone/app/discussion/browser/javascripts/comments.js b/plone/app/discussion/browser/javascripts/comments.js index 90caa4f..e3dd95b 100644 --- a/plone/app/discussion/browser/javascripts/comments.js +++ b/plone/app/discussion/browser/javascripts/comments.js @@ -4,7 +4,6 @@ * ******************************************************************************/ - (function ($) { // This unnamed function allows us to use $ inside of a block of code // without permanently overwriting $. diff --git a/plone/app/discussion/browser/javascripts/moderation.js b/plone/app/discussion/browser/javascripts/moderation.js index 7e95ed7..65e152a 100644 --- a/plone/app/discussion/browser/javascripts/moderation.js +++ b/plone/app/discussion/browser/javascripts/moderation.js @@ -1,131 +1,150 @@ +/****************************************************************************** + * + * jQuery functions for the plone.app.discussion bulk moderation. + * + ******************************************************************************/ (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 /************************************************************************** - * Delete a single comment. - **************************************************************************/ - $("input[name='form.button.Delete']").click(function (e) { - e.preventDefault(); - var button = $(this); - var row = $(this).parent().parent(); - var form = $(row).parents("form"); - var path = $(row).find("input:checkbox").attr("value"); - var target = path + "/@@moderate-delete-comment"; - var comment_id = $(this).attr("id"); - $.ajax({ - type: "GET", - url: target, - success: function (msg) { - // fade out row - $(row).fadeOut("normal", function () { - $(this).remove(); - }); - }, - error: function (msg) { - alert("Error sending AJAX request:" + target); - } - }); - }); + * Window Load Function: Executes when complete page is fully loaded, + * including all frames, + **************************************************************************/ + $(window).load(function () { - - /************************************************************************** - * Publish a single comment. - **************************************************************************/ - $("input[name='form.button.Publish']").click(function (e) { - e.preventDefault(); - var button = $(this); - var row = $(this).parent().parent(); - var form = $(row).parents("form"); - var path = $(row).find("input:checkbox").attr("value"); - var target = path + "/@@moderate-publish-comment"; - $.ajax({ - type: "GET", - url: target, - data: "workflow_action=publish", - success: function (msg) { - // fade out row - $(row).fadeOut("normal", function () { - $(this).remove(); - }); - }, - error: function (msg) { - alert("Error sending AJAX request:" + target); - } - }); - }); - - - /************************************************************************** - * Bulk actions for comments (delete, publish) - **************************************************************************/ - $("input[name='form.button.BulkAction']").click(function (e) { - e.preventDefault(); - var form = $(this).parents("form"); - var target = $(form).attr('action'); - var params = $(form).serialize(); - var valArray = $('input:checkbox:checked'); - var selectField = $(form).find("[name='form.select.BulkAction']"); - if (selectField.val() === '-1') { - // XXX: translate message - alert("You haven't selected a bulk action. Please select one."); - } else if (valArray.length === 0) { - // XXX: translate message - alert("You haven't selected any comment for this bulk action." + - "Please select at least one comment."); - } else { - $.post(target, params, function (data) { - valArray.each(function () { - /* Remove all selected lines. */ - var row = $(this).parent().parent(); - row.fadeOut("normal", function () { - row.remove(); - }); - }); - }); - // reset the bulkaction select - selectField.find("option[value='-1']").attr('selected', 'selected'); - } - }); + /********************************************************************** + * Delete a single comment. + **********************************************************************/ + $("input[name='form.button.Delete']").click(function (e) { + e.preventDefault(); + var button = $(this); + var row = $(this).parent().parent(); + var form = $(row).parents("form"); + var path = $(row).find("input:checkbox").attr("value"); + var target = path + "/@@moderate-delete-comment"; + var comment_id = $(this).attr("id"); + $.ajax({ + type: "GET", + url: target, + success: function (msg) { + // fade out row + $(row).fadeOut("normal", function () { + $(this).remove(); + }); + }, + error: function (msg) { + alert("Error sending AJAX request:" + target); + } + }); + }); - - /************************************************************************** - * Check or uncheck all checkboxes from the batch moderation page. - **************************************************************************/ - $("input[name='check_all']").click(function () { - if ($(this).val() === 0) { - $(this).parents("table") - .find("input:checkbox") - .attr("checked", "checked"); - $(this).val("1"); - } else { - $(this).parents("table") - .find("input:checkbox") - .attr("checked", ""); - $(this).val("0"); - } - }); + + /********************************************************************** + * Publish a single comment. + **********************************************************************/ + $("input[name='form.button.Publish']").click(function (e) { + e.preventDefault(); + var button = $(this); + var row = $(this).parent().parent(); + var form = $(row).parents("form"); + var path = $(row).find("input:checkbox").attr("value"); + var target = path + "/@@moderate-publish-comment"; + $.ajax({ + type: "GET", + url: target, + data: "workflow_action=publish", + success: function (msg) { + // fade out row + $(row).fadeOut("normal", function () { + $(this).remove(); + }); + }, + error: function (msg) { + alert("Error sending AJAX request:" + target); + } + }); + }); + + + /********************************************************************** + * Bulk actions for comments (delete, publish) + **********************************************************************/ + $("input[name='form.button.BulkAction']").click(function (e) { + e.preventDefault(); + var form = $(this).parents("form"); + var target = $(form).attr('action'); + var params = $(form).serialize(); + var valArray = $('input:checkbox:checked'); + var selectField = $(form).find("[name='form.select.BulkAction']"); + if (selectField.val() === '-1') { + // XXX: translate message + alert("You haven't selected a bulk action. Please select one."); + } else if (valArray.length === 0) { + // XXX: translate message + alert("You haven't selected any comment for this bulk action." + + "Please select at least one comment."); + } else { + $.post(target, params, function (data) { + valArray.each(function () { + /* Remove all selected lines. */ + var row = $(this).parent().parent(); + row.fadeOut("normal", function () { + row.remove(); + }); + }); + }); + // reset the bulkaction select + selectField.find("option[value='-1']").attr('selected', 'selected'); + } + }); - - /************************************************************************** - * Show full text of a comment in the batch moderation page. - **************************************************************************/ - $(".show-full-comment-text").click(function (e) { - e.preventDefault(); - var target = $(this).attr("href"); - var td = $(this).parent(); - $.ajax({ - type: "GET", - url: target, - data: "", - success: function (data) { - // show full text - td.replaceWith("" + data + ""); - }, - error: function (msg) { - alert("Error getting full comment text:" + target); - } - }); + + /********************************************************************** + * Check or uncheck all checkboxes from the batch moderation page. + **********************************************************************/ + $("input[name='check_all']").click(function () { + if ($(this).val() === 0) { + $(this).parents("table") + .find("input:checkbox") + .attr("checked", "checked"); + $(this).val("1"); + } else { + $(this).parents("table") + .find("input:checkbox") + .attr("checked", ""); + $(this).val("0"); + } + }); + + + /********************************************************************** + * Show full text of a comment in the batch moderation page. + **********************************************************************/ + $(".show-full-comment-text").click(function (e) { + e.preventDefault(); + var target = $(this).attr("href"); + var td = $(this).parent(); + $.ajax({ + type: "GET", + url: target, + data: "", + success: function (data) { + // show full text + td.replaceWith("" + data + ""); + }, + error: function (msg) { + alert("Error getting full comment text:" + target); + } + }); + }); + }); + //#JSCOVERAGE_ENDIF + }(jQuery)); -