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