Preserve state labels in plugin output (#1366)
Some checks failed
L10n Update / update (push) Has been cancelled
CI / PHP (push) Has been cancelled

- Keep bracketed state labels as text inside plugin output (state-ball
replacements)
- Hide the text visually while preserving the existing state-ball
styling
  
Nice when copy&pasting plugin output to a code agent.

---------

Co-authored-by: Fabian Salomon <4098510+fsalomon@users.noreply.github.com>
This commit is contained in:
fsalomon 2026-04-28 14:18:37 +02:00 committed by GitHub
parent b7dc502db5
commit b1dabef96c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 26 additions and 17 deletions

View file

@ -34,13 +34,13 @@ class PluginOutput extends HtmlString
protected const TEXT_REPLACEMENTS = [
"\t",
"\n",
'<span class="state-ball ball-size-m state-ok"></span>',
'<span class="state-ball ball-size-m state-warning"></span>',
'<span class="state-ball ball-size-m state-critical"></span>',
'<span class="state-ball ball-size-m state-unknown"></span>',
'<span class="state-ball ball-size-m state-up"></span>',
'<span class="state-ball ball-size-m state-down"></span>',
'<span class="state-ball ball-size-m state-info"></span>',
'<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span>',
'<span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span>',
'<span class="state-ball ball-size-m state-critical"><i class="sr-only">[CRITICAL]</i></span>',
'<span class="state-ball ball-size-m state-unknown"><i class="sr-only">[UNKNOWN]</i></span>',
'<span class="state-ball ball-size-m state-up"><i class="sr-only">[UP]</i></span>',
'<span class="state-ball ball-size-m state-down"><i class="sr-only">[DOWN]</i></span>',
'<span class="state-ball ball-size-m state-info"><i class="sr-only">[INFO]</i></span>',
'@@@@@@'
];

View file

@ -38,9 +38,9 @@ class PluginOutputTest extends TestCase
INPUT;
$expectedOutput = <<<'EXPECTED_OUTPUT'
<span class="state-ball ball-size-m state-ok"></span> Dummy state
\_ <span class="state-ball ball-size-m state-ok"></span> Fake &quot;state&quot;
\_ <span class="state-ball ball-size-m state-warning"></span> Fake state again
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
\_ <span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Fake &quot;state&quot;
\_ <span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span> Fake state again
EXPECTED_OUTPUT;
$this->checkOutput($expectedOutput, $input);
@ -55,7 +55,7 @@ EXPECTED_OUTPUT;
INPUT;
$expectedOutput = <<<'EXPECTED_OUTPUT'
<span class="state-ball ball-size-m state-ok"></span> Dummy
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy
EXPECTED_OUTPUT;
$this->checkOutput($expectedOutput, $input, 10);
@ -86,9 +86,9 @@ INPUT;
$expectedOutput = <<<'EXPECTED_OUTPUT'
Hello <h3>World</h3>, this "is" a <strong>test</strong>.
<span class="state-ball ball-size-m state-ok"></span> Dummy state
\_ <span class="state-ball ball-size-m state-ok"></span> Fake "state"
\_ <span class="state-ball ball-size-m state-warning"></span> Fake state again
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
\_ <span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Fake "state"
\_ <span class="state-ball ball-size-m state-warning"><i class="sr-only">[WARNING]</i></span> Fake state again
text <span> ends </span> here
EXPECTED_OUTPUT;
@ -106,7 +106,7 @@ INPUT;
$expectedOutput = <<<'EXPECTED_OUTPUT'
Hello <h3>World</h3>, this "is" a <strong>test</strong>.
<span class="state-ball ball-size-m state-ok"></span> Dummy state
<span class="state-ball ball-size-m state-ok"><i class="sr-only">[OK]</i></span> Dummy state
special chars: !@#$%^&amp;*()_+{}|:"&lt;&gt;?`-=[]\;',&#8203;./
text <span> ends </span> here
EXPECTED_OUTPUT;
@ -149,7 +149,11 @@ EXPECTED_OUTPUT;
$l = strtolower($s);
$input = sprintf('[%s] Test', $s);
$expectedOutput = sprintf('<span class="state-ball ball-size-m state-%s"></span> Test', $l);
$expectedOutput = sprintf(
'<span class="state-ball ball-size-m state-%s"><i class="sr-only">[%s]</i></span> Test',
$l,
$s
);
$this->checkOutput($expectedOutput, $input);
@ -167,7 +171,12 @@ EXPECTED_OUTPUT;
$l = strtolower($s);
$input = sprintf('%s [%s] Test', $dummyHtml, $s);
$expectedOutput = sprintf('%s <span class="state-ball ball-size-m state-%s"></span> Test', $dummyHtml, $l);
$expectedOutput = sprintf(
'%s <span class="state-ball ball-size-m state-%s"><i class="sr-only">[%s]</i></span> Test',
$dummyHtml,
$l,
$s
);
$this->checkOutput($expectedOutput, $input);