[mod] Kosmetik

This commit is contained in:
roydfalk 2024-05-01 09:53:59 +02:00
parent c42ee84034
commit bcd3e08192
11 changed files with 284 additions and 234 deletions

View file

@ -14,12 +14,13 @@
"page.view.form.field.email_address_veiled.label": "pseudonymisierte E-Mail-Adresse",
"page.view.form.field.email_address_nominal.label": "namentliche E-Mail-Adresse",
"page.view.form.field.email_redirect_to_private_address.label": "eingehende E-Mails zu privater Adresse umleiten",
"page.view.form.field.email_allow_sending.label": "Versenden von E-Mails erlaubt",
"page.view.form.field.email_allow_sending.label": "Versenden von E-Mails erlauben",
"page.view.form.field.name_login.label": "Anmeldename",
"page.view.form.field.password_set.label": "Passwort gesetzt",
"page.view.form.action.save": "Änderungen speichern",
"page.view.form.action.summon": "Zur Registrierung auffordern",
"page.view.misc.summoned": "Benachrichtigung verschickt",
"page.view.misc.test_info": "Im Produktiv-Szenario würde an dieser Stelle eine E-Mail an die hinterlegte private E-Mail-Adresse des Mitglieds versendet werden mit einem Willkommens-Gruß und dem Aufruf folgenden Link zu öffnen:\n\n{{url}}",
"page.register.title": "Registrieren",
"page.register.form.field.email_address.label": "Partei-E-Mail-Adresse einrichten",
"page.register.form.field.email_address.help": "Für Partei-Angelegenheiten möchten wir dir anbieten gesonderte E-Mail-Adressen zu verwenden.\n\nDeine namentliche E-Mail-Adresse würde lauten »{{email_address_nominal}}« und die pseudonymisierte »{{email_address_veiled}}«\n\nDie 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!",
@ -33,6 +34,7 @@
"page.register.form.field.password_confirmation.label": "Passwort wiederholen",
"page.register.form.field.password_confirmation.help": "",
"page.register.form.submit": "Abschicken",
"page.register.flaw.already_registered": "bereits registriert",
"page.register.flaw.password_mismatch": "die Passwörter stimmen nicht überein",
"page.register.flaw.password_too_short": "das Passwort muss mindestens {{minimum_length}} Zeichen haben",
"page.register.flaw.password_too_long": "das Passwort darf höchstens {{maximum_length}} Zeichen haben",

View file

@ -20,6 +20,7 @@
"page.view.form.action.save": "save changes",
"page.view.form.action.summon": "urge for registration",
"page.view.misc.summoned": "notification sent",
"page.view.misc.test_info": "in a productive environment the system would now send an e-mail to the member's private address with a welcome note and a call to open the following link:\n\n{{url}}",
"page.register.title": "Register",
"page.register.form.field.email_address.label": "Set up party e-mail address",
"page.register.form.field.email_address.help": "We offer you to use a special e-mail address for any party concerns.\n\nYour namely e-mail address would be »{{email_address_nominal}}« and the veiled one »{{email_address_veiled}}«\n\nThe party e-mail address may be used for the reception of e-mails. In case it becomes necessary for you to submit e-mails via a party address, please get in contact with your membership authority!",
@ -33,6 +34,7 @@
"page.register.form.field.password_confirmation.label": "confirm password",
"page.register.form.field.password_confirmation.help": "",
"page.register.form.submit": "submit",
"page.register.flaw.already_registered": "already registered",
"page.register.flaw.password_mismatch": "passwords do not match",
"page.register.flaw.password_too_short": "the password must have at least {{minimum_length}} characters",
"page.register.flaw.password_too_long": "the password must not have more than {{maximum_length}} characters",

View file

@ -389,8 +389,8 @@ namespace _espe.backend
*/
export async function member_summon(
id : int,
url : string
) : Promise<null>
url_template : string
) : Promise<string>
{
return (
abstract_call(
@ -398,7 +398,7 @@ namespace _espe.backend
("/member/summon/" + id.toFixed(0)),
{
"data": {
"url_template": url,
"url_template": url_template,
},
}
)

View file

@ -12,6 +12,7 @@ namespace _espe.conf
};
settings : {
title : string;
test_mode : boolean;
};
};
@ -46,6 +47,7 @@ namespace _espe.conf
"settings": (
(node_settings => ({
"title": (node_settings["title"] ?? "Espe"),
"test_mode": (node_settings["test_mode"] ?? false),
})) (data_raw["settings"] ?? {})
),
};

View file

@ -109,6 +109,7 @@ async function main(
// set title
document.querySelector("header > h1").textContent = _espe.conf.get().settings.title;
document.querySelector("title").textContent = _espe.conf.get().settings.title;
setup_nav();

View file

@ -9,7 +9,7 @@ lib_plankton.zoo_page.register(
name_real_index : int;
};
};
const term : (null | string) = (parameters["term"] ?? null);
const term : (null | string) = (parameters["term"] ?? "");
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
(term) => _espe.backend.member_list(term),
{

View file

@ -24,23 +24,41 @@ lib_plankton.zoo_page.register(
// const verification : string = (new URLSearchParams(location.search)).get("verification");
update_nav({"mode": null});
const member_data : {
name_real_value : string;
name_real_index : int;
name_login : string;
email_address_veiled : string;
email_address_nominal : string;
} = await _espe.backend.member_info(id, verification);
target_element.appendChild(template_request("register"));
set_state(
"load",
[
]
);
let member_data : (
null
|
{
name_real_value : string;
name_real_index : int;
name_login : string;
email_address_veiled : string;
email_address_nominal : string;
}
);
try {
member_data = await _espe.backend.member_info(id, verification);
}
catch (error) {
member_data = null;
}
if (member_data === null) {
set_state(
"fill",
[
lib_plankton.translate.get("page.register.flaw.already_registered"),
]
);
}
else {
// title
{
target_element.querySelector(".register-title").textContent = lib_plankton.translate.get("page.register.title");
@ -185,5 +203,6 @@ lib_plankton.zoo_page.register(
);
}
}
}
},
);

