DieSchittigs / recaptcha-bundle

reCAPTCHA replacement for Contao 4
ISC License
7 stars 6 forks source link

DCA tl_settings überschreibt andere Angaben #9

Closed emha closed 5 years ago

emha commented 5 years ago

Das Bundle überschreibt die von anderen gesetzten Definitionen in der tl_settings.php. Ich kann nicht sagen warum das passiert. Sobald ich das Bundle via composer entferne werden die Definitionen aus anderen Bundles wieder ausgegeben.

Cache gelöscht, composer du ausgeführt. Keine Veränderung.

Ich versuche vor das global_legend Felder einzufügen. Das hat vor der Installation des Recaptcha-Bundles auch funktioniert.

$GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] = str_replace('{global_legend}', "$legend;{global_legend}", $GLOBALS['TL_DCA']['tl_settings']['palettes']['default']);

emha commented 5 years ago

Der Release v1.1.1 funktioniert noch. Der Release v1.2.1 nicht mehr. Dazwischen scheint eine Änderung das kaputt zu machen.

padarom commented 5 years ago

das reCAPTCHA-Bundle legt noch eine eigene Palette an, die angezeigt wird, wenn reCAPTCHA 3 als Typ ausgewählt wurde. Da das Bundle scheinbar vor dem eigenen Code geladen wird, müsste vom eigenen Code sowohl die default, als auch die recaptcha3 Palette angepasst werden:

$GLOBALS['TL_DCA']['tl_settings']['palettes']['default'] = str_replace('{global_legend}', "$legend;{global_legend}", $GLOBALS['TL_DCA']['tl_settings']['palettes']['default']);
$GLOBALS['TL_DCA']['tl_settings']['palettes']['recaptcha3'] = str_replace('{global_legend}', "$legend;{global_legend}", $GLOBALS['TL_DCA']['tl_settings']['palettes']['recaptcha3']);

Nicht ganz optimal, aber im Moment die einzige Lösung die mir einfällt, die gleichzeitig das richtige Palette-Wechsel-Verhalten beibehält.

markocupic commented 4 years ago

Es wäre schön, wenn die letzten commits neu getagt würden, weil der Bug in tl_settings immer ncoh auftritt.

Hier noch mein Workaraound mit dem Palette Manipulator.

<?php
// dca/tl_settings.php

// Extend the default palette
Contao\CoreBundle\DataContainer\PaletteManipulator::create()
    ->addLegend('recaptcha_legend', 'files_legend', Contao\CoreBundle\DataContainer\PaletteManipulator::POSITION_AFTER)
    ->addField(['recaptchaType', 'recaptchaPublicKey', 'recaptchaPrivateKey'], 'recaptcha_legend', Contao\CoreBundle\DataContainer\PaletteManipulator::POSITION_APPEND)
    ->applyToPalette('default', 'tl_settings');

if (Contao\Config::get('recaptchaType') === 'recaptcha3')
{
    // Add additional field if Contao\Config::get('recaptchaType') === 'recaptcha3'
    Contao\CoreBundle\DataContainer\PaletteManipulator::create()
        ->addField(['recaptcha3GlobalThreshold'], 'recaptchaType', Contao\CoreBundle\DataContainer\PaletteManipulator::POSITION_AFTER)
        ->applyToPalette('default', 'tl_settings');
}