This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[Translation] Added Crowdin Translation Provider
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | <!-- required for new features -->
To follow up on #38475, this PR adds [Crowdin](https://crowdin.com/) Provider.
This provider was removed a few weeks ago from the Translation Providers feature by `@welcoMattic`.
We discussed all the recent changes made on `ProviderInterface`, `TranslatorBagInterface`, and others and I already applied these changes to Crowdin Provider.
Also, this Provider is adapted to work with both [Crowdin](https://crowdin.com/) and [Crowdin Enterprise](https://crowdin.com/enterprise).
The todo list to make it ready is:
- [x] Write integration tests by mocking HTTP Responses
I will make it done before the beginning of May.
Commits
-------
d7fda16262 [Translation] Added Crowdin Translation Provider
This PR was merged into the 5.3-dev branch.
Discussion
----------
[Translation] Refactored LocoProvider
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
I've refactored the LocoProviderTest class to use properly `MockResponse` instead and creating mock of `ResponseInterface` and make useless assertions.
I've also refactored the Provider itself to get benefit of HttpClient concurrency.
It allows me to find 2 bugs, which are fixed. They concerns the usage of internal unique ids provided by Loco to update/delete translations, instead of translation files keys (which are not unique across a Symfony application).
Finally I've added a test for the `delete` method.
Ready for first review
Commits
-------
40041db7cb Refactored LocoProviderTest
This PR was merged into the 5.3-dev branch.
Discussion
----------
[DependencyInjection] Better exception when a configurator is not type hinted
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
This would help with such BC break:
https://github.com/markitosgv/JWTRefreshTokenBundle/pull/241
Commits
-------
25813e3804 [DependencyInjection] Better exception when a configurator is not type hinted
This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[WebProfilerBundle] Add simple backoff strategy on 404
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | Fix https://github.com/symfony/symfony/issues/41112
| License | MIT
Instead of just retrying every second 5 times, this PR implements a very basic backoff strategy where it waits 1, 1, 2, 3, 5 seconds between the respective requests instead which amounts to a total wait of 12 seconds instead of 5.
Commits
-------
f1b9684ebd [WebProfilerBundle] Add simple backoff strategy on 404
* 5.2: (23 commits)
[Console] Fix Windows code page support
[SecurityBundle] Allow ips parameter in access_control accept comma-separated string
[Form] Add TranslatableMessage support to choice_label option of ChoiceType
Remove code that deals with legacy behavior of PHP_Incomplete_Class
[Config][DependencyInjection] Uniformize trailing slash handling
[PropertyInfo] Make ReflectionExtractor correctly extract nullability
[PropertyInfo] fix attribute namespace with recursive traits
[PhpUnitBridge] Fix tests with `@doesNotPerformAssertions` annotations
Check redis extension version
[Security] Update Russian translations
[Notifier] Fix return SentMessage then Messenger not used
[VarExporter] Add support of PHP enumerations
[Security] Added missing Japanese translations
[Security] Added missing Polish translations
[Security] Add missing Italian translations #41051
[Security] Missing translations pt_BR
getProtocolVersion may return null
Fix return type on isAllowedProperty method
Make FailoverTransport always pick the first transport
[TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
...
This PR was merged into the 5.2 branch.
Discussion
----------
[Security] Allow ips parameter in access_control to accept comma-separated string
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | #40881, #40864, #40865
| License | MIT
PR #38149 introduced a new feature to accept a comma-separated string in ip adresses setting in `access_control` configuration section of security bundle.
However the feature works in inconsistent manner: comma-separated string can be successfully passed via environment variable, but can not be passed as plain string. This PR changes this inconsistent behavior by allowing validation pass if comma-separated list of ip addresses is given in plain string.
More detailed explanation about the inconsistent behavior can be found [here](https://github.com/symfony/symfony/issues/40881#issuecomment-823906622)
Commits
-------
8947482342 [SecurityBundle] Allow ips parameter in access_control accept comma-separated string
This PR was merged into the 5.2 branch.
Discussion
----------
[TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR |
Bootstrap allows to translate/change the label of the upload button of a `custom-file` input via SCSS, see [Bootstrap docs](https://getbootstrap.com/docs/4.6/components/forms/#translating-or-customizing-the-strings-with-scss):
~~~scss
$custom-file-text: (
en: "Browse",
es: "Elegir"
);
~~~
This works by generating the following CSS which depends on the `lang` attribute of the input:
~~~css
.custom-file-input:lang(es) ~ .custom-file-label::after {
content: "Elegir";
}
~~~
This however currently does not work with the HTML generated by the theme since the resulting HTML is of the form (redacted here to the relevant parts):
~~~html
<div class="custom-file">
<input type="file" id="..." class="custom-file-input">
<label for="..." lang="es" class="custom-file-label"></label>
</div>
~~~
while it should be of the form
~~~html
<div class="custom-file">
<input type="file" id="..." lang="es" class="custom-file-input">
<label for="..." class="custom-file-label"></label>
</div>
~~~
i.e. the `lang` was placed on the `label` instead of the `input`.
This PR fixes this to be compatible with Bootstrap 4.
Commits
-------
a95bbaaaef [TwigBridge] Fix HTML for translatable custom-file label in Bootstrap 4 theme
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] [Bridge] Fix missed messageId for SendMessage object in slack notifier
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | -
| Tickets | -
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
There are missed messageId property for SendMessage object in slack notifier.
Regarding slack's documentation: https://api.slack.com/messaging/sending#publishing
> One very important piece of information in this response is the `ts` value, which is essentially the ID of the message,
Commits
-------
838f36b09f [Notifier] [Bridge] Store message id for slack transport's SendMessage
This PR was merged into the 5.2 branch.
Discussion
----------
[Form] Add missing TranslatableMessage support to choice_label option of ChoiceType
It leads to loss of information because it'll use `__toString` to cast, which is incompatible with newly added `TranslatableMessage`, for example.
| Q | A
| ------------- | ---
| Branch? | 5.2 <!-- see below -->
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#40622 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | _none_
So this one's a bit tricky in my mind. I didn't want to check if `$dynamicLabel instanceof TranslatableMessage`, because of course it doesn't belong to the same component.
Aside, it would sound so strange to me to add `|object` to `$label` here: bb1e1e58ae/src/Symfony/Component/Form/ChoiceList/View/ChoiceView.php (L40)
But maybe that's the way to go? Requiring your help here. I'm fully open to your ideas, as we're loosing a big feature here by losing `TranslatableMessage` translation parameters.
If the passed object doesn't implement `__toString`, it'll lead to an exception during template rendering, as expected.
Commits
-------
c2873aaf0e [Form] Add TranslatableMessage support to choice_label option of ChoiceType
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PropertyInfo] Make ReflectionExtractor correctly extract nullability
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#40659
| License | MIT
| Doc PR | no
When the property had a default value ReflectionExtractor was always returning isNullable: false. After PHP 7.4 we can get isNullable from the typehint.
Commits
-------
d5fce4c779 [PropertyInfo] Make ReflectionExtractor correctly extract nullability
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[PropertyInfo] fix attribute namespace with recursive traits
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#36997 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
The targeted issue is closed because considered as solved by https://github.com/symfony/symfony/pull/40175.
However, the fix is not enough and is not working with recursive trait inclusion. (see https://github.com/symfony/symfony/issues/36997#issuecomment-822572640).
This pull request is completing the first fix of `@xabbuh`, trying to follow the same coding style. 😉
Commits
-------
bbadfb34cc [PropertyInfo] fix attribute namespace with recursive traits
This PR was merged into the 4.4 branch.
Discussion
----------
[Translation] [CI] Set default locale for IdentityTranslatorTest
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix
| License | MIT
| Doc PR |
This will fix a few CI issues. Not sure if this is the correct fix.
Commits
-------
92a61b1cf6 [Translation] Set default locale for IdentityTranslatorTest
This PR was squashed before being merged into the 4.4 branch.
Discussion
----------
[Security] Update Russian translations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | no
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41064
| License | MIT
| Doc PR |
Translate to Russian
Commits
-------
965c6e4a2d [Security] Update Russian translations
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] Fix return SentMessage then Messenger not used
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | --
| License | MIT
| Doc PR | --
https://github.com/symfony/symfony/pull/37748 Broke the Notifier when Transport not used.
Commits
-------
1245114257 [Notifier] Fix return SentMessage then Messenger not used
This PR was merged into the 5.3-dev branch.
Discussion
----------
Avoid regenerating the remember me token if it is still fresh
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | ~yes
| New feature? | no?
| Deprecations? | no
| Tickets | Refs https://github.com/symfony/symfony/issues/40971
| License | MIT
| Doc PR | <!-- required for new features -->
Please see https://github.com/symfony/symfony/issues/40971 for more information about the context of this change.
As it was discussed in https://github.com/symfony/symfony/issues/18384 - regenerating the remember me token/cookie is done to avoid old cookies being stolen and reused, this is a valid concern (although cookie theft is much harder these days with httpOnly and secure flags) and a good security practice, but if the token was refreshed very recently it seems a bit overkill to refresh it again, it leads to more DB writes, and for us who are trying to support concurrent re-authenticating requests it is causing further problems if every request triggers a new token update.
I'd be happy to also update this in the old PersistentTokenBasedRememberMeServices if needed, but I find that it is perhaps better to just do this in the new auth system as it was until 5.3 considered experimental.
Commits
-------
a942b5f684 Avoid regenerating the remember me token if it is still fresh
This PR was merged into the 4.4 branch.
Discussion
----------
[VarExporter] Add support of PHP enumerations
| Q | A
| ------------- | ---
| Branch? | 4.4
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#40237
| License | MIT
| Doc PR | _none_
Commits
-------
4b0f2997a5 [VarExporter] Add support of PHP enumerations
This PR was merged into the 5.3-dev branch.
Discussion
----------
[Notifier] Add SlackOptions::threadTs() to send message as reply
| Q | A
| ------------- | ---
| Branch? | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets | no
| License | MIT
| Doc PR | no
Allow specify argument [thread_ts](https://api.slack.com/methods/chat.postMessage#arg_thread_ts) to send reply message.
Commits
-------
d3807a79b8 [Notifier] Add SlackOptions::threadTs() to send message as reply
This PR was merged into the 5.2 branch.
Discussion
----------
Fix return type in isAllowedProperty method on ReflectionExtractor class
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no
| Deprecations? | no
| Tickets | Fix#41103
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
Commits
-------
8c0e8f7d83 Fix return type on isAllowedProperty method
This PR was merged into the 5.2 branch.
Discussion
----------
[Notifier] Make FailoverTransport always pick the first transport
| Q | A
| ------------- | ---
| Branch? | 5.2
| Bug fix? | yes
| New feature? | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets | Fix#40895 <!-- prefix each issue number with "Fix #", no need to create an issue if none exist, explain below instead -->
| License | MIT
| Doc PR | - <!-- required for new features -->
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.
Additionally (see https://symfony.com/releases):
- Always add tests and ensure they pass.
- Never break backward compatibility (see https://symfony.com/bc).
- Bug fixes must be submitted against the lowest maintained branch where they apply
(lowest branches are regularly merged to upper ones so they get the fixes too.)
- Features and deprecations must be submitted against branch 5.x.
- Changelog entry should follow https://symfony.com/doc/current/contributing/code/conventions.html#writing-a-changelog-entry
-->
Commits
-------
337f828b23 Make FailoverTransport always pick the first transport
This PR was squashed before being merged into the 5.3-dev branch.
Discussion
----------
[TwigBridge] Add form templates for Bootstrap 5
| Q | A
| ------------- | ---
| Branch | 5.x
| Bug fix? | no
| New feature? | yes
| Deprecations? | no
| Tickets |
| License | MIT
| Doc PR | [#15158](https://github.com/symfony/symfony-docs/pull/15158)
This PR add support for [Bootstrap 5](https://v5.getbootstrap.com/)
* Removal of the `form-group` class as it no longer exists in Bootstrap 5. Instead, row `div` have a `mb-3` class by default that can be override with the `row_attr` option.
* Errors are no longer display inside `label` but after the `widget` (or `help` if present).
* Replace `form-control` with `form-select` in `choice_widget_collapsed` block.
* Replace `form-control` with `form-range` in `form_widget_simple` block when the type is `range`.
* Add `form-control-color` to the `widget` class if type is `color`.
* Replace `small` with `div` element for `help` and also remove the `text-muted` class.
* Update the `percent_widget` and `money_widget` to handle correctly prepend and append elements.
* Drop support for custom file input as it's no longer (or yet ?) supported in Bootstrap 5
[Bootstrap 5 forms overview](https://v5.getbootstrap.com/docs/5.0/forms/overview/)
[Bootstrap 5 migration](https://v5.getbootstrap.com/docs/5.0/migration/)
Here is the result:
![bootstrap_5_layout](https://user-images.githubusercontent.com/5331654/100088569-9e1e9d80-2e50-11eb-88bf-2596e9ae7d28.png)
![bootstrap_5_horizontal_layout](https://user-images.githubusercontent.com/5331654/100088582-a24abb00-2e50-11eb-9b0c-09336c0327cd.png)
Commits
-------
d52d0969ab [TwigBridge] Add form templates for Bootstrap 5