Skip to content
Snippets Groups Projects
Verified Commit 79e1e2a8 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #2710427 by smustgrave, longwave, akhoury, alexpott, ChaseOnTheWeb,...

Issue #2710427 by smustgrave, longwave, akhoury, alexpott, ChaseOnTheWeb, Spokje, Wim Leers, aby v a, frob, alison, catch, smulvih2, pameeela, ranjith_kumar_k_u, vsujeetkumar, becassin: Broken "Allowed Tags" updating: after all values for an attribute are allowed, it should not be overridden to allow only certain attribute values

(cherry picked from commit 2aa0817d)
parent fd9ecc17
Branches
Tags
17 merge requests!8506Draft: Issue #3456536 by ibrahim tameme,!5646Issue #3350972 by nod_: [random test failure]...,!5600Issue #3350972 by nod_: [random test failure]...,!5343Issue #3305066 by quietone, Rename RedirectLeadingSlashesSubscriber,!3603#ISSUE 3346218 Add a different message on edit comment,!3555Issue #2473873: Views entity operations lack cacheability support, resulting in incorrect dropbuttons,!3494Issue #3327018 by Spokje, longwave, xjm, mondrake: Update PHPStan to 1.9.3 and...,!3410Issue #3340128: UserLoginForm::submitForm has some dead code,!3389Issue #3325184 by Spokje, andypost, xjm, smustgrave: $this->configFactory is...,!3381Issue #3332363: Refactor Claro's menus-and-lists stylesheet,!3307Issue #3326193: CKEditor 5 can grow past the viewport when there is a lot of content,!3236Issue #3332419: Refactor Claro's messages stylesheet,!3231Draft: Issue #3049525 by longwave, fougere, larowlan, kim.pepper, AaronBauman, Wim...,!3212Issue #3294003: Refactor Claro's entity-meta stylesheet,!3194Issue #3330981: Fix PHPStan L1 error "Relying on entity queries to check access by default is deprecated...",!3143Issue #3313342: [PHP 8.1] Deprecated function: strpos(): Passing null to parameter #1 LayoutBuilderUiCacheContext.php on line 28,!2972Issue #1845004: Replace custom password hashing library with PHP 5.5 password_hash()
......@@ -6,8 +6,9 @@
(function ($, Drupal, document) {
if (Drupal.filterConfiguration) {
/**
* Implement a live setting parser to prevent text editors from automatically
* enabling buttons that are not allowed by this filter's configuration.
* Implement a live setting parser to prevent text editors from
* automatically enabling buttons that are not allowed by this filter's
* configuration.
*
* @namespace
*/
......@@ -202,8 +203,13 @@
// https://www.drupal.org/node/2567801 lands.
filterRule.restrictedTags.allowed.attributes =
featureRule.required.attributes.slice(0);
filterRule.restrictedTags.allowed.classes =
featureRule.required.classes.slice(0);
if (
userAllowedTags[tag] !== undefined &&
userAllowedTags[tag].restrictedTags.allowed.classes[0] !== ''
) {
filterRule.restrictedTags.allowed.classes =
featureRule.required.classes.slice(0);
}
editorRequiredTags[tag] = filterRule;
}
// The tag is already allowed, add any additionally allowed
......@@ -214,10 +220,15 @@
...filterRule.restrictedTags.allowed.attributes,
...featureRule.required.attributes,
];
filterRule.restrictedTags.allowed.classes = [
...filterRule.restrictedTags.allowed.classes,
...featureRule.required.classes,
];
if (
userAllowedTags[tag] !== undefined &&
userAllowedTags[tag].restrictedTags.allowed.classes[0] !== ''
) {
filterRule.restrictedTags.allowed.classes = [
...filterRule.restrictedTags.allowed.classes,
...featureRule.required.classes,
];
}
}
}
}
......@@ -343,6 +354,7 @@
_generateSetting(tags) {
return Object.keys(tags).reduce((setting, tag) => {
const rule = tags[tag];
const allowedClasses = rule.restrictedTags.allowed.classes;
if (setting.length) {
setting += ' ';
......@@ -357,10 +369,10 @@
// values. The filter_html filter always disallows the "style"
// attribute, so we only need to support "class" attribute value
// restrictions. Fix once https://www.drupal.org/node/2567801 lands.
if (rule.restrictedTags.allowed.classes.length) {
setting += ` class="${rule.restrictedTags.allowed.classes.join(
' ',
)}"`;
if (allowedClasses.length === 1 && allowedClasses[0] === '') {
setting += ' class';
} else if (allowedClasses.length) {
setting += ' class="'.concat(allowedClasses.join(' '), '"');
}
setting += '>';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment