Compare commits
11 commits
task-193-t
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a08bd73e9d | ||
|
|
56658aa7f6 | ||
|
|
2434d46ca6 | ||
|
|
4b6ed73bd3 | ||
|
|
2c4cba0548 | ||
|
|
3cb0fe64f2 | ||
|
|
0e04d8d88b | ||
|
|
8ad256c7eb | ||
|
|
46ae15b62d | ||
|
|
2cb6cc55cb | ||
|
|
23504111ec |
934
lib/plankton/plankton.d.ts
vendored
934
lib/plankton/plankton.d.ts
vendored
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -4,5 +4,8 @@
|
||||||
"host": "localhost",
|
"host": "localhost",
|
||||||
"port": 4916,
|
"port": 4916,
|
||||||
"path_base": ""
|
"path_base": ""
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"title": "Lokaler Espe-Test"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# Espe | Frontend
|
# Espe | Frontend: Zackeneule
|
||||||
|
|
||||||
## Beschreibung
|
## Beschreibung
|
||||||
|
|
||||||
- Web-Anwendung für [Espe](https://gitlab.die-linke.cloud/espe/documentation)
|
- Web-Anwendung für [Espe](/misc/espe-meta)
|
||||||
|
|
||||||
|
|
||||||
## Erstellung
|
## Erstellung
|
||||||
|
|
|
||||||
|
|
@ -9,28 +9,31 @@
|
||||||
"common.timezone_shift": "Zeitzonen-Verschiebung",
|
"common.timezone_shift": "Zeitzonen-Verschiebung",
|
||||||
"common.date": "Datum",
|
"common.date": "Datum",
|
||||||
"common.time": "Uhzeit",
|
"common.time": "Uhzeit",
|
||||||
|
"common.loading": "laden …",
|
||||||
|
"common.checking": "prüfen …",
|
||||||
"domain.group.name.label": "Name",
|
"domain.group.name.label": "Name",
|
||||||
"domain.group.label.label": "Beschriftung",
|
"domain.group.label.label": "Beschriftung",
|
||||||
"domain.member.member": "Mitglied",
|
"domain.member.member": "Mitglied",
|
||||||
"domain.member.membership_number.label": "Mitgliedsnummer",
|
"domain.member.name.label": "Anmeldename",
|
||||||
"domain.member.name.label": "Name",
|
"domain.member.name.help": "der Name für die Anmeldung bei den Netz-Diensten.\n\nkann später NICHT mehr geändert werden",
|
||||||
"domain.member.label.label": "Beschriftung",
|
"domain.member.label.label": "Anzeigename",
|
||||||
"domain.member.name_real_value.label": "Echter Name",
|
"domain.member.label.help": "wie du angezeigt wirst\n\nkann später geändert werden",
|
||||||
"domain.member.name_real_index.label": "Namens-Index",
|
|
||||||
"domain.member.groups.label": "Gruppen",
|
"domain.member.groups.label": "Gruppen",
|
||||||
|
"domain.member.groups.help": "die Gruppen, denen du zugeordnet bist",
|
||||||
"domain.member.registered.label": "registriert",
|
"domain.member.registered.label": "registriert",
|
||||||
"domain.member.enabled.label": "aktiviert",
|
"domain.member.enabled.label": "aktiviert",
|
||||||
"domain.member.email_address.label": "E-Mail-Adresse",
|
"domain.member.email_address.label": "E-Mail-Adresse",
|
||||||
"domain.member.email_address_private.label": "private E-Mail-Adresse",
|
"domain.member.email_address.help": "für Benachrichtigungen von Diensten",
|
||||||
"domain.member.email_address_veiled.label": "pseudonymisierte E-Mail-Adresse",
|
|
||||||
"domain.member.email_address_nominal.label": "namentliche E-Mail-Adresse",
|
|
||||||
"domain.member.email_redirect_to_private_address.label": "eingehende E-Mails zu privater Adresse umleiten",
|
|
||||||
"domain.member.email_allow_sending.label": "Versenden von E-Mails erlauben",
|
|
||||||
"domain.member.name_login.label": "Anmeldename",
|
|
||||||
"domain.member.password_set.label": "Passwort gesetzt",
|
"domain.member.password_set.label": "Passwort gesetzt",
|
||||||
"domain.invitation.key.label": "Schlüssel",
|
"domain.invitation.key.label": "Schlüssel",
|
||||||
"domain.invitation.expiry.label": "Ablaufzeitpunkt",
|
"domain.invitation.expiry.label": "Ablaufzeitpunkt",
|
||||||
"domain.invitation.url.label": "URL",
|
"domain.invitation.url.label": "URL",
|
||||||
|
"widget.password_policy.title": "Passwort-Richtlinien",
|
||||||
|
"widget.password_policy.minimum_length": "mindestens {{minimum_length}} Zeichen",
|
||||||
|
"widget.password_policy.maximum_length": "höchstens {{maximum_length}} Zeichen",
|
||||||
|
"widget.password_policy.must_contain_letter": "muss einen Buchstaben beinhalten",
|
||||||
|
"widget.password_policy.must_contain_number": "muss eine Zahl beinhalten",
|
||||||
|
"widget.password_policy.must_contain_special_character": "muss ein Sonderzeichen beinhalten",
|
||||||
"page.login.title": "Anmelden",
|
"page.login.title": "Anmelden",
|
||||||
"page.login.name": "Name",
|
"page.login.name": "Name",
|
||||||
"page.login.password": "Passwort",
|
"page.login.password": "Passwort",
|
||||||
|
|
@ -39,35 +42,11 @@
|
||||||
"page.group_list.title": "Gruppen",
|
"page.group_list.title": "Gruppen",
|
||||||
"page.group_create.title": "Gruppe anlegen",
|
"page.group_create.title": "Gruppe anlegen",
|
||||||
"page.group_create.form.submit": "Abschicken",
|
"page.group_create.form.submit": "Abschicken",
|
||||||
|
"page.group_view.title": "Gruppe bearbeiten",
|
||||||
"page.member_create.title": "Mitglied anlegen",
|
"page.member_create.title": "Mitglied anlegen",
|
||||||
"page.member_list.title": "Mitglieder",
|
"page.member_list.title": "Mitglieder",
|
||||||
"page.member_view.title": "Mitglied",
|
"page.member_view.title": "Mitglied",
|
||||||
"page.member_view.form.action.save": "Änderungen speichern",
|
"page.member_view.form.action.save": "Änderungen speichern",
|
||||||
"page.member_view.form.action.summon": "Zur Registrierung auffordern",
|
|
||||||
"page.member_view.misc.summoned": "Benachrichtigung verschickt",
|
|
||||||
"page.member_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.member_register.title": "Registrieren",
|
|
||||||
"page.member_register.form.field.email_address.label": "Partei-E-Mail-Adresse einrichten",
|
|
||||||
"page.member_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!",
|
|
||||||
"page.member_register.form.field.email_address.option.none": "keine",
|
|
||||||
"page.member_register.form.field.email_address.option.only_veiled": "nur pseudonymisiert",
|
|
||||||
"page.member_register.form.field.email_address.option.both": "pseudonymisiert und namentlich",
|
|
||||||
"page.member_register.form.field.email_redirect.label": "eingehende E-Mails an private Adresse leiten",
|
|
||||||
"page.member_register.form.field.email_redirect.help": "",
|
|
||||||
"page.member_register.form.field.password_value.label": "Passwort",
|
|
||||||
"page.member_register.form.field.password_value.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.",
|
|
||||||
"page.member_register.form.field.password_confirmation.label": "Passwort wiederholen",
|
|
||||||
"page.member_register.form.field.password_confirmation.help": "",
|
|
||||||
"page.member_register.form.submit": "Abschicken",
|
|
||||||
"page.member_register.flaw.already_registered": "bereits registriert",
|
|
||||||
"page.member_register.flaw.password_mismatch": "die Passwörter stimmen nicht überein",
|
|
||||||
"page.member_register.flaw.password_too_short": "das Passwort muss mindestens {{minimum_length}} Zeichen haben",
|
|
||||||
"page.member_register.flaw.password_too_long": "das Passwort darf höchstens {{maximum_length}} Zeichen haben",
|
|
||||||
"page.member_register.flaw.password_lacks_letter": "das Passwort muss einen Buchstaben beinhalten",
|
|
||||||
"page.member_register.flaw.password_lacks_number": "das Passwort muss eine Zahl beinhalten",
|
|
||||||
"page.member_register.flaw.password_lacks_special_character": "das Passwort muss ein Sonderzeichen beinhalten",
|
|
||||||
"page.member_register.flaw.unhandled_error": "da ist etwas schief gelaufen :/",
|
|
||||||
"page.member_register.success": "Danke!",
|
|
||||||
"page.password_change_init.title": "Passwort ändern",
|
"page.password_change_init.title": "Passwort ändern",
|
||||||
"page.password_change_init.info": "Falls dein Mitglieds-Konto zugeordnet werden kann, wird eine E-Mail mit weiteren Anweisungen an deine private Adresse geschickt.",
|
"page.password_change_init.info": "Falls dein Mitglieds-Konto zugeordnet werden kann, wird eine E-Mail mit weiteren Anweisungen an deine private Adresse geschickt.",
|
||||||
"page.password_change_init.identifier": "Anmelde-Name oder private E-Mail-Adresse",
|
"page.password_change_init.identifier": "Anmelde-Name oder private E-Mail-Adresse",
|
||||||
|
|
@ -92,10 +71,18 @@
|
||||||
"page.invitation_create.title": "Einladung anlegen",
|
"page.invitation_create.title": "Einladung anlegen",
|
||||||
"page.invitation_create.form.field.send_immediatly.label": "Link sofort versenden",
|
"page.invitation_create.form.field.send_immediatly.label": "Link sofort versenden",
|
||||||
"page.invitation_create.form.action.submit": "anlegen",
|
"page.invitation_create.form.action.submit": "anlegen",
|
||||||
|
"page.invitation_view.form.action.delete": "löschen",
|
||||||
"page.invitation_view.title": "Einladung",
|
"page.invitation_view.title": "Einladung",
|
||||||
"page.invitation_handle.title": "Einladung",
|
"page.invitation_handle.title": "Einladung",
|
||||||
"page.invitation_handle.message.invalid": "ungültig",
|
"page.invitation_handle.message.invalid": "ungültig",
|
||||||
"page.invitation_handle.message.successful": "erfolgreich",
|
"page.invitation_handle.message.successful": "erfolgreich; eine E-Mail mit Zugangsdaten wird an die angegebene Adresse geschickt",
|
||||||
"page.invitation_handle.form.action.submit": "annehmen"
|
"page.invitation_handle.form.action.submit": "annehmen",
|
||||||
|
"page.invitation_handle.form.field.password_value.label": "Passwort",
|
||||||
|
"page.invitation_handle.form.field.password_value.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.",
|
||||||
|
"page.invitation_handle.form.field.password_confirmation.label": "Passwort wiederholen",
|
||||||
|
"page.invitation_handle.flaw.already_registered": "bereits registriert",
|
||||||
|
"page.invitation_handle.flaw.password_invalid": "Passwort ungültig",
|
||||||
|
"page.invitation_handle.flaw.password_mismatch": "die Passwörter stimmen nicht überein",
|
||||||
|
"page.invitation_handle.flaw.unhandled_error": "da ist etwas schief gelaufen :/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,93 +9,80 @@
|
||||||
"common.timezone_shift": "timezone shift",
|
"common.timezone_shift": "timezone shift",
|
||||||
"common.date": "date",
|
"common.date": "date",
|
||||||
"common.time": "time",
|
"common.time": "time",
|
||||||
|
"common.loading": "loading …",
|
||||||
|
"common.checking": "checking …",
|
||||||
"domain.group.name.label": "name",
|
"domain.group.name.label": "name",
|
||||||
"domain.group.label.label": "label",
|
"domain.group.label.label": "label",
|
||||||
"domain.member.member": "member",
|
"domain.member.member": "member",
|
||||||
"domain.member.membership_number.label": "membership number",
|
"domain.member.name.label": "login name",
|
||||||
"domain.member.name.label": "name",
|
"domain.member.name.help": "the name for logging in to the online services\n\ncan NOT be changed later on",
|
||||||
"domain.member.label.label": "label",
|
"domain.member.label.label": "display name",
|
||||||
"domain.member.name_real_value.label": "real name",
|
"domain.member.label.help": "how you are displayed\n\ncan be changed later on",
|
||||||
"domain.member.name_real_index.label": "name index",
|
|
||||||
"domain.member.groups.label": "groups",
|
"domain.member.groups.label": "groups",
|
||||||
|
"domain.member.groups.help": "groups, which you belong to",
|
||||||
"domain.member.registered.label": "registered",
|
"domain.member.registered.label": "registered",
|
||||||
"domain.member.enabled.label": "enabled",
|
"domain.member.enabled.label": "enabled",
|
||||||
"domain.member.email_address.label": "e-mail address",
|
"domain.member.email_address.label": "e-mail address",
|
||||||
"domain.member.email_address_private.label": "private e-mail address",
|
"domain.member.email_address.help": "for notifications from services",
|
||||||
"domain.member.email_address_veiled.label": "veiled e-mail address",
|
|
||||||
"domain.member.email_address_nominal.label": "nominal e-mail address",
|
|
||||||
"domain.member.email_redirect_to_private_address.label": "redirect incoming e-mails to private address",
|
|
||||||
"domain.member.email_allow_sending.label": "allow sending e-mails",
|
|
||||||
"domain.member.name_login.label": "login name",
|
|
||||||
"domain.member.password_set.label": "password set",
|
"domain.member.password_set.label": "password set",
|
||||||
"domain.invitation.key.label": "key",
|
"domain.invitation.key.label": "key",
|
||||||
"domain.invitation.expiry.label": "expiration",
|
"domain.invitation.expiry.label": "expiration",
|
||||||
"domain.invitation.url.url": "URL",
|
"domain.invitation.url.url": "URL",
|
||||||
|
"widget.password_policy.title": "password policy",
|
||||||
|
"widget.password_policy.minimum_length": "at least {{minimum_length}} characters",
|
||||||
|
"widget.password_policy.maximum_length": "at most {{maximum_length}} characters",
|
||||||
|
"widget.password_policy.must_contain_letter": "must contain a letter",
|
||||||
|
"widget.password_policy.must_contain_number": "must contain a number",
|
||||||
|
"widget.password_policy.must_contain_special_character": "must contain a special character",
|
||||||
"page.login.title": "login",
|
"page.login.title": "login",
|
||||||
"page.login.name": "name",
|
"page.login.name": "name",
|
||||||
"page.login.password": "password",
|
"page.login.password": "password",
|
||||||
"page.login.submit": "login",
|
"page.login.submit": "login",
|
||||||
"page.logout.title": "logout",
|
"page.logout.title": "logout",
|
||||||
"page.group_list.title": "groups",
|
"page.group_list.title": "groups",
|
||||||
"page.group_create.title": "Create group",
|
"page.group_create.title": "create group",
|
||||||
"page.group_create.form.submit": "submit",
|
"page.group_create.form.submit": "submit",
|
||||||
|
"page.group_view.title": "edit group",
|
||||||
"page.member_create.title": "Create member",
|
"page.member_create.title": "Create member",
|
||||||
"page.member_list.title": "Members",
|
"page.member_list.title": "members",
|
||||||
"page.member_view.title": "Member",
|
"page.member_view.title": "member",
|
||||||
"page.member_view.form.action.save": "save changes",
|
"page.member_view.form.action.save": "save changes",
|
||||||
"page.member_view.form.action.summon": "urge for registration",
|
"page.password_change_init.title": "change Password",
|
||||||
"page.member_view.misc.summoned": "notification sent",
|
"page.password_change_init.info": "in case your member account can be found, an e-mail with further instructions will be sent to your private e-mail address.",
|
||||||
"page.member_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.password_change_init.identifier": "login name or private e-mail address",
|
||||||
"page.member_register.title": "Register",
|
"page.password_change_init.submit": "procede",
|
||||||
"page.member_register.form.field.email_address.label": "Set up party e-mail address",
|
|
||||||
"page.member_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!",
|
|
||||||
"page.member_register.form.field.email_address.option.none": "none",
|
|
||||||
"page.member_register.form.field.email_address.option.only_veiled": "only veiled",
|
|
||||||
"page.member_register.form.field.email_address.option.both": "both, veiled and namely",
|
|
||||||
"page.member_register.form.field.email_redirect.label": "redirect incoming e-mails to private address",
|
|
||||||
"page.member_register.form.field.email_redirect.help": "",
|
|
||||||
"page.member_register.form.field.password_value.label": "password",
|
|
||||||
"page.member_register.form.field.password_value.help": "the password for logging in to the online services\n\nYou should remember, denote or save properly, what you enter here.\n\nIn case you forget or lose the password some day, you can reset it.",
|
|
||||||
"page.member_register.form.field.password_confirmation.label": "confirm password",
|
|
||||||
"page.member_register.form.field.password_confirmation.help": "",
|
|
||||||
"page.member_register.form.submit": "submit",
|
|
||||||
"page.member_register.flaw.already_registered": "already registered",
|
|
||||||
"page.member_register.flaw.password_mismatch": "passwords do not match",
|
|
||||||
"page.member_register.flaw.password_too_short": "the password must have at least {{minimum_length}} characters",
|
|
||||||
"page.member_register.flaw.password_too_long": "the password must not have more than {{maximum_length}} characters",
|
|
||||||
"page.member_register.flaw.password_lacks_letter": "the password must contain a letter",
|
|
||||||
"page.member_register.flaw.password_lacks_number": "the password must contain a number",
|
|
||||||
"page.member_register.flaw.password_lacks_special_character": "the password must contain a special character",
|
|
||||||
"page.member_register.flaw.unhandled_error": "something went wrong :/",
|
|
||||||
"page.member_register.success": "Thanks!",
|
|
||||||
"page.password_change_init.title": "Change Password",
|
|
||||||
"page.password_change_init.info": "In case your member account can be found, an e-mail with further instructions will be sent to your private e-mail address.",
|
|
||||||
"page.password_change_init.identifier": "Login name or private e-mail address",
|
|
||||||
"page.password_change_init.submit": "Procede",
|
|
||||||
"page.password_change_init.status.wait": "just a second …",
|
"page.password_change_init.status.wait": "just a second …",
|
||||||
"page.password_change_init.status.success": "Done. Take a look into your e-mail inbox",
|
"page.password_change_init.status.success": "Done. Take a look into your e-mail inbox",
|
||||||
"page.password_change_init.status.fail": "Something went wrong :/",
|
"page.password_change_init.status.fail": "something went wrong :/",
|
||||||
"page.password_change_exec.title": "Change Password",
|
"page.password_change_exec.title": "change password",
|
||||||
"page.password_change_exec.form.field.password_value.label": "password",
|
"page.password_change_exec.form.field.password_value.label": "password",
|
||||||
"page.password_change_exec.form.field.password_confirmation.label": "confirm password",
|
"page.password_change_exec.form.field.password_confirmation.label": "confirm password",
|
||||||
"page.password_change_exec.form.submit": "Change",
|
"page.password_change_exec.form.submit": "change",
|
||||||
"page.password_change_exec.flaw.token_invalid": "permission expired",
|
"page.password_change_exec.flaw.token_invalid": "permission expired",
|
||||||
"page.password_change_exec.flaw.password_mismatch": "die Passwörter stimmen nicht überein",
|
"page.password_change_exec.flaw.password_mismatch": "the passwords do not match",
|
||||||
"page.password_change_exec.flaw.password_too_short": "das Passwort muss mindestens {{minimum_length}} Zeichen haben",
|
"page.password_change_exec.flaw.password_too_short": "the password must have at least {{minimum_length}} characters",
|
||||||
"page.password_change_exec.flaw.password_too_long": "das Passwort darf höchstens {{maximum_length}} Zeichen haben",
|
"page.password_change_exec.flaw.password_too_long": "the password must have at most {{maximum_length}} characters",
|
||||||
"page.password_change_exec.flaw.password_lacks_letter": "das Passwort muss einen Buchstaben beinhalten",
|
"page.password_change_exec.flaw.password_lacks_letter": "the password must contain a letter",
|
||||||
"page.password_change_exec.flaw.password_lacks_number": "das Passwort muss ein Zahl beinhalten",
|
"page.password_change_exec.flaw.password_lacks_number": "the password must contain a number",
|
||||||
"page.password_change_exec.flaw.password_lacks_special_character": "das Passwort muss ein Sonderzeichen beinhalten",
|
"page.password_change_exec.flaw.password_lacks_special_character": "the password must contain a special character",
|
||||||
"page.password_change_exec.flaw.unhandled_error": "da ist etwas schief gelaufen :/",
|
"page.password_change_exec.flaw.unhandled_error": "something went wrong :/",
|
||||||
"page.password_change_exec.status.success": "done",
|
"page.password_change_exec.status.success": "done",
|
||||||
"page.invitation_list.title": "invitations",
|
"page.invitation_list.title": "invitations",
|
||||||
"page.invitation_create.title": "create invitation",
|
"page.invitation_create.title": "create invitation",
|
||||||
"page.invitation_create.form.field.send_immediatly.label": "send link immediatly",
|
"page.invitation_create.form.field.send_immediatly.label": "send link immediatly",
|
||||||
"page.invitation_create.form.action.submit": "create",
|
"page.invitation_create.form.action.submit": "create",
|
||||||
|
"page.invitation_view.form.action.delete": "delete",
|
||||||
"page.invitation_view.title": "invitation",
|
"page.invitation_view.title": "invitation",
|
||||||
"page.invitation_handle.title": "invitation",
|
"page.invitation_handle.title": "invitation",
|
||||||
"page.invitation_handle.message.invalid": "invalid",
|
"page.invitation_handle.message.invalid": "invalid",
|
||||||
"page.invitation_handle.message.successful": "successful",
|
"page.invitation_handle.message.successful": "successful; an e-mail, containing the credentials, is sent to the provided address",
|
||||||
"page.invitation_handle.form.action.submit": "accept"
|
"page.invitation_handle.form.action.submit": "accept",
|
||||||
|
"page.invitation_handle.form.field.password_value.label": "password",
|
||||||
|
"page.invitation_handle.form.field.password_value.help": "the password for logging in to the online services\n\nyou should remember, denote or save properly, what you enter here.\n\nin case you forget or lose the password some day, you can reset it.",
|
||||||
|
"page.invitation_handle.form.field.password_confirmation.label": "confirm password",
|
||||||
|
"page.invitation_handle.flaw.already_registered": "already registered",
|
||||||
|
"page.invitation_handle.flaw.password_invalid": "invalid password",
|
||||||
|
"page.invitation_handle.flaw.password_mismatch": "passwords do not match",
|
||||||
|
"page.invitation_handle.flaw.unhandled_error": "something went wrong :/"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
namespace _espe.helpers
|
namespace _zackeneule.helpers
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
namespace _espe.logic
|
namespace _zackeneule.logic
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -78,7 +78,7 @@ namespace _espe.logic
|
||||||
label : string;
|
label : string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
> = await _espe.backend.group_list();
|
> = await _zackeneule.backend.group_list();
|
||||||
const pool : Map<int, {name : string; label : string;}> = new Map<int, {name : string; label : string;}>();
|
const pool : Map<int, {name : string; label : string;}> = new Map<int, {name : string; label : string;}>();
|
||||||
const order : Array<int> = new Array<int>();
|
const order : Array<int> = new Array<int>();
|
||||||
for (const entry of array)
|
for (const entry of array)
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ async function update_nav(
|
||||||
options = Object.assign(
|
options = Object.assign(
|
||||||
{
|
{
|
||||||
"mode": (
|
"mode": (
|
||||||
(await _espe.backend.logged_in())
|
(await _zackeneule.backend.logged_in())
|
||||||
? "logged_in"
|
? "logged_in"
|
||||||
: "logged_out"
|
: "logged_out"
|
||||||
),
|
),
|
||||||
|
|
@ -104,9 +104,9 @@ function setup_nav(
|
||||||
async function main(
|
async function main(
|
||||||
) : Promise<void>
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
await _espe.conf.load();
|
await _zackeneule.conf.load();
|
||||||
|
|
||||||
await _espe.backend.init();
|
await _zackeneule.backend.init();
|
||||||
|
|
||||||
await lib_plankton.translate.initialize(
|
await lib_plankton.translate.initialize(
|
||||||
{
|
{
|
||||||
|
|
@ -120,7 +120,7 @@ async function main(
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
await _espe.logic.init();
|
await _zackeneule.logic.init();
|
||||||
|
|
||||||
await lib_plankton.zoo_page.init(
|
await lib_plankton.zoo_page.init(
|
||||||
document.querySelector("main"),
|
document.querySelector("main"),
|
||||||
|
|
@ -130,8 +130,16 @@ async function main(
|
||||||
);
|
);
|
||||||
|
|
||||||
// set title
|
// set title
|
||||||
document.querySelector("header > h1").textContent = _espe.conf.get().settings.title;
|
{
|
||||||
document.querySelector("title").textContent = _espe.conf.get().settings.title;
|
const title : string = lib_plankton.string.coin(
|
||||||
|
"Espe | {{conf_title}}",
|
||||||
|
{
|
||||||
|
"conf_title": _zackeneule.conf.get().settings.title,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
document.querySelector("header > h1").textContent = title;
|
||||||
|
document.querySelector("title").textContent = title;
|
||||||
|
}
|
||||||
|
|
||||||
setup_nav();
|
setup_nav();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"group_create",
|
"group_create",
|
||||||
(parameters, target_element) => {
|
(parameters, target_element) => {
|
||||||
target_element.appendChild(_espe.helpers.template_request("group_create"));
|
target_element.appendChild(_zackeneule.helpers.template_request("group_create"));
|
||||||
|
|
||||||
target_element.querySelector(".group_create-title").textContent = lib_plankton.translate.get("page.group_create.title");
|
target_element.querySelector(".group_create-title").textContent = lib_plankton.translate.get("page.group_create.title");
|
||||||
|
|
||||||
|
|
@ -51,8 +51,9 @@ lib_plankton.zoo_page.register(
|
||||||
"label": lib_plankton.translate.get("page.group_create.form.submit"),
|
"label": lib_plankton.translate.get("page.group_create.form.submit"),
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
const id : int = await _espe.backend.group_add(value);
|
const id : int = await _zackeneule.backend.group_add(value);
|
||||||
lib_plankton.zoo_page.set({"name": "group_view", "parameters": {"id": id}});
|
// lib_plankton.zoo_page.set({"name": "group_view", "parameters": {"id": id}});
|
||||||
|
lib_plankton.zoo_page.set({"name": "group_list", "parameters": {}});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ lib_plankton.zoo_page.register(
|
||||||
};
|
};
|
||||||
const term : (null | string) = (parameters["term"] ?? "");
|
const term : (null | string) = (parameters["term"] ?? "");
|
||||||
|
|
||||||
target_element.appendChild(_espe.helpers.template_request("group_list"));
|
target_element.appendChild(_zackeneule.helpers.template_request("group_list"));
|
||||||
|
|
||||||
target_element.querySelector(".group_list-title").textContent = lib_plankton.translate.get("page.group_list.title");
|
target_element.querySelector(".group_list-title").textContent = lib_plankton.translate.get("page.group_list.title");
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
|
|
||||||
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
||||||
(term) => _espe.backend.group_list(),
|
(term) => _zackeneule.backend.group_list(),
|
||||||
{
|
{
|
||||||
"encode_item": (item) => lib_plankton.string.coin(
|
"encode_item": (item) => lib_plankton.string.coin(
|
||||||
"{{label}}",
|
"{{label}}",
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,11 @@ lib_plankton.zoo_page.register(
|
||||||
async (parameters, target_element) => {
|
async (parameters, target_element) => {
|
||||||
const id : int = parseInt(parameters["id"]);
|
const id : int = parseInt(parameters["id"]);
|
||||||
|
|
||||||
let dom_fragment : DocumentFragment = _espe.helpers.template_request("group_view");
|
let dom_fragment : DocumentFragment = _zackeneule.helpers.template_request("group_view");
|
||||||
|
|
||||||
dom_fragment.querySelector(".group_view-title").textContent = lib_plankton.translate.get("page.group_view.title");
|
dom_fragment.querySelector(".group_view-title").textContent = lib_plankton.translate.get("page.group_view.title");
|
||||||
|
|
||||||
const group_object = await _espe.backend.group_get(id);
|
const group_object = await _zackeneule.backend.group_get(id);
|
||||||
|
|
||||||
const form = new lib_plankton.zoo_form.class_form<
|
const form = new lib_plankton.zoo_form.class_form<
|
||||||
{
|
{
|
||||||
|
|
@ -55,7 +55,7 @@ lib_plankton.zoo_page.register(
|
||||||
"label": lib_plankton.translate.get("page.group_create.form.submit"),
|
"label": lib_plankton.translate.get("page.group_create.form.submit"),
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
await _espe.backend.group_modify(id, value);
|
await _zackeneule.backend.group_modify(id, value);
|
||||||
lib_plankton.zoo_page.set({"name": "group_list", "parameters": {}});
|
lib_plankton.zoo_page.set({"name": "group_list", "parameters": {}});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,13 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"invitation_create",
|
"invitation_create",
|
||||||
async (parameters, target_element) => {
|
async (parameters, target_element) => {
|
||||||
target_element.appendChild(_espe.helpers.template_request("invitation_create"));
|
target_element.appendChild(_zackeneule.helpers.template_request("invitation_create"));
|
||||||
|
|
||||||
target_element.querySelector(".invitation_create-title").textContent = lib_plankton.translate.get("page.invitation_create.title");
|
target_element.querySelector(".invitation_create-title").textContent = lib_plankton.translate.get("page.invitation_create.title");
|
||||||
|
|
||||||
const indent = str => (/*"... " + */str);
|
const indent = str => (/*"... " + */str);
|
||||||
|
|
||||||
const group_data = await _espe.logic.group_data();
|
const group_data = await _zackeneule.logic.group_data();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo unify with form of "invitation_view"
|
* @todo unify with form of "invitation_view"
|
||||||
|
|
@ -92,11 +92,11 @@ lib_plankton.zoo_page.register(
|
||||||
representation => ({
|
representation => ({
|
||||||
"data": {
|
"data": {
|
||||||
"name_changeable": representation.name.changeable,
|
"name_changeable": representation.name.changeable,
|
||||||
"name_value": _espe.helpers.null_when_empty(representation.name.value),
|
"name_value": _zackeneule.helpers.null_when_empty(representation.name.value),
|
||||||
"label_changeable": representation.label.changeable,
|
"label_changeable": representation.label.changeable,
|
||||||
"label_value": _espe.helpers.null_when_empty(representation.label.value),
|
"label_value": _zackeneule.helpers.null_when_empty(representation.label.value),
|
||||||
"email_address_changeable": representation.email_address.changeable,
|
"email_address_changeable": representation.email_address.changeable,
|
||||||
"email_address_value": _espe.helpers.null_when_empty(representation.email_address.value),
|
"email_address_value": _zackeneule.helpers.null_when_empty(representation.email_address.value),
|
||||||
"groups_changeable": representation.groups.changeable,
|
"groups_changeable": representation.groups.changeable,
|
||||||
"groups_value": representation.groups.value,
|
"groups_value": representation.groups.value,
|
||||||
"expiry": (
|
"expiry": (
|
||||||
|
|
@ -171,11 +171,6 @@ lib_plankton.zoo_page.register(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "value",
|
||||||
/*
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_list(
|
|
||||||
() => new lib_plankton.zoo_input.class_input_text()
|
|
||||||
),
|
|
||||||
*/
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
||||||
new lib_plankton.zoo_input.class_input_set(
|
new lib_plankton.zoo_input.class_input_set(
|
||||||
group_data.order.map(
|
group_data.order.map(
|
||||||
|
|
@ -229,17 +224,9 @@ lib_plankton.zoo_page.register(
|
||||||
"label": lib_plankton.translate.get("page.invitation_create.form.action.submit"),
|
"label": lib_plankton.translate.get("page.invitation_create.form.action.submit"),
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
const result : {id : int; key : string;} = await _espe.backend.invitation_create(
|
const result : {id : int; key : string;} = await _zackeneule.backend.invitation_create(
|
||||||
value.data,
|
value.data,
|
||||||
value.send_immediatly,
|
value.send_immediatly
|
||||||
lib_plankton.zoo_page.encode(
|
|
||||||
{
|
|
||||||
"name": "invitation_handle",
|
|
||||||
"parameters": {
|
|
||||||
"key": "{{key}}",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
lib_plankton.zoo_page.set(
|
lib_plankton.zoo_page.set(
|
||||||
false
|
false
|
||||||
|
|
|
||||||
|
|
@ -16,32 +16,57 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"invitation_handle",
|
"invitation_handle",
|
||||||
async (parameters, target_element) => {
|
async (parameters, target_element) => {
|
||||||
function set_state(
|
async function set_state(
|
||||||
state : ("load" | "fill" | "wait" | "done"),
|
state : ("load" | "fill" | "wait" | "error" | "success"),
|
||||||
messages : Array<string> = []
|
messages : Array<string> = []
|
||||||
) : void
|
) : Promise<void>
|
||||||
{
|
{
|
||||||
target_element.querySelector(".invitation_handle").setAttribute("rel", state);
|
target_element.querySelector(".invitation_handle").setAttribute("rel", state);
|
||||||
target_element.querySelector(".invitation_handle-message").textContent = "";
|
target_element.querySelector(".invitation_handle-message").textContent = "";
|
||||||
let dom_list = document.createElement("ul");
|
const class_ = (() => {
|
||||||
messages.forEach(
|
switch (state)
|
||||||
message => {
|
{
|
||||||
let dom_message = document.createElement("li");
|
case "load": return lib_plankton.zoo_widget.class_panel_info;
|
||||||
dom_message.textContent = message;
|
case "wait": return lib_plankton.zoo_widget.class_panel_info;
|
||||||
dom_list.appendChild(dom_message);
|
case "error": return lib_plankton.zoo_widget.class_panel_error;
|
||||||
|
case "success": return lib_plankton.zoo_widget.class_panel_success;
|
||||||
|
default: return lib_plankton.zoo_widget.class_panel;
|
||||||
}
|
}
|
||||||
|
}) ();
|
||||||
|
const widget : lib_plankton.zoo_widget.interface_widget = (
|
||||||
|
(messages.length <= 0)
|
||||||
|
?
|
||||||
|
new lib_plankton.zoo_widget.class_empty()
|
||||||
|
:
|
||||||
|
new class_(
|
||||||
|
(
|
||||||
|
(messages.length === 1)
|
||||||
|
?
|
||||||
|
new lib_plankton.zoo_widget.class_string(messages[0])
|
||||||
|
:
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
messages
|
||||||
|
.map(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
)
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": false,
|
||||||
|
"collapsed_initial_value": false,
|
||||||
|
}
|
||||||
|
)
|
||||||
);
|
);
|
||||||
target_element.querySelector(".invitation_handle-message").appendChild(dom_list);
|
await widget.load(target_element.querySelector(".invitation_handle-message"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// parameters
|
// parameters
|
||||||
const key : string = parameters["key"];
|
const key : string = parameters["key"];
|
||||||
|
|
||||||
update_nav({"mode": null});
|
update_nav({"mode": null});
|
||||||
target_element.appendChild(_espe.helpers.template_request("invitation_handle"));
|
target_element.appendChild(_zackeneule.helpers.template_request("invitation_handle"));
|
||||||
set_state(
|
await set_state(
|
||||||
"load",
|
"load",
|
||||||
[
|
[
|
||||||
|
lib_plankton.translate.get("common.loading"),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -63,7 +88,7 @@ lib_plankton.zoo_page.register(
|
||||||
);
|
);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
data = await _espe.backend.invitation_examine(key);
|
data = await _zackeneule.backend.invitation_examine(key);
|
||||||
}
|
}
|
||||||
catch (error)
|
catch (error)
|
||||||
{
|
{
|
||||||
|
|
@ -72,8 +97,8 @@ lib_plankton.zoo_page.register(
|
||||||
|
|
||||||
if (data === null)
|
if (data === null)
|
||||||
{
|
{
|
||||||
set_state(
|
await set_state(
|
||||||
"done",
|
"error",
|
||||||
[
|
[
|
||||||
lib_plankton.translate.get("page.invitation_handle.message.invalid"),
|
lib_plankton.translate.get("page.invitation_handle.message.invalid"),
|
||||||
]
|
]
|
||||||
|
|
@ -81,7 +106,8 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const group_data = await _espe.logic.group_data();
|
const password_policy : lib_plankton.password.type_policy = await _zackeneule.backend.password_policy();
|
||||||
|
const group_data = await _zackeneule.logic.group_data();
|
||||||
|
|
||||||
const form = new lib_plankton.zoo_form.class_form<
|
const form = new lib_plankton.zoo_form.class_form<
|
||||||
{
|
{
|
||||||
|
|
@ -124,9 +150,21 @@ lib_plankton.zoo_page.register(
|
||||||
"input": new lib_plankton.zoo_input.class_input_text(
|
"input": new lib_plankton.zoo_input.class_input_text(
|
||||||
{
|
{
|
||||||
"read_only": (! data.name_changeable),
|
"read_only": (! data.name_changeable),
|
||||||
|
"pattern": "^[a-z0-9_\.]+$",
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("domain.member.name.label"),
|
"label": lib_plankton.translate.get("domain.member.name.label"),
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
lib_plankton.translate.get("domain.member.name.help")
|
||||||
|
.split("\n\n")
|
||||||
|
.map(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "label",
|
"name": "label",
|
||||||
|
|
@ -136,6 +174,17 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("domain.member.label.label"),
|
"label": lib_plankton.translate.get("domain.member.label.label"),
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
lib_plankton.translate.get("domain.member.label.help")
|
||||||
|
.split("\n\n")
|
||||||
|
.map(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "email_address",
|
"name": "email_address",
|
||||||
|
|
@ -145,27 +194,29 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("domain.member.email_address.label"),
|
"label": lib_plankton.translate.get("domain.member.email_address.label"),
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
lib_plankton.translate.get("domain.member.email_address.help")
|
||||||
|
.split("\n\n")
|
||||||
|
.map(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "groups",
|
"name": "groups",
|
||||||
/*
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_list(
|
|
||||||
() => new lib_plankton.zoo_input.class_input_text(
|
|
||||||
{
|
|
||||||
"read_only": (! data.groups_changeable),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
{
|
|
||||||
"read_only": (! data.groups_changeable),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
*/
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
||||||
new lib_plankton.zoo_input.class_input_set(
|
new lib_plankton.zoo_input.class_input_set(
|
||||||
group_data.order.map(
|
group_data.order.map(
|
||||||
group_id => group_id.toFixed(0)
|
group_id => group_id.toFixed(0)
|
||||||
),
|
),
|
||||||
group_id_encoded => group_data.pool.get(parseInt(group_id_encoded)).label
|
group_id_encoded => group_data.pool.get(parseInt(group_id_encoded)).label,
|
||||||
|
{
|
||||||
|
"read_only": (! data.groups_changeable),
|
||||||
|
}
|
||||||
),
|
),
|
||||||
(value_inner) => {
|
(value_inner) => {
|
||||||
const array : Array<int> = [];
|
const array : Array<int> = [];
|
||||||
|
|
@ -178,19 +229,68 @@ lib_plankton.zoo_page.register(
|
||||||
(value_outer) => new Set<string>(value_outer.map(group_id => group_id.toFixed(0)))
|
(value_outer) => new Set<string>(value_outer.map(group_id => group_id.toFixed(0)))
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("domain.member.groups.label"),
|
"label": lib_plankton.translate.get("domain.member.groups.label"),
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
(
|
||||||
|
lib_plankton.translate.get("domain.member.groups.help")
|
||||||
|
.split("\n\n")
|
||||||
|
.map(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
)
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "password_value",
|
"name": "password_value",
|
||||||
"input": new lib_plankton.zoo_input.class_input_password(
|
"input": new lib_plankton.zoo_input.class_input_password(
|
||||||
|
{
|
||||||
|
"exhibit_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
"label": lib_plankton.translate.get("page.invitation_handle.form.field.password_value.label"),
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_list(
|
||||||
|
(
|
||||||
|
lib_plankton.translate.get("page.invitation_handle.form.field.password_value.help")
|
||||||
|
.split("\n\n")
|
||||||
|
.map<lib_plankton.zoo_widget.interface_widget>(x => new lib_plankton.zoo_widget.class_string(x))
|
||||||
|
)
|
||||||
|
.concat(
|
||||||
|
[
|
||||||
|
new _zackeneule.widget.password_policy.class_password_policy(
|
||||||
|
password_policy,
|
||||||
|
{
|
||||||
|
"title": "Richtlinien",
|
||||||
|
}
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("page.member_register.form.field.password_value.label"),
|
|
||||||
"help": lib_plankton.translate.get("page.member_register.form.field.password_value.help"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "password_confirmation",
|
"name": "password_confirmation",
|
||||||
"input": new lib_plankton.zoo_input.class_input_password(
|
"input": new lib_plankton.zoo_input.class_input_password(
|
||||||
),
|
),
|
||||||
"label": lib_plankton.translate.get("page.member_register.form.field.password_confirmation.label"),
|
"label": lib_plankton.translate.get("page.invitation_handle.form.field.password_confirmation.label"),
|
||||||
|
/*
|
||||||
|
"help": new lib_plankton.zoo_widget.class_panel_info(
|
||||||
|
new lib_plankton.zoo_widget.class_string(
|
||||||
|
lib_plankton.translate.get("page.invitation_handle.form.field.password_confirmation.help")
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"collapseable": true,
|
||||||
|
"collapsed_initial_value": true,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|
@ -200,9 +300,10 @@ lib_plankton.zoo_page.register(
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
let flaws : Array<{incident : string; details : Record<string, any>;}>;
|
let flaws : Array<{incident : string; details : Record<string, any>;}>;
|
||||||
set_state(
|
await set_state(
|
||||||
"wait",
|
"wait",
|
||||||
[
|
[
|
||||||
|
lib_plankton.translate.get("common.checking"),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
if (value.password_value !== value.password_confirmation)
|
if (value.password_value !== value.password_confirmation)
|
||||||
|
|
@ -215,7 +316,7 @@ lib_plankton.zoo_page.register(
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
flaws = await _espe.backend.invitation_accept(
|
const flaws_ = await _zackeneule.backend.invitation_accept(
|
||||||
key,
|
key,
|
||||||
{
|
{
|
||||||
"label": value.label,
|
"label": value.label,
|
||||||
|
|
@ -225,6 +326,21 @@ lib_plankton.zoo_page.register(
|
||||||
"password": value.password_value,
|
"password": value.password_value,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
flaws = (
|
||||||
|
(
|
||||||
|
flaws_
|
||||||
|
.filter(
|
||||||
|
flaw => (! flaw.incident.startsWith("password_"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.concat(
|
||||||
|
(flaws_.find(flaw => flaw.incident.startsWith("password_")) !== undefined)
|
||||||
|
?
|
||||||
|
[{"incident": "password_invalid", "details": {}}]
|
||||||
|
:
|
||||||
|
[]
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
catch (error)
|
catch (error)
|
||||||
{
|
{
|
||||||
|
|
@ -235,11 +351,11 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
if (flaws.length > 0)
|
if (flaws.length > 0)
|
||||||
{
|
{
|
||||||
set_state(
|
await set_state(
|
||||||
"fill",
|
"error",
|
||||||
flaws.map(
|
flaws.map(
|
||||||
flaw => lib_plankton.string.coin(
|
flaw => lib_plankton.string.coin(
|
||||||
lib_plankton.translate.get("page.member_register.flaw." + flaw.incident),
|
lib_plankton.translate.get("page.invitation_handle.flaw." + flaw.incident),
|
||||||
flaw.details
|
flaw.details
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -247,10 +363,9 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
set_state(
|
await set_state(
|
||||||
"done",
|
"success",
|
||||||
[
|
[
|
||||||
// lib_plankton.translate.get("page.member_register.success")
|
|
||||||
lib_plankton.translate.get("page.invitation_handle.message.successful"),
|
lib_plankton.translate.get("page.invitation_handle.message.successful"),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
@ -266,7 +381,7 @@ lib_plankton.zoo_page.register(
|
||||||
"label": data.label_value,
|
"label": data.label_value,
|
||||||
"email_address": data.email_address_value,
|
"email_address": data.email_address_value,
|
||||||
"groups": data.groups_value,
|
"groups": data.groups_value,
|
||||||
"password_value": "",
|
"password_value": lib_plankton.password.generate(password_policy),
|
||||||
"password_confirmation": "",
|
"password_confirmation": "",
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,25 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
.invitation_handle-message
|
||||||
|
{
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
.invitation_handle:not([rel]) .invitation_handle-message {display: none;}
|
.invitation_handle:not([rel]) .invitation_handle-message {display: none;}
|
||||||
.invitation_handle:not([rel]) .invitation_handle-form {display: none;}
|
.invitation_handle:not([rel]) .invitation_handle-form {display: none;}
|
||||||
|
|
||||||
|
.invitation_handle[rel="load"] .invitation_handle-message {}
|
||||||
|
.invitation_handle[rel="load"] .invitation_handle-form {display: none;}
|
||||||
|
|
||||||
.invitation_handle[rel="fill"] .invitation_handle-message {}
|
.invitation_handle[rel="fill"] .invitation_handle-message {}
|
||||||
.invitation_handle[rel="fill"] .invitation_handle-form {}
|
.invitation_handle[rel="fill"] .invitation_handle-form {}
|
||||||
|
|
||||||
.invitation_handle[rel="wait"] .invitation_handle-message {}
|
.invitation_handle[rel="wait"] .invitation_handle-message {}
|
||||||
.invitation_handle[rel="wait"] .invitation_handle-form {display: none;}
|
.invitation_handle[rel="wait"] .invitation_handle-form {display: none;}
|
||||||
|
|
||||||
.invitation_handle[rel="done"] .invitation_handle-message {}
|
.invitation_handle[rel="error"] .invitation_handle-message {}
|
||||||
.invitation_handle[rel="done"] .invitation_handle-form {display: none;}
|
.invitation_handle[rel="error"] .invitation_handle-form {}
|
||||||
|
|
||||||
|
.invitation_handle[rel="success"] .invitation_handle-message {}
|
||||||
|
.invitation_handle[rel="success"] .invitation_handle-form {display: none;}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ lib_plankton.zoo_page.register(
|
||||||
const term : (null | string) = (parameters["term"] ?? "");
|
const term : (null | string) = (parameters["term"] ?? "");
|
||||||
|
|
||||||
// exec
|
// exec
|
||||||
target_element.appendChild(_espe.helpers.template_request("invitation_list"));
|
target_element.appendChild(_zackeneule.helpers.template_request("invitation_list"));
|
||||||
|
|
||||||
target_element.querySelector(".invitation_list-title").textContent = lib_plankton.translate.get("page.invitation_list.title");
|
target_element.querySelector(".invitation_list-title").textContent = lib_plankton.translate.get("page.invitation_list.title");
|
||||||
|
|
||||||
|
|
@ -52,13 +52,14 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
|
|
||||||
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
||||||
(term) => _espe.backend.invitation_list(),
|
(term) => _zackeneule.backend.invitation_list(),
|
||||||
{
|
{
|
||||||
"encode_item": (item) => lib_plankton.string.coin(
|
"encode_item": (item) => (
|
||||||
"{{label}}",
|
item.preview.label_value
|
||||||
{
|
??
|
||||||
"label": item.preview.label_value,
|
item.preview.name_value
|
||||||
}
|
??
|
||||||
|
lib_plankton.string.coin("[{{id}}]", {"id": item.id.toFixed(0)})
|
||||||
),
|
),
|
||||||
"hooks_begin": [
|
"hooks_begin": [
|
||||||
(term) => {
|
(term) => {
|
||||||
|
|
@ -97,7 +98,7 @@ lib_plankton.zoo_page.register(
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
const data = await _espe.backend.invitation_list();
|
const data = await _zackeneule.backend.invitation_list();
|
||||||
(target_element.querySelector(".invitation_list-data") as HTMLElement).textContent = JSON.stringify(
|
(target_element.querySelector(".invitation_list-data") as HTMLElement).textContent = JSON.stringify(
|
||||||
data,
|
data,
|
||||||
undefined,
|
undefined,
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ lib_plankton.zoo_page.register(
|
||||||
// parameters
|
// parameters
|
||||||
const id : int = parseInt(parameters["id"]);
|
const id : int = parseInt(parameters["id"]);
|
||||||
|
|
||||||
target_element.appendChild(_espe.helpers.template_request("invitation_view"));
|
target_element.appendChild(_zackeneule.helpers.template_request("invitation_view"));
|
||||||
|
|
||||||
target_element.querySelector(".invitation_view-title").textContent = lib_plankton.translate.get("page.invitation_view.title");
|
target_element.querySelector(".invitation_view-title").textContent = lib_plankton.translate.get("page.invitation_view.title");
|
||||||
|
|
||||||
|
|
@ -48,7 +48,7 @@ lib_plankton.zoo_page.register(
|
||||||
label : string;
|
label : string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
> = await _espe.backend.group_list();
|
> = await _zackeneule.backend.group_list();
|
||||||
const groups_as_map : Map<
|
const groups_as_map : Map<
|
||||||
int,
|
int,
|
||||||
{
|
{
|
||||||
|
|
@ -152,7 +152,7 @@ lib_plankton.zoo_page.register(
|
||||||
"label_changeable": representation.label.changeable,
|
"label_changeable": representation.label.changeable,
|
||||||
"label_value": representation.label.value,
|
"label_value": representation.label.value,
|
||||||
"email_address_changeable": representation.email_address.changeable,
|
"email_address_changeable": representation.email_address.changeable,
|
||||||
"email_address_value": _espe.helpers.null_when_empty(representation.email_address.value),
|
"email_address_value": _zackeneule.helpers.null_when_empty(representation.email_address.value),
|
||||||
"groups_changeable": representation.groups.changeable,
|
"groups_changeable": representation.groups.changeable,
|
||||||
"groups_value": representation.groups.value,
|
"groups_value": representation.groups.value,
|
||||||
"url": "",
|
"url": "",
|
||||||
|
|
@ -161,7 +161,7 @@ lib_plankton.zoo_page.register(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "url",
|
"name": "url",
|
||||||
"input": new lib_plankton.zoo_input.class_input_text({"read_only": true}),
|
"input": new lib_plankton.zoo_input.class_input_text({"read_only": false}),
|
||||||
"label": lib_plankton.translate.get("domain.invitation.url.label"),
|
"label": lib_plankton.translate.get("domain.invitation.url.label"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -193,7 +193,7 @@ lib_plankton.zoo_page.register(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "value",
|
||||||
"input": new lib_plankton.zoo_input.class_input_text(),
|
"input": new lib_plankton.zoo_input.class_input_text({"read_only": true}),
|
||||||
"label": indent(lib_plankton.translate.get("common.initial_value")),
|
"label": indent(lib_plankton.translate.get("common.initial_value")),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -229,18 +229,13 @@ lib_plankton.zoo_page.register(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "value",
|
"name": "value",
|
||||||
/*
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_list(
|
|
||||||
() => new lib_plankton.zoo_input.class_input_text(),
|
|
||||||
{"read_only": true}
|
|
||||||
),
|
|
||||||
*/
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
||||||
new lib_plankton.zoo_input.class_input_set(
|
new lib_plankton.zoo_input.class_input_set(
|
||||||
groups_as_array.map(
|
groups_as_array.map(
|
||||||
group_thingy => group_thingy.id.toFixed(0)
|
group_thingy => group_thingy.id.toFixed(0)
|
||||||
),
|
),
|
||||||
group_id_encoded => groups_as_map.get(parseInt(group_id_encoded)).label
|
group_id_encoded => groups_as_map.get(parseInt(group_id_encoded)).label,
|
||||||
|
{"read_only": true}
|
||||||
),
|
),
|
||||||
(value_inner) => {
|
(value_inner) => {
|
||||||
const array : Array<int> = [];
|
const array : Array<int> = [];
|
||||||
|
|
@ -280,6 +275,19 @@ lib_plankton.zoo_page.register(
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
"label": lib_plankton.translate.get("page.invitation_view.form.action.delete"),
|
||||||
|
"procedure": async () => {
|
||||||
|
await _zackeneule.backend.invitation_delete(id);
|
||||||
|
lib_plankton.zoo_page.set(
|
||||||
|
{
|
||||||
|
"name": "invitation_list",
|
||||||
|
"parameters": {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
await form.setup(target_element.querySelector(".invitation_view-form") as HTMLElement);
|
await form.setup(target_element.querySelector(".invitation_view-form") as HTMLElement);
|
||||||
|
|
@ -295,7 +303,7 @@ lib_plankton.zoo_page.register(
|
||||||
email_address_value : (null | string);
|
email_address_value : (null | string);
|
||||||
groups_changeable : boolean;
|
groups_changeable : boolean;
|
||||||
groups_value : Array<int>;
|
groups_value : Array<int>;
|
||||||
} = await _espe.backend.invitation_read(id);
|
} = await _zackeneule.backend.invitation_read(id);
|
||||||
|
|
||||||
form.input_write(data);
|
form.input_write(data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"login",
|
"login",
|
||||||
(parameters, target_element) => {
|
(parameters, target_element) => {
|
||||||
target_element.appendChild(_espe.helpers.template_request("login"));
|
target_element.appendChild(_zackeneule.helpers.template_request("login"));
|
||||||
|
|
||||||
target_element.querySelector(".login-title").textContent = lib_plankton.translate.get("page.login.title");
|
target_element.querySelector(".login-title").textContent = lib_plankton.translate.get("page.login.title");
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ lib_plankton.zoo_page.register(
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
(
|
(
|
||||||
_espe.backend.login(value.name, value.password)
|
_zackeneule.backend.login(value.name, value.password)
|
||||||
.then(
|
.then(
|
||||||
() => {
|
() => {
|
||||||
lib_plankton.zoo_page.set({"name": "member_list", "parameters": {}});
|
lib_plankton.zoo_page.set({"name": "member_list", "parameters": {}});
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"logout",
|
"logout",
|
||||||
async (parameters, target_element) => {
|
async (parameters, target_element) => {
|
||||||
await _espe.backend.logout();
|
await _zackeneule.backend.logout();
|
||||||
lib_plankton.zoo_page.set({"name": "index", "parameters": {}});
|
lib_plankton.zoo_page.set({"name": "index", "parameters": {}});
|
||||||
update_nav({"mode": "logged_out"});
|
update_nav({"mode": "logged_out"});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ lib_plankton.zoo_page.register(
|
||||||
};
|
};
|
||||||
const term : (null | string) = (parameters["term"] ?? "");
|
const term : (null | string) = (parameters["term"] ?? "");
|
||||||
|
|
||||||
target_element.appendChild(_espe.helpers.template_request("member_list"));
|
target_element.appendChild(_zackeneule.helpers.template_request("member_list"));
|
||||||
|
|
||||||
target_element.querySelector(".member_list-title").textContent = lib_plankton.translate.get("page.member_list.title");
|
target_element.querySelector(".member_list-title").textContent = lib_plankton.translate.get("page.member_list.title");
|
||||||
|
|
||||||
|
|
@ -48,7 +48,7 @@ lib_plankton.zoo_page.register(
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
const search : lib_plankton.zoo_search.type_search<type_item> = lib_plankton.zoo_search.make<type_item>(
|
||||||
(term) => _espe.backend.member_list(term),
|
(term) => _zackeneule.backend.member_list(term),
|
||||||
{
|
{
|
||||||
"encode_item": (item) => lib_plankton.string.coin(
|
"encode_item": (item) => lib_plankton.string.coin(
|
||||||
"{{label}}",
|
"{{label}}",
|
||||||
|
|
|
||||||
|
|
@ -18,13 +18,13 @@ lib_plankton.zoo_page.register(
|
||||||
async (parameters, target_element) => {
|
async (parameters, target_element) => {
|
||||||
const id : int = parseInt(parameters["id"]);
|
const id : int = parseInt(parameters["id"]);
|
||||||
|
|
||||||
let dom_fragment : DocumentFragment = _espe.helpers.template_request("member_view");
|
let dom_fragment : DocumentFragment = _zackeneule.helpers.template_request("member_view");
|
||||||
|
|
||||||
dom_fragment.querySelector(".member_view-title").textContent = lib_plankton.translate.get("page.member_view.title");
|
dom_fragment.querySelector(".member_view-title").textContent = lib_plankton.translate.get("page.member_view.title");
|
||||||
|
|
||||||
const group_data = await _espe.logic.group_data();
|
const group_data = await _zackeneule.logic.group_data();
|
||||||
|
|
||||||
const member_data = await _espe.backend.member_get(id);
|
const member_data = await _zackeneule.backend.member_get(id);
|
||||||
|
|
||||||
const form = new lib_plankton.zoo_form.class_form<
|
const form = new lib_plankton.zoo_form.class_form<
|
||||||
{
|
{
|
||||||
|
|
@ -89,11 +89,6 @@ lib_plankton.zoo_page.register(
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "groups",
|
"name": "groups",
|
||||||
/*
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_list(
|
|
||||||
() => new lib_plankton.zoo_input.class_input_number()
|
|
||||||
),
|
|
||||||
*/
|
|
||||||
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
"input": new lib_plankton.zoo_input.class_input_wrapped<Set<string>, Array<int>>(
|
||||||
new lib_plankton.zoo_input.class_input_set(
|
new lib_plankton.zoo_input.class_input_set(
|
||||||
group_data.order.map(
|
group_data.order.map(
|
||||||
|
|
@ -121,7 +116,7 @@ lib_plankton.zoo_page.register(
|
||||||
"label": lib_plankton.translate.get("page.member_view.form.action.save"),
|
"label": lib_plankton.translate.get("page.member_view.form.action.save"),
|
||||||
"procedure": async (get_value, get_representation) => {
|
"procedure": async (get_value, get_representation) => {
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
await _espe.backend.member_modify(
|
await _zackeneule.backend.member_modify(
|
||||||
id,
|
id,
|
||||||
{
|
{
|
||||||
"label": value.label,
|
"label": value.label,
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ lib_plankton.zoo_page.register(
|
||||||
const token : string = parameters.token;
|
const token : string = parameters.token;
|
||||||
|
|
||||||
update_nav({"mode": null});
|
update_nav({"mode": null});
|
||||||
target_element.appendChild(_espe.helpers.template_request("password_change_exec"));
|
target_element.appendChild(_zackeneule.helpers.template_request("password_change_exec"));
|
||||||
target_element.querySelector(".password_change_exec-title").textContent = lib_plankton.translate.get("page.password_change_exec.title");
|
target_element.querySelector(".password_change_exec-title").textContent = lib_plankton.translate.get("page.password_change_exec.title");
|
||||||
set_state(
|
set_state(
|
||||||
"load",
|
"load",
|
||||||
|
|
@ -90,7 +90,7 @@ lib_plankton.zoo_page.register(
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
flaws = await _espe.backend.member_password_change_execute(
|
flaws = await _zackeneule.backend.member_password_change_execute(
|
||||||
id,
|
id,
|
||||||
token,
|
token,
|
||||||
value.password_value
|
value.password_value
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
lib_plankton.zoo_page.register(
|
lib_plankton.zoo_page.register(
|
||||||
"password_change_init",
|
"password_change_init",
|
||||||
(parameters, target_element) => {
|
(parameters, target_element) => {
|
||||||
target_element.appendChild(_espe.helpers.template_request("password_change_init"));
|
target_element.appendChild(_zackeneule.helpers.template_request("password_change_init"));
|
||||||
|
|
||||||
target_element.querySelector(".password_change_init-title").textContent = lib_plankton.translate.get("page.password_change_init.title");
|
target_element.querySelector(".password_change_init-title").textContent = lib_plankton.translate.get("page.password_change_init.title");
|
||||||
target_element.querySelector(".password_change_init-info").textContent = lib_plankton.translate.get("page.password_change_init.info");
|
target_element.querySelector(".password_change_init-info").textContent = lib_plankton.translate.get("page.password_change_init.info");
|
||||||
|
|
@ -49,17 +49,8 @@ lib_plankton.zoo_page.register(
|
||||||
target_element.querySelector(".password_change_init-stat").textContent = lib_plankton.translate.get("page.password_change_init.status.wait");
|
target_element.querySelector(".password_change_init-stat").textContent = lib_plankton.translate.get("page.password_change_init.status.wait");
|
||||||
const value = await get_value();
|
const value = await get_value();
|
||||||
(
|
(
|
||||||
_espe.backend.member_password_change_initialize(
|
_zackeneule.backend.member_password_change_initialize(
|
||||||
value.identifier,
|
value.identifier
|
||||||
lib_plankton.zoo_page.encode(
|
|
||||||
{
|
|
||||||
"name": "password_change_exec",
|
|
||||||
"parameters": {
|
|
||||||
"id": "{{id}}",
|
|
||||||
"token": "{{token}}",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
.then(
|
.then(
|
||||||
() => {
|
() => {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
<https://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace _espe.backend
|
namespace _zackeneule.backend
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -85,10 +85,10 @@ namespace _espe.backend
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin(
|
||||||
("{{scheme}}://{{host}}:{{port}}{{path_base}}{{path_action}}"),
|
("{{scheme}}://{{host}}:{{port}}{{path_base}}{{path_action}}"),
|
||||||
{
|
{
|
||||||
"scheme": _espe.conf.get().backend.scheme,
|
"scheme": _zackeneule.conf.get().backend.scheme,
|
||||||
"host": _espe.conf.get().backend.host,
|
"host": _zackeneule.conf.get().backend.host,
|
||||||
"port": _espe.conf.get().backend.port.toFixed(0),
|
"port": _zackeneule.conf.get().backend.port.toFixed(0),
|
||||||
"path_base": _espe.conf.get().backend.path_base,
|
"path_base": _zackeneule.conf.get().backend.path_base,
|
||||||
"path_action": path,
|
"path_action": path,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
|
@ -166,65 +166,21 @@ namespace _espe.backend
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export async function email(
|
export async function password_policy(
|
||||||
receivers : Array<string>,
|
) : Promise<
|
||||||
subject : string,
|
{
|
||||||
content : string
|
minimum_length : (null | int);
|
||||||
) : Promise<void>
|
maximum_length : (null | int);
|
||||||
|
must_contain_letter : boolean;
|
||||||
|
must_contain_number : boolean;
|
||||||
|
must_contain_special_character : boolean;
|
||||||
|
}
|
||||||
|
>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
abstract_call(
|
abstract_call(
|
||||||
"POST",
|
"GET",
|
||||||
"/email",
|
"/password_policy"
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"receivers": receivers,
|
|
||||||
"subject": subject,
|
|
||||||
"content": content,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export async function verification_get(
|
|
||||||
data : any
|
|
||||||
) : Promise<string>
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
abstract_call(
|
|
||||||
"POST",
|
|
||||||
"/verification/get",
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"data": data,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
export async function verification_check(
|
|
||||||
data : any,
|
|
||||||
verification : string
|
|
||||||
) : Promise<boolean>
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
abstract_call(
|
|
||||||
"POST",
|
|
||||||
"/verification/check",
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"data": data,
|
|
||||||
"verification": verification,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -268,7 +224,7 @@ namespace _espe.backend
|
||||||
return (
|
return (
|
||||||
abstract_call(
|
abstract_call(
|
||||||
"GET",
|
"GET",
|
||||||
("/group/read/" + group_id.toFixed(0))
|
lib_plankton.string.coin("/group/read/{{id}}", {"id": group_id.toFixed(0)})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -311,7 +267,7 @@ namespace _espe.backend
|
||||||
return (
|
return (
|
||||||
abstract_call(
|
abstract_call(
|
||||||
"PATCH",
|
"PATCH",
|
||||||
("/group/modify/" + group_id.toFixed(0)),
|
lib_plankton.string.coin("/group/modify/{{id}}", {"id": group_id.toFixed(0)}),
|
||||||
{
|
{
|
||||||
"data": group_object_data
|
"data": group_object_data
|
||||||
}
|
}
|
||||||
|
|
@ -362,7 +318,7 @@ namespace _espe.backend
|
||||||
{
|
{
|
||||||
return abstract_call(
|
return abstract_call(
|
||||||
"GET",
|
"GET",
|
||||||
("/member/read/" + id.toFixed(0))
|
lib_plankton.string.coin("/member/read/{{id}}", {"id": id.toFixed(0)})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -381,7 +337,7 @@ namespace _espe.backend
|
||||||
{
|
{
|
||||||
return abstract_call(
|
return abstract_call(
|
||||||
"PATCH",
|
"PATCH",
|
||||||
("/member/modify/" + id.toFixed(0)),
|
lib_plankton.string.coin("/member/modify/{{id}}", {"id": id.toFixed(0)}),
|
||||||
{
|
{
|
||||||
"data": data
|
"data": data
|
||||||
}
|
}
|
||||||
|
|
@ -392,8 +348,7 @@ namespace _espe.backend
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export async function member_password_change_initialize(
|
export async function member_password_change_initialize(
|
||||||
identifier : string,
|
identifier : string
|
||||||
url_template : string
|
|
||||||
) : Promise<string>
|
) : Promise<string>
|
||||||
{
|
{
|
||||||
return (
|
return (
|
||||||
|
|
@ -402,8 +357,7 @@ namespace _espe.backend
|
||||||
"/member/password_change/initialize",
|
"/member/password_change/initialize",
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"identifier": identifier,
|
"identifier": identifier
|
||||||
"url_template": url_template,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
@ -429,7 +383,7 @@ namespace _espe.backend
|
||||||
return (
|
return (
|
||||||
abstract_call(
|
abstract_call(
|
||||||
"PATCH",
|
"PATCH",
|
||||||
("/member/password_change/execute/" + id.toFixed(0)),
|
lib_plankton.string.coin("/member/password_change/execute/{{id}}", {"id": id.toFixed(0)}),
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"token": token,
|
"token": token,
|
||||||
|
|
@ -493,12 +447,7 @@ namespace _espe.backend
|
||||||
{
|
{
|
||||||
return abstract_call(
|
return abstract_call(
|
||||||
"GET",
|
"GET",
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin("/invitation/read/{{id}}", {"id": id.toFixed(0)})
|
||||||
"/invitation/read?id={{id}}",
|
|
||||||
{
|
|
||||||
"id": id.toFixed(0),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -518,7 +467,6 @@ namespace _espe.backend
|
||||||
expiry : (null | int);
|
expiry : (null | int);
|
||||||
},
|
},
|
||||||
send_immediatly : boolean,
|
send_immediatly : boolean,
|
||||||
notification_target_url_template : (null | string)
|
|
||||||
) : Promise<
|
) : Promise<
|
||||||
{
|
{
|
||||||
id : int;
|
id : int;
|
||||||
|
|
@ -532,7 +480,6 @@ namespace _espe.backend
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"data": data,
|
"data": data,
|
||||||
"notification_target_url_template": notification_target_url_template,
|
|
||||||
"send_immediatly": send_immediatly,
|
"send_immediatly": send_immediatly,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -540,6 +487,19 @@ namespace _espe.backend
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export async function invitation_delete(
|
||||||
|
id : int
|
||||||
|
) : Promise<void>
|
||||||
|
{
|
||||||
|
return abstract_call(
|
||||||
|
"DELETE",
|
||||||
|
lib_plankton.string.coin("/invitation/delete/{{id}}", {"id": id.toFixed(0)}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*/
|
*/
|
||||||
export async function invitation_examine(
|
export async function invitation_examine(
|
||||||
|
|
@ -559,12 +519,7 @@ namespace _espe.backend
|
||||||
{
|
{
|
||||||
return abstract_call(
|
return abstract_call(
|
||||||
"GET",
|
"GET",
|
||||||
lib_plankton.string.coin(
|
lib_plankton.string.coin("/invitation/examine?key={{key}}", {"key": key})
|
||||||
"/invitation/examine?key={{key}}",
|
|
||||||
{
|
|
||||||
"key": key
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ You should have received a copy of the GNU General Public License along with thi
|
||||||
<https://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace _espe.conf
|
namespace _zackeneule.conf
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,78 @@ nav > ul > li:hover::after
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
.widget-panel
|
||||||
|
{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel-rule
|
||||||
|
{
|
||||||
|
flex-basis: 2%;
|
||||||
|
|
||||||
|
min-height: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel-content
|
||||||
|
{
|
||||||
|
flex-basis: 98%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel:not(.widget-panel-collapsed)
|
||||||
|
{
|
||||||
|
padding: 8px;
|
||||||
|
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel:not(.widget-panel-collapsed) > .widget-panel-rule
|
||||||
|
{
|
||||||
|
border-left: 4px solid hsl(var(--hue), 0%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel.widget-panel-collapsed > .widget-panel-rule::after
|
||||||
|
{
|
||||||
|
content: "(?)";
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel.widget-panel-collapsed > .widget-panel-content
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-list
|
||||||
|
{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel_info:not(.widget-panel-collapsed)
|
||||||
|
{
|
||||||
|
background-color: hsl(240, 25%, 25%);
|
||||||
|
color: hsl(240, 50%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel_warning:not(.widget-panel-collapsed)
|
||||||
|
{
|
||||||
|
background-color: hsl(60, 25%, 25%);
|
||||||
|
color: hsl(60, 50%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel_error:not(.widget-panel-collapsed)
|
||||||
|
{
|
||||||
|
background-color: hsl(0, 25%, 25%);
|
||||||
|
color: hsl(0, 50%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-panel_success:not(.widget-panel-collapsed)
|
||||||
|
{
|
||||||
|
background-color: hsl(120, 25%, 25%);
|
||||||
|
color: hsl(120, 50%, 75%);
|
||||||
|
}
|
||||||
|
|
||||||
.plankton_form_field
|
.plankton_form_field
|
||||||
{
|
{
|
||||||
margin-bottom: 16px;
|
margin-bottom: 16px;
|
||||||
|
|
@ -174,6 +246,7 @@ nav > ul > li:hover::after
|
||||||
{
|
{
|
||||||
display: block;
|
display: block;
|
||||||
margin: 8px;
|
margin: 8px;
|
||||||
|
text-transform: capitalize;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plankton_search_item
|
.plankton_search_item
|
||||||
|
|
@ -181,9 +254,55 @@ nav > ul > li:hover::after
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.plankton_input_password_input
|
||||||
|
{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_password_exhibit
|
||||||
|
{
|
||||||
|
margin: 8px;
|
||||||
|
padding: 8px;
|
||||||
|
background-color: hsla(var(--hue), 0%, 0%, 50%);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-block;
|
||||||
|
font-weight: bold;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_password_exhibit::before
|
||||||
|
{
|
||||||
|
"content": "[";
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_password_exhibit::after
|
||||||
|
{
|
||||||
|
"content": "[";
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_group_field_help_content
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
font-size: 0.75em;
|
||||||
|
margin-top: 4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
.plankton_input_group_field.plankton_input_group_field_help_active > .plankton_input_group_field_help_content
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
.plankton_input_group_field:not(.plankton_input_group_field_help_active) > .plankton_input_group_field_help_content
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
.plankton_input_group_field
|
.plankton_input_group_field
|
||||||
{
|
{
|
||||||
margin-bottom: 16px;
|
margin-bottom: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.plankton_input_group_field_label
|
.plankton_input_group_field_label
|
||||||
|
|
|
||||||
152
source/widgets/password_policy/logic.ts
Normal file
152
source/widgets/password_policy/logic.ts
Normal file
|
|
@ -0,0 +1,152 @@
|
||||||
|
/*
|
||||||
|
Espe | Ein schlichtes Werkzeug zur Mitglieder-Verwaltung | Frontend
|
||||||
|
Copyright (C) 2024 Christian Fraß
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later
|
||||||
|
version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along with this program. If not, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
namespace _zackeneule.widget.password_policy
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
export class class_password_policy implements lib_plankton.zoo_widget.interface_widget
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
private data : lib_plankton.password.type_policy;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
private title : (null | string);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
public constructor(
|
||||||
|
data : lib_plankton.password.type_policy,
|
||||||
|
{
|
||||||
|
"title": title = lib_plankton.translate.get("widget.password_policy.title"),
|
||||||
|
}
|
||||||
|
:
|
||||||
|
{
|
||||||
|
title ?: (null | string);
|
||||||
|
}
|
||||||
|
=
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{
|
||||||
|
this.data = data;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
public load(
|
||||||
|
target_element : Element
|
||||||
|
) : Promise<void>
|
||||||
|
{
|
||||||
|
const entries : Array<string> = (
|
||||||
|
[]
|
||||||
|
// minimum_length
|
||||||
|
.concat(
|
||||||
|
(this.data.minimum_length === null)
|
||||||
|
?
|
||||||
|
[]
|
||||||
|
:
|
||||||
|
lib_plankton.translate.get(
|
||||||
|
"widget.password_policy.minimum_length",
|
||||||
|
{
|
||||||
|
"minimum_length": this.data.minimum_length.toFixed(0),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// maximum_length
|
||||||
|
.concat(
|
||||||
|
(this.data.minimum_length === null)
|
||||||
|
?
|
||||||
|
[]
|
||||||
|
:
|
||||||
|
lib_plankton.translate.get(
|
||||||
|
"widget.password_policy.maximum_length",
|
||||||
|
{
|
||||||
|
"maximum_length": this.data.maximum_length.toFixed(0),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// must_contain_letter
|
||||||
|
.concat(
|
||||||
|
(! this.data.must_contain_letter)
|
||||||
|
?
|
||||||
|
[]
|
||||||
|
:
|
||||||
|
lib_plankton.translate.get(
|
||||||
|
"widget.password_policy.must_contain_letter",
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// must_contain_number
|
||||||
|
.concat(
|
||||||
|
(! this.data.must_contain_number)
|
||||||
|
?
|
||||||
|
[]
|
||||||
|
:
|
||||||
|
lib_plankton.translate.get(
|
||||||
|
"widget.password_policy.must_contain_number",
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
// must_contain_special_character
|
||||||
|
.concat(
|
||||||
|
(! this.data.must_contain_special_character)
|
||||||
|
?
|
||||||
|
[]
|
||||||
|
:
|
||||||
|
lib_plankton.translate.get(
|
||||||
|
"widget.password_policy.must_contain_special_character",
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
target_element.appendChild(_zackeneule.helpers.template_request("widget-password_policy"));
|
||||||
|
|
||||||
|
target_element.querySelector(".widget-password_policy").classList.toggle(
|
||||||
|
"widget-password_policy-without_title",
|
||||||
|
(this.title === null)
|
||||||
|
);
|
||||||
|
|
||||||
|
target_element.querySelector(".widget-password_policy-title").textContent = (this.title ?? "");
|
||||||
|
|
||||||
|
const element_ul : HTMLElement = target_element.querySelector(".widget-password_policy-entries");
|
||||||
|
entries.forEach(
|
||||||
|
entry => {
|
||||||
|
const element_li : HTMLElement = document.createElement("li");
|
||||||
|
element_li.textContent = entry;
|
||||||
|
element_ul.appendChild(element_li);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
return Promise.resolve<void>(undefined);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
6
source/widgets/password_policy/structure.html
Normal file
6
source/widgets/password_policy/structure.html
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<template id="widget-password_policy">
|
||||||
|
<div class="widget-password_policy">
|
||||||
|
<span class="widget-password_policy-title"></span>
|
||||||
|
<ul class="widget-password_policy-entries"></ul>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
13
source/widgets/password_policy/style.css
Normal file
13
source/widgets/password_policy/style.css
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
.widget-password_policy-title
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
/*
|
||||||
|
font-weight: bold;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget-password_policy-without_title .widget-password_policy-title
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ def main():
|
||||||
"--target-directory",
|
"--target-directory",
|
||||||
type = str,
|
type = str,
|
||||||
dest = "target_directory",
|
dest = "target_directory",
|
||||||
default = "/opt/espe",
|
default = "/opt/zackeneule",
|
||||||
metavar = "<target-directory>",
|
metavar = "<target-directory>",
|
||||||
help = "directory on the target system, where the files shall be put; default: /opt/espe",
|
help = "directory on the target system, where the files shall be put; default: /opt/espe",
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ ${dir_temp}/logic-unlinked.js: \
|
||||||
${dir_source}/resources/backend.ts \
|
${dir_source}/resources/backend.ts \
|
||||||
${dir_source}/resources/conf.ts \
|
${dir_source}/resources/conf.ts \
|
||||||
${dir_source}/logic.ts \
|
${dir_source}/logic.ts \
|
||||||
|
${dir_source}/widgets/password_policy/logic.ts \
|
||||||
${dir_source}/pages/index/logic.ts \
|
${dir_source}/pages/index/logic.ts \
|
||||||
${dir_source}/pages/login/logic.ts \
|
${dir_source}/pages/login/logic.ts \
|
||||||
${dir_source}/pages/logout/logic.ts \
|
${dir_source}/pages/logout/logic.ts \
|
||||||
|
|
@ -65,6 +66,7 @@ ${dir_build}/logic.js: ${dir_lib}/plankton/plankton.js ${dir_temp}/logic-unlinke
|
||||||
|
|
||||||
${dir_build}/style.css: \
|
${dir_build}/style.css: \
|
||||||
${dir_source}/style/main.css \
|
${dir_source}/style/main.css \
|
||||||
|
${dir_source}/widgets/password_policy/style.css \
|
||||||
${dir_source}/pages/index/style.css \
|
${dir_source}/pages/index/style.css \
|
||||||
${dir_source}/pages/login/style.css \
|
${dir_source}/pages/login/style.css \
|
||||||
${dir_source}/pages/logout/style.css \
|
${dir_source}/pages/logout/style.css \
|
||||||
|
|
@ -85,6 +87,7 @@ ${dir_build}/style.css: \
|
||||||
|
|
||||||
${dir_build}/index.html: \
|
${dir_build}/index.html: \
|
||||||
${dir_source}/index.html.tpl \
|
${dir_source}/index.html.tpl \
|
||||||
|
${dir_source}/widgets/password_policy/structure.html \
|
||||||
${dir_source}/pages/index/structure.html \
|
${dir_source}/pages/index/structure.html \
|
||||||
${dir_source}/pages/login/structure.html \
|
${dir_source}/pages/login/structure.html \
|
||||||
${dir_source}/pages/logout/structure.html \
|
${dir_source}/pages/logout/structure.html \
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
## consts
|
## consts
|
||||||
|
|
||||||
dir=lib/plankton
|
dir=$(pwd)/lib/plankton
|
||||||
|
|
||||||
modules=""
|
modules=""
|
||||||
modules="${modules} base"
|
modules="${modules} base"
|
||||||
|
|
@ -10,9 +10,11 @@ modules="${modules} file"
|
||||||
modules="${modules} json"
|
modules="${modules} json"
|
||||||
modules="${modules} base64"
|
modules="${modules} base64"
|
||||||
modules="${modules} string"
|
modules="${modules} string"
|
||||||
|
modules="${modules} password"
|
||||||
modules="${modules} translate"
|
modules="${modules} translate"
|
||||||
modules="${modules} storage"
|
modules="${modules} storage"
|
||||||
modules="${modules} cache"
|
modules="${modules} cache"
|
||||||
|
modules="${modules} zoo-widget"
|
||||||
modules="${modules} zoo-input"
|
modules="${modules} zoo-input"
|
||||||
modules="${modules} zoo-form"
|
modules="${modules} zoo-form"
|
||||||
modules="${modules} zoo-search"
|
modules="${modules} zoo-search"
|
||||||
|
|
@ -22,7 +24,17 @@ modules="${modules} zoo-page"
|
||||||
|
|
||||||
## exec
|
## exec
|
||||||
|
|
||||||
mkdir -p ${dir}
|
if false
|
||||||
cd ${dir}
|
then
|
||||||
ptk bundle web ${modules}
|
mkdir -p ${dir}
|
||||||
cd - > /dev/null
|
cd ${dir}
|
||||||
|
ptk bundle web ${modules}
|
||||||
|
cd - > /dev/null
|
||||||
|
else
|
||||||
|
mkdir -p ${dir}
|
||||||
|
mkdir /tmp/sandbox -p
|
||||||
|
cd /tmp/sandbox
|
||||||
|
ptk fetch web ${modules}
|
||||||
|
schwamm --include=/tmp/sandbox/plankton.swm.json --output=dump:logic-decl > ${dir}/plankton.d.ts
|
||||||
|
schwamm --include=/tmp/sandbox/plankton.swm.json --output=dump:logic-impl > ${dir}/plankton.js
|
||||||
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue