From 3e5d99dedca452159b12ebe0836e5cdef94c4dfc Mon Sep 17 00:00:00 2001 From: Thomas Portelange Date: Fri, 27 Jan 2023 11:55:40 +0100 Subject: [PATCH] Prevent backslash in class name since the default code is using get_called_class, you can end up with \ in the class name which is an escape character for css selectors this update convert for example even valCMS_ACCESS_SilverStripe\VersionedAdmin\ArchiveAdmin to even valCMS_ACCESS_SilverStripe-VersionedAdmin-ArchiveAdmin ArchiveAdmin class should probably implement private static $required_permission_codes = 'CMS_ACCESS_ArchiveAdmin '; also --- src/Security/PermissionCheckboxSetField.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Security/PermissionCheckboxSetField.php b/src/Security/PermissionCheckboxSetField.php index fde5ad178..51fa3ff06 100644 --- a/src/Security/PermissionCheckboxSetField.php +++ b/src/Security/PermissionCheckboxSetField.php @@ -207,7 +207,7 @@ class PermissionCheckboxSetField extends FormField $odd = ($odd + 1) % 2; $extraClass = $odd ? 'odd' : 'even'; - $extraClass .= ' val' . str_replace(' ', '', $code ?? ''); + $extraClass .= ' val' . str_replace([' ', '\\'], ['', '-'], $code ?? ''); $itemID = $this->ID() . '_' . preg_replace('/[^a-zA-Z0-9]+/', '', $code ?? ''); $disabled = $inheritMessage = ''; $checked = (isset($uninheritedCodes[$code]) || isset($inheritedCodes[$code]))