register_hook('HTML_REGISTERFORM_OUTPUT', 'BEFORE', $this, 'handle_register_page', array());
/**
* New Event using the new object
* https://www.dokuwiki.org/devel:event:form_register_output
*/
$controller->register_hook('FORM_REGISTER_OUTPUT', 'BEFORE', $this, 'handle_register_page', array());
}
function handle_register_page(&$event, $param)
{
$form = &$event->data;
$class = get_class($form);
switch ($class) {
case Doku_Form::class:
/**
* Old one
* @var Doku_Form $form
*/
self::updateDokuFormRegistration($form);
return;
case dokuwiki\Form\Form::class;
/**
* New One
* @var Form $form
*/
self::updateNewFormRegistration($form);
return;
}
}
/**
* Return the register text and link paragraph
* @return string
*/
public static function getRegisterLinkAndParagraph(): string
{
$registerHtml = "";
if (actionOK('register')) {
/**
* The register class does not allow
* registration if your are logged in (What ?)
* and send an exception
*/
if (!Identity::isLoggedIn()) {
$registerLink = (new Register())->asHtmlLink('', false);
global $lang;
$tag = self::TAG;
$registerText = $lang['reghere'];
$registerHtml = <<$registerText : $registerLink
EOF;
}
}
return $registerHtml;
}
private static function updateNewFormRegistration(Form &$form)
{
/**
* The Login page is an admin page created via buffer
* We print before the forms
* to avoid a FOUC
*/
print IdentityFormsHelper::getHtmlStyleTag(self::TAG);
$form->addClass(Identity::FORM_IDENTITY_CLASS . " " . self::FORM_REGISTER_CLASS);
/**
* Heading
*/
$headerHTML = IdentityFormsHelper::getHeaderHTML($form, self::FORM_REGISTER_CLASS);
if ($headerHTML != "") {
$form->addHTML($headerHTML, 1);
}
IdentityFormsHelper::deleteFieldSetAndBrFromForm($form);
IdentityFormsHelper::toBoostrapInputElements($form, self::FORM_REGISTER_CLASS);
IdentityFormsHelper::toBootStrapSubmitButton($form);
}
private static function updateDokuFormRegistration(Doku_Form &$form)
{
/**
* The register page is created via buffer
* We print before the forms
* to avoid a FOUC
*/
print IdentityFormsHelper::getHtmlStyleTag(self::TAG);
/**
* @var Doku_Form $form
*/
$class = &$form->params["class"];
IdentityFormsHelper::addIdentityClass($class, self::FORM_REGISTER_CLASS);
$newFormContent = [];
/**
* Header (Logo / Title)
*/
$newFormContent[] = IdentityFormsHelper::getHeaderHTML($form, self::FORM_REGISTER_CLASS);
/**
* Form Attributes
* https://getbootstrap.com/docs/5.0/forms/layout/#horizontal-form
*/
$rowClass = "row";
if (Bootstrap::getBootStrapMajorVersion() == Bootstrap::BootStrapFourMajorVersion) {
$rowClass .= " form-group";
}
$firstColWeight = 5;
$secondColWeight = 12 - $firstColWeight;
/**
* Replace the field
*
* The password text localized by lang is shared
* between the password and the password check field
*/
$passwordText = "Password";
foreach ($form->_content as $pos => $field) {
if (!is_array($field)) {
continue;
}
$fieldName = $field["name"];
if ($fieldName == null) {
// this is not an input field
if ($field["type"] == "submit") {
/**
* This is important to keep the submit element intact
* for forms integration such as captcha
* The search the submit button to insert before it
*/
$classes = "btn btn-primary";
if (isset($field["class"])) {
$field["class"] = $field["class"] . " " . $classes;
} else {
$field["class"] = $classes;
}
$field["tabindex"] = "6";
$newFormContent[] = $field;
}
continue;
}
switch ($fieldName) {
case "login":
$loginText = $field["_text"];
$loginValue = $field["value"];
$loginHTML = <<