extended existing review workflow by stati 'rejected' and 'spam'
removed addional third workflow
This commit is contained in:
@@ -184,11 +184,8 @@ class DiscussionSettingsControlPanel(controlpanel.ControlPanelFormWrapper):
|
||||
'comment_one_state_workflow' in workflow_chain
|
||||
comment_review_workflow_enabled = \
|
||||
'comment_review_workflow' in workflow_chain
|
||||
comment_multiple_state_review_workflow = \
|
||||
'comment_multiple_state_review_workflow' in workflow_chain
|
||||
if one_state_workflow_enabled \
|
||||
or comment_review_workflow_enabled \
|
||||
or comment_multiple_state_review_workflow:
|
||||
or comment_review_workflow_enabled:
|
||||
return
|
||||
return True
|
||||
|
||||
|
||||
@@ -80,124 +80,60 @@ require(["jquery", "pat-registry"], function($, registry) {
|
||||
success: function(msg) {
|
||||
if (moderate) {
|
||||
let url = location.href;
|
||||
$("#review-comments").load(url + " #review-comments", function() {
|
||||
init();
|
||||
$(".pat-plone-modal").patPloneModal();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* Bulk actions for comments (delete, publish)
|
||||
**********************************************************************/
|
||||
$("input[name='form.button.BulkAction']").click(function (e) {
|
||||
e.preventDefault();
|
||||
var form = $(this).closest("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') {
|
||||
// TODO: translate message
|
||||
alert("You haven't selected a bulk action. Please select one.");
|
||||
} else if (valArray.length === 0) {
|
||||
// TODO: 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) {
|
||||
// reset the bulkaction select
|
||||
selectField.find("option[value='-1']").attr('selected', 'selected');
|
||||
// reload filtered comments
|
||||
$("#review-comments").load(window.location + " #review-comments", function() {
|
||||
init();
|
||||
$('.pat-plone-modal').patPloneModal();
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* 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")
|
||||
.prop("checked", true);
|
||||
$(this).val("1");
|
||||
} else {
|
||||
$(this).parents("table")
|
||||
.find("input:checkbox")
|
||||
.prop("checked", false);
|
||||
$(this).val("0");
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* select comments with review_state
|
||||
**********************************************************************/
|
||||
|
||||
$("input[name='review_state']").click(function () {
|
||||
// location.search = 'review_state=' + $(this).val();
|
||||
let review_state = $(this).val();
|
||||
let url = location.href;
|
||||
if (location.search) {
|
||||
url = location.href.replace(location.search, "?review_state=" + review_state);
|
||||
} else {
|
||||
url = location.href + "?review_state=" + review_state;
|
||||
}
|
||||
|
||||
$("#fieldset-moderate-comments").parent()
|
||||
.load(url + " #fieldset-moderate-comments", function() {
|
||||
init();
|
||||
$('.pat-plone-modal').patPloneModal();
|
||||
let stateObj = { review_state: review_state };
|
||||
history.pushState(stateObj, "moderate comments", url);
|
||||
});
|
||||
});
|
||||
|
||||
$("#review-comments").load(
|
||||
url + " #review-comments > *",
|
||||
function() {
|
||||
init();
|
||||
$(".pat-plone-modal").patPloneModal();
|
||||
}
|
||||
);
|
||||
} else {
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
error: function(msg) {
|
||||
alert(
|
||||
"Error transmitting comment. (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 form = $(this).closest("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
|
||||
// TODO: translate message
|
||||
alert("You haven't selected a bulk action. Please select one.");
|
||||
} else if (valArray.length === 0) {
|
||||
// XXX: translate message
|
||||
// TODO: 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();
|
||||
});
|
||||
});
|
||||
// reload page if all comments have been removed
|
||||
var comments = $("table#review-comments > tbody > tr");
|
||||
if (comments.length <= valArray.length) {
|
||||
location.reload();
|
||||
}
|
||||
// reset the bulkaction select
|
||||
selectField.find("option[value='-1']").attr("selected", "selected");
|
||||
// reload filtered comments
|
||||
$("#review-comments").load(
|
||||
window.location + " #review-comments",
|
||||
function() {
|
||||
init();
|
||||
$(".pat-plone-modal").patPloneModal();
|
||||
}
|
||||
);
|
||||
});
|
||||
// reset the bulkaction select
|
||||
selectField.find("option[value='-1']").attr("selected", "selected");
|
||||
}
|
||||
});
|
||||
|
||||
@@ -220,31 +156,30 @@ require(["jquery", "pat-registry"], function($, registry) {
|
||||
}
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* Comments published: Load history for publishing date.
|
||||
**********************************************************************/
|
||||
$(".last-history-entry").each(function() {
|
||||
var lasthistoryentry = $(this);
|
||||
$.ajax({
|
||||
url: lasthistoryentry.attr("data-href"),
|
||||
success: function (data) {
|
||||
lasthistoryentry.html($(data).find(".historyByLine").first());
|
||||
// format date
|
||||
registry.scan(lasthistoryentry);
|
||||
},
|
||||
error: function (msg) {
|
||||
console.error("Error getting history.");
|
||||
}
|
||||
});
|
||||
});
|
||||
}; // end init
|
||||
/**********************************************************************
|
||||
* select comments with review_state
|
||||
**********************************************************************/
|
||||
|
||||
$("#review-comments").load(url + " #review-comments", function() {
|
||||
init();
|
||||
$(".pat-plone-modal").patPloneModal();
|
||||
let stateObj = { review_state: review_state };
|
||||
history.pushState(stateObj, "moderate comments", url);
|
||||
});
|
||||
$("input[name='review_state']").click(function() {
|
||||
let review_state = $(this).val();
|
||||
let url = location.href;
|
||||
if (location.search) {
|
||||
url = location.href.replace(
|
||||
location.search,
|
||||
"?review_state=" + review_state
|
||||
);
|
||||
} else {
|
||||
url = location.href + "?review_state=" + review_state;
|
||||
}
|
||||
|
||||
$("#fieldset-moderate-comments")
|
||||
.parent()
|
||||
.load(url + " #fieldset-moderate-comments", function() {
|
||||
init();
|
||||
$(".pat-plone-modal").patPloneModal();
|
||||
let stateObj = { review_state: review_state };
|
||||
history.pushState(stateObj, "moderate comments", url);
|
||||
});
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
@@ -269,26 +204,23 @@ require(["jquery", "pat-registry"], function($, registry) {
|
||||
});
|
||||
|
||||
/**********************************************************************
|
||||
* Comments approved: Load history for approved date.
|
||||
* Comments published: Load history for publishing date.
|
||||
**********************************************************************/
|
||||
$(".last-history-entry").each(function() {
|
||||
var me = $(this);
|
||||
var lasthistoryentry = $(this);
|
||||
$.ajax({
|
||||
url: me.attr("data-href"),
|
||||
url: lasthistoryentry.attr("data-href"),
|
||||
success: function(data) {
|
||||
let first_history_entry = $(data)
|
||||
.find(".historyByLine")
|
||||
.first();
|
||||
me.html("");
|
||||
first_history_entry.children().each(function() {
|
||||
me.append($(this));
|
||||
me.append("<br/>");
|
||||
});
|
||||
lasthistoryentry.html(
|
||||
$(data)
|
||||
.find(".historyByLine")
|
||||
.first()
|
||||
);
|
||||
// format date
|
||||
registry.scan(me);
|
||||
registry.scan(lasthistoryentry);
|
||||
},
|
||||
error: function(msg) {
|
||||
alert("Error getting history.");
|
||||
console.error("Error getting history.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -46,21 +46,12 @@
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<form tal:condition="not:items">
|
||||
<fieldset id="fieldset-moderate-comments" class="formPanel">
|
||||
<p id="no-comments-message" i18n:translate="message_no_comments">
|
||||
No comments
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<form method="post"
|
||||
<form
|
||||
method="post"
|
||||
action="#"
|
||||
tal:condition="moderation_enabled"
|
||||
tal:attributes="action string:${context/absolute_url}/@@bulk-actions"
|
||||
tal:define="batch python:Batch(items, b_size, int(b_start), orphan=1);">
|
||||
|
||||
<fieldset id="fieldset-moderate-comments" class="formPanel">
|
||||
|
||||
<div metal:use-macro="here/batch_macros/macros/navigation" />
|
||||
@@ -187,9 +178,11 @@
|
||||
class="context"
|
||||
type="submit"
|
||||
value="Label"
|
||||
tal:attributes="id item/id;
|
||||
tal:attributes="id string:${item/id}_${transition/id};
|
||||
data-transition transition/id;
|
||||
value python:translationhelper.translate(transition['title'])"
|
||||
value python:translationhelper.translate(transition['title']);
|
||||
style python:transition['id']=='publish' and 'background-color: #5cb85c;; border-color: #4cae4c;;' or '';
|
||||
"
|
||||
/>
|
||||
</tal:transitions>
|
||||
</div>
|
||||
|
||||
@@ -113,15 +113,15 @@ class View(BrowserView):
|
||||
|
||||
Example: pending
|
||||
|
||||
[{'id': 'mark_as_spam', 'url': 'http://localhost:8083/PloneRejected/testfolder/testpage/++conversation++default/1575415863542780/content_status_modify?workflow_action=mark_as_spam', 'icon': '', 'category': 'workflow', 'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_multiple_state_review_workflow/transitions/mark_as_spam>, 'title': 'Spam', 'link_target': None, 'visible': True, 'available': True, 'allowed': True},
|
||||
[{'id': 'mark_as_spam', 'url': 'http://localhost:8083/PloneRejected/testfolder/testpage/++conversation++default/1575415863542780/content_status_modify?workflow_action=mark_as_spam', 'icon': '', 'category': 'workflow', 'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_review_workflow/transitions/mark_as_spam>, 'title': 'Spam', 'link_target': None, 'visible': True, 'available': True, 'allowed': True},
|
||||
{'id': 'publish',
|
||||
'url': 'http://localhost:8083/PloneRejected/testfolder/testpage/++conversation++default/1575415863542780/content_status_modify?workflow_action=publish',
|
||||
'icon': '',
|
||||
'category': 'workflow',
|
||||
'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_multiple_state_review_workflow/transitions/publish>,
|
||||
'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_review_workflow/transitions/publish>,
|
||||
'title': 'Approve',
|
||||
'link_target': None, 'visible': True, 'available': True, 'allowed': True},
|
||||
{'id': 'reject', 'url': 'http://localhost:8083/PloneRejected/testfolder/testpage/++conversation++default/1575415863542780/content_status_modify?workflow_action=reject', 'icon': '', 'category': 'workflow', 'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_multiple_state_review_workflow/transitions/reject>, 'title': 'Reject', 'link_target': None, 'visible': True, 'available': True, 'allowed': True}]
|
||||
{'id': 'reject', 'url': 'http://localhost:8083/PloneRejected/testfolder/testpage/++conversation++default/1575415863542780/content_status_modify?workflow_action=reject', 'icon': '', 'category': 'workflow', 'transition': <TransitionDefinition at /PloneRejected/portal_workflow/comment_review_workflow/transitions/reject>, 'title': 'Reject', 'link_target': None, 'visible': True, 'available': True, 'allowed': True}]
|
||||
"""
|
||||
|
||||
if obj:
|
||||
|
||||
Reference in New Issue
Block a user