View file

@ -3,6 +3,12 @@ lib_plankton.zoo_page.register(
async (parameters, target_element) => {
const id : int = parseInt(parameters["id"]);
let dom_fragment : DocumentFragment = template_request("view");
dom_fragment.querySelector(".view-title").textContent = lib_plankton.translate.get("page.view.title");
const member_data = await _espe.backend.member_get(id);
const form = new lib_plankton.zoo_form.class_form<
{
membership_number : string;
@ -52,16 +58,16 @@ lib_plankton.zoo_page.register(
"input": new lib_plankton.zoo_input.class_input_number({"read_only": true}),
"label": lib_plankton.translate.get("page.view.form.field.name_real_index.label"),
},
{
"name": "registered",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": lib_plankton.translate.get("page.view.form.field.registered.label"),
},
{
"name": "enabled",
"input": new lib_plankton.zoo_input.class_input_checkbox(),
"label": lib_plankton.translate.get("page.view.form.field.enabled.label"),
},
{
"name": "registered",
"input": new lib_plankton.zoo_input.class_input_checkbox({"read_only": true}),
"label": lib_plankton.translate.get("page.view.form.field.registered.label"),
},
{
"name": "email_address_private",
"input": new lib_plankton.zoo_input.class_input_text(),
@ -99,6 +105,7 @@ lib_plankton.zoo_page.register(
},
]
),
(
[
{
"label": lib_plankton.translate.get("page.view.form.action.save"),
@ -114,10 +121,15 @@ lib_plankton.zoo_page.register(
);
},
},
]
.concat(
member_data.registered
? []
: [
{
"label": lib_plankton.translate.get("page.view.form.action.summon"),
"procedure": async (get_value, get_representation) => {
const url : string = (
const url_template : string = (
window.location.href.split("#")[0]
+
lib_plankton.zoo_page.encode(
@ -131,34 +143,22 @@ lib_plankton.zoo_page.register(
)
);
await _espe.backend.member_summon(id, url);
const url : string = await _espe.backend.member_summon(id, url_template);
/*
lib_plankton.zoo_page.set(
{
"name": "index",
"parameters": {},
if (_espe.conf.get().settings.test_mode) {
alert(lib_plankton.translate.get("page.view.misc.test_info", {"url": url}));
}
);
*/
else {
alert(lib_plankton.translate.get("page.view.misc.summoned"));
}
},
},
]
);
let dom_fragment : DocumentFragment = template_request("view");
dom_fragment.querySelector(".view-title").textContent = lib_plankton.translate.get("page.view.title");
(
Promise.all(
[
form.setup(dom_fragment.querySelector(".view-form") as HTMLElement),
_espe.backend.member_get(id),
]
)
.then(
([_, member_data]) => {
form.input_write(
)
);
await form.setup(dom_fragment.querySelector(".view-form") as HTMLElement);
await form.input_write(
{
"membership_number": member_data.membership_number,
"name_real_value": member_data.name_real_value,
@ -182,9 +182,6 @@ lib_plankton.zoo_page.register(
"password_set": member_data.password_set,
}
);
}
)
);
target_element.appendChild(dom_fragment);
},

View file

@ -1,3 +1,8 @@
.view-title
{
display: none;
}
/*
.view-form > .plankton_form
{

View file

@ -6,11 +6,12 @@
<link rel="stylesheet" type="text/css" href="style.css"/>
<script type="text/javascript" src="logic.js"></script>
<script type="text/javascript">document.addEventListener("DOMContentLoaded", () => {main();});</script>
<title></title>
{{templates}}
</head>
<body>
<header>
<h1>Espe</h1>
<h1></h1>
</header>
<hr/>
<nav>

View file

@ -55,17 +55,23 @@ input[type="text"]
,
input[type="number"]
,
input[type="search"]
,
input[type="password"]
{
padding: 8px;
border: 1px solid hsl(var(--hue), 0%, 50%);
min-width: 320px;
}
input[type="text"]:not([disabled="disabled"])
,
input[type="number"]:not([disabled="disabled"])
,
input[type="search"]:not([disabled="disabled"])
,
input[type="password"]:not([disabled="disabled"])
{
/*
@ -80,6 +86,8 @@ input[type="text"][disabled="disabled"]
,
input[type="number"][disabled="disabled"]
,
input[type="search"][disabled="disabled"]
,
input[type="password"][disabled="disabled"]
{
background-color: hsl(var(--hue), 0%, 12.5%);
@ -110,6 +118,14 @@ nav > ul > li
*/
}
input[type="submit"]
,
button
{
font-size: 1.25em;
cursor: pointer;
}
/*
nav > ul > li:hover::before
{
@ -190,3 +206,8 @@ nav > ul > li:hover::after
text-transform: uppercase;
margin: 8px;
}
.plankton_search_submit
{
margin-left: 16px;
}