mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: allow tl4 to bulk select (#19094)
* FIX: allow tl4 to bulk select - Also allows tl4 to perform batch tagging --- Long term this needs to be rewritten to account for "bulk action" permission given from the server. Co-authored-by: Martin Brennan <martin@discourse.org>
This commit is contained in:
parent
2b7e73d7ff
commit
60abe99add
@ -12,7 +12,7 @@ export default Component.extend(LoadMore, {
|
|||||||
classNameBindings: ["bulkSelectEnabled:sticky-header"],
|
classNameBindings: ["bulkSelectEnabled:sticky-header"],
|
||||||
showTopicPostBadges: true,
|
showTopicPostBadges: true,
|
||||||
listTitle: "topic.title",
|
listTitle: "topic.title",
|
||||||
canDoBulkActions: and("currentUser.staff", "selected.length"),
|
canDoBulkActions: and("currentUser.canManageTopic", "selected.length"),
|
||||||
|
|
||||||
// Overwrite this to perform client side filtering of topics, if desired
|
// Overwrite this to perform client side filtering of topics, if desired
|
||||||
filteredTopics: alias("topics"),
|
filteredTopics: alias("topics"),
|
||||||
|
@ -89,7 +89,7 @@ addBulkButton("showTagTopics", "change_tags", {
|
|||||||
class: "btn-default",
|
class: "btn-default",
|
||||||
enabledSetting: "tagging_enabled",
|
enabledSetting: "tagging_enabled",
|
||||||
buttonVisible() {
|
buttonVisible() {
|
||||||
return this.currentUser.staff;
|
return this.currentUser.canManageTopic;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
addBulkButton("showAppendTagTopics", "append_tags", {
|
addBulkButton("showAppendTagTopics", "append_tags", {
|
||||||
@ -97,7 +97,7 @@ addBulkButton("showAppendTagTopics", "append_tags", {
|
|||||||
class: "btn-default",
|
class: "btn-default",
|
||||||
enabledSetting: "tagging_enabled",
|
enabledSetting: "tagging_enabled",
|
||||||
buttonVisible() {
|
buttonVisible() {
|
||||||
return this.currentUser.staff;
|
return this.currentUser.canManageTopic;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
addBulkButton("removeTags", "remove_tags", {
|
addBulkButton("removeTags", "remove_tags", {
|
||||||
@ -105,7 +105,7 @@ addBulkButton("removeTags", "remove_tags", {
|
|||||||
class: "btn-default",
|
class: "btn-default",
|
||||||
enabledSetting: "tagging_enabled",
|
enabledSetting: "tagging_enabled",
|
||||||
buttonVisible() {
|
buttonVisible() {
|
||||||
return this.currentUser.staff;
|
return this.currentUser.canManageTopic;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
addBulkButton("deleteTopics", "delete", {
|
addBulkButton("deleteTopics", "delete", {
|
||||||
|
@ -13,7 +13,11 @@ export default Mixin.create({
|
|||||||
selected: null,
|
selected: null,
|
||||||
lastChecked: null,
|
lastChecked: null,
|
||||||
|
|
||||||
canBulkSelect: or("currentUser.staff", "showDismissRead", "showResetNew"),
|
canBulkSelect: or(
|
||||||
|
"currentUser.canManageTopic",
|
||||||
|
"showDismissRead",
|
||||||
|
"showResetNew"
|
||||||
|
),
|
||||||
|
|
||||||
@on("init")
|
@on("init")
|
||||||
resetSelected() {
|
resetSelected() {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
acceptance,
|
acceptance,
|
||||||
count,
|
count,
|
||||||
|
exists,
|
||||||
invisible,
|
invisible,
|
||||||
query,
|
query,
|
||||||
queryAll,
|
queryAll,
|
||||||
@ -156,4 +157,103 @@ acceptance("Topic - Bulk Actions", function (needs) {
|
|||||||
"Bottom-up Shift click range selection works"
|
"Bottom-up Shift click range selection works"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("bulk select is not available for users who are not staff or TL4", async function (assert) {
|
||||||
|
updateCurrentUser({ moderator: false, admin: false, trust_level: 1 });
|
||||||
|
await visit("/latest");
|
||||||
|
assert.notOk(
|
||||||
|
exists(".button.bulk-select"),
|
||||||
|
"non-staff and < TL4 users cannot bulk select"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TL4 users can bulk select", async function (assert) {
|
||||||
|
updateCurrentUser({ moderator: false, admin: false, trust_level: 4 });
|
||||||
|
await visit("/latest");
|
||||||
|
await click("button.bulk-select");
|
||||||
|
|
||||||
|
await click(queryAll("input.bulk-select")[0]);
|
||||||
|
await click(queryAll("input.bulk-select")[1]);
|
||||||
|
|
||||||
|
await click(".bulk-select-actions");
|
||||||
|
assert.ok(
|
||||||
|
query("#discourse-modal-title").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.actions")
|
||||||
|
),
|
||||||
|
"it opens bulk-select modal"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.change_category")
|
||||||
|
),
|
||||||
|
"it shows an option to change category"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.close_topics")
|
||||||
|
),
|
||||||
|
"it shows an option to close topics"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.archive_topics")
|
||||||
|
),
|
||||||
|
"it shows an option to archive topics"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.notification_level")
|
||||||
|
),
|
||||||
|
"it shows an option to update notification level"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.notOk(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(I18n.t("topics.bulk.defer")),
|
||||||
|
"it does not show an option to reset read"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.unlist_topics")
|
||||||
|
),
|
||||||
|
"it shows an option to unlist topics"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.reset_bump_dates")
|
||||||
|
),
|
||||||
|
"it shows an option to reset bump dates"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.change_tags")
|
||||||
|
),
|
||||||
|
"it shows an option to replace tags"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.append_tags")
|
||||||
|
),
|
||||||
|
"it shows an option to append tags"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.ok(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(
|
||||||
|
I18n.t("topics.bulk.remove_tags")
|
||||||
|
),
|
||||||
|
"it shows an option to remove all tags"
|
||||||
|
);
|
||||||
|
|
||||||
|
assert.notOk(
|
||||||
|
query(".bulk-buttons").innerHTML.includes(I18n.t("topics.bulk.delete")),
|
||||||
|
"it does not show an option to delete topics"
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user