2024-04-22 10:02:43 +02:00
lib_plankton . zoo_page . register (
"members" ,
( parameters , target_element ) = > {
const state : ( null | any ) = (
( "state" in parameters )
? lib_plankton . json . decode ( lib_plankton . base64 . decode ( parameters [ "state" ] ) )
: null
) ;
const set_state = function ( state ) {
target_element . querySelector ( ".members" ) . setAttribute ( "rel" , state ) ;
} ;
let _id : ( null | int ) = null ;
const editor : lib_plankton.zoo_editor.type_editor < int , any > = lib_plankton . zoo_editor . make < int , any > (
{
"setup" : ( parameters ) = > Promise . resolve < void > ( undefined ) ,
"search" : async ( term ) = > lib_plankton . call . convey (
2024-04-22 10:24:38 +02:00
await _espe . backend . member_list ( ) ,
2024-04-22 10:02:43 +02:00
[
// (raw as Array<{id : int; preview : any;}>)
x = > x . filter (
(
( term === null )
||
( term === "" )
)
? ( entry = > true )
: (
( term . length < 2 )
? ( entry = > false )
: (
entry = > (
entry . preview [ "membership_number" ] . includes ( term )
||
entry . preview [ "name_real_value" ] . toLowerCase ( ) . includes ( term )
)
)
)
) ,
x = > x . map (
entry = > ( {
"key" : entry . id ,
"preview" : entry . preview ,
} )
) ,
]
) ,
2024-04-22 10:24:38 +02:00
"read" : ( key ) = > _espe . backend . member_get ( key ) ,
"create" : ( value ) = > /*_espe.backend.member_add(value)*/ Promise . reject ( new Error ( "missing" ) ) ,
"update" : ( key , value ) = > _espe . backend . member_modify ( key , value ) ,
"delete" : ( key ) = > /*_espe.backend.member_remove(key)*/ Promise . reject ( new Error ( "missing" ) ) ,
2024-04-22 10:02:43 +02:00
} ,
lib_plankton . zoo_form . make < any > (
"GET" ,
[
{
"name" : "membership_number" ,
"type" : "text" ,
"label" : "Mitgliedsnummer" ,
} ,
{
"name" : "enabled" ,
"type" : "checkbox" ,
"label" : "Für Online-Dienste freischalten" ,
} ,
{
"name" : "name_real_value" ,
"type" : "text" ,
"label" : "Echter Name" ,
} ,
{
"name" : "name_real_extension" ,
"type" : "text" ,
"label" : "Zusatz für echten Name (für mögliche Dopplung)" ,
} ,
{
"name" : "name_display" ,
"type" : "text" ,
"label" : "Anzeigename" ,
} ,
{
"name" : "name_login" ,
"type" : "text" ,
"label" : "Anmeldename" ,
} ,
{
"name" : "email_address_private_value" ,
"type" : "text" ,
"label" : "Private E-Mail-Adresse" ,
} ,
{
"name" : "email_address_numberbased_use" ,
"type" : "checkbox" ,
"label" : "Nummernbasierte E-Mail-Adresse verwenden" ,
} ,
{
"name" : "email_address_namebased_use" ,
"type" : "checkbox" ,
"label" : "Namensbasierte E-Mail-Adresse verwenden" ,
} ,
{
"name" : "email_redirect_to_private" ,
"type" : "checkbox" ,
"label" : "E-Mails an private Adresse umleiten" ,
} ,
{
"name" : "salutation" ,
"type" : "text" ,
"label" : "Anrede/Pronomen" ,
} ,
] ,
value = > ( {
"enabled" : ( value . enabled ? "on" : "" ) ,
"membership_number" : value . membership_number ,
"name_real_value" : value . name_real_value ,
"name_real_extension" : value . name_real_extension ,
"name_display" : value . name_display ,
"name_login" : value . name_login ,
"email_address_private_value" : value . email_address_private_value ,
"email_address_numberbased_use" : ( value . email_address_numberbased_use ? "on" : "" ) ,
"email_address_namebased_use" : ( value . email_address_namebased_use ? "on" : "" ) ,
"email_redirect_to_private" : ( value . email_redirect_to_private ? "on" : "" ) ,
"salutation" : value . salutation ,
} ) ,
raw = > ( {
"enabled" : ( raw [ "enabled" ] === "on" ) ,
"membership_number" : raw [ "membership_number" ] ,
"name_real_value" : raw [ "name_real_value" ] ,
"name_real_extension" : raw [ "name_real_extension" ] ,
"name_display" : raw [ "name_display" ] ,
"name_login" : raw [ "name_login" ] ,
"email_address_private_value" : raw [ "email_address_private_value" ] ,
"email_address_numberbased_use" : ( raw [ "email_address_numberbased_use" ] === "on" ) ,
"email_address_namebased_use" : ( raw [ "email_address_namebased_use" ] === "on" ) ,
"email_redirect_to_private" : ( raw [ "email_redirect_to_private" ] === "on" ) ,
"salutation" : raw [ "salutation" ] ,
} ) ,
{
}
) ,
{
"encode_hit" : hit = > lib_plankton . string . coin (
"{{number}} | {{name}}" ,
{
"number" : hit . preview [ "membership_number" ] ,
"name" : hit . preview [ "name_real_value" ] ,
}
) ,
"hook_switch" : ( state ) = > {
_id = state . key ;
set_state ( ( _id === null ) ? "poor" : "rich" ) ;
const state_encoded : string = lib_plankton . base64 . encode ( lib_plankton . json . encode ( state ) ) ;
lib_plankton . zoo_page . set ( { "name" : "members" , "parameters" : { "state" : state_encoded } } ) ;
} ,
}
) ;
target_element . appendChild ( template_request ( "members" ) ) ;
lib_plankton . zoo_editor . render < int , any > (
editor ,
target_element . querySelector ( ".members-editor" ) ,
(
Object . assign (
{
} ,
( ( state !== null ) ? { "state" : state } : { } )
)
)
) ;
target_element . querySelector ( ".members-urge_for_registration" ) . addEventListener (
"click" ,
async ( ) = > {
2024-04-22 10:24:38 +02:00
const verification : string = await _espe . backend . verification_get ( _id ) ;
2024-04-22 10:02:43 +02:00
const location_encoded : string = lib_plankton . zoo_page . encode (
{
"name" : "register" ,
"parameters" : {
"id" : _id ,
"verification" : verification ,
}
}
) ;
const url_base : string = window . location . href . split ( "#" ) [ 0 ] ;
const url : string = ( url_base + location_encoded ) ;
const data : Record < string , any > = await lib_plankton . zoo_form . read ( editor . form ) ;
const text_paragraphs : Array < string > = [
lib_plankton . string . coin (
"Hi, {{name}}!" ,
{
"name" : "data.name_real_value" ,
}
) ,
"Willkommen bei der Linken!" ,
"Wir als Landesverband Sachsen stellen für unsere Mitglieder verschiedene Online-Dienste zur Verfügung. Dazu gehört eine E-Mail-Adresse bei der Partei, ein Instant Messenger, eine Cloud, ein Wiki und noch einiges mehr." ,
"Wenn du die Dienste nutzen möchtest, rufe bitte folgende Adresse auf:" ,
url ,
"Solidarische Grüße, dein Landesverband Sachsen" ,
] ;
2024-04-22 10:24:38 +02:00
_espe . backend . email (
2024-04-22 10:02:43 +02:00
[
data . email_address_private_value ,
] ,
"DIE LINKE. | Landesverband Sachsen | Registierung für Online-Dienste" ,
text_paragraphs . join ( "\n\n" ) ,
) ;
// TODO: statt dessen eine E-Mail an die private Adresse des Neumitglieds senden
// target_element.querySelector(".members-result").setAttribute("href", url);
alert ( url ) ;
}
) ;
}
) ;