FIX Add 'legal empty attributes' to allow empty alt values on i… (#9257)

FIX Add 'legal empty attributes' to allow empty alt values on imgs
This commit is contained in:
Guy Marriott 2019-09-23 17:03:01 -07:00 committed by GitHub
commit 3659f2888d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 1 deletions

View File

@ -39,6 +39,16 @@ class HTML
'wbr'
];
/**
* List of attributes that should be rendered even if they contain no value
*
* @config
* @var array
*/
private static $legal_empty_attributes = [
'alt',
];
/**
* Construct and return HTML tag.
*
@ -52,10 +62,13 @@ class HTML
$tag = strtolower($tag);
// Build list of arguments
$legalEmptyAttributes = static::config()->get('legal_empty_attributes');
$preparedAttributes = '';
foreach ($attributes as $attributeKey => $attributeValue) {
$whitelisted = in_array($attributeKey, $legalEmptyAttributes);
// Only set non-empty strings (ensures strlen(0) > 0)
if (strlen($attributeValue) > 0) {
if (strlen($attributeValue) > 0 || $whitelisted) {
$preparedAttributes .= sprintf(
' %s="%s"',
$attributeKey,

View File

@ -45,6 +45,16 @@ class HTMLTest extends SapphireTest
$this->assertEquals('<a title="HTML &amp; Text">Some <strong>content!</strong></a>', $tag);
}
public function testImgTag()
{
$tag = HTML::createTag('img', [
'src' => 'example.png',
'alt' => '',
]);
$this->assertEquals('<img src="example.png" alt="" />', $tag);
}
public function testVoidContentError()
{
$this->expectException(InvalidArgumentException::class);