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 = lib_plankton.zoo_editor.make( { "setup": (parameters) => Promise.resolve(undefined), "search": async (term) => lib_plankton.call.convey( await _aum.backend.member_list(), [ // (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, }) ), ] ), "read": (key) => _aum.backend.member_get(key), "create": (value) => /*_aum.backend.member_add(value)*/Promise.reject(new Error("missing")), "update": (key, value) => _aum.backend.member_modify(key, value), "delete": (key) => /*_aum.backend.member_remove(key)*/Promise.reject(new Error("missing")), }, lib_plankton.zoo_form.make( "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( editor, target_element.querySelector(".members-editor"), ( Object.assign( { }, ((state !== null) ? {"state": state} : {}) ) ) ); target_element.querySelector(".members-urge_for_registration").addEventListener( "click", async () => { const verification : string = await _aum.backend.verification_get(_id); 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 = await lib_plankton.zoo_form.read(editor.form); const text_paragraphs : Array = [ 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", ]; _aum.backend.email( [ 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); } ); } );