Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 39 additions & 34 deletions src/CoreBundle/Controller/Backend/AbstractAddAllController.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

use Contao\CoreBundle\Controller\Backend\AbstractBackendController;
use Contao\CoreBundle\Csrf\ContaoCsrfTokenManager;
use Contao\CoreBundle\Framework\Adapter;
use Contao\System;
use Doctrine\DBAL\Connection;
use MetaModels\Attribute\IAttribute;
Expand All @@ -34,6 +33,7 @@
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment as TwigEnvironment;

Expand All @@ -46,13 +46,6 @@
*/
abstract class AbstractAddAllController extends AbstractBackendController
{
/**
* Adapter to the Contao\System class.
*
* @var Adapter<System>
*/
private Adapter $systemAdapter;

/**
* The translator.
*
Expand Down Expand Up @@ -109,23 +102,20 @@ abstract class AbstractAddAllController extends AbstractBackendController
* @param TranslatorInterface $translator The translator.
* @param IFactory $factory The MetaModels factory.
* @param Connection $connection The database connection.
* @param Adapter<System> $systemAdapter Adapter to the Contao\System class.
* @param PurgeCache $purger The cache purger.
*/
public function __construct(
TwigEnvironment $twig,
TranslatorInterface $translator,
IFactory $factory,
Connection $connection,
Adapter $systemAdapter,
PurgeCache $purger
) {
$this->twig = $twig;
$this->translator = $translator;
$this->factory = $factory;
$this->connection = $connection;
$this->systemAdapter = $systemAdapter;
$this->purger = $purger;
$this->twig = $twig;
$this->translator = $translator;
$this->factory = $factory;
$this->connection = $connection;
$this->purger = $purger;
}

/**
Expand Down Expand Up @@ -172,16 +162,16 @@ protected function process($table, $metaModelName, $parentId, Request $request)
}
if ($request->request->has('add') || $request->request->has('saveNclose')) {
$this->perform($table, $request, $metaModel, $parentId);
// If we want to close, go back to referer.
// If we want to close, go back to the parent list.
if ($request->request->has('saveNclose')) {
return new RedirectResponse($this->getReferer($request, $table, false));
return new RedirectResponse($this->getReferer($table, $parentId));
}
}

return $this->render(
'@MetaModelsCore/Backend/add-all.html.twig',
$this->renderOutput($table, $metaModel, $request)
);
$output = $this->renderOutput($table, $metaModel, $request);
$output['href'] = $this->getReferer($table, $parentId);

return $this->render('@MetaModelsCore/Backend/add-all.html.twig', $output);
}

/**
Expand Down Expand Up @@ -211,7 +201,6 @@ protected function renderOutput($table, $metaModel, Request $request)
'title' => $headline,
'action' => '',
'requestToken' => $tokenManager->getDefaultTokenValue(),
'href' => $this->getReferer($request, $table, true),
'backBt' => $this->translator->trans('backBT', [], $table),
'add' => $this->translator->trans('continue', [], $table),
'saveNclose' => $this->translator->trans('saveNclose', [], $table),
Expand Down Expand Up @@ -404,22 +393,38 @@ private function perform(string $table, Request $request, IMetaModel $metaModel,
}

/**
* Get the current Backend referrer URL.
* Build the back URL to the parent settings list.
*
* @param Request $request The request.
* @param string $table The table name.
* @param bool $encodeAmp Flag to encode ampersands or not.
* Contao 5.7 no longer maintains the session based referer, so the URL is built
* deterministically from the settings table and its parent id.
*
* @param string $table The settings table name.
* @param string $parentId The id of the parent record (input screen / render setting).
*
* @return string
*/
private function getReferer(Request $request, string $table, bool $encodeAmp = false): string
private function getReferer(string $table, string $parentId): string
{
$uri = $this->systemAdapter->getReferer($encodeAmp, $table);
// Make the location an absolute URL
if (!preg_match('@^https?://@i', $uri)) {
$uri = $request->getBasePath() . '/' . ltrim($uri, '/');
}
$router = System::getContainer()->get('router');
assert($router instanceof UrlGeneratorInterface);

return $uri;
return $router->generate('metamodels.configuration', ['tableName' => $table])
. '?pid=' . $this->getParentProviderName($table) . '::' . $parentId;
}

/**
* Get the parent data provider name for the given settings table.
*
* @param string $table The settings table name.
*
* @return string
*/
protected function getParentProviderName(string $table): string
{
return match ($table) {
'tl_metamodel_dcasetting' => 'tl_metamodel_dca',
'tl_metamodel_rendersetting' => 'tl_metamodel_rendersettings',
default => $table,
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@

namespace MetaModels\CoreBundle\Controller\Backend;

use Contao\CoreBundle\Framework\Adapter;
use Doctrine\DBAL\Connection;
use MetaModels\Attribute\IAttribute;
use MetaModels\Attribute\IInternal;
Expand Down Expand Up @@ -57,22 +56,20 @@ class InputScreenAddAllController extends AbstractAddAllController
/**
* Create a new instance.
*
* @param TwigEnvironment $twig The templating instance.
* @param TranslatorInterface $translator The translator.
* @param IFactory $factory The MetaModels factory.
* @param Connection $connection The database connection.
* @param Adapter $systemAdapter Adapter to the Contao\System class.
* @param PurgeCache $purger The cache purger.
* @param TwigEnvironment $twig The templating instance.
* @param TranslatorInterface $translator The translator.
* @param IFactory $factory The MetaModels factory.
* @param Connection $connection The database connection.
* @param PurgeCache $purger The cache purger.
*/
public function __construct(
TwigEnvironment $twig,
TranslatorInterface $translator,
IFactory $factory,
Connection $connection,
Adapter $systemAdapter,
PurgeCache $purger
) {
parent::__construct($twig, $translator, $factory, $connection, $systemAdapter, $purger);
parent::__construct($twig, $translator, $factory, $connection, $purger);

$this->translator = $translator;
}
Expand Down
6 changes: 2 additions & 4 deletions src/CoreBundle/Resources/config/routing.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
metamodels.inputscreen.add_all:
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 }
defaults: { _controller: metamodels.controller.inputscreen.add_all, _scope: backend, _token_check: true }

metamodels.support_screen:
path: /%contao.backend.route_prefix%/metamodels/support
defaults: { _controller: metamodels.controller.support_screen, _scope: backend, _token_check: true }

metamodels.rendersetting.add_all:
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 }
defaults: { _controller: metamodels.controller.rendersetting.add_all, _scope: backend, _token_check: true }

metamodels.configuration:
path: /%contao.backend.route_prefix%/metamodels/{tableName}
defaults:
_controller: MetaModels\CoreBundle\Controller\Backend\ConfigurationController
_scope: backend
_dcg_referer_update: true
_token_check: true
tableName: ~

Expand All @@ -24,5 +23,4 @@ metamodels.metamodel:
defaults:
_controller: MetaModels\CoreBundle\Controller\Backend\MetaModelController
_scope: backend
_dcg_referer_update: true
_token_check: true
1 change: 0 additions & 1 deletion src/CoreBundle/Resources/config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ services:
- "@contao.translation.translator"
- "@metamodels.factory"
- "@database_connection"
- "@=service('contao.framework').getAdapter('Contao\\\\System')"
- '@metamodels.cache.purger'
metamodels.controller.inputscreen.add_all:
class: MetaModels\CoreBundle\Controller\Backend\InputScreenAddAllController
Expand Down
4 changes: 0 additions & 4 deletions src/CoreBundle/Resources/translations/tl_metamodel.de.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -299,10 +299,6 @@
<source>Save and new</source>
<target>Speichern und neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="ERR.tableNameNotGiven" resname="ERR.tableNameNotGiven">
<source>The table name is not given or empty.</source>
<target>Der Tabellenname wurde nicht gesetzt oder ist leer.</target>
Expand Down
3 changes: 0 additions & 3 deletions src/CoreBundle/Resources/translations/tl_metamodel.en.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="ERR.tableNameNotGiven" resname="ERR.tableNameNotGiven">
<source>The table name is not given or empty.</source>
</trans-unit>
Expand Down
4 changes: 0 additions & 4 deletions src/CoreBundle/Resources/translations/tl_metamodel.fr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -299,10 +299,6 @@
<source>Save and new</source>
<target>Enregistrer et nouveau</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Enregistrer et retour</target>
</trans-unit>
<trans-unit id="ERR.tableNameNotGiven" resname="ERR.tableNameNotGiven">
<source>The table name is not given or empty.</source>
<target>Le nom de la table n&apos;est pas autorisé ou est vide.</target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -241,10 +241,6 @@
<source>Save and new</source>
<target>Speichern und neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="ERR.columnExists" resname="ERR.columnExists">
<source>Column &quot;%col_name%&quot; already exists on table &quot;%table_name%&quot;.</source>
<target>Die Spalte &quot;%col_name%&quot; ist in der Tabelle &quot;%table_name%&quot; bereits vorhanden.</target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="ERR.columnExists" resname="ERR.columnExists">
<source>Column "%col_name%" already exists on table "%table_name%".</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,6 @@ En cas de modification du nom de la colonne, les données de l&apos;utilisateur
<source>Save and new</source>
<target>Sauvegarder et nouveau</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Sauvegarder et retour</target>
</trans-unit>
<trans-unit id="ERR.columnExists" resname="ERR.columnExists">
<source>Column &quot;%col_name%&quot; already exists on table &quot;%table_name%&quot;.</source>
<target>La colonne «%col_name% » existe déjà dans la table «%table_name% ».</target>
Expand Down
4 changes: 0 additions & 4 deletions src/CoreBundle/Resources/translations/tl_metamodel_dca.de.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,6 @@
<source>Save and new</source>
<target>Speichern und neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
<target>Zurück</target>
Expand Down
3 changes: 0 additions & 3 deletions src/CoreBundle/Resources/translations/tl_metamodel_dca.en.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
</trans-unit>
Expand Down
4 changes: 0 additions & 4 deletions src/CoreBundle/Resources/translations/tl_metamodel_dca.fr.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,6 @@
<source>Save and new</source>
<target>Sauvegarder et nouveau</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Sauvegarder et retour</target>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@
<source>Save and new</source>
<target>Speichern und neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
<target>Zurück</target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@
<source>Save and new</source>
<target>Sauvegarder et nouveau</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Sauvegarder et retour</target>
</trans-unit>
<trans-unit id="backBT" resname="backBT">
<source>Go back</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,6 @@
<source>Save and new</source>
<target>Speichern und Neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="editRecord" resname="editRecord">
<source>Edit record %id%</source>
<target>Datensatz %id% bearbeiten</target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="editRecord" resname="editRecord">
<source>Edit record %id%</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,6 @@
<source>Save and new</source>
<target>Sauvegarder et nouveau</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Sauvegarder et retour</target>
</trans-unit>
<trans-unit id="editRecord" resname="editRecord">
<source>Edit record %id%</source>
</trans-unit>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,6 @@
<source>Save and new</source>
<target>Speichern und Neu</target>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
<target>Speichern und zurück</target>
</trans-unit>
<trans-unit id="continue" resname="continue">
<source>Continue</source>
<target>Fortfahren</target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,6 @@
<trans-unit id="saveNcreate" resname="saveNcreate">
<source>Save and new</source>
</trans-unit>
<trans-unit id="saveNback" resname="saveNback">
<source>Save and go back</source>
</trans-unit>
<trans-unit id="continue" resname="continue">
<source>Continue</source>
</trans-unit>
Expand Down
Loading
Loading