0
0
Fork 1
Spiegel von https://github.com/paviliondev/discourse-custom-wizard.git synchronisiert 2024-11-09 20:02:54 +01:00

Merge pull request #276 from paviliondev/filter-categories-for-admin-staff

Filter categories for admin staff
Dieser Commit ist enthalten in:
Angus McLeod 2023-10-07 11:43:19 +08:00 committet von GitHub
Commit 1ee2f7d8ba
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 4AEE18F83AFDEB23
3 geänderte Dateien mit 156 neuen und 9 gelöschten Zeilen

Datei anzeigen

@ -87,10 +87,13 @@ export default {
api.modifyClass("component:category-chooser", { api.modifyClass("component:category-chooser", {
categoriesByScope(options = {}) { categoriesByScope(options = {}) {
let categories = this._super(options); let categories = this._super(options);
const currentUser = this.currentUser;
return categories.filter((category) => { if (!currentUser?.staff) {
categories = categories.filter((category) => {
return !category.custom_fields?.create_topic_wizard; return !category.custom_fields?.create_topic_wizard;
}); });
}
return categories;
}, },
}); });
}); });

Datei anzeigen

@ -1,7 +1,7 @@
# frozen_string_literal: true # frozen_string_literal: true
# name: discourse-custom-wizard # name: discourse-custom-wizard
# about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more. # about: Forms for Discourse. Better onboarding, structured posting, data enrichment, automated actions and much more.
# version: 2.4.25 # version: 2.4.26
# authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos # authors: Angus McLeod, Faizaan Gagan, Robert Barrow, Keegan George, Kaitlin Maddever, Juan Marcos Gutierrez Ramos
# url: https://github.com/paviliondev/discourse-custom-wizard # url: https://github.com/paviliondev/discourse-custom-wizard
# contact_emails: development@pavilion.tech # contact_emails: development@pavilion.tech

Datei anzeigen

@ -3,8 +3,8 @@ import { acceptance } from "discourse/tests/helpers/qunit-helpers";
import selectKit from "discourse/tests/helpers/select-kit-helper"; import selectKit from "discourse/tests/helpers/select-kit-helper";
import { test } from "qunit"; import { test } from "qunit";
acceptance("Category Chooser Initializer", function (needs) { acceptance("Category Chooser Initializer for regular users", function (needs) {
needs.user(); needs.user({ admin: false, moderator: false });
needs.settings({ needs.settings({
allow_uncategorized_topics: false, allow_uncategorized_topics: false,
}); });
@ -45,9 +45,8 @@ acceptance("Category Chooser Initializer", function (needs) {
], ],
}); });
test("does not display category with create_topic_wizard custom field", async function (assert) { test("does not display category with create_topic_wizard for regular users", async function (assert) {
const categoryChooser = selectKit(".category-chooser"); const categoryChooser = selectKit(".category-chooser");
await visit("/"); await visit("/");
await click("#create-topic"); await click("#create-topic");
await categoryChooser.expand(); await categoryChooser.expand();
@ -80,3 +79,148 @@ acceptance("Category Chooser Initializer", function (needs) {
); );
}); });
}); });
acceptance("Category Chooser Initializer for Admins", function (needs) {
needs.user({ admin: true });
needs.settings({
allow_uncategorized_topics: false,
});
needs.site({
can_tag_topics: true,
categories: [
{
id: 1,
name: "General",
slug: "general",
permission: 1,
topic_template: null,
},
{
id: 2,
name: "Category with custom field",
slug: "category-custom-field",
permission: 1,
topic_template: "",
custom_fields: {
create_topic_wizard: "21",
},
},
{
id: 3,
name: "Category 1",
slug: "category-1",
permission: 1,
topic_template: "",
},
{
id: 4,
name: "Category 2",
slug: "category-2",
permission: 1,
topic_template: "",
},
],
});
test("displays all categories", async function (assert) {
const categoryChooser = selectKit(".category-chooser");
await visit("/");
await click("#create-topic");
await categoryChooser.expand();
let categories = Array.from(
document.querySelectorAll(".category-chooser .category-row")
).filter((category) => category.getAttribute("data-name")); // Filter elements with a data-name attribute
assert.equal(
categories.length,
4,
"Correct number of categories are displayed"
);
const categoryNames = [
"General",
"Category 1",
"Category 2",
"Category with custom field",
];
categoryNames.forEach((categoryName) => {
assert.ok(
categories.some(
(category) => category.getAttribute("data-name") === categoryName
),
`Category '${categoryName}' is displayed`
);
});
});
});
acceptance("Category Chooser Initializer for Staff", function (needs) {
needs.user({ staff: true });
needs.settings({
allow_uncategorized_topics: false,
});
needs.site({
can_tag_topics: true,
categories: [
{
id: 1,
name: "General",
slug: "general",
permission: 1,
topic_template: null,
},
{
id: 2,
name: "Category with custom field",
slug: "category-custom-field",
permission: 1,
topic_template: "",
custom_fields: {
create_topic_wizard: "21",
},
},
{
id: 3,
name: "Category 1",
slug: "category-1",
permission: 1,
topic_template: "",
},
{
id: 4,
name: "Category 2",
slug: "category-2",
permission: 1,
topic_template: "",
},
],
});
test("displays all categories", async function (assert) {
const categoryChooser = selectKit(".category-chooser");
await visit("/");
await click("#create-topic");
await categoryChooser.expand();
let categories = Array.from(
document.querySelectorAll(".category-chooser .category-row")
).filter((category) => category.getAttribute("data-name")); // Filter elements with a data-name attribute
assert.equal(
categories.length,
4,
"Correct number of categories are displayed"
);
const categoryNames = [
"General",
"Category 1",
"Category 2",
"Category with custom field",
];
categoryNames.forEach((categoryName) => {
assert.ok(
categories.some(
(category) => category.getAttribute("data-name") === categoryName
),
`Category '${categoryName}' is displayed`
);
});
});
});