Skip to content

Commit df53c93

Browse files
authored
Merge branch '4.10' into master (see #2566)
Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #... | Docs PR or issue | contao/docs#... Commits ------- 13c00f1b Add the feature action to the permission checks (see #2524) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2505 | Docs PR or issue | n/a See #2505. Commits ------- 61314356 Add feature action to permission check as well (see #2505) 55d85f37 Allow version 3 of toflar/psr6-symfony-http-cache-store (see #2522) Description ----------- Another step towards contao/contao#2263. Commits ------- 2efea3bc Allow version 3 of toflar/psr6-symfony-http-cache-store 1cc3754d Increase undo expiry date (see #2528) Description ----------- | Q | A | -----------------| --- | Fixed issues | - | Docs PR or issue | - I really think the default undo period of 24h is not a good default (which is why I think it should be changed in 4.9 LTS too). For me, there are two use cases our current undo system can cover: 1. The immediate "Oh, I deleted something which I shouldn't have" case: 24 hours are enough 2. The customer did something over the weekend and you get a report on Monday that something was deleted: 24 hours are likely not enough. So 30 days by default seem totally okay to me. It makes no sense to store undo entries that date back a year or so. Commits ------- 7d7f01ec Increase undo expiry date 7efdef49 Trigger the onload_callback when featuring news (see #2531) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2485 | Docs PR or issue | - Commits ------- dee7c1dc Trigger the onload_callback when featuring news bc8447de Trigger the onload_callback when featuring news/events (see #2532) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2485 | Docs PR or issue | - Same PR as #2531 for Contao 4.10 where we also have featured events. Commits ------- c3a849ca Trigger the onload_callback when featuring news/events 67c7b188 Backport the doctrine-cache-bundle changes (see #2534) Description ----------- Backports the changes from #1916 to Contao 4.9 to make it compatible with PHP 8 (see #2263). Commits ------- ba9d21f1 Backport the doctrine-cache-bundle changes d1103e9d CS 3feda719 Add compatibility with PHP 8 (see #2535) Description ----------- See #2263 and #2291 ### TODO * [x] Fix the tests. * [x] Wait if sebastianbergmann/php-code-coverage#837 gets merged and then use PHPUnit 8.5 for all PHP versions. * [ ] <del>Click through the back end and front end and fix all warnings.</del> Commits ------- 8ad61492 Add PHP 8.0 to the CI chain 7b8729e5 Fix the unit and functional tests 47c14dbb Use 127.0.0.1 instead of localhost in the functional tests 938836c0 Always set the ACCEPT_LANGUAGE header in the functional tests a4199ec2 Use PHPUnit 8.5 for all PHP versions 7ffbd267 Adjust the error level in PHP 8 4ce6b27b Merge branch '4.9' into fix/php8 24b1d711 Update the changelog and the language files (see #2541) Description ----------- - Commits ------- a55a7f20 Update the changelog and the language files d19cb6c3 Add a missing PHPStan dependency (see #2543) Description ----------- - Commits ------- 288bc91b Add a missing PHPStan dependency 80b6469c Merge branch '4.4' into 4.9 # Conflicts: # installation-bundle/src/Resources/translations/messages.fr.xlf # news-bundle/src/Resources/contao/dca/tl_news.php ffebcd7f Fix issues found by the PhpStorm code inspector (see #2544) Description ----------- Function arguments renaming → forward compat with PHP 8. Commits ------- d6b22e4f Fix issues found by the PhpStorm code inspector 1fb0b96f More fixes e2544f49 And even more e6c4b182 Add global page model for fragments (see #2506) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #1935 As discussed on Mumble on the 2020-11-19, this should make the (global) page model available in the fragment controllers. Commits ------- 03e7c410 Add global page model for fragments (replaces #1935) a5c23263 Cast values for comparison 826748dc Added unit tests 00eeb729 CS 29ea202c CS 0e09e4ec Merge branch '4.9' into bugfix/page-argument 77c79bef Do not try to generate fragments for generated fragments (see #2521) Description ----------- If a fragment has multiple methods with different fragment type (e.g. a content element and a front end module), the first RegisterFragmentsPass creates a child definition that inherits all tags from the original. On the next run, the RegisterFragmentsPass would pick up the child definition and try to create duplicate fragments. Commits ------- cc5d72c2 Do not try to generate fragments for generated fragments a0b92bba CS 4b8bc8f6 Merge branch '4.9' into bugfix/fragment-children 8605bc45 Allow caption to be a textarea rather than a text field (see #2527) Description ----------- An image caption shouldn't be limited to 255 chars only, that makes no sense to me. That's the result: <img width="1174" alt="Bildschirmfoto 2020-11-27 um 13 12 19" src="https://user-images.githubusercontent.com/481937/100448322-60b94a80-30b2-11eb-88f2-99f8fb499e4d.png"> Commits ------- 06f57eed Allow caption to be a textarea rather than a text field limited to 255 chars b346f659 CS 0c23a1f9 Merge branch '4.9' into fix/allow-textarea-for-meta-caption 244d8455 Move migrations to core bundle (see #2545) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2364 Commits ------- 1d6f4171 Move migrations to core bundle 20dfde35 Fix missing globals array 51fb5c72 PHPStan 5034731d Pass the filesystem as dependency and remove the Contao 3 migrations 66231e75 Fix compatibility with scssphp 1.4 (see #2547) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2495 ### ToDos - [ ] Revert contao/conflicts@820074e once this got merged and released (4.9 and upstream). Commits ------- 961abaaa Set the file path to fix compatibility with scssphp 1.4 946940d5 Run the CS fixer (see #2548) Description ----------- - Commits ------- 29af160e Run the CS fixer 0df5442b Do not index preview URLs for searching (see #2550) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2507 | Docs PR or issue | - @Toflar: If the `X-Robots-Tag` header or the meta robots tag contains `noindex`, the listener will not pass the document to the indexer at all. This means that potentially existing entries will not be deleted. Is this OK? Commits ------- 17d0e8a7 Do not index preview URLs for searching 137d4100 Correctly load the DCA labels (see #2540) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2536 see #2536 for the discussion Commits ------- cb3740c2 Correctly load the DCA labels 64d23500 Merge branch '4.9' into bugfix/dca-labels 103649e2 Fix the cache tag invalidation (see #2551) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2137 | Docs PR or issue | - This is currently a proof of concept that should work for news and events. @Toflar @ausi Can you confirm that my implementation is what you had in mind? ### TODO * [x] Add a general tag without ID for the top parent record * [x] Implement cache tagging for the other elements and modules Commits ------- b523f614 Fix the cache tag invalidation 64c4cdc3 CS 4b61ac26 Do not double tag the content elements 5b4a03d8 Add a tag for the top parent element 996694e5 Add tagging for the missing modules 601247f2 Also tag the comments 90caa2a8 Strip port numbers from root page domains (see #2553) Description ----------- | Q | A | -----------------| --- | Fixed issues | Fixes #2214 | Docs PR or issue | - Tested against https://regex101.com/r/jU0OrQ/2 Commits ------- 52e85cdb Strip port numbers from root page domains 48a0c3c0 Improve the regex Co-authored-by: Martin Auswöger <martin@auswoeger.com> bacb48b3 Clean up before the release (see #2560) Description ----------- - Commits ------- 7db3c543 Clean up before the release 41b89f2d Update the changelog and the language files (see #2561) Description ----------- - Commits ------- 6c50c48d Update the changelog and the language files 918884ce Update the changelog 5eb206fb Merge branch '4.9' into 4.10 # Conflicts: # calendar-bundle/src/Resources/contao/languages/fr/tl_calendar_feed.xlf # composer.json # core-bundle/src/Command/InstallCommand.php # core-bundle/src/Command/SymlinksCommand.php # core-bundle/src/DependencyInjection/Compiler/RegisterFragmentsPass.php # core-bundle/src/Migration/Version408/Version480Update.php # core-bundle/src/Resources/contao/dca/tl_page.php # core-bundle/src/Resources/contao/library/Contao/Controller.php # core-bundle/src/Resources/contao/library/Contao/DcaExtractor.php # core-bundle/src/Resources/contao/library/Contao/InsertTags.php # core-bundle/src/Resources/contao/modules/Module.php # core-bundle/tests/Contao/Database/ResultTest.php # core-bundle/tests/Functional/RoutingTest.php # core-bundle/tests/Security/Authentication/RememberMe/ExpiringTokenBasedRememberMeServicesTest.php # installation-bundle/src/Database/Version330Update.php # manager-bundle/composer.json # manager-bundle/src/Resources/skeleton/config/config.yml # manager-bundle/tests/ContaoManager/PluginTest.php # monorepo.yml # news-bundle/src/Resources/contao/dca/tl_news.php # news-bundle/src/Resources/contao/languages/fr/tl_news_feed.xlf 695843a5 Clean up after the upstream merge (see #2564) Description ----------- - Commits ------- 950581e1 Clean up after the upstream merge 280339c0 Update the changelog and the language files (see #2565) Description ----------- - Commits ------- 5d2cadae Update the changelog and the language files b7567a83 Merge branch '4.10' into master # Conflicts: # calendar-bundle/composer.json # comments-bundle/composer.json # composer.json # core-bundle/composer.json # core-bundle/src/Resources/contao/languages/fr/tl_article.xlf # core-bundle/src/Resources/contao/languages/fr/tl_form_field.xlf # core-bundle/src/Resources/contao/languages/fr/tl_image_size_item.xlf # core-bundle/src/Resources/contao/languages/fr/tl_layout.xlf # core-bundle/src/Resources/contao/languages/fr/tl_member.xlf # core-bundle/src/Resources/contao/languages/fr/tl_member_group.xlf # core-bundle/src/Resources/contao/languages/fr/tl_style_sheet.xlf # core-bundle/src/Resources/contao/languages/fr/tl_theme.xlf # core-bundle/src/Resources/contao/languages/fr/tl_user.xlf # core-bundle/src/Resources/contao/languages/fr/tl_user_group.xlf # core-bundle/tests/Contao/SearchTest.php # faq-bundle/composer.json # installation-bundle/composer.json # installation-bundle/src/Database/Version330Update.php # installation-bundle/src/Database/Version350Update.php # listing-bundle/composer.json # manager-bundle/composer.json # news-bundle/composer.json # news-bundle/src/Resources/contao/languages/cs/default.xlf # news-bundle/src/Resources/contao/languages/cs/tl_layout.xlf # news-bundle/src/Resources/contao/languages/cs/tl_news_feed.xlf # news-bundle/src/Resources/contao/languages/cs/tl_user_group.xlf # newsletter-bundle/composer.json
1 parent c1aa726 commit df53c93

File tree

6 files changed

+85
-9
lines changed

6 files changed

+85
-9
lines changed

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
}
1616
],
1717
"require": {
18-
"php": "^7.3",
18+
"php": "^7.3 || ^8.0",
1919
"contao/core-bundle": "self.version",
2020
"friendsofsymfony/http-cache": "^2.4",
2121
"patchwork/utf8": "^1.2",
@@ -33,7 +33,7 @@
3333
"require-dev": {
3434
"contao/manager-plugin": "^2.3.1",
3535
"contao/test-case": "^4.0",
36-
"phpunit/phpunit": "^8.4",
36+
"phpunit/phpunit": "^8.5",
3737
"symfony/http-client": "4.4.*",
3838
"symfony/phpunit-bridge": "4.4.*"
3939
},

src/DependencyInjection/ContaoNewsExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
class ContaoNewsExtension extends Extension
2121
{
22-
public function load(array $mergedConfig, ContainerBuilder $container): void
22+
public function load(array $configs, ContainerBuilder $container): void
2323
{
2424
$loader = new YamlFileLoader(
2525
$container,

src/Resources/contao/dca/tl_news.php

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -996,14 +996,49 @@ public function toggleFeatured($intId, $blnVisible, DataContainer $dc=null)
996996
Input::setGet('id', $intId);
997997
Input::setGet('act', 'feature');
998998

999-
$this->checkPermission();
999+
if ($dc)
1000+
{
1001+
$dc->id = $intId; // see #8043
1002+
}
1003+
1004+
// Trigger the onload_callback
1005+
if (is_array($GLOBALS['TL_DCA']['tl_news']['config']['onload_callback']))
1006+
{
1007+
foreach ($GLOBALS['TL_DCA']['tl_news']['config']['onload_callback'] as $callback)
1008+
{
1009+
if (is_array($callback))
1010+
{
1011+
$this->import($callback[0]);
1012+
$this->{$callback[0]}->{$callback[1]}($dc);
1013+
}
1014+
elseif (is_callable($callback))
1015+
{
1016+
$callback($dc);
1017+
}
1018+
}
1019+
}
10001020

10011021
// Check permissions to feature
10021022
if (!$this->User->hasAccess('tl_news::featured', 'alexf'))
10031023
{
10041024
throw new AccessDeniedException('Not enough permissions to feature/unfeature news item ID ' . $intId . '.');
10051025
}
10061026

1027+
$objRow = $this->Database->prepare("SELECT * FROM tl_news WHERE id=?")
1028+
->limit(1)
1029+
->execute($intId);
1030+
1031+
if ($objRow->numRows < 1)
1032+
{
1033+
throw new AccessDeniedException('Invalid news item ID ' . $intId . '.');
1034+
}
1035+
1036+
// Set the current record
1037+
if ($dc)
1038+
{
1039+
$dc->activeRecord = $objRow;
1040+
}
1041+
10071042
$objVersions = new Versions('tl_news', $intId);
10081043
$objVersions->initialize();
10091044

@@ -1024,11 +1059,41 @@ public function toggleFeatured($intId, $blnVisible, DataContainer $dc=null)
10241059
}
10251060
}
10261061

1062+
$time = time();
1063+
10271064
// Update the database
1028-
$this->Database->prepare("UPDATE tl_news SET tstamp=" . time() . ", featured='" . ($blnVisible ? 1 : '') . "' WHERE id=?")
1065+
$this->Database->prepare("UPDATE tl_news SET tstamp=$time, featured='" . ($blnVisible ? 1 : '') . "' WHERE id=?")
10291066
->execute($intId);
10301067

1068+
if ($dc)
1069+
{
1070+
$dc->activeRecord->tstamp = $time;
1071+
$dc->activeRecord->published = ($blnVisible ? '1' : '');
1072+
}
1073+
1074+
// Trigger the onsubmit_callback
1075+
if (is_array($GLOBALS['TL_DCA']['tl_news']['config']['onsubmit_callback']))
1076+
{
1077+
foreach ($GLOBALS['TL_DCA']['tl_news']['config']['onsubmit_callback'] as $callback)
1078+
{
1079+
if (is_array($callback))
1080+
{
1081+
$this->import($callback[0]);
1082+
$this->{$callback[0]}->{$callback[1]}($dc);
1083+
}
1084+
elseif (is_callable($callback))
1085+
{
1086+
$callback($dc);
1087+
}
1088+
}
1089+
}
1090+
10311091
$objVersions->create();
1092+
1093+
if ($dc)
1094+
{
1095+
$dc->invalidateCacheTags();
1096+
}
10321097
}
10331098

10341099
/**

src/Resources/contao/modules/ModuleNews.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
namespace Contao;
1212

1313
use Contao\Model\Collection;
14-
use FOS\HttpCache\ResponseTagger;
1514

1615
/**
1716
* Parent class for news modules.
@@ -223,13 +222,11 @@ protected function parseArticle($objArticle, $blnAddArchive=false, $strClass='',
223222
}
224223
}
225224

226-
// Tag the response
225+
// Tag the news (see #2137)
227226
if (System::getContainer()->has('fos_http_cache.http.symfony_response_tagger'))
228227
{
229-
/** @var ResponseTagger $responseTagger */
230228
$responseTagger = System::getContainer()->get('fos_http_cache.http.symfony_response_tagger');
231229
$responseTagger->addTags(array('contao.db.tl_news.' . $objArticle->id));
232-
$responseTagger->addTags(array('contao.db.tl_news_archive.' . $objArticle->pid));
233230
}
234231

