From 146ed1efc35c0bf0d4638f098488360c6ad3943b Mon Sep 17 00:00:00 2001 From: William Jacoby Date: Sun, 25 Oct 2026 16:26:52 -0500 Subject: [PATCH 1/2] Replace redundant Select all link when code copying is available --- README.md | 2 +- docs/images/screenshots/README.md | 8 ++++---- docs/images/screenshots/copylinks-code.png | Bin 7195 -> 5935 bytes styles/all/template/copylinks.js | 9 +++++++-- styles/all/theme/copylinks.css | 3 +-- tests/browser/README.md | 4 ++-- tests/browser/code-copy.js | 11 +++++------ 7 files changed, 20 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 3dcba7f..19c1ae9 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Click a forum, topic, post or FAQ heading to copy a link to it, ready-made as BB ## Features - Click a forum or topic title, a post subject, or a question in the FAQ or BBCode guide, and a link to it is copied as BBCode, for example `[url=https://example.com/forum/viewtopic.php?t=42]Topic title[/url]`. Paste it into a post and it shows as a readable link. -- Code blocks have a separate **Copy code** button beside **Select all**. It copies plain text, preserving indentation and line breaks, and provides visible and screen reader feedback. If copying is blocked, the code is selected for manual copying. The ACP link-format setting does not affect code copying. +- Code blocks use one **Copy code** button in place of **Select all** when JavaScript runs. With JavaScript off, the original **Select all** link remains. It copies plain text, preserving indentation and line breaks, and provides visible and screen reader feedback. If copying is blocked, the code is selected for manual copying. The ACP link-format setting does not affect code copying. - Also works on the title above the posting form and on the posts in the topic review below it. - Links are full addresses built from the forum, topic or post ID, so they work anywhere they're pasted and never carry a session ID. They always point at the forum, topic or post itself, not a page of it. - A small icon (Font Awesome `fa-clone` by default) marks each copyable heading and turns into a tick for a moment after copying. Screen readers announce "The link has been copied." diff --git a/docs/images/screenshots/README.md b/docs/images/screenshots/README.md index 4210761..7741fd6 100644 --- a/docs/images/screenshots/README.md +++ b/docs/images/screenshots/README.md @@ -22,11 +22,11 @@ Clicking a question in the FAQ copies a link to that question. ## Code block -The separate **Copy code** button copies plain code without BBCode. **Select all** -remains available. This Playwright screenshot shows the success label on phpBB -3.3 after an actual clipboard write and read. +**Copy code** replaces **Select all** when JavaScript runs. With JavaScript off, +the original link remains. The screenshot shows the success label on phpBB 3.3, +captured with the shared screenshot tool using a controlled clipboard outcome. -Copied feedback beside Select all in a code block +Single code-copy control showing Copied feedback ## ACP settings diff --git a/docs/images/screenshots/copylinks-code.png b/docs/images/screenshots/copylinks-code.png index 9931caebcf1a76ba0cb8f581ee4fafa2d78ab73b..2ec2e93c2730008cebfb20fbd4ec1a77b8f8717d 100644 GIT binary patch literal 5935 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 2, 'fixture needs two code blocks'); + assert.equal(await page.locator('.codebox p a[onclick*="selectCode("]').count(), 0, 'Select all is replaced when JavaScript runs'); + assert.equal(await buttons.count(), await page.locator('.codebox pre > code').count()); const expected = await page.locator('.codebox pre > code').allInnerTexts(); const first = buttons.first(); await first.click(); @@ -43,10 +45,6 @@ const { chromium } = require('playwright'); await page.waitForFunction(() => window.copiedTexts.length === 4); assert.equal(await page.evaluate(() => window.copiedTexts[3]), expected[1]); await page.waitForFunction(() => Array.from(document.querySelectorAll('.copylinks-code')).every(button => button.textContent === 'Copy code')); - await page.locator('.codebox p a').first().click(); - // Chromium's native selection omits the final block newline. - assert.equal(await page.evaluate(() => window.getSelection().toString()), expected[0].replace(/\n$/, '')); - assert.equal(await page.evaluate(() => window.copiedTexts.length), 4); // Existing heading copying still uses the configured output format. await page.locator('h2.topic-title > a').click(); @@ -100,10 +98,11 @@ const { chromium } = require('playwright'); const plainPage = await noJS.newPage(); await plainPage.goto(process.env.COPYLINKS_TEST_URL); assert.equal(await plainPage.locator('.copylinks-code').count(), 0); - assert.ok(await plainPage.locator('.codebox p a').count() >= 2); + assert.ok(await plainPage.locator('.codebox p a[onclick*="selectCode("]').count() >= 2); + assert.equal(await plainPage.getByRole('link', {name: 'Select all', exact: true}).count(), expected.length); assert.deepEqual(await plainPage.locator('.codebox pre > code').allTextContents(), expected); await noJS.close(); - console.log('PASS: exact code, multiple blocks, Enter/Space, repeat feedback, Select all, heading format, denied/missing/insecure clipboard selection fallback and recovery, focus, 320px layout, accessible name, no-JS content.'); + console.log('PASS: exact code, multiple blocks, Enter/Space, repeat feedback, one code control, heading format, denied/missing/insecure clipboard selection fallback and recovery, focus, 320px layout, accessible name, no-JS Select all and content.'); } finally { await browser.close(); } From fa3f61f54e7f998c77f6a847d200ef4ec5ea6ecf Mon Sep 17 00:00:00 2001 From: William Jacoby Date: Sun, 25 Oct 2026 16:34:04 -0500 Subject: [PATCH 2/2] Refresh dated gallery for the single code-copy control --- docs/update/2026-10-25/01-copy-code.png | Bin 6724 -> 6060 bytes docs/update/2026-10-25/02-code-copied.png | Bin 6530 -> 5935 bytes docs/update/2026-10-25/03-copy-manually.png | Bin 6948 -> 6194 bytes docs/update/2026-10-25/README.md | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/update/2026-10-25/01-copy-code.png b/docs/update/2026-10-25/01-copy-code.png index e4500f3989381ce0640b3bdd9076057fe6e924e9..cbbcffb012a00d288edbe2e1d7bd096de6f0d34f 100644 GIT binary patch literal 6060 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 diff --git a/docs/update/2026-10-25/03-copy-manually.png b/docs/update/2026-10-25/03-copy-manually.png index f6afc7e8faf6298ea103002d71e21ee136afcae5..72394b9449e4a065533c84c021a8cd8c78bebc7f 100644 GIT binary patch literal 6194 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 diff --git a/docs/update/2026-10-25/README.md b/docs/update/2026-10-25/README.md index 1dd4d4b..a5f07dc 100644 --- a/docs/update/2026-10-25/README.md +++ b/docs/update/2026-10-25/README.md @@ -10,15 +10,15 @@ states. The PNGs retain their original resolution. ## Copy code control -A separate Copy code button appears beside Select all. Keyboard focus remains visible. +Copy code replaces Select all when JavaScript runs, leaving one control. With JavaScript off, the original Select all link remains. Keyboard focus stays visible. -Copy code button with a visible keyboard focus outline beside Select all +Single Copy code button with a visible keyboard focus outline ## Successful copy The button shows Copied! after plain code is copied. Indentation and line breaks are preserved. -Copied success feedback beside Select all +Single code-copy control showing Copied success feedback ## Manual-copy fallback