2024-04-22 10:02:43 +02:00
lib_plankton . zoo_page . register (
"register" ,
async ( parameters , target_element ) = > {
2024-04-30 01:32:40 +02:00
function set_state (
state : ( "load" | "fill" | "wait" | "done" ) ,
message : ( null | string ) = null
) : void
{
2024-04-22 10:02:43 +02:00
target_element . querySelector ( ".register" ) . setAttribute ( "rel" , state ) ;
2024-04-30 01:32:40 +02:00
target_element . querySelector ( ".register-message" ) . textContent = ( message ? ? "" ) ;
}
2024-04-22 10:02:43 +02:00
const id : int = parseInt ( parameters [ "id" ] ) ;
const verification : string = parameters [ "verification" ] ;
2024-04-23 17:44:55 +02:00
// const verification : string = (new URLSearchParams(location.search)).get("verification");
2024-04-22 10:02:43 +02:00
update_nav ( { "mode" : null } ) ;
2024-04-29 00:15:48 +02:00
const member_data : {
2024-04-30 01:32:40 +02:00
name_real_value : string ;
name_real_index : int ;
2024-04-29 00:15:48 +02:00
name_login : string ;
2024-04-30 01:32:40 +02:00
email_address_veiled : string ;
email_address_nominal : string ;
2024-04-30 08:46:19 +02:00
} = await _espe . backend . member_info ( id , verification ) ;
2024-04-30 01:32:40 +02:00
target_element . appendChild ( template_request ( "register" ) ) ;
set_state ( "load" ) ;
2024-04-29 00:15:48 +02:00
2024-04-30 01:32:40 +02:00
// info
2024-04-29 00:15:48 +02:00
{
2024-04-30 01:32:40 +02:00
}
// form
{
let input : lib_plankton.zoo_input.interface_input <
{
email_address : ( "none" | "only_veiled" | "both" ) ;
email_redirect : boolean ;
password_value : string ;
password_confirmation : string ;
}
> ;
// input
{
input = new lib_plankton . zoo_input . class_input_group (
2024-04-29 00:15:48 +02:00
[
{
2024-04-30 01:32:40 +02:00
"name" : "email_address" ,
2024-04-29 00:15:48 +02:00
"input" : new lib_plankton . zoo_input . class_input_enumeration (
[
{ "value" : "none" , "label" : "keine" } ,
2024-04-30 01:32:40 +02:00
{ "value" : "only_veiled" , "label" : "nur pseudonymisiert" } ,
{ "value" : "both" , "label" : "pseudonymisiert und namentlich" } ,
2024-04-29 00:15:48 +02:00
]
) ,
"label" : "Partei-E-Mail-Adresse einrichten" ,
2024-04-30 01:32:40 +02:00
"help" : (
[
"Für Partei-Angelegenheiten möchten wir dir anbieten gesonderte E-Mail-Adressen zu verwenden." ,
lib_plankton . string . coin (
"Deine namentliche E-Mail-Adresse würde lauten »{{email_address_nominal}}« und die pseudonymisierte »{{email_address_veiled}}«." ,
{
"email_address_veiled" : member_data . email_address_veiled ,
"email_address_nominal" : member_data . email_address_nominal ,
}
) ,
"Die Partei-E-Mail-Adressen können zum Empfangen von E-Mails verwendet werden. Falls es nötig werden sollte, dass du auch E-Mails mit über die Partei-Adresse verschicken kannst, wende dich bitte an den/die Mitgliederbeauftragte:n!" ,
]
. join ( "\n\n" )
)
2024-04-29 00:15:48 +02:00
} ,
{
"name" : "email_redirect" ,
2024-04-30 01:32:40 +02:00
"input" : new lib_plankton . zoo_input . class_input_checkbox (
2024-04-29 00:15:48 +02:00
) ,
2024-04-30 01:32:40 +02:00
"label" : "eingehende E-Mails an private Adresse leiten" ,
2024-04-29 00:15:48 +02:00
} ,
{
2024-04-30 01:32:40 +02:00
"name" : "password_value" ,
"input" : new lib_plankton . zoo_input . class_input_password (
) ,
"label" : "Passwort für Netz-Dienste" ,
"help" : "Das Passwort für die Anmeldung bei den Netz-Diensten.\n\nDu solltest dir merken oder geeignet abspeichern, was du hier einträgst.\n\nSolltest du dieses Passwort mal vergessen oder verlieren, hast du die Möglichkeit ein neues zu setzen." ,
2024-04-29 00:15:48 +02:00
} ,
{
"name" : "password_confirmation" ,
2024-04-30 01:32:40 +02:00
"input" : new lib_plankton . zoo_input . class_input_password (
) ,
2024-04-29 00:15:48 +02:00
"label" : "Passwort wiederholen" ,
} ,
]
2024-04-30 01:32:40 +02:00
) ;
await input . setup ( target_element . querySelector ( ".register-form-input" ) as HTMLElement ) ;
await input . write (
2024-04-22 10:02:43 +02:00
{
2024-04-30 01:32:40 +02:00
"email_address" : "both" ,
"email_redirect" : true ,
"password_value" : "" ,
"password_confirmation" : "" ,
}
) ;
}
// actions
{
target_element . querySelector ( ".register-form-action-send" ) . addEventListener (
"click" ,
async ( event ) = > {
const value : {
email_address : ( "none" | "only_veiled" | "both" ) ;
email_redirect : boolean ;
password_value : string ;
password_confirmation : string ;
} = await input . read ( ) ;
if ( value . password_value !== value . password_confirmation ) {
alert ( "Die Passwörter stimmen nicht überein" ) ;
set_state ( "fill" ) ;
}
else {
2024-04-29 00:15:48 +02:00
set_state ( "wait" ) ;
2024-04-30 01:32:40 +02:00
try {
await _espe . backend . member_register (
id ,
verification ,
{
"email_use_veiled_address" : ( value . email_address !== "none" ) ,
"email_use_nominal_address" : ( value . email_address === "both" ) ,
"email_redirect_to_private_address" : value . email_redirect ,
"password" : value . password_value ,
}
) ;
2024-04-29 00:15:48 +02:00
}
2024-04-30 01:32:40 +02:00
catch ( error ) {
set_state ( "fill" , "Da ist etwas schief gelaufen :/" ) ;
2024-04-22 10:02:43 +02:00
}
2024-04-30 01:32:40 +02:00
set_state ( "done" , "Danke!" ) ;
}
2024-04-29 00:15:48 +02:00
}
2024-04-30 01:32:40 +02:00
) ;
2024-04-22 10:02:43 +02:00
}
2024-04-25 23:30:16 +02:00
}
2024-04-22 10:02:43 +02:00
} ,
) ;