Habe mich mal dran versucht. Also zunächst mal einen Ordner system/modules/registration_kennwort anlegen (alphabetisch hinter registration).
In DCA/tl_modul.php steht folgendes. Im Modul "Registrierung" gibt es dadurch ein Feld, wo man dass Kennwort eingeben kann.
PHP-Code:
$GLOBALS['TL_DCA']['tl_module']['palettes']['registration'] = '{title_legend},name,headline,type;{kennwort_legend},captcha_kennwort;{config_legend},editable,newsletters,disableCaptcha;{account_legend},reg_groups,reg_allowLogin,reg_assignDir;{redirect_legend},jumpTo;{email_legend:hide},reg_activate;{template_legend:hide},memberTpl,tableless;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space';
$GLOBALS['TL_DCA']['tl_module']['fields']['captcha_kennwort'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_module']['captcha_kennwort'],
'exclude' => false,
'inputType' => 'text',
'eval' => array('mandatory'=>false, 'maxlength'=>255, 'decodeEntities'=>true)
);
Mit der DCA/tl_member.php wird ein neues Eingabefeld für die Mitglieder erzeugt:
PHP-Code:
array_insert($GLOBALS['TL_DCA']['tl_member']['fields']['captcha_kennwort'],30,
array (
'label' => &$GLOBALS['TL_LANG']['tl_member']['captcha_kennwort'],
'exclude' => true,
'search' => true,
'inputType' => 'text',
'eval' => array('mandatory'=> 'true', 'maxlength'=>64, 'rgxp'=>'captcha_kennwort', 'feEditable'=>true, 'feViewable'=>true)
));
In der config/config.php wird der addCustomRegexp-Hook eingetragen. Dadurch können wir eine eigene "RegEx" - Funktion einbauen.
PHP-Code:
$GLOBALS['TL_HOOKS']['addCustomRegexp'][] = array('KennwortCaptcha', 'Kennwort');
Jetzt noch die KennwortCaptcha.php anlegen. Darin enthalten ist unsere eigene RexEx - Abfrage:
PHP-Code:
class KennwortCaptcha {
public function Kennwort($strRegexp, $varValue, Widget $objWidget) {
if ($strRegexp == 'captcha_kennwort') {
if ($varValue == '1234') {
return true;
}
}
return false;
}
}
languages/de/tl_member.php
PHP-Code:
$GLOBALS['TL_LANG']['tl_member']['captcha_kennwort'] = array('Kennwort', 'Bitte geben Sie das Kennwort ein.');
languages/de/tl_module.php
PHP-Code:
$GLOBALS['TL_LANG']['tl_module']['kennwort_legend'] = 'Captcha-Kennwort';
$GLOBALS['TL_LANG']['tl_module']['captcha_kennwort'] = array ('Captcha-Kennwort', 'Bitte tragen Sie hier das Kennwort für die Mitgliederregistrierung ein.');
Die Abfrage nach dem Kennwort klappt dadurch. Leider noch ohne DB-Abfrage. Wenn man die Klasse vom Controller ableitet, erhält man Zugriff auf Import('Database'). Aber es fehlt die ID vom aktuellen Modul, um dass Kennwort aus der DB abzufragen. Hänge da. Aber vielleicht sehe ich den Wald vor lauter Bäumen gerade nicht.
Keine Gewähr :-)
Gruß
lomex
Lesezeichen