235232
return $objTemplate->parse();

src/Resources/contao/modules/ModuleNewsArchive.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,13 @@ public function generate()
7373
return '';
7474
}
7575

76+
// Tag the news archives (see #2137)
77+
if (System::getContainer()->has('fos_http_cache.http.symfony_response_tagger'))
78+
{
79+
$responseTagger = System::getContainer()->get('fos_http_cache.http.symfony_response_tagger');
80+
$responseTagger->addTags(array_map(static function ($id) { return 'contao.db.tl_news_archive.' . $id; }, $this->news_archives));
81+
}
82+
7683
return parent::generate();
7784
}
7885

src/Resources/contao/modules/ModuleNewsList.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ public function generate()
6666
return $this->getFrontendModule($this->news_readerModule, $this->strColumn);
6767
}
6868

69+
// Tag the news archives (see #2137)
70+
if (System::getContainer()->has('fos_http_cache.http.symfony_response_tagger'))
71+
{
72+
$responseTagger = System::getContainer()->get('fos_http_cache.http.symfony_response_tagger');
73+
$responseTagger->addTags(array_map(static function ($id) { return 'contao.db.tl_news_archive.' . $id; }, $this->news_archives));
74+
}
75+
6976
return parent::generate();
7077
}
7178

0 commit comments

Comments
 (0)