From b1a59e38c121e1caefd1269adfd3d8b2ca4b5fdd Mon Sep 17 00:00:00 2001
From: thiloho <123883702+thiloho@users.noreply.github.com>
Date: Sat, 19 Oct 2024 17:55:02 +0200
Subject: [PATCH] Add disable attribute for no permission buttons and shorten
query param names
---
.../src/lib/components/MarkdownEditor.svelte | 23 ++++-
.../src/lib/components/SuccessOrError.svelte | 32 ++++++-
.../routes/(authenticated)/+page.server.ts | 13 +--
.../src/routes/(authenticated)/+page.svelte | 27 +++---
.../website/[websiteId]/+layout.server.ts | 23 ++++-
.../website/[websiteId]/+page.svelte | 9 +-
.../[websiteId]/articles/+page.server.ts | 12 +--
.../website/[websiteId]/articles/+page.svelte | 27 +++---
.../articles/[articleId]/+page.server.ts | 4 +-
.../articles/[articleId]/+page.svelte | 2 +-
.../[websiteId]/categories/+page.server.ts | 8 +-
.../[websiteId]/categories/+page.svelte | 15 +++-
.../[websiteId]/collaborators/+page.server.ts | 8 +-
.../[websiteId]/collaborators/+page.svelte | 14 ++-
.../legal-information/+page.server.ts | 22 ++++-
.../legal-information/+page.svelte | 6 +-
.../website/[websiteId]/logs/+page.server.ts | 8 +-
.../website/[websiteId]/logs/+page.svelte | 80 ++++++-----------
.../[websiteId]/publish/+page.server.ts | 7 +-
.../website/[websiteId]/publish/+page.svelte | 8 +-
web-app/template-styles/common-styles.css | 6 ++
web-app/tests/collaborator.spec.ts | 85 ++++++++++++++++---
22 files changed, 292 insertions(+), 147 deletions(-)
diff --git a/web-app/src/lib/components/MarkdownEditor.svelte b/web-app/src/lib/components/MarkdownEditor.svelte
index 3cc278a..024b2a3 100644
--- a/web-app/src/lib/components/MarkdownEditor.svelte
+++ b/web-app/src/lib/components/MarkdownEditor.svelte
@@ -1,6 +1,8 @@
+{#if pasting}
+
+{/if}
+
@@ -73,7 +73,7 @@
required
/>
-
+
{#if data.websiteOverview.domain_prefix?.prefix}
@@ -87,7 +87,9 @@
Caution!
This action will remove the domain prefix and reset it to its initial value.
-
+
{/if}
diff --git a/web-app/template-styles/common-styles.css b/web-app/template-styles/common-styles.css
index 3d2da8c..c7b1b66 100644
--- a/web-app/template-styles/common-styles.css
+++ b/web-app/template-styles/common-styles.css
@@ -105,6 +105,12 @@ label[for="toggle-theme"] svg:last-of-type {
background-color: var(--bg-tertiary);
}
+button:disabled {
+ pointer-events: none;
+ opacity: 0.5;
+ z-index: -10;
+}
+
:is(button, input, textarea, select, a, summary, pre):focus,
:is(#toggle-mobile-preview, #toggle-sidebar):checked + label {
outline: 0.125rem solid var(--color-accent);
diff --git a/web-app/tests/collaborator.spec.ts b/web-app/tests/collaborator.spec.ts
index 15505bc..fe75950 100644
--- a/web-app/tests/collaborator.spec.ts
+++ b/web-app/tests/collaborator.spec.ts
@@ -154,6 +154,10 @@ test.describe.serial("Collaborator tests", () => {
test("Update website", async ({ page }) => {
await page.locator("li").filter({ hasText: "Blog" }).getByRole("button").first().click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -164,11 +168,18 @@ test.describe.serial("Collaborator tests", () => {
});
test("Delete website", async ({ page }) => {
await page.locator("li").filter({ hasText: "Blog" }).getByRole("button").nth(1).click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete website" }).click();
await expect(page.getByText("Insufficient permissions")).toBeVisible();
});
test("Update Global", async ({ page }) => {
await page.getByRole("link", { name: "Blog" }).click();
+ await page
+ .locator('#global button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.locator("#global").getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -179,6 +190,9 @@ test.describe.serial("Collaborator tests", () => {
});
test("Update Header", async ({ page }) => {
await page.getByRole("link", { name: "Blog" }).click();
+ await page
+ .locator('#header button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.locator("#header").getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -191,6 +205,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByRole("link", { name: "Blog" }).click();
await page.getByLabel("Description:").click();
await page.getByLabel("Description:").fill("Description");
+ await page
+ .locator('#home button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.locator("#home").getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -201,6 +218,9 @@ test.describe.serial("Collaborator tests", () => {
});
test("Update Footer", async ({ page }) => {
await page.getByRole("link", { name: "Blog" }).click();
+ await page
+ .locator('#footer button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.locator("#footer").getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -215,6 +235,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByRole("button", { name: "Create article" }).click();
await page.getByLabel("Title:").click();
await page.getByLabel("Title:").fill(`Article-${permissionLevel}`);
+ await page
+ .locator('form[action="?/createArticle"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -237,6 +260,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByLabel("Author:").fill("Author");
await page.getByLabel("Main content:").click();
await page.getByLabel("Main content:").fill("## Main content");
+ await page
+ .locator('form button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -253,6 +279,10 @@ test.describe.serial("Collaborator tests", () => {
.filter({ hasText: `Article-${permissionLevel}` })
.getByRole("button")
.click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete article" }).click();
if (permissionLevel === 10) {
@@ -262,6 +292,10 @@ test.describe.serial("Collaborator tests", () => {
await expect(page.getByText("Successfully deleted article")).toBeVisible();
await page.locator("li").filter({ hasText: `Article-10` }).getByRole("button").click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete article" }).click();
if (permissionLevel === 20) {
@@ -277,6 +311,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByRole("button", { name: "Add collaborator" }).click();
await page.getByLabel("Username:").click();
await page.getByLabel("Username:").fill(collabUsername4);
+ await page
+ .locator('form[action="?/addCollaborator"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -295,6 +332,10 @@ test.describe.serial("Collaborator tests", () => {
.first()
.click();
await page.getByRole("combobox").selectOption("20");
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Update collaborator" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -322,6 +363,10 @@ test.describe.serial("Collaborator tests", () => {
.getByRole("button")
.nth(1)
.click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Remove collaborator" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -344,16 +389,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByRole("link", { name: "Legal information" }).click();
await page.getByLabel("Main content:").click();
await page.getByLabel("Main content:").fill("## Content");
- await page.getByRole("button", { name: "Submit" }).click();
-
- if (permissionLevel === 30) {
- await expect(page.getByText("Successfully created/updated legal")).toBeVisible();
- } else {
- await expect(page.getByText("Insufficient permissions")).toBeVisible();
- }
-
- await page.getByLabel("Main content:").click();
- await page.getByLabel("Main content:").fill("## Content updated");
+ await page
+ .locator('form[action="?/createUpdateLegalInformation"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 30) {
@@ -370,6 +408,9 @@ test.describe.serial("Collaborator tests", () => {
.click();
await page.getByRole("link", { name: "Legal information" }).click();
await page.getByRole("button", { name: "Delete" }).click();
+ await page
+ .locator('form[action="?/deleteLegalInformation"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete legal information" }).click();
if (permissionLevel === 30) {
@@ -386,6 +427,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByLabel("Name:").nth(0).fill(`Category-${permissionLevel}`);
await page.getByRole("spinbutton", { name: "Weight:" }).click();
await page.getByRole("spinbutton", { name: "Weight:" }).fill(permissionLevel.toString());
+ await page
+ .locator('form[action="?/createCategory"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if (permissionLevel === 10) {
@@ -407,6 +451,10 @@ test.describe.serial("Collaborator tests", () => {
await page
.getByRole("spinbutton", { name: "Weight:" })
.fill((permissionLevel * 2).toString());
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Update category" }).click();
if (permissionLevel === 10) {
@@ -424,6 +472,10 @@ test.describe.serial("Collaborator tests", () => {
.getByRole("button")
.nth(1)
.click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete category" }).click();
if (permissionLevel === 10) {
@@ -438,6 +490,10 @@ test.describe.serial("Collaborator tests", () => {
.getByRole("button")
.nth(1)
.click();
+ const modalName = page.url().split("#")[1];
+ await page
+ .locator(`div[id="${modalName}"] button[type="submit"]`)
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete category" }).click();
if (permissionLevel === 20) {
@@ -450,6 +506,9 @@ test.describe.serial("Collaborator tests", () => {
test("Publish website", async ({ page }) => {
await page.getByRole("link", { name: "Blog" }).click();
await page.getByRole("link", { name: "Publish" }).click();
+ await page
+ .locator('form[action="?/publishWebsite"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Publish" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -468,6 +527,9 @@ test.describe.serial("Collaborator tests", () => {
await page.keyboard.press(`${modifier}+A`);
await page.keyboard.press(`Backspace`);
await page.getByLabel("Prefix:").fill(customPrefix2);
+ await page
+ .locator('form[action="?/createUpdateCustomDomainPrefix"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Submit" }).click();
if ([10, 20].includes(permissionLevel)) {
@@ -480,6 +542,9 @@ test.describe.serial("Collaborator tests", () => {
await page.getByRole("link", { name: "Blog" }).click();
await page.getByRole("link", { name: "Publish" }).click();
await page.getByRole("button", { name: "Delete" }).click();
+ await page
+ .locator('form[action="?/deleteCustomDomainPrefix"] button[type="submit"]')
+ .evaluate((node) => node.removeAttribute("disabled"));
await page.getByRole("button", { name: "Delete domain prefix" }).click();
if ([10, 20].includes(permissionLevel)) {