Agree with #3, if someone wants to maintain a contributed module that contains BC shims for previous versions of jQuery then they are free to do so, but this doesn't fit with our BC policy for core; we are trying to minimise JavaScript and so don't want to load backward compatibility code that probably won't be used on 99% of sites.
longwave → created an issue.
Backported down to 10.5.x as a critical regression, this only affects the link and not the translated string.
Committed and pushed 054568a1f05 to 11.x and fee3dc830b3 to 11.2.x and d1db7dc0cb6 to 10.6.x and d731332ecfc to 10.5.x. Thanks!
Is it possible to get a full stack trace from where that exception happens? The update hook itself doesn't use TranslatableMarkup so it's not clear to me how or why this happens.
Thanks for working on this. As a cleanup task this is not worth backporting, committed to 11.x only.
Committed 0951bca and pushed to 11.x. Thanks!
Great work here - nice to see this finally land! Tagging as a release highlight and will publish the change record.
Committed e117838 and pushed to 11.x. Thanks!
I tried to credit everyone who provided code changes or helpful comments that moved the issue along in some way; I did not credit those who just uploaded patches, because we should be using MR workflows now. Apologies if I missed anyone.
Better title :)
Traced this back to an issue in the original config_translation module, where nl2br()
was explicitly added to fix a bug:
#1945184: Original value display is broken →
Therefore I think we should keep this feature? (and probably add a test for it...)
Do we know why the nl2br() was originally there? Do we need to care about representing newlines in the string correctly still?
Preprocess functions can be OOP and use DI since 11.2! https://www.drupal.org/node/3496491 →
I think catching the exception is fine if it makes the code easier to read.
I don't think we can do this without breaking existing code that expects to catch the exception.
Ideally you should avoid \Drupal::service()
and use dependency injection instead.
One possible option is add a second argument to \Drupal::service()
that passes through the second $invalid_behavior
argument to the container, so you could do
\Drupal::service('non-existent-service', ContainerInterface::NULL_ON_INVALID_REFERENCE);
Backported to 11.2.x as an eligible bug fix. This could also go to 10.5.x/10.6.x but doesn't cherry-pick cleanly; if anyone feels strongly about that please reopen with a backport MR against 10.6.x.
Committed and pushed 970ce375723 to 11.x and 6d8c0395f8f to 11.2.x. Thanks!
I think that's all that can be tested here, thanks for working on this.
Committed 0e7d63c and pushed to 11.x. Thanks!
The token in question is not a sensitive token, in fact it was explicitly added to prevent a security issue. It is a CSRF token designed to ensure that the user actually requested the log out function and this has not been induced by an attacker.
If you are able to perform an attack using this token, please provide further information to the security team in private by following the instructions here: https://www.drupal.org/docs/develop/issues/issue-procedures-and-etiquett... → - do not post any sensitive information in this public issue.
Thanks for the fix. Backported down to 10.5.x as a docs-only bug fix.
Committed and pushed 13a1d338a4b to 11.x and 99ee2a84ebe to 11.2.x and 2039e4aaf6e to 10.6.x and 97cc774765c to 10.5.x. Thanks!
While the strtolower is incorrect, the test strings look incorrect in English now, with the capitalisation mid sentence - e.g. "Translate Taxonomy vocabulary" or "Translate Contact form"
Entities have singular labels available for this sort of thing, shouldn't we be using label_singular
here instead?
#[ConfigEntityType(
id: 'taxonomy_vocabulary',
label: new TranslatableMarkup('Taxonomy vocabulary'),
label_collection: new TranslatableMarkup('Taxonomy'),
label_singular: new TranslatableMarkup('vocabulary'),
label_plural: new TranslatableMarkup('vocabularies'),
with the button text "Translate vocabulary"
#[ConfigEntityType(
id: 'contact_form',
label: new TranslatableMarkup('Contact form'),
label_collection: new TranslatableMarkup('Contact forms'),
label_singular: new TranslatableMarkup('contact form'),
label_plural: new TranslatableMarkup('contact forms'),
with the button text "Translate contact form"
#[ConfigEntityType(
id: 'view',
label: new TranslatableMarkup('View', ['context' => 'View entity type']),
label_collection: new TranslatableMarkup('Views', ['context' => 'View entity type']),
label_singular: new TranslatableMarkup('view', ['context' => 'View entity type']),
label_plural: new TranslatableMarkup('views', ['context' => 'View entity type']),
with the button text "Translate view", etc.
The blocker is in.
Tried to think of downsides or problems with converting this to a service, but apart from a tiny bit of additional bloat in the container I don't think there are any issues.
Committed e19ac2e and pushed to 11.x. Thanks!
As a bug fix this is technically eligible for backport, but given this is only to fix a problem in a not-yet-committed issue I think this can remain in 11.x only.
Looks good to me, added a question about the update hook though.
!12273 is green now so this should mean no test failures once this is committed to 10.5.x and 10.6.x. Thanks for the patience and assistance with the backports here.
Committed and pushed 86faa69f084 to 10.6.x and 53f117df5f0 to 10.5.x. Thanks!
So currently this is in all supported 11.x versions but not 10.x.
✨ Improve Dynamic Page Cache header assertions in JSON:API tests Needs review landed in 10.6.x and 10.5.x finally, I've rebased MR !12273 against 10.5.x and if this is green now then this means this can be committed to both those branches.
I'm also closing the 11.0.x and 10.4.x MRs as they are no longer eligible for backports.
longwave → made their first commit to this issue’s fork.
Saving credits.
Yep this was missed from 10.5.x and then not carried forward to 10.6.x when that was opened either. Too late now to backport to 11.0.x though. Thanks for keeping on top of this.
Committed and pushed efb0d9a4f17 to 10.6.x and 99be6f9bb6c to 10.5.x. Thanks!
Given the function is just
return array_map(function ($bundle_info) {
return $bundle_info['label'];
}, \Drupal::service('entity_type.bundle.info')->getBundleInfo('node'));
this could be added as a convenience method to EntityTypeBundleInfo so you can call e.g.
$labels = \Drupal::service('entity_type.bundle.info')->getBundleLabels('node');
Trivial fix, the variable names do not appear anywhere else in the codebase.
Committed 4558b08 and pushed to 11.x. Thanks!
The final straggler: https://git.drupalcode.org/project/drupal/-/merge_requests/12650
Oh dammit we missed a single instance:
core/themes/olivero/css/components/header-search-wide.css: background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
core/themes/olivero/css/components/header-search-wide.pcss.css: background-image: linear-gradient(var(--color--primary-50), var(--color--primary-50)); /* Two values are needed for IE11 support. */
Nice to finally see the end of this!
Committed 1c08eaa and pushed to 11.x. Thanks!
This makes the code much easier to read, good idea.
Committed a5e7278 and pushed to 11.x. Thanks!
I could argue that helpfuLinks()
should be filtered after the fact, maybe the links
template could have an option to check access before rendering each link, but this works for me as a simple solution given there are only two links to check.
Committed 9a1d0b1 and pushed to 11.x. Thanks!
Thanks, a nice self contained addition that will be useful to a few people. As a new feature this is only eligible for 11.3.x, I considered backporting to 10.6.x but this doesn't meet the criteria of a critical API addition.
Committed 8326e01 and pushed to 11.x. Thanks!
I deliberately did not add this at the time we added the rest of the aliases because of the possible confusion between keyvalue
and keyvalue.database
as they share the interface, but you will (almost) always want keyvalue
to proxy to the selected implementation so adding the alias to that makes sense so it can be injected more easily. And exactly the same applies for the expirable services too.
We can, because that will notify people via PHPStan as well as via tests or at runtime - but I suspect the PHPStan baseline will grow quite a bit.
Added similar dynamic migration messages for the EmptySource plugin and I18nQueryTrait trait and skipped the core implementations of them, they should still trigger in contrib/custom code.
Added some test coverage by removing test modules from the skip, and then expecting the deprecation in tests that use them. Let's see if anything else will fail now I copied in the other two source plugin deprecations from the original MR.
Alternative proposal in !12617 which deprecates DrupalSqlBase but then skips the deprecation notices for core extensions of that class; any other extensions in contrib will trigger the message as normal.
longwave → made their first commit to this issue’s fork.
xjm → credited longwave → .
xjm → credited longwave → .
This seems like a niche feature request and with no +1s or additional comments in nine years let's just close this out.
Sad to see you go, it was great meeting you in Kingston. Thanks for everything you have done for the project.
Committed and pushed to all actively supported branches.
Duplicate of #3161693: BigPipe corrupts HTML with multiple