diff --git a/.phpcq.lock b/.phpcq.lock index 41febd7c2..b91d34e09 100644 --- a/.phpcq.lock +++ b/.phpcq.lock @@ -1 +1 @@ -{"plugins":{"phpunit":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpunit/phpunit-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0"},"tool":{"phpunit":"^6.0 || ^7.0 || ^8.0 || ^9.0"}},"checksum":{"type":"sha-512","value":"c73f15658e3ba62665f09492ec91c3a6a715760bfaa88473a987538439fff442540148e086e46a6aa18ce55a3ea2fbf76caaa581384cb84a38859fcc609ae7e4"},"tools":{"phpunit":{"version":"9.6.29","url":"https://phar.phpunit.de/phpunit-9.6.29.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*","ext-json":"*","ext-libxml":"*","ext-mbstring":"*","ext-xml":"*","ext-xmlwriter":"*"}},"checksum":{"type":"sha-256","value":"04aeb9aa94da2912a9d1ddfaa047bfb7a87ac74735d3f7d61585b47900ede2d7"},"signature":"https://phar.phpunit.de/phpunit-9.6.29.phar.asc"}},"composerLock":null},"psalm":{"api-version":"1.0.0","version":"1.3.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/psalm/psalm-1.3.0.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0","ext-dom":"*"},"tool":{"psalm":"^3.0 || ^4.0 || ^5.0 || ^6.0"}},"checksum":{"type":"sha-512","value":"4a550c9226d7bca582d7c10bd87cce01190c96398936b1613421640c83df62ed1c6e0d44c1b39635414ea8cf4a892a6458d27590793238add24e7cb5547e6ffd"},"tools":{"psalm":{"version":"6.13.1","url":"https://github.com/vimeo/psalm/releases/download/6.13.1/psalm.phar","requirements":{"php":{"php":"~8.2.27 || ~8.3.16 || ~8.4.3","ext-SimpleXML":"*","ext-ctype":"*","ext-dom":"*","ext-json":"*","ext-libxml":"*","ext-mbstring":"*","ext-tokenizer":"*"}},"checksum":null,"signature":"https://github.com/vimeo/psalm/releases/download/6.13.1/psalm.phar.asc"}},"composerLock":null},"composer-require-checker":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-require-checker/composer-require-checker-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0"},"tool":{"composer-require-checker":"^3.8 || ^4.0"}},"checksum":{"type":"sha-512","value":"d5415bddfe024c5749d894034583882aee4e5c3e1087815d9fdd81cb5e71630f631a0e35de0ff84b97fbbf738c16ece5f83bd8c00695913eb846aa6f04577dc2"},"tools":{"composer-require-checker":{"version":"4.16.1","url":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.16.1/composer-require-checker.phar","requirements":{"php":{"php":"~8.2.0 || ~8.3.0 || ~8.4.0","ext-phar":"*"}},"checksum":null,"signature":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.16.1/composer-require-checker.phar.asc"}},"composerLock":null},"phpmd":{"api-version":"1.0.0","version":"1.0.2.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpmd/phpmd-1.0.2.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpmd":"^2.6.1"}},"checksum":{"type":"sha-512","value":"f22280a6dec8dbdd2ec1d83b294f23237fe32c34f4a298e52038e0a7a0074d541635b2b488b1a6098a42d8418a6cd8eb804406ea82b91e362be2b5d11a0915b0"},"tools":{"phpmd":{"version":"2.15.0","url":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar","requirements":{"php":{"php":">=5.3.9","ext-xml":"*"}},"checksum":null,"signature":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar.asc"}},"composerLock":null},"phpcpd":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcpd/phpcpd-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcpd":"^6.0"}},"checksum":{"type":"sha-512","value":"1189ce0bf3fade4cb4241f1d96f915ef8fc7651f4450dc79fdf464ee3d6be3009316f0d423ce2d4af9d76ad50807b7fdf4d77bfa6d9ee2c91d6eda32ea214433"},"tools":{"phpcpd":{"version":"6.0.3","url":"https://phar.phpunit.de/phpcpd-6.0.3.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*"}},"checksum":{"type":"sha-256","value":"2cbaea7cfda1bb4299d863eb075e977c3f49055dd16d88529fae5150d48a84cb"},"signature":"https://phar.phpunit.de/phpcpd-6.0.3.phar.asc"}},"composerLock":null},"phploc":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phploc/phploc-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*","ext-json":"*"},"tool":{"phploc":"^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"}},"checksum":{"type":"sha-512","value":"f67b02d494796adf553cb3dd13ec06c1cb8e53c799954061749424251379541637538199afb3afa3c7a01cabd1cb6f1c53eb621f015dff9644c6c7cbf10c56d1"},"tools":{"phploc":{"version":"7.0.2","url":"https://phar.phpunit.de/phploc-7.0.2.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*","ext-json":"*"}},"checksum":{"type":"sha-256","value":"3d59778ec86faf25fd00e3a329b2f9ad4a3c751ca91601ea7dab70f887b0bf46"},"signature":"https://phar.phpunit.de/phploc-7.0.2.phar.asc"}},"composerLock":null},"phpcs":{"api-version":"1.0.0","version":"1.2.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcs/phpcs-1.2.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcs":"^3.0 || ^2.0","phpcbf":"^3.0 || ^2.0"}},"checksum":{"type":"sha-512","value":"b6ed00306e76068a6af5e3b1dec837724f9e1900ef1049ce88e7ce195b0583524ca33a73613fba13244307a7ca853b6ddaa14ded69f651c3f184ac130bd1aaad"},"tools":{"phpcs":{"version":"3.13.4","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcs.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcs.phar.asc"},"phpcbf":{"version":"3.13.4","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcbf.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcbf.phar.asc"}},"composerLock":null},"composer-normalize":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-normalize/composer-normalize-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-json":"*"},"tool":{"composer-normalize":"^2.1"}},"checksum":{"type":"sha-512","value":"d9abda440b85d501c58abf9c81bf76f417594b397129215ffa8b777e9bb5e5eda37d7661d661db3c8d11c24f20345bc6fbe56f013b3b9435d459d2b94f086e0f"},"tools":{"composer-normalize":{"version":"2.48.2","url":"https://github.com/ergebnis/composer-normalize/releases/download/2.48.2/composer-normalize.phar","requirements":{"php":{"php":"~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0","ext-json":"*"}},"checksum":null,"signature":"https://github.com/ergebnis/composer-normalize/releases/download/2.48.2/composer-normalize.phar.asc"}},"composerLock":null}},"tools":[]} \ No newline at end of file +{"plugins":{"phpunit":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpunit/phpunit-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0"},"tool":{"phpunit":"^6.0 || ^7.0 || ^8.0 || ^9.0"}},"checksum":{"type":"sha-512","value":"c73f15658e3ba62665f09492ec91c3a6a715760bfaa88473a987538439fff442540148e086e46a6aa18ce55a3ea2fbf76caaa581384cb84a38859fcc609ae7e4"},"tools":{"phpunit":{"version":"9.6.29","url":"https://phar.phpunit.de/phpunit-9.6.29.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*","ext-json":"*","ext-libxml":"*","ext-mbstring":"*","ext-xml":"*","ext-xmlwriter":"*"}},"checksum":{"type":"sha-256","value":"04aeb9aa94da2912a9d1ddfaa047bfb7a87ac74735d3f7d61585b47900ede2d7"},"signature":"https://phar.phpunit.de/phpunit-9.6.29.phar.asc"}},"composerLock":null},"psalm":{"api-version":"1.0.0","version":"1.3.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/psalm/psalm-1.3.0.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0","ext-dom":"*"},"tool":{"psalm":"^3.0 || ^4.0 || ^5.0 || ^6.0"}},"checksum":{"type":"sha-512","value":"4a550c9226d7bca582d7c10bd87cce01190c96398936b1613421640c83df62ed1c6e0d44c1b39635414ea8cf4a892a6458d27590793238add24e7cb5547e6ffd"},"tools":{"psalm":{"version":"6.13.1","url":"https://github.com/vimeo/psalm/releases/download/6.13.1/psalm.phar","requirements":{"php":{"php":"~8.2.27 || ~8.3.16 || ~8.4.3","ext-SimpleXML":"*","ext-ctype":"*","ext-dom":"*","ext-json":"*","ext-libxml":"*","ext-mbstring":"*","ext-tokenizer":"*"}},"checksum":null,"signature":"https://github.com/vimeo/psalm/releases/download/6.13.1/psalm.phar.asc"}},"composerLock":null},"composer-require-checker":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-require-checker/composer-require-checker-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.4 || ^8.0"},"tool":{"composer-require-checker":"^3.8 || ^4.0"}},"checksum":{"type":"sha-512","value":"d5415bddfe024c5749d894034583882aee4e5c3e1087815d9fdd81cb5e71630f631a0e35de0ff84b97fbbf738c16ece5f83bd8c00695913eb846aa6f04577dc2"},"tools":{"composer-require-checker":{"version":"4.16.1","url":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.16.1/composer-require-checker.phar","requirements":{"php":{"php":"~8.2.0 || ~8.3.0 || ~8.4.0","ext-phar":"*"}},"checksum":null,"signature":"https://github.com/maglnet/ComposerRequireChecker/releases/download/4.16.1/composer-require-checker.phar.asc"}},"composerLock":null},"phpmd":{"api-version":"1.0.0","version":"1.0.2.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpmd/phpmd-1.0.2.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpmd":"^2.6.1"}},"checksum":{"type":"sha-512","value":"f22280a6dec8dbdd2ec1d83b294f23237fe32c34f4a298e52038e0a7a0074d541635b2b488b1a6098a42d8418a6cd8eb804406ea82b91e362be2b5d11a0915b0"},"tools":{"phpmd":{"version":"2.15.0","url":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar","requirements":{"php":{"php":">=5.3.9","ext-xml":"*"}},"checksum":null,"signature":"https://github.com/phpmd/phpmd/releases/download/2.15.0/phpmd.phar.asc"}},"composerLock":null},"phpcpd":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcpd/phpcpd-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcpd":"^6.0"}},"checksum":{"type":"sha-512","value":"1189ce0bf3fade4cb4241f1d96f915ef8fc7651f4450dc79fdf464ee3d6be3009316f0d423ce2d4af9d76ad50807b7fdf4d77bfa6d9ee2c91d6eda32ea214433"},"tools":{"phpcpd":{"version":"6.0.3","url":"https://phar.phpunit.de/phpcpd-6.0.3.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*"}},"checksum":{"type":"sha-256","value":"2cbaea7cfda1bb4299d863eb075e977c3f49055dd16d88529fae5150d48a84cb"},"signature":"https://phar.phpunit.de/phpcpd-6.0.3.phar.asc"}},"composerLock":null},"phploc":{"api-version":"1.0.0","version":"1.0.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phploc/phploc-1.0.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*","ext-json":"*"},"tool":{"phploc":"^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"}},"checksum":{"type":"sha-512","value":"f67b02d494796adf553cb3dd13ec06c1cb8e53c799954061749424251379541637538199afb3afa3c7a01cabd1cb6f1c53eb621f015dff9644c6c7cbf10c56d1"},"tools":{"phploc":{"version":"7.0.2","url":"https://phar.phpunit.de/phploc-7.0.2.phar","requirements":{"php":{"php":">=7.3","ext-dom":"*","ext-json":"*"}},"checksum":{"type":"sha-256","value":"3d59778ec86faf25fd00e3a329b2f9ad4a3c751ca91601ea7dab70f887b0bf46"},"signature":"https://phar.phpunit.de/phploc-7.0.2.phar.asc"}},"composerLock":null},"phpcs":{"api-version":"1.0.0","version":"1.2.0.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/phpcs/phpcs-1.2.0.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-dom":"*"},"tool":{"phpcs":"^3.0 || ^2.0","phpcbf":"^3.0 || ^2.0"}},"checksum":{"type":"sha-512","value":"b6ed00306e76068a6af5e3b1dec837724f9e1900ef1049ce88e7ce195b0583524ca33a73613fba13244307a7ca853b6ddaa14ded69f651c3f184ac130bd1aaad"},"tools":{"phpcs":{"version":"3.13.4","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcs.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcs.phar.asc"},"phpcbf":{"version":"3.13.4","url":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcbf.phar","requirements":{"php":{"php":">=5.4.0","ext-simplexml":"*","ext-tokenizer":"*","ext-xmlwriter":"*"}},"checksum":null,"signature":"https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/download/3.13.4/phpcbf.phar.asc"}},"composerLock":null},"composer-normalize":{"api-version":"1.0.0","version":"1.1.1.0","type":"php-file","url":"https://phpcq.github.io/repository/plugin/composer-normalize/composer-normalize-1.1.1.0.php","signature":null,"requirements":{"php":{"php":"^7.3 || ^8.0","ext-json":"*"},"tool":{"composer-normalize":"^2.1"}},"checksum":{"type":"sha-512","value":"d9abda440b85d501c58abf9c81bf76f417594b397129215ffa8b777e9bb5e5eda37d7661d661db3c8d11c24f20345bc6fbe56f013b3b9435d459d2b94f086e0f"},"tools":{"composer-normalize":{"version":"2.48.2","url":"https://github.com/ergebnis/composer-normalize/releases/download/2.48.2/composer-normalize.phar","requirements":{"php":{"php":"~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0","ext-json":"*"}},"checksum":null,"signature":"https://github.com/ergebnis/composer-normalize/releases/download/2.48.2/composer-normalize.phar.asc"}},"composerLock":null}},"tools":[]} diff --git a/src/CoreBundle/Contao/Hooks/AbstractContentElementAndModuleCallback.php b/src/CoreBundle/Contao/Hooks/AbstractContentElementAndModuleCallback.php index 1e752a6ba..1e4354449 100644 --- a/src/CoreBundle/Contao/Hooks/AbstractContentElementAndModuleCallback.php +++ b/src/CoreBundle/Contao/Hooks/AbstractContentElementAndModuleCallback.php @@ -25,8 +25,6 @@ use Contao\DC_Table; use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilderFactoryInterface; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Exception; use MetaModels\Attribute\IInternal; @@ -36,6 +34,7 @@ use MetaModels\IFactory; use RuntimeException; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Contracts\Translation\TranslatorInterface; use function asort; @@ -60,87 +59,27 @@ abstract class AbstractContentElementAndModuleCallback */ protected static $tableName; - /** - * The icon builder. - * - * @var IconBuilder - */ - private IconBuilder $iconBuilder; - - /** - * The URL builder factory. - * - * @var UrlBuilderFactoryInterface - */ - private UrlBuilderFactoryInterface $urlBuilderFactory; - - /** - * The MetaModel factory. - * - * @var IFactory - */ - private IFactory $factory; - - /** - * The filtersetting factory. - * - * @var FilterSettingFactory - */ - private FilterSettingFactory $filterFactory; - - /** - * The database connection. - * - * @var Connection - */ - private Connection $connection; - - /** - * The template list. - * - * @var TemplateList - */ - private TemplateList $templateList; - - /** - * The request stack. - * - * @var RequestStack - */ - private RequestStack $requestStack; - - private TranslatorInterface $translator; - /** * Create a new instance. * - * @param IconBuilder $iconBuilder The icon builder. - * @param UrlBuilderFactoryInterface $urlBuilderFactory The URL builder. - * @param IFactory $factory The MetaModel factory. - * @param FilterSettingFactory $filterFactory The filter factory. - * @param Connection $connection The database connection. - * @param TemplateList $templateList The template list loader. - * @param RequestStack $requestStack The request stack. - * @param TranslatorInterface $translator The translator. + * @param IconBuilder $iconBuilder The icon builder. + * @param IFactory $factory The MetaModel factory. + * @param FilterSettingFactory $filterFactory The filter factory. + * @param Connection $connection The database connection. + * @param TemplateList $templateList The template list loader. + * @param RequestStack $requestStack The request stack. + * @param TranslatorInterface $translator The translator. */ public function __construct( - IconBuilder $iconBuilder, - UrlBuilderFactoryInterface $urlBuilderFactory, - IFactory $factory, - FilterSettingFactory $filterFactory, - Connection $connection, - TemplateList $templateList, - RequestStack $requestStack, - TranslatorInterface $translator, + private readonly IconBuilder $iconBuilder, + private readonly IFactory $factory, + private readonly FilterSettingFactory $filterFactory, + private readonly Connection $connection, + private readonly TemplateList $templateList, + private readonly RequestStack $requestStack, + private readonly TranslatorInterface $translator, + private readonly UrlGeneratorInterface $urlGenerator, ) { - $this->iconBuilder = $iconBuilder; - $this->urlBuilderFactory = $urlBuilderFactory; - $this->filterFactory = $filterFactory; - $this->connection = $connection; - $this->templateList = $templateList; - $this->factory = $factory; - $this->requestStack = $requestStack; - $this->translator = $translator; } /** @@ -159,9 +98,6 @@ public function editMetaModelButton(DC_Table $dataContainer) return ''; } - $url = $this->urlBuilderFactory->create('contao/metamodels?act=edit') - ->setQueryParameter('id', ModelId::fromValues('tl_metamodel', $dataContainer->value)->getSerialized()); - return $this->renderEditButton( $this->translator->trans('editmetamodel.label', [], static::$tableName), StringUtil::specialchars( @@ -171,7 +107,10 @@ public function editMetaModelButton(DC_Table $dataContainer) static::$tableName ) ), - $url + $this->generate('metamodels.configuration', [ + 'act' => 'edit', + 'id' => ModelId::fromValues('tl_metamodel', $dataContainer->value)->getSerialized(), + ]), ); } @@ -191,12 +130,6 @@ public function editFilterSettingButton(DC_Table $dataContainer) return ''; } - $url = $this->urlBuilderFactory->create('contao/metamodels?table=tl_metamodel_filtersetting') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel_filter', $dataContainer->value)->getSerialized() - ); - return $this->renderEditButton( $this->translator->trans('editfiltersetting.label', [], static::$tableName), StringUtil::specialchars( @@ -206,7 +139,10 @@ public function editFilterSettingButton(DC_Table $dataContainer) static::$tableName ) ), - $url + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_filtersetting', + 'pid' => ModelId::fromValues('tl_metamodel_filter', $dataContainer->value)->getSerialized(), + ]), ); } @@ -226,12 +162,6 @@ public function editRenderSettingButton(DC_Table $dataContainer) return ''; } - $url = $this->urlBuilderFactory->create('contao/metamodels?table=tl_metamodel_rendersetting') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel_rendersettings', $dataContainer->value)->getSerialized() - ); - return $this->renderEditButton( $this->translator->trans('editrendersetting.label', [], static::$tableName), StringUtil::specialchars( @@ -241,7 +171,10 @@ public function editRenderSettingButton(DC_Table $dataContainer) static::$tableName ), ), - $url + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_rendersetting', + 'pid' => ModelId::fromValues('tl_metamodel_rendersettings', $dataContainer->value)->getSerialized(), + ]), ); } @@ -541,13 +474,13 @@ public function getRenderSettings(DC_Table $objDC) /** * Render an edit button. * - * @param string $caption The caption (alt attribute of the image). - * @param string $title The title (title attribute of the tag). - * @param UrlBuilder $url The URL for the button. + * @param string $caption The caption (alt attribute of the image). + * @param string $title The title (title attribute of the tag). + * @param string $url The URL for the button. * * @return string */ - private function renderEditButton(string $caption, string $title, UrlBuilder $url): string + private function renderEditButton(string $caption, string $title, string $url): string { $icon = $this->iconBuilder->getBackendIconImageTag( 'system/themes/flexible/icons/alias.svg', @@ -557,7 +490,7 @@ private function renderEditButton(string $caption, string $title, UrlBuilder $ur return sprintf( '%s', - $url->getUrl(), + $url, $title, $icon ); @@ -598,4 +531,10 @@ private function getFilteredAttributeNames(string $metaModelId, array $allowedTy return $attributeNames; } + + protected function generate(string $route, array $parameters): string + { + // TODO: Add ref & rt from current URL? + return $this->urlGenerator->generate($route, $parameters); + } } diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/AbstractBreadcrumbListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/AbstractBreadcrumbListener.php index 2dcc30a56..5cc94ccd2 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/AbstractBreadcrumbListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/AbstractBreadcrumbListener.php @@ -21,10 +21,12 @@ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; +use Contao\System; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; use ContaoCommunityAlliance\DcGeneral\InputProviderInterface; +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; /** * This class renders various breadcrumbs. @@ -45,18 +47,28 @@ abstract class AbstractBreadcrumbListener */ private ?AbstractBreadcrumbListener $parent; + private UrlGeneratorInterface $urlGenerator; + /** * Create a new instance. * * @param BreadcrumbStoreFactory $storeFactory The store factory. * @param AbstractBreadcrumbListener|null $parent Optional parent renderer. + * @param string $routePrefix The $route prefix. */ public function __construct( BreadcrumbStoreFactory $storeFactory, - AbstractBreadcrumbListener $parent = null + ?AbstractBreadcrumbListener $parent = null, + ?UrlGeneratorInterface $urlGenerator = null, ) { $this->storeFactory = $storeFactory; $this->parent = $parent; + if (null === $urlGenerator) { + $urlGenerator = System::getContainer()->get('router'); + assert($urlGenerator instanceof UrlGeneratorInterface); + \trigger_deprecation('metamodels/core', '2.4.0', 'The "$urlGenerator" argument will become mandatory.'); + } + $this->urlGenerator = $urlGenerator; } /** @@ -120,4 +132,10 @@ protected function extractIdFrom(EnvironmentInterface $environment, $parameterNa return (string) ModelId::fromSerialized($parameter)->getId(); } + + protected function generate(string $route, array $parameters): string + { + // TODO: Add ref & rt from current URL? + return $this->urlGenerator->generate($route, $parameters); + } } diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbAttributeListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbAttributeListener.php index 1061be173..9654f0e6c 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbAttributeListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbAttributeListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_attribute. @@ -58,19 +56,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea } parent::getBreadcrumbElements($environment, $elements); - - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_attribute') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel', $elements->getId('tl_metamodel'))->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_attribute', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_attribute'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaCombineListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaCombineListener.php index bb71bf148..5bca1e18f 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaCombineListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaCombineListener.php @@ -21,12 +21,10 @@ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_dcacombine. @@ -59,18 +57,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_dca_combine') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel', $elements->getId('tl_metamodel'))->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_dca_combine', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_dca_combine'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaListener.php index 7887c78ab..2b277e82e 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_dca. @@ -67,18 +65,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_dca') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel', $elements->getId('tl_metamodel'))->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_dca', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_dca'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingConditionListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingConditionListener.php index 1f3d4e8f3..5d904188e 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingConditionListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingConditionListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,7 +14,7 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ @@ -26,7 +26,6 @@ use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; use MetaModels\Helper\LocaleUtil; use MetaModels\IMetaModel; @@ -62,21 +61,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_dcasetting_condition') - ->setQueryParameter( - 'pid', - ModelId::fromValues( - 'tl_metamodel_dcasetting', - $elements->getId('tl_metamodel_dcasetting') - )->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $dcaSettingId = $elements->getId('tl_metamodel_dcasetting'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_dcasetting_condition', + 'pid' => ModelId::fromValues('tl_metamodel_dcasetting', $dcaSettingId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_dcasetting_condition'), (null !== $dcaSettingId) ? $this->getConditionAttribute($dcaSettingId) : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingListener.php index 9ece2d617..64ebb5acb 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSettingListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_dcasetting. @@ -66,19 +64,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_dcasetting') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel_dca', $elements->getId('tl_metamodel_dca')) - ->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $dcaId = $elements->getId('tl_metamodel_dca'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_dcasetting', + 'pid' => ModelId::fromValues('tl_metamodel_dca', $dcaId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_dcasetting'), (null !== $dcaId) ? $this->getRow($dcaId, 'tl_metamodel_dca')->name : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSortGroupListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSortGroupListener.php index 4e8af9f25..9365d470d 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSortGroupListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbDcaSortGroupListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_dca_sortgroup. @@ -59,19 +57,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_dca_sortgroup') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel_dca', $elements->getId('tl_metamodel_dca')) - ->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $dcaId = $elements->getId('tl_metamodel_dca'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_dca_sortgroup', + 'pid' => ModelId::fromValues('tl_metamodel_dca', $dcaId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_dca_sortgroup'), (null !== $dcaId) ? $this->getRow($dcaId, 'tl_metamodel_dca')->name : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterListener.php index 6a749eec4..002a9b177 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_filter. @@ -67,18 +65,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_filter') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel', $elements->getId('tl_metamodel'))->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_filter', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_filter'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterSettingListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterSettingListener.php index 5d24cca45..56683d5a9 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterSettingListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbFilterSettingListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_dcasetting. @@ -69,19 +67,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_filtersetting') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel_filter', $elements->getId('tl_metamodel_filter')) - ->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $filterId = $elements->getId('tl_metamodel_filter'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_filtersetting', + 'pid' => ModelId::fromValues('tl_metamodel_filter', $filterId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_filtersetting'), (null !== $filterId) ? $this->getRow($filterId, 'tl_metamodel_filter')->name : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbMetaModelListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbMetaModelListener.php index 660759a5d..e7c6a49d7 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbMetaModelListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbMetaModelListener.php @@ -51,7 +51,7 @@ protected function wantToHandle(GetBreadcrumbEvent $event) protected function getBreadcrumbElements(EnvironmentInterface $environment, BreadcrumbStore $elements) { $elements->push( - '/contao/metamodels', + $this->generate('metamodels.configuration', []), 'tl_metamodel', 'bundles/metamodelscore/images/backend/logo.png' ); diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingListener.php index 9670ca43d..15911c661 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_rendersetting. @@ -59,21 +57,12 @@ public function getBreadcrumbElements(EnvironmentInterface $environment, Breadcr parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_rendersetting') - ->setQueryParameter( - 'pid', - ModelId::fromValues( - 'tl_metamodel_rendersettings', - $elements->getId('tl_metamodel_rendersettings') - )->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $renderSettingsId = $elements->getId('tl_metamodel_rendersettings'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_rendersetting', + 'pid' => ModelId::fromValues('tl_metamodel_rendersettings', $renderSettingsId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_rendersetting'), (null !== $renderSettingsId) ? $this->getRow( diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingsListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingsListener.php index 8ebad70d9..086ba853e 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingsListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbRenderSettingsListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_rendersettings. @@ -70,18 +68,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_rendersettings') - ->setQueryParameter( - 'pid', - ModelId::fromValues('tl_metamodel', $elements->getId('tl_metamodel'))->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_rendersettings', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_rendersettings'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbSearchablePagesListener.php b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbSearchablePagesListener.php index 7832ad847..3cb6bbf49 100644 --- a/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbSearchablePagesListener.php +++ b/src/CoreBundle/EventListener/DcGeneral/Breadcrumb/BreadcrumbSearchablePagesListener.php @@ -3,7 +3,7 @@ /** * This file is part of MetaModels/core. * - * (c) 2012-2024 The MetaModels team. + * (c) 2012-2025 The MetaModels team. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -14,19 +14,17 @@ * @author Christian Schiffler * @author Sven Baumann * @author Ingolf Steinhardt - * @copyright 2012-2024 The MetaModels team. + * @copyright 2012-2025 The MetaModels team. * @license https://github.com/MetaModels/core/blob/master/LICENSE LGPL-3.0-or-later * @filesource */ namespace MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb; -use Contao\StringUtil; use ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetBreadcrumbEvent; use ContaoCommunityAlliance\DcGeneral\Data\ModelId; use ContaoCommunityAlliance\DcGeneral\DataDefinition\ContainerInterface; use ContaoCommunityAlliance\DcGeneral\EnvironmentInterface; -use ContaoCommunityAlliance\UrlBuilder\UrlBuilder; /** * Generate a breadcrumb for table tl_metamodel_searchable_pages. @@ -70,21 +68,12 @@ protected function getBreadcrumbElements(EnvironmentInterface $environment, Brea parent::getBreadcrumbElements($environment, $elements); - $builder = UrlBuilder::fromUrl($elements->getUri()) - ->setQueryParameter('table', 'tl_metamodel_searchable_pages') - ->setQueryParameter( - 'pid', - ModelId::fromValues( - 'tl_metamodel', - $elements->getId('tl_metamodel') - )->getSerialized() - ) - ->unsetQueryParameter('act') - ->unsetQueryParameter('id'); - $modelId = $elements->getId('tl_metamodel'); $elements->push( - StringUtil::ampersand($builder->getUrl()), + $this->generate('metamodels.configuration', [ + 'table' => 'tl_metamodel_searchable_pages', + 'pid' => ModelId::fromValues('tl_metamodel', $modelId)->getSerialized(), + ]), \sprintf( $elements->getLabel('tl_metamodel_searchable_pages'), (null !== $modelId) ? $this->getMetaModel($modelId)->getName() : '' diff --git a/src/CoreBundle/Resources/config/dc-general/breadcrumb.yml b/src/CoreBundle/Resources/config/dc-general/breadcrumb.yml index 19aeae78e..eb709f714 100644 --- a/src/CoreBundle/Resources/config/dc-general/breadcrumb.yml +++ b/src/CoreBundle/Resources/config/dc-general/breadcrumb.yml @@ -10,6 +10,8 @@ services: class: MetaModels\CoreBundle\EventListener\DcGeneral\Breadcrumb\BreadcrumbMetaModelListener arguments: - "@metamodels.listener.breadcrumb.store_factory" + - null + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } tags: @@ -22,6 +24,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } tags: @@ -34,6 +37,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } - { method: "setConnection", arguments: ["@database_connection"] } @@ -47,6 +51,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } tags: @@ -59,6 +64,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel_dca" + - '@router' calls: - { method: "setConnection", arguments: ["@database_connection"] } tags: @@ -71,6 +77,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel_dca" + - '@router' calls: - { method: "setConnection", arguments: ["@database_connection"] } tags: @@ -83,6 +90,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel_dcasetting" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } - { method: "setConnection", arguments: ["@database_connection"] } @@ -96,6 +104,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } - { method: "setConnection", arguments: ["@database_connection"] } @@ -109,6 +118,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel_filter" + - '@router' calls: - { method: "setConnection", arguments: ["@database_connection"] } tags: @@ -121,6 +131,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } - { method: "setConnection", arguments: ["@database_connection"] } @@ -134,6 +145,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel_rendersettings" + - '@router' calls: - { method: "setConnection", arguments: ["@database_connection"] } tags: @@ -146,6 +158,7 @@ services: arguments: - "@metamodels.listener.breadcrumb.store_factory" - "@metamodels.listener.breadcrumb.tl_metamodel" + - '@router' calls: - { method: "setMetaModelFactory", arguments: ["@metamodels.factory"] } - { method: "setConnection", arguments: ["@database_connection"] } diff --git a/src/CoreBundle/Resources/config/hooks.yml b/src/CoreBundle/Resources/config/hooks.yml index 7c392872a..503a003dc 100644 --- a/src/CoreBundle/Resources/config/hooks.yml +++ b/src/CoreBundle/Resources/config/hooks.yml @@ -13,49 +13,49 @@ services: MetaModels\CoreBundle\Contao\Hooks\ContentElementCallback: arguments: - '@metamodels.assets.icon_builder' - - '@metamodels.backend.url-builder-factory' - '@metamodels.factory' - '@metamodels.filter_setting_factory' - '@database_connection' - '@metamodels.template_list' - '@request_stack' - '@translator' + - '@router' public: true MetaModels\CoreBundle\Contao\Hooks\ModuleCallback: arguments: - '@metamodels.assets.icon_builder' - - '@metamodels.backend.url-builder-factory' - '@metamodels.factory' - '@metamodels.filter_setting_factory' - '@database_connection' - '@metamodels.template_list' - '@request_stack' - '@translator' + - '@router' public: true MetaModels\CoreBundle\Contao\Hooks\FilterContentElementCallback: arguments: - '@metamodels.assets.icon_builder' - - '@metamodels.backend.url-builder-factory' - '@metamodels.factory' - '@metamodels.filter_setting_factory' - '@database_connection' - '@metamodels.template_list' - '@request_stack' - '@translator' + - '@router' public: true MetaModels\CoreBundle\Contao\Hooks\FilterModuleCallback: arguments: - '@metamodels.assets.icon_builder' - - '@metamodels.backend.url-builder-factory' - '@metamodels.factory' - '@metamodels.filter_setting_factory' - '@database_connection' - '@metamodels.template_list' - '@request_stack' - '@translator' + - '@router' public: true MetaModels\CoreBundle\EventListener\GetSearchablePagesListener: diff --git a/src/CoreBundle/Resources/config/routing.yml b/src/CoreBundle/Resources/config/routing.yml index 130f5cb52..46d10d0d3 100644 --- a/src/CoreBundle/Resources/config/routing.yml +++ b/src/CoreBundle/Resources/config/routing.yml @@ -1,17 +1,17 @@ metamodels.inputscreen.add_all: - path: /contao/metamodels/inputscreen/add-all/{metaModel}/{inputScreen} + path: /%contao.backend.route_prefix%/metamodels/inputscreen/add-all/{metaModel}/{inputScreen} defaults: { _controller: metamodels.controller.inputscreen.add_all, _scope: backend, _dcg_referer_update: true, _token_check: true } metamodels.support_screen: - path: /contao/metamodels/support + path: /%contao.backend.route_prefix%/metamodels/support defaults: { _controller: metamodels.controller.support_screen, _scope: backend, _token_check: true } metamodels.rendersetting.add_all: - path: /contao/metamodels/rendersetting/add-all/{metaModel}/{renderSetting} + path: /%contao.backend.route_prefix%/metamodels/rendersetting/add-all/{metaModel}/{renderSetting} defaults: { _controller: metamodels.controller.rendersetting.add_all, _scope: backend, _dcg_referer_update: true, _token_check: true } metamodels.configuration: - path: /contao/metamodels/{tableName} + path: /%contao.backend.route_prefix%/metamodels/{tableName} defaults: _controller: MetaModels\CoreBundle\Controller\Backend\ConfigurationController _scope: backend @@ -20,7 +20,7 @@ metamodels.configuration: tableName: ~ metamodels.metamodel: - path: /contao/metamodel/{tableName} + path: /%contao.backend.route_prefix%/metamodel/{tableName} defaults: _controller: MetaModels\CoreBundle\Controller\Backend\MetaModelController _scope: backend