From 0361f8ad6991e04bc621c3201bd14d6ace9adc76 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 9 Feb 2021 16:31:37 +0100 Subject: [PATCH 01/30] =?UTF-8?q?=E2=9C=A8=20basic=20UserGroup=20component?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #48 --- src/App.svelte | 10 + src/components/AddGroupModal.svelte | 312 ++++++++++++++++++++++++++++ src/components/Dashboard.svelte | 9 + src/components/GroupDetail.svelte | 264 +++++++++++++++++++++++ src/components/Groups.svelte | 29 +++ 5 files changed, 624 insertions(+) create mode 100644 src/components/AddGroupModal.svelte create mode 100644 src/components/GroupDetail.svelte create mode 100644 src/components/Groups.svelte diff --git a/src/App.svelte b/src/App.svelte index e88cfdea..5a992616 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -53,6 +53,8 @@ import Imprint from "./components/Imprint.svelte"; import Privacy from "./components/Privacy.svelte"; import ResetPassword from "./components/ResetPassword.svelte"; +import Groups from "./components/Groups.svelte"; +import GroupDetail from "./components/GroupDetail.svelte"; store.init(); registerSW(); @@ -111,6 +113,14 @@ import ResetPassword from "./components/ResetPassword.svelte"; + + + + + + + + diff --git a/src/components/AddGroupModal.svelte b/src/components/AddGroupModal.svelte new file mode 100644 index 00000000..32c0da99 --- /dev/null +++ b/src/components/AddGroupModal.svelte @@ -0,0 +1,312 @@ + + +{#if modal_open} +
{ + modal_open = false; + }}> +
+ +
+{/if} diff --git a/src/components/Dashboard.svelte b/src/components/Dashboard.svelte index 23de2d92..1e77bf0a 100644 --- a/src/components/Dashboard.svelte +++ b/src/components/Dashboard.svelte @@ -122,6 +122,15 @@ {$_('tracks')} {/if} + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:GET')} + + + UserGroups + + {/if} + import { _ } from "svelte-i18n"; + import lodashIsEqual from "lodash.isequal"; + import store from "../store"; + import { + RunnerService, + RunnerTeamService, + RunnerOrganizationService, + } from "@odit/lfk-client-js"; + import Toastify from "toastify-js"; + import PromiseError from "./PromiseError.svelte"; + import isEmail from "validator/es/lib/isEmail"; + let data_loaded = false; + export let params; + const runner_promise = RunnerService.runnerControllerGetOne(params.groupid); + $: delete_triggered = false; + $: original_data = {}; + $: editable = {}; + $: changes_performed = !lodashIsEqual(original_data, editable); + $: isEmailValid = + (editable.email || "") === "" || + (editable.email && isEmail(editable.email || "")); + $: isFirstnameValid = editable.firstname !== ""; + $: isLastnameValid = editable.lastname !== ""; + $: save_enabled = + changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; + runner_promise.then((data) => { + data_loaded = true; + original_data = Object.assign(original_data, data); + original_data.group = original_data.group.id; + editable = Object.assign(editable, original_data); + }); + let orgs = []; + RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { + orgs = val; + }); + let teams = []; + RunnerTeamService.runnerTeamControllerGetAll().then((val) => { + teams = val; + }); + function submit() { + if (data_loaded === true && save_enabled) { + Toastify({ + text: $_("updating-runner"), + duration: 2500, + }).showToast(); + RunnerService.runnerControllerPut(original_data.id, editable) + .then((resp) => { + Object.assign(original_data, editable); + original_data = editable; + Object.assign(original_data, editable); + Toastify({ + text: $_("runner-updated"), + duration: 2500, + backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", + }).showToast(); + }) + .catch((err) => {}); + } else { + } + } + function deleteRunner() { + RunnerService.runnerControllerRemove(original_data.id, true) + .then((resp) => { + location.replace("./"); + }) + .catch((err) => {}); + } + + +{#await runner_promise} + {$_('loading-runners')} +{:then} +
+
+
+ +
+
+
+ {original_data.firstname} + {original_data.middlename || ''} + {original_data.lastname} + + {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} + {#if delete_triggered} + + + {/if} + {#if !delete_triggered} + + {/if} + {/if} + {#if !delete_triggered} + + {/if} + +
+ +
+ + + {#if !isFirstnameValid} + + {$_('first-name-is-required')} + + {/if} +
+
+ + +
+
+ + + {#if !isLastnameValid} + + {$_('last-name-is-required')} + + {/if} +
+
+ + + {#if !isEmailValid} + + {$_('valid-email-is-required')} + + {/if} +
+
+ + +
+
+ {$_('group')} + +
+
+ {$_('distance')} +
+ {original_data.distance} km +
+
+{:catch error} + +{/await} diff --git a/src/components/Groups.svelte b/src/components/Groups.svelte new file mode 100644 index 00000000..37203e68 --- /dev/null +++ b/src/components/Groups.svelte @@ -0,0 +1,29 @@ + + +
+ + User Groups + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} + + {/if} + + +
+ +{#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} + +{/if} From eddfeb10a55cbf276f29e406ad262d46ac3d1786 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 9 Feb 2021 17:37:38 +0100 Subject: [PATCH 02/30] =?UTF-8?q?=E2=9C=A8=20UserGroupsEmptyState,=20UserG?= =?UTF-8?q?roupsOverview,=20basic=20GroupDetail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #48 --- src/components/GroupDetail.svelte | 194 +++++---------------- src/components/Groups.svelte | 8 +- src/components/UserGroupsEmptyState.svelte | 12 ++ src/components/UserGroupsOverview.svelte | 125 +++++++++++++ src/components/groups_empty.svg | 1 + src/locales/en.json | 6 + 6 files changed, 196 insertions(+), 150 deletions(-) create mode 100644 src/components/UserGroupsEmptyState.svelte create mode 100644 src/components/UserGroupsOverview.svelte create mode 100644 src/components/groups_empty.svg diff --git a/src/components/GroupDetail.svelte b/src/components/GroupDetail.svelte index 5f76c6c8..5c434392 100644 --- a/src/components/GroupDetail.svelte +++ b/src/components/GroupDetail.svelte @@ -3,54 +3,39 @@ import lodashIsEqual from "lodash.isequal"; import store from "../store"; import { - RunnerService, - RunnerTeamService, - RunnerOrganizationService, + UserGroupService } from "@odit/lfk-client-js"; import Toastify from "toastify-js"; import PromiseError from "./PromiseError.svelte"; - import isEmail from "validator/es/lib/isEmail"; let data_loaded = false; export let params; - const runner_promise = RunnerService.runnerControllerGetOne(params.groupid); + const promise = UserGroupService.userGroupControllerGetOne(params.groupid); $: delete_triggered = false; $: original_data = {}; $: editable = {}; $: changes_performed = !lodashIsEqual(original_data, editable); - $: isEmailValid = - (editable.email || "") === "" || - (editable.email && isEmail(editable.email || "")); - $: isFirstnameValid = editable.firstname !== ""; - $: isLastnameValid = editable.lastname !== ""; + $: isGroupnameValid = editable.name !== ""; $: save_enabled = - changes_performed && isFirstnameValid && isLastnameValid && isEmailValid; - runner_promise.then((data) => { + changes_performed && isGroupnameValid + promise.then((data) => { + console.log(data); data_loaded = true; original_data = Object.assign(original_data, data); - original_data.group = original_data.group.id; editable = Object.assign(editable, original_data); }); - let orgs = []; - RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { - orgs = val; - }); - let teams = []; - RunnerTeamService.runnerTeamControllerGetAll().then((val) => { - teams = val; - }); function submit() { if (data_loaded === true && save_enabled) { Toastify({ - text: $_("updating-runner"), + text: $_('updating-group'), duration: 2500, }).showToast(); - RunnerService.runnerControllerPut(original_data.id, editable) + UserGroupService.userGroupControllerPut(original_data.id, editable) .then((resp) => { Object.assign(original_data, editable); original_data = editable; Object.assign(original_data, editable); Toastify({ - text: $_("runner-updated"), + text: $_('group-updated'), duration: 2500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -59,8 +44,8 @@ } else { } } - function deleteRunner() { - RunnerService.runnerControllerRemove(original_data.id, true) + function deleteGroup() { + UserGroupService.userGroupControllerRemove(original_data.id, true) .then((resp) => { location.replace("./"); }) @@ -68,8 +53,8 @@ } -{#await runner_promise} - {$_('loading-runners')} +{#await promise} + {$_('loading-group-detail')} {:then}
@@ -77,18 +62,10 @@
- {original_data.firstname} - {original_data.middlename || ''} - {original_data.lastname} - - {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:DELETE')} + {original_data.name} + + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} {#if delete_triggered} + class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('delete-group')} {/if} {/if} {#if !delete_triggered} @@ -152,111 +125,40 @@
+ for="title" + class="font-medium text-gray-700">{$_('name')} + {#if !isGroupnameValid} + + Group name is required + + {/if} +
+
+ + - {#if !isFirstnameValid} - - {$_('first-name-is-required')} - - {/if}
- - -
-
- - - {#if !isLastnameValid} - - {$_('last-name-is-required')} - - {/if} -
-
- - - {#if !isEmailValid} - - {$_('valid-email-is-required')} - - {/if} -
-
- - -
-
- {$_('group')} - -
-
- {$_('distance')} -
- {original_data.distance} km + {$_('permissions')}
{:catch error} diff --git a/src/components/Groups.svelte b/src/components/Groups.svelte index 37203e68..d56e0925 100644 --- a/src/components/Groups.svelte +++ b/src/components/Groups.svelte @@ -2,8 +2,8 @@ import { _ } from "svelte-i18n"; import store from "../store"; import AddGroupModal from "./AddGroupModal.svelte"; - import RunnersOverview from "./RunnersOverview.svelte"; - $: current_runners = []; + import UserGroupsOverview from "./UserGroupsOverview.svelte"; + $: current_groups = []; export let modal_open = false; @@ -21,9 +21,9 @@ {/if}
- + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} - + {/if} diff --git a/src/components/UserGroupsEmptyState.svelte b/src/components/UserGroupsEmptyState.svelte new file mode 100644 index 00000000..271e62ae --- /dev/null +++ b/src/components/UserGroupsEmptyState.svelte @@ -0,0 +1,12 @@ + + +
+

+ + There are no group added yet.
+ Add your first group +

+
\ No newline at end of file diff --git a/src/components/UserGroupsOverview.svelte b/src/components/UserGroupsOverview.svelte new file mode 100644 index 00000000..21270b98 --- /dev/null +++ b/src/components/UserGroupsOverview.svelte @@ -0,0 +1,125 @@ + + +{#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:GET')} + {#await groups_promise} + + {:then} + {#if current_groups.length === 0} + + {:else} + +
+ + + + + + + + + + {#each current_groups as group} + {#if Object.values(group) + .toString() + .toLowerCase() + .includes(searchvalue)} + + + + {#if active_deletes[group.id] === true} + + {:else} + + {/if} + + {/if} + {/each} + +
+ {$_('name')} + + {$_('description')} + + {$_('action')} +
+
+
+
+ {group.name} +
+
+
+
+ {group.description} + + + + + Edit + {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:DELETE')} + + {/if} +
+
+ {/if} + {:catch error} +
+ + {$_('general_promise_error')} + {error} + +
+ {/await} +{/if} diff --git a/src/components/groups_empty.svg b/src/components/groups_empty.svg new file mode 100644 index 00000000..32053770 --- /dev/null +++ b/src/components/groups_empty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index dd9ccd3e..471509b8 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -49,11 +49,13 @@ "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" }, "delete": "Delete", + "delete-group": "Delete Group", "delete-organization": "Delete Organization", "delete-runner": "Delete Runner", "delete-team": "Delete Team", "delete-user": "Delete User", "dependency_name": "Name", + "description": "Description", "distance": "Distance", "distance-in-km": "Distance in km", "dont-have-your-email-connected": "Don't have your email connected?", @@ -92,7 +94,9 @@ "go-to-login": "Go To Login", "goback": "Go Home", "group": "Group", + "group-updated": "Group updated!", "groups": "Groups", + "groups-are-being-loaded": "Groups are being loaded...", "hallo": "hello", "icon-image-credits": "We also want to thank these projects for illustrations and icons:", "import-runners": "Import runners", @@ -106,6 +110,7 @@ "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", "license": "License", "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-group-detail": "Loading group detail...", "loading-runners": "loading runners...", "log_in": "Log in", "log_in_to_your_account": "Log in to your account", @@ -168,6 +173,7 @@ "track-length-in-m": "Track Length in m", "track-name": "Track name", "tracks": "Tracks", + "updating-group": "Updating group...", "updating-runner": "Updating runner...", "updating-user": "updating user...", "user-updated": "User updated", From 4dbca6096fa6e0aa6ff3f1a310280cf4e56163b1 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 25 Feb 2021 20:08:32 +0100 Subject: [PATCH 03/30] New folder structure ref #48 --- src/components/{ => usergroups}/AddGroupModal.svelte | 2 +- src/components/{ => usergroups}/GroupDetail.svelte | 4 ++-- src/components/{ => usergroups}/Groups.svelte | 2 +- src/components/{ => usergroups}/UserGroupsEmptyState.svelte | 0 src/components/{ => usergroups}/UserGroupsOverview.svelte | 2 +- src/components/{ => usergroups}/groups_empty.svg | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename src/components/{ => usergroups}/AddGroupModal.svelte (99%) rename src/components/{ => usergroups}/GroupDetail.svelte (98%) rename src/components/{ => usergroups}/Groups.svelte (96%) rename src/components/{ => usergroups}/UserGroupsEmptyState.svelte (100%) rename src/components/{ => usergroups}/UserGroupsOverview.svelte (99%) rename src/components/{ => usergroups}/groups_empty.svg (100%) diff --git a/src/components/AddGroupModal.svelte b/src/components/usergroups/AddGroupModal.svelte similarity index 99% rename from src/components/AddGroupModal.svelte rename to src/components/usergroups/AddGroupModal.svelte index 32c0da99..b635d6a3 100644 --- a/src/components/AddGroupModal.svelte +++ b/src/components/usergroups/AddGroupModal.svelte @@ -1,6 +1,6 @@ {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:GET')} From e8de1f6d9c120636f51f7e916692690050060719 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 25 Feb 2021 20:48:21 +0100 Subject: [PATCH 10/30] New image for emptystate ref #48 --- src/components/groups/UserGroupsEmptyState.svelte | 2 +- src/components/groups/groups_empty.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/groups/UserGroupsEmptyState.svelte b/src/components/groups/UserGroupsEmptyState.svelte index 271e62ae..d0d67c24 100644 --- a/src/components/groups/UserGroupsEmptyState.svelte +++ b/src/components/groups/UserGroupsEmptyState.svelte @@ -6,7 +6,7 @@

- There are no group added yet.
+ There are no groups yet.
Add your first group

\ No newline at end of file diff --git a/src/components/groups/groups_empty.svg b/src/components/groups/groups_empty.svg index 32053770..2b627d32 100644 --- a/src/components/groups/groups_empty.svg +++ b/src/components/groups/groups_empty.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 937486a66bd0c8bacbb867c469e7a69c30be2a5e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Thu, 25 Feb 2021 20:56:22 +0100 Subject: [PATCH 11/30] Added group detail routing ref #48 --- src/App.svelte | 11 ++++++----- src/components/groups/GroupDetail.svelte | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 1c9aad6c..f8cec139 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -67,6 +67,7 @@ import DonorDetail from "./components/donors/DonorDetail.svelte"; import Donations from "./components/donations/Donations.svelte"; import DonationDetail from "./components/donations/DonationDetail.svelte"; +import GroupDetail from "./components/groups/GroupDetail.svelte"; store.init(); registerSW(); @@ -115,14 +116,14 @@ - + --> + diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index 6e9686f2..33173442 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -109,7 +109,7 @@ delete_triggered = true; }} type="button" - class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('delete-group')} + class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">Delete Group {/if} {/if} {#if !delete_triggered} From 05099d066bb383b4883b4fae59da35e419935827 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 17:58:57 +0100 Subject: [PATCH 12/30] Added permissions list to usergroup detail ref #48 --- src/components/groups/GroupDetail.svelte | 63 ++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index 33173442..dcd1b80a 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -10,7 +10,26 @@ let data_loaded = false; export let params; const promise = UserGroupService.userGroupControllerGetOne(params.groupid); + const colors = [ + "#f3558e", + "#17b978", + "#3498db", + "#3f3b3b", + "#775ada", + "#7ed6df_#000000", + "#000000", + "#21e6c1_#000000", + "#c0392b", + "#d35400", + "#7f8c8d", + "#6ab04c", + "#4834d4", + "#ff1f5a", + "#eac100", + ]; + let matched_colors = []; $: delete_triggered = false; + $: search_permission = ""; $: original_data = {}; $: editable = {}; $: changes_performed = !lodashIsEqual(original_data, editable); @@ -18,7 +37,23 @@ $: save_enabled = changes_performed && isGroupnameValid promise.then((data) => { - console.log(data); + let current_target = ""; + let colorindex = -1; + data.permissions = data.permissions.sort(); + data.permissions.forEach((p) => { + const target = p.split(":")[0]; + if (current_target !== p.split(":")[0]) { + colorindex++; + current_target = p.split(":")[0]; + } + let background = colors[colorindex]; + let foreground = "#fff"; + if (background.includes("_")) { + foreground = background.split("_")[1]; + background = background.split("_")[0]; + } + matched_colors[target] = [background, foreground]; + }); data_loaded = true; original_data = Object.assign(original_data, data); editable = Object.assign(editable, original_data); @@ -156,9 +191,29 @@ name="firstname" class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" />
-
- {$_('permissions')} +
+

+ {$_('permissions')} + {$_('edit-permissions')} +

+
+ +
+ {#each original_data.permissions as p} + {#if p.toLowerCase().includes(search_permission.toLowerCase())} + {p} + + {/if} + {/each}
{:catch error} From af7e44cf7cb168eb9d017951c5e9cf4e0ead4673 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 18:01:26 +0100 Subject: [PATCH 13/30] Now routing to gorup permissions (to be implemented) ref #48 --- src/App.svelte | 7 +- src/components/groups/GroupPermissions.svelte | 246 ++++++++++++++++++ 2 files changed, 250 insertions(+), 3 deletions(-) create mode 100644 src/components/groups/GroupPermissions.svelte diff --git a/src/App.svelte b/src/App.svelte index f8cec139..ba8279cf 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -56,6 +56,7 @@ import { register as registerSW } from "./swmodule"; import TeamDetail from "./components/teams/TeamDetail.svelte"; import UserPermissions from "./components/users/UserPermissions.svelte"; + import GroupPermissions from "./components/groups/GroupPermissions.svelte"; import RunnerDetail from "./components/runners/RunnerDetail.svelte"; import Imprint from "./components/general/Imprint.svelte"; import Privacy from "./components/general/Privacy.svelte"; @@ -120,9 +121,9 @@ import GroupDetail from "./components/groups/GroupDetail.svelte"; - + + + diff --git a/src/components/groups/GroupPermissions.svelte b/src/components/groups/GroupPermissions.svelte new file mode 100644 index 00000000..c232d05e --- /dev/null +++ b/src/components/groups/GroupPermissions.svelte @@ -0,0 +1,246 @@ + + +{#await user_promise} + +{:then user} +
+
+
+ +
+
+
+ {$_('permissions')}: + {original_data.firstname} + {original_data.middlename || ''} + {original_data.lastname} + + {#if promises.length === 0} + + {:else} + + {/if} + +
+ +
+
+ {$_('verfuegbare')} +
+
+ {$_('erteilte')} +
+
+ {$_('geerbte')} +
+
+ +
+ {#if allpermissions.length > 0} +
+
+ {#each allpermissions as p} + {#if !grantedPermissions.includes(p)} +

+ {p.target + ':' + p.action} + +

+ {/if} + {/each} +
+
+
+
+ {#each grantedPermissions as p} +

+ {p.target + ':' + p.action} + +

+ {/each} +
+
+
+
+ {#each inheritedPermissions as p} +

+ {p.target + ':' + p.action} +

+ {/each} +
+
+ {/if} +
+
+{:catch error} + +{/await} From 7e80608066d158221a36cb251d2ba4dd2a27c785 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 18:22:15 +0100 Subject: [PATCH 14/30] Fix for user permission availdable ref #48 --- src/components/users/UserPermissions.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/users/UserPermissions.svelte b/src/components/users/UserPermissions.svelte index c232d05e..2d2f3f8c 100644 --- a/src/components/users/UserPermissions.svelte +++ b/src/components/users/UserPermissions.svelte @@ -179,7 +179,7 @@
{#each allpermissions as p} - {#if !grantedPermissions.includes(p)} + {#if !(grantedPermissions.filter((o)=>p.target == o.target && p.action == o.action).length > 0)}

{p.target + ':' + p.action} From 7c324869a463d07af8c8f43b1853544c4a0d3440 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 18:23:02 +0100 Subject: [PATCH 15/30] Working suergroup permissions overview ref #48 --- src/components/groups/GroupPermissions.svelte | 52 ++++++------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/src/components/groups/GroupPermissions.svelte b/src/components/groups/GroupPermissions.svelte index c232d05e..a1d92359 100644 --- a/src/components/groups/GroupPermissions.svelte +++ b/src/components/groups/GroupPermissions.svelte @@ -1,9 +1,9 @@ -{#await user_promise} +{#await group_promise} {:then user}

@@ -111,9 +109,7 @@
  • - {original_data.firstname} - {original_data.middlename || ''} - {original_data.lastname} + {original_data.name}
  • {$_('permissions')}: - {original_data.firstname} - {original_data.middlename || ''} - {original_data.lastname} + {original_data.name} {#if promises.length === 0}
  • From 4397566f1e9ce8f0f1e5a6ba7c3c500dddb64bd0 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 18:48:57 +0100 Subject: [PATCH 16/30] Fixed Back linking ref #48 --- src/components/groups/GroupDetail.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index dcd1b80a..a7f1f25f 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -100,7 +100,7 @@
  • - {$_('groups')}{$_('groups')} Date: Fri, 26 Feb 2021 18:49:09 +0100 Subject: [PATCH 17/30] Added translation keyz ref #48 --- src/components/groups/AddGroupModal.svelte | 19 +- src/components/groups/GroupDetail.svelte | 2 +- src/components/groups/GroupPermissions.svelte | 4 +- src/components/groups/Groups.svelte | 4 +- .../groups/UserGroupsEmptyState.svelte | 4 +- .../groups/UserGroupsOverview.svelte | 3 +- src/locales/en.json | 588 +++++++++--------- 7 files changed, 318 insertions(+), 306 deletions(-) diff --git a/src/components/groups/AddGroupModal.svelte b/src/components/groups/AddGroupModal.svelte index e9935d42..8f150b83 100644 --- a/src/components/groups/AddGroupModal.svelte +++ b/src/components/groups/AddGroupModal.svelte @@ -33,7 +33,7 @@ if (processed_last_submit === true) { processed_last_submit = false; const toast = Toastify({ - text: "Group is being added...", + text: $_('group-is-being-added'), duration: -1, }).showToast(); let postdata = { @@ -47,7 +47,7 @@ modal_open = false; // Toastify({ - text: "Group added", + text: $_('group-added'), duration: 500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast(); @@ -105,23 +105,22 @@
  • - Create a new user group + {$_('create-a-new-user-group')}

    - Please provide the required information for creating a new - user group. + {$_('please-provide-the-required-information-for-creating-a-new-user-group')}

    + class="block text-sm font-medium text-gray-700">{$_('name')} - Name is required + {$_('name-is-required')} {/if}
    + class="block text-sm font-medium text-gray-700">{$_('description-optional')} - Group name is required + {$_('group-name-is-required')} {/if}
    diff --git a/src/components/groups/GroupPermissions.svelte b/src/components/groups/GroupPermissions.svelte index a1d92359..c7ae9bc2 100644 --- a/src/components/groups/GroupPermissions.svelte +++ b/src/components/groups/GroupPermissions.svelte @@ -26,7 +26,7 @@ UserGroupService, }); function submit() { Toastify({ - text: "updating permissions...", + text: $_('updating-permissions'), duration: 2500, }).showToast(); to_delete.forEach((d) => { @@ -160,7 +160,7 @@ UserGroupService, {$_('verfuegbare')}
    - granted + {$_('granted')}
    diff --git a/src/components/groups/Groups.svelte b/src/components/groups/Groups.svelte index fa5ea4ab..fb5749eb 100644 --- a/src/components/groups/Groups.svelte +++ b/src/components/groups/Groups.svelte @@ -9,7 +9,7 @@
    - User Groups + {$_('user-groups')} {#if store.state.jwtinfo.userdetails.permissions.includes('USERGROUP:CREATE')} {/if} diff --git a/src/components/groups/UserGroupsEmptyState.svelte b/src/components/groups/UserGroupsEmptyState.svelte index d0d67c24..42e08003 100644 --- a/src/components/groups/UserGroupsEmptyState.svelte +++ b/src/components/groups/UserGroupsEmptyState.svelte @@ -6,7 +6,7 @@

    - There are no groups yet.
    - Add your first group + {$_('there-are-no-groups-yet')}.
    + {$_('add-your-first-group')}

    \ No newline at end of file diff --git a/src/components/groups/UserGroupsOverview.svelte b/src/components/groups/UserGroupsOverview.svelte index df548149..3af8e6d1 100644 --- a/src/components/groups/UserGroupsOverview.svelte +++ b/src/components/groups/UserGroupsOverview.svelte @@ -78,8 +78,7 @@ active_deletes[group.id] = false; }} tabindex="0" - class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">Cancel - Delete + class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">{$_('cancel-delete')} + class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm">{$_('delete-group')} {/if} {/if} {#if !delete_triggered} diff --git a/src/locales/de.json b/src/locales/de.json index 64d4e3bb..9deb1d93 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -281,7 +281,7 @@ "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "verfügbare", + "verfuegbare": "Verfügbar", "welcome_wavinghand": "Willkommen 👋", "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", "zip-postal-code": "Postleitzahl", @@ -301,5 +301,8 @@ "user-groups": "Benutzergruppen", "description": "Beschreibung", "search-for-permission": "Berechtigungen durchsuchen", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen" + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "delete-group": "Gruppe löschen", + "group-updated": "Gruppe aktualisiert", + "updateing-group": "Gruppe wird aktualisiert..." } diff --git a/src/locales/en.json b/src/locales/en.json index af007068..016701ae 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -301,5 +301,8 @@ "add-your-first-group": "Add your first group", "description": "description", "search-for-permission": "Search for permission", - "set-the-user-active-inactive": "set the user active/ inactive" + "set-the-user-active-inactive": "set the user active/ inactive", + "delete-group": "Delete Group", + "updateing-group": "updateing group...", + "group-updated": "group updated" } From c111ec9d9113adac7f19fc5f0b527e0755cafd0e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 19:22:30 +0100 Subject: [PATCH 23/30] Updated users icon ref #48 --- src/components/dashboard/Dashboard.svelte | 12 ++++++------ src/components/users/AddUserModal.svelte | 4 ++-- src/components/users/UserDetail.svelte | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/dashboard/Dashboard.svelte b/src/components/dashboard/Dashboard.svelte index 3e18d3f6..62e5db67 100644 --- a/src/components/dashboard/Dashboard.svelte +++ b/src/components/dashboard/Dashboard.svelte @@ -59,14 +59,14 @@ class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-100 hover:text-gray-900" href="/users/"> + class="flex-shrink-0 w-5 h-5 mr-2 text-gray-400 transition group-hover:text-gray-600" + fill="currentColor" + viewBox="0 0 24 24"> + {$_('users')} {/if} diff --git a/src/components/users/AddUserModal.svelte b/src/components/users/AddUserModal.svelte index 3e04c0af..14409ddf 100644 --- a/src/components/users/AddUserModal.svelte +++ b/src/components/users/AddUserModal.svelte @@ -116,9 +116,9 @@ width="24" height="24" xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 640 512"> + d="M12 14v8H4a8 8 0 018-8zm0-1a6 6 0 110-12 6 6 0 010 12zm2.6 5.81a3.51 3.51 0 010-1.62l-1-.57 1-1.74 1 .58a3.5 3.5 0 011.4-.82V13.5h2v1.15a3.5 3.5 0 011.4.8l1-.57 1 1.74-1 .57a3.51 3.51 0 010 1.62l1 .57-1 1.74-1-.58a3.5 3.5 0 01-1.4.82v1.14h-2v-1.15a3.5 3.5 0 01-1.4-.8l-1 .57-1-1.74 1-.57zM18 17a1 1 0 100 2 1 1 0 000-2z" />

    diff --git a/src/components/users/UserDetail.svelte b/src/components/users/UserDetail.svelte index c027b27b..6b0fa588 100644 --- a/src/components/users/UserDetail.svelte +++ b/src/components/users/UserDetail.svelte @@ -126,9 +126,9 @@ width="24" height="24" xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 640 512"> + d="M12 14v8H4a8 8 0 018-8zm0-1a6 6 0 110-12 6 6 0 010 12zm2.6 5.81a3.51 3.51 0 010-1.62l-1-.57 1-1.74 1 .58a3.5 3.5 0 011.4-.82V13.5h2v1.15a3.5 3.5 0 011.4.8l1-.57 1 1.74-1 .57a3.51 3.51 0 010 1.62l1 .57-1 1.74-1-.58a3.5 3.5 0 01-1.4.82v1.14h-2v-1.15a3.5 3.5 0 01-1.4-.8l-1 .57-1-1.74 1-.57zM18 17a1 1 0 100 2 1 1 0 000-2z" />
  • {$_('users')} Date: Fri, 26 Feb 2021 19:22:30 +0100 Subject: [PATCH 24/30] Updated users icon ref #48 --- src/components/dashboard/Dashboard.svelte | 12 ++++++------ src/components/users/AddUserModal.svelte | 4 ++-- src/components/users/UserDetail.svelte | 4 ++-- src/components/users/UserPermissions.svelte | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/dashboard/Dashboard.svelte b/src/components/dashboard/Dashboard.svelte index 3e18d3f6..62e5db67 100644 --- a/src/components/dashboard/Dashboard.svelte +++ b/src/components/dashboard/Dashboard.svelte @@ -59,14 +59,14 @@ class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-100 hover:text-gray-900" href="/users/"> + class="flex-shrink-0 w-5 h-5 mr-2 text-gray-400 transition group-hover:text-gray-600" + fill="currentColor" + viewBox="0 0 24 24"> + {$_('users')} {/if} diff --git a/src/components/users/AddUserModal.svelte b/src/components/users/AddUserModal.svelte index 3e04c0af..14409ddf 100644 --- a/src/components/users/AddUserModal.svelte +++ b/src/components/users/AddUserModal.svelte @@ -116,9 +116,9 @@ width="24" height="24" xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 640 512"> + d="M12 14v8H4a8 8 0 018-8zm0-1a6 6 0 110-12 6 6 0 010 12zm2.6 5.81a3.51 3.51 0 010-1.62l-1-.57 1-1.74 1 .58a3.5 3.5 0 011.4-.82V13.5h2v1.15a3.5 3.5 0 011.4.8l1-.57 1 1.74-1 .57a3.51 3.51 0 010 1.62l1 .57-1 1.74-1-.58a3.5 3.5 0 01-1.4.82v1.14h-2v-1.15a3.5 3.5 0 01-1.4-.8l-1 .57-1-1.74 1-.57zM18 17a1 1 0 100 2 1 1 0 000-2z" />
  • diff --git a/src/components/users/UserDetail.svelte b/src/components/users/UserDetail.svelte index c027b27b..6b0fa588 100644 --- a/src/components/users/UserDetail.svelte +++ b/src/components/users/UserDetail.svelte @@ -126,9 +126,9 @@ width="24" height="24" xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 640 512"> + d="M12 14v8H4a8 8 0 018-8zm0-1a6 6 0 110-12 6 6 0 010 12zm2.6 5.81a3.51 3.51 0 010-1.62l-1-.57 1-1.74 1 .58a3.5 3.5 0 011.4-.82V13.5h2v1.15a3.5 3.5 0 011.4.8l1-.57 1 1.74-1 .57a3.51 3.51 0 010 1.62l1 .57-1 1.74-1-.58a3.5 3.5 0 01-1.4.82v1.14h-2v-1.15a3.5 3.5 0 01-1.4-.8l-1 .57-1-1.74 1-.57zM18 17a1 1 0 100 2 1 1 0 000-2z" />
  • {$_('users')} + d="M12 14v8H4a8 8 0 018-8zm0-1a6 6 0 110-12 6 6 0 010 12zm2.6 5.81a3.51 3.51 0 010-1.62l-1-.57 1-1.74 1 .58a3.5 3.5 0 011.4-.82V13.5h2v1.15a3.5 3.5 0 011.4.8l1-.57 1 1.74-1 .57a3.51 3.51 0 010 1.62l1 .57-1 1.74-1-.58a3.5 3.5 0 01-1.4.82v1.14h-2v-1.15a3.5 3.5 0 01-1.4-.8l-1 .57-1-1.74 1-.57zM18 17a1 1 0 100 2 1 1 0 000-2z" />
  • {$_('users')} Date: Fri, 26 Feb 2021 19:25:47 +0100 Subject: [PATCH 25/30] Changed group icon ref #48 --- src/components/groups/AddGroupModal.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/groups/AddGroupModal.svelte b/src/components/groups/AddGroupModal.svelte index 8f150b83..23fdaefe 100644 --- a/src/components/groups/AddGroupModal.svelte +++ b/src/components/groups/AddGroupModal.svelte @@ -95,13 +95,13 @@ class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"> + d="M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z" />
  • From e4872131c84d5021a0b02a944550fbcd99fb5c1a Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 19:26:47 +0100 Subject: [PATCH 26/30] Sorted translations ref #48 --- src/locales/de.json | 614 ++++++++++++++++++++++---------------------- src/locales/en.json | 614 ++++++++++++++++++++++---------------------- 2 files changed, 614 insertions(+), 614 deletions(-) diff --git a/src/locales/de.json b/src/locales/de.json index 9deb1d93..ff10859a 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,308 +1,308 @@ { - "404message": "Die gesuchte Seite wurde leider nicht gefunden.", - "404title": "Fehler 404", - "about": "Über", - "action": "Aktionen", - "active": "Aktiv", - "add-donation": "Sponsoring erstellen", - "add-donor": "Sponsor:in erstellen", - "add-your-first-contact": "Erstelle den ersten Kontakt", - "add-your-first-donor": "Erstelle die erste Sponsor:in", - "add-your-first-organization": "Erstelle die erste Organisation", - "add-your-first-runner": "Erstelle die erste Läufer:in", - "add-your-first-team": "Erstelle das erste Team", - "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", - "add-your-first-user": "Erstelle die erste Benutzer:in", - "address": "Adresse", - "address-is-required": "Du musst eine Adresse angeben", - "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", - "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", - "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", - "amount-per-kilometer": "Betrag pro Kilometer", - "apartment-suite-etc": "Apartment, Wohnung, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Änderungen anwenden", - "attention": "Achtung!", - "author": "Autor:in", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", - "by": "von", - "cancel": "Abbrechen", - "cancel-delete": "Löschen abbrechen", - "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", - "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", - "cancel-keep-team": "Abbrechen, Team behalten", - "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", - "city": "Stadt", - "close": "Schließen", - "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", - "confirm": "Bestätigen", - "confirm-delete": "Löschung Bestätigen", - "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", - "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", - "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", - "confirm-deletion": "Löschung Bestätigen", - "contact": "Kontakt", - "contact-deleted": "Kontakt gelöscht", - "contact-information": "Kontaktinformation", - "contact-is-being-updated": "Kontakt wird aktualisiert ...", - "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", - "contacts": "Kontakte", - "contacts-are-being-loaded": "Kontakte werden geladen ...", - "count_organizations": "Organisationen (Anzahl)", - "count_teams": "Teams (Anzahl)", - "create": "Erstellen", - "create-a-new": "Erstelle eine neue", - "create-a-new-contact": "Kontakt erstellen", - "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", - "create-a-new-donor": "Neue Sponsor:in erstellen", - "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", - "create-a-new-organization": "Neue Organisation anlegen", - "create-a-new-runner": "Neue Läufer:in erstellen", - "create-a-new-team": "Erstelle ein neues Team", - "create-a-new-track": "Neuen Track erstellen", - "create-a-new-user": "Neue Benutzer:in anlegen", - "create-organization": "Organisation erstellen", - "create-team": "Team erstellen", - "create-track": "Track erstellen", - "create-user": "Benutzer anlegen", - "credits": "Credits", - "csv_import__class": "Klasse", - "csv_import__firstname": "Vorname", - "csv_import__lastname": "Nachname", - "csv_import__middlename": "Mittelname", - "csv_import__team": "Team", - "dashboard-greeting": "Moin", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Suche ...", - "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", - "loading": "Wird geladen...", - "next": "Nächste", - "of": "von", - "previous": "Vorherige", - "to": "bis", - "showing": "Zeige", - "no_matching_records_found": "Keine passenden Einträge gefunden", - "page": "Seite", - "records": "Einträge", - "sort_column_ascending": "Spalte aufsteigend sortieren", - "sort_column_descending": "Spalte absteigend sortieren" - }, - "delete": "Löschen", - "delete-contact": "Kontakt löschen", - "delete-donation": "Sponsporing löschen", - "delete-donor": "Sponsor:in löschen", - "delete-organization": "Organisation löschen", - "delete-runner": "Läufer:in löschen", - "delete-team": "Team Löschen", - "delete-user": "Benutzer:in löschen", - "dependency_name": "Name", - "deselect-all": "Alle abwählen", - "details": "Details", - "distance": "Distanz", - "distance-donation": "Sponsoring", - "distance-in-km": "Distanz (in KM)", - "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", - "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", - "donation-amount": "Sponsoringbetrag", - "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", - "donations": "Sponsorings", - "donor": "Sponsor:in", - "donor-added": "Sponsor:in hinzugefügt", - "donor-deleted": "Sponsor:in gelöscht", - "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", - "donor-is-being-added": "Sponsor:in wird hinzugefügt...", - "donor-is-being-updated": "Sponsor:in wird aktualisiert", - "donors": "Sponsor:innen", - "donors-are-being-loaded": "Sponsor:innen werden geladen", - "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", - "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", - "e-mail-adress": "E-Mail-Adresse", - "edit": "Bearbeiten", - "edit-permissions": "Berechtigungen bearbeiten", - "email_address_or_username": "E-Mail-Adresse/ Benutzername", - "error_on_login": "😢Fehler beim Login", - "erteilte": "Direkt erteilte", - "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filtern nach Organisation / Team", - "first-name": "Vorname", - "first-name-is-required": "Vorname muss angegeben werden", - "fixed-donation": "Festbetragsspende", - "forgot_password": "Passwort vergessen?", - "geerbte": "geerbte", - "general-stats": "Allgemeine Statistiken", - "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", - "generate-sponsoring-contract": "Sponsoringvertrag generieren", - "generate-sponsoring-contracts": "Sponsoringverträge generieren", - "generating-pdf": "Pdf wird generiert...", - "generating-pdfs": "PDFs werden generiert...", - "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", - "go-to-login": "Zum Login", - "goback": "Zur Startseite", - "group": "Gruppe", - "groups": "Gruppen", - "home": "Start", - "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", - "import-finished": "Import abgeschlossen", - "import-runners": "Läufer:innen importieren", - "import__target-organization": "Ziel Organisation", - "imprint": "Impressum ", - "imprint-loading": "Impressum lädt...", - "inactive": "Inaktiv", - "installed-version": "Installierte Version", - "internal-error": "Interner Fehler", - "invalid-mail-reset": "Das ist keine gültige E-Mail", - "laeufer-hinzufuegen": "Läufer:in hinzufügen", - "laeufer-importieren": "Läufer:innen importieren", - "last-name": "Nachname", - "last-name-is-required": "Nachname muss angegeben werden", - "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", - "license": "Lizenz", - "licenses-are-being-loaded": "Lizenzen werden geladen...", - "loading-contact-details": "Kontaktdaten werden geladen ...", - "loading-donation-details": "Lade Sponsoringdetails", - "loading-donor-details": "Lade Details", - "loading-runners": "Läufer:innen werden geladen...", - "log_in": "Anmelden", - "log_in_to_your_account": "Bitte melde dich an", - "login_is_checked": "Login wird überprüft", - "logout": "Abmelden", - "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", - "manage-admin-users": "Nutzer verwalten", - "middle-name": "Mittelname", - "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", - "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", - "name": "Name", - "new-password": "Neues Passwort", - "no-contact-specified": "Kein Kontakt angegeben", - "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", - "no-organization-specified": "Keine Organisation angegeben", - "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", - "organization": "Organisation", - "organization-added": "Organisation hinzugefügt", - "organization-deleted": "Organisation gelöscht", - "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", - "organization-is-being-added": "Organisation wird hinzugefügt ...", - "organization-name-is-required": "Der Name muss angegeben werden", - "organizations": "Organisationen", - "organizations-are-being-loaded": "Organisationen werden geladen ...", - "orgs": "Orgs", - "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", - "password": "Passwort", - "password-is-required": "Passwort muss angegeben werden", - "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", - "password-reset-in-progress": "Passwort wird zurückgesetzt...", - "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", - "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", - "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", - "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", - "pdfs-successfully-generated": "Alle PDFs wurden generiert!", - "per-kilometer": "pro Kilometer", - "permissions": "Berechtigungen", - "permissions-updated": "Berechtigungen aktualisiert!", - "phone": "Telefon", - "please-provide-a-password": "Bitte gebe ein Passwort an...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", - "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", - "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", - "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", - "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", - "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", - "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", - "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", - "privacy": "Datenschutz", - "privacy-loading": "Datenschutzerklärung lädt...", - "profile-picture": "Profilbild", - "read-license": "Lizenz-Text lesen", - "receipt-needed": "Spendenquittung benötigt", - "repo_link": "Link", - "request-a-new-reset-mail": "Neue Reset-Mail anfordern", - "reset-my-password": "Passwort zurücksetzen", - "reset-password": "Passwort zurücksetzen", - "runner": "Läufer:in", - "runner-added": "Läufer:in hinzugefügt", - "runner-import": "Läufer:innen Import", - "runner-is-being-added": "Läufer:in wird hinzugefügt...", - "runner-updated": "Läufer:in aktualisiert!", - "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", - "runners": "Läufer", - "runners-are-being-imported": "Läufer:innen werden importiert ...", - "runners-are-being-loaded": "Läufer:innen werden geladen ...", - "save": "Speichern", - "save-changes": "Änderungen speichern", - "select-all": "Alle auswählen", - "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", - "settings": "Einstellungen", - "stats-are-being-loaded": "Die Statistiken werden geladen...", - "status": "Status", - "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", - "team": "Team", - "team-detail-is-being-loaded": "Team wird geladen...", - "team-name": "Teamname", - "team-name-is-required": "Teamname ist erforderlich", - "teams": "Teams", - "teams-are-being-loaded": "Teams werden geladen ...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", - "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", - "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", - "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", - "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", - "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", - "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", - "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", - "total-distance": "gelaufene Strecke", - "total-donation-amount": "Gesamtbetrag", - "total-donations": "Spendensumme", - "total-scans": "gesamte Scans", - "track-added": "Track hinzugefügt", - "track-data-is-being-loaded": "Trackdaten werden geladen", - "track-is-being-added": "Track wird hinzugefügt...", - "track-length-in-m": "Tracklänge (in Metern)", - "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", - "track-name": "Trackname", - "track-name-must-not-be-empty": "Der Name muss angegeben werden", - "tracks": "Tracks", - "updated-contact": "Kontakt aktualisiert!", - "updated-donor": "Sponsor:in wurde aktualisiert", - "updated-organization": "Organisation wurde aktualisiert", - "updating-organization": "Organisation wird aktualisiert", - "updating-runner": "Läufer:in wird aktualisiert.", - "updating-user": "Benutzer:in wird aktualisiert...", - "user-added": "Benutzer hinzugefügt", - "user-is-being-added": "Benutzer wird hinzugefügt ...", - "user-updated": "Benutzer:in wurde aktualisiert", - "username": "Benutzername", - "users": "Benutzer", - "valid-city-is-required": "Du musst eine Stadt angeben", - "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", - "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", - "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", - "verfuegbare": "Verfügbar", - "welcome_wavinghand": "Willkommen 👋", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", - "zip-postal-code": "Postleitzahl", - "add-user-group": "Neue Gruppe erstellen", - "add-your-first-group": "Erstelle die erste Gruppe", - "create-a-new-user-group": "Erstelle eine neue Gruppe", - "description-optional": "Beschreibung (optional)", - "granted": "Gewährt", - "group-added": "Gruppe hinzugefügt", - "group-is-being-added": "Gruppe wird erstellt", - "group-name-is-required": "Der Gruppenname muss angegeben werden.", - "name-is-required": "Der Gruppenname muss angegeben werden", - "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", - "something-about-the-group": "Infos zur Gruppe", - "there-are-no-groups-yet": "Es gibt noch keine Gruppen", - "updating-permissions": "Berechtigungen werden aktualisiert...", - "user-groups": "Benutzergruppen", - "description": "Beschreibung", - "search-for-permission": "Berechtigungen durchsuchen", - "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", - "delete-group": "Gruppe löschen", - "group-updated": "Gruppe aktualisiert", - "updateing-group": "Gruppe wird aktualisiert..." -} + "404message": "Die gesuchte Seite wurde leider nicht gefunden.", + "404title": "Fehler 404", + "about": "Über", + "action": "Aktionen", + "active": "Aktiv", + "add-donation": "Sponsoring erstellen", + "add-donor": "Sponsor:in erstellen", + "add-user-group": "Neue Gruppe erstellen", + "add-your-first-contact": "Erstelle den ersten Kontakt", + "add-your-first-donor": "Erstelle die erste Sponsor:in", + "add-your-first-group": "Erstelle die erste Gruppe", + "add-your-first-organization": "Erstelle die erste Organisation", + "add-your-first-runner": "Erstelle die erste Läufer:in", + "add-your-first-team": "Erstelle das erste Team", + "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", + "add-your-first-user": "Erstelle die erste Benutzer:in", + "address": "Adresse", + "address-is-required": "Du musst eine Adresse angeben", + "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", + "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", + "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", + "amount-per-kilometer": "Betrag pro Kilometer", + "apartment-suite-etc": "Apartment, Wohnung, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Änderungen anwenden", + "attention": "Achtung!", + "author": "Autor:in", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", + "by": "von", + "cancel": "Abbrechen", + "cancel-delete": "Löschen abbrechen", + "cancel-keep-donor": "Abbrechen, Sponsor:in behalten", + "cancel-keep-organization": "Abbrechen und Organisation bearbeiten", + "cancel-keep-team": "Abbrechen, Team behalten", + "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", + "city": "Stadt", + "close": "Schließen", + "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", + "confirm": "Bestätigen", + "confirm-delete": "Löschung Bestätigen", + "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", + "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", + "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", + "confirm-deletion": "Löschung Bestätigen", + "contact": "Kontakt", + "contact-deleted": "Kontakt gelöscht", + "contact-information": "Kontaktinformation", + "contact-is-being-updated": "Kontakt wird aktualisiert ...", + "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", + "contacts": "Kontakte", + "contacts-are-being-loaded": "Kontakte werden geladen ...", + "count_organizations": "Organisationen (Anzahl)", + "count_teams": "Teams (Anzahl)", + "create": "Erstellen", + "create-a-new": "Erstelle eine neue", + "create-a-new-contact": "Kontakt erstellen", + "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", + "create-a-new-donor": "Neue Sponsor:in erstellen", + "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", + "create-a-new-organization": "Neue Organisation anlegen", + "create-a-new-runner": "Neue Läufer:in erstellen", + "create-a-new-team": "Erstelle ein neues Team", + "create-a-new-track": "Neuen Track erstellen", + "create-a-new-user": "Neue Benutzer:in anlegen", + "create-a-new-user-group": "Erstelle eine neue Gruppe", + "create-organization": "Organisation erstellen", + "create-team": "Team erstellen", + "create-track": "Track erstellen", + "create-user": "Benutzer anlegen", + "credits": "Credits", + "csv_import__class": "Klasse", + "csv_import__firstname": "Vorname", + "csv_import__lastname": "Nachname", + "csv_import__middlename": "Mittelname", + "csv_import__team": "Team", + "dashboard-greeting": "Moin", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Suche ...", + "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", + "loading": "Wird geladen...", + "next": "Nächste", + "of": "von", + "previous": "Vorherige", + "to": "bis", + "showing": "Zeige", + "no_matching_records_found": "Keine passenden Einträge gefunden", + "page": "Seite", + "records": "Einträge", + "sort_column_ascending": "Spalte aufsteigend sortieren", + "sort_column_descending": "Spalte absteigend sortieren" + }, + "delete": "Löschen", + "delete-contact": "Kontakt löschen", + "delete-donation": "Sponsporing löschen", + "delete-donor": "Sponsor:in löschen", + "delete-group": "Gruppe löschen", + "delete-organization": "Organisation löschen", + "delete-runner": "Läufer:in löschen", + "delete-team": "Team Löschen", + "delete-user": "Benutzer:in löschen", + "dependency_name": "Name", + "description": "Beschreibung", + "description-optional": "Beschreibung (optional)", + "deselect-all": "Alle abwählen", + "details": "Details", + "distance": "Distanz", + "distance-donation": "Sponsoring", + "distance-in-km": "Distanz (in KM)", + "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", + "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", + "donation-amount": "Sponsoringbetrag", + "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", + "donations": "Sponsorings", + "donor": "Sponsor:in", + "donor-added": "Sponsor:in hinzugefügt", + "donor-deleted": "Sponsor:in gelöscht", + "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", + "donor-is-being-added": "Sponsor:in wird hinzugefügt...", + "donor-is-being-updated": "Sponsor:in wird aktualisiert", + "donors": "Sponsor:innen", + "donors-are-being-loaded": "Sponsor:innen werden geladen", + "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", + "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", + "e-mail-adress": "E-Mail-Adresse", + "edit": "Bearbeiten", + "edit-permissions": "Berechtigungen bearbeiten", + "email_address_or_username": "E-Mail-Adresse/ Benutzername", + "error_on_login": "😢Fehler beim Login", + "erteilte": "Direkt erteilte", + "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filtern nach Organisation / Team", + "first-name": "Vorname", + "first-name-is-required": "Vorname muss angegeben werden", + "fixed-donation": "Festbetragsspende", + "forgot_password": "Passwort vergessen?", + "geerbte": "geerbte", + "general-stats": "Allgemeine Statistiken", + "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", + "generate-sponsoring-contract": "Sponsoringvertrag generieren", + "generate-sponsoring-contracts": "Sponsoringverträge generieren", + "generating-pdf": "Pdf wird generiert...", + "generating-pdfs": "PDFs werden generiert...", + "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", + "go-to-login": "Zum Login", + "goback": "Zur Startseite", + "granted": "Gewährt", + "group": "Gruppe", + "group-added": "Gruppe hinzugefügt", + "group-is-being-added": "Gruppe wird erstellt", + "group-name-is-required": "Der Gruppenname muss angegeben werden.", + "group-updated": "Gruppe aktualisiert", + "groups": "Gruppen", + "home": "Start", + "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", + "import-finished": "Import abgeschlossen", + "import-runners": "Läufer:innen importieren", + "import__target-organization": "Ziel Organisation", + "imprint": "Impressum ", + "imprint-loading": "Impressum lädt...", + "inactive": "Inaktiv", + "installed-version": "Installierte Version", + "internal-error": "Interner Fehler", + "invalid-mail-reset": "Das ist keine gültige E-Mail", + "laeufer-hinzufuegen": "Läufer:in hinzufügen", + "laeufer-importieren": "Läufer:innen importieren", + "last-name": "Nachname", + "last-name-is-required": "Nachname muss angegeben werden", + "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", + "license": "Lizenz", + "licenses-are-being-loaded": "Lizenzen werden geladen...", + "loading-contact-details": "Kontaktdaten werden geladen ...", + "loading-donation-details": "Lade Sponsoringdetails", + "loading-donor-details": "Lade Details", + "loading-runners": "Läufer:innen werden geladen...", + "log_in": "Anmelden", + "log_in_to_your_account": "Bitte melde dich an", + "login_is_checked": "Login wird überprüft", + "logout": "Abmelden", + "mail-validation-in-progress": "E-Mail Verifizierung läuft... ", + "manage-admin-users": "Nutzer verwalten", + "middle-name": "Mittelname", + "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", + "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", + "name": "Name", + "name-is-required": "Der Gruppenname muss angegeben werden", + "new-password": "Neues Passwort", + "no-contact-specified": "Kein Kontakt angegeben", + "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", + "no-organization-specified": "Keine Organisation angegeben", + "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", + "organization": "Organisation", + "organization-added": "Organisation hinzugefügt", + "organization-deleted": "Organisation gelöscht", + "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", + "organization-is-being-added": "Organisation wird hinzugefügt ...", + "organization-name-is-required": "Der Name muss angegeben werden", + "organizations": "Organisationen", + "organizations-are-being-loaded": "Organisationen werden geladen ...", + "orgs": "Orgs", + "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", + "password": "Passwort", + "password-is-required": "Passwort muss angegeben werden", + "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", + "password-reset-in-progress": "Passwort wird zurückgesetzt...", + "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", + "password-reset-successful": "Passwort erfolgreich zurückgesetzt!", + "pdf-generation-failed": "PDF Generierung fehlgeschlagen!", + "pdf-successfully-generated": "PDF wurde erfolgreich generiert!", + "pdfs-successfully-generated": "Alle PDFs wurden generiert!", + "per-kilometer": "pro Kilometer", + "permissions": "Berechtigungen", + "permissions-updated": "Berechtigungen aktualisiert!", + "phone": "Telefon", + "please-provide-a-password": "Bitte gebe ein Passwort an...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", + "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", + "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", + "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", + "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", + "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", + "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", + "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", + "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", + "privacy": "Datenschutz", + "privacy-loading": "Datenschutzerklärung lädt...", + "profile-picture": "Profilbild", + "read-license": "Lizenz-Text lesen", + "receipt-needed": "Spendenquittung benötigt", + "repo_link": "Link", + "request-a-new-reset-mail": "Neue Reset-Mail anfordern", + "reset-my-password": "Passwort zurücksetzen", + "reset-password": "Passwort zurücksetzen", + "runner": "Läufer:in", + "runner-added": "Läufer:in hinzugefügt", + "runner-import": "Läufer:innen Import", + "runner-is-being-added": "Läufer:in wird hinzugefügt...", + "runner-updated": "Läufer:in aktualisiert!", + "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", + "runners": "Läufer", + "runners-are-being-imported": "Läufer:innen werden importiert ...", + "runners-are-being-loaded": "Läufer:innen werden geladen ...", + "save": "Speichern", + "save-changes": "Änderungen speichern", + "search-for-permission": "Berechtigungen durchsuchen", + "select-all": "Alle auswählen", + "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", + "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", + "settings": "Einstellungen", + "something-about-the-group": "Infos zur Gruppe", + "stats-are-being-loaded": "Die Statistiken werden geladen...", + "status": "Status", + "successful-password-reset": "Passwort erfolgreich zurückgesetzt!", + "team": "Team", + "team-detail-is-being-loaded": "Team wird geladen...", + "team-name": "Teamname", + "team-name-is-required": "Teamname ist erforderlich", + "teams": "Teams", + "teams-are-being-loaded": "Teams werden geladen ...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt.
    Bitte gebe eine Telefonnummer im internationalen Format an...", + "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", + "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", + "there-are-no-groups-yet": "Es gibt noch keine Gruppen", + "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", + "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", + "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", + "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", + "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", + "total-distance": "gelaufene Strecke", + "total-donation-amount": "Gesamtbetrag", + "total-donations": "Spendensumme", + "total-scans": "gesamte Scans", + "track-added": "Track hinzugefügt", + "track-data-is-being-loaded": "Trackdaten werden geladen", + "track-is-being-added": "Track wird hinzugefügt...", + "track-length-in-m": "Tracklänge (in Metern)", + "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", + "track-name": "Trackname", + "track-name-must-not-be-empty": "Der Name muss angegeben werden", + "tracks": "Tracks", + "updated-contact": "Kontakt aktualisiert!", + "updated-donor": "Sponsor:in wurde aktualisiert", + "updated-organization": "Organisation wurde aktualisiert", + "updateing-group": "Gruppe wird aktualisiert...", + "updating-organization": "Organisation wird aktualisiert", + "updating-permissions": "Berechtigungen werden aktualisiert...", + "updating-runner": "Läufer:in wird aktualisiert.", + "updating-user": "Benutzer:in wird aktualisiert...", + "user-added": "Benutzer hinzugefügt", + "user-groups": "Benutzergruppen", + "user-is-being-added": "Benutzer wird hinzugefügt ...", + "user-updated": "Benutzer:in wurde aktualisiert", + "username": "Benutzername", + "users": "Benutzer", + "valid-city-is-required": "Du musst eine Stadt angeben", + "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", + "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", + "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", + "verfuegbare": "Verfügbar", + "welcome_wavinghand": "Willkommen 👋", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", + "zip-postal-code": "Postleitzahl" +} \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index 016701ae..29df2791 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,308 +1,308 @@ { - "404message": "Sorry, the page you are looking for could not be found.", - "404title": "Error 404", - "about": "About", - "action": "Action", - "active": "Active", - "add-donation": "Add donation", - "add-donor": "add donor", - "add-your-first-contact": "Add your first contact", - "add-your-first-donor": "add your first donor", - "add-your-first-organization": "Add your first organization", - "add-your-first-runner": "Add your first runner", - "add-your-first-team": "Add your first team", - "add-your-first-track": "Add your first track.", - "add-your-first-user": "Add your first user", - "address": "Address", - "address-is-required": "Address is required", - "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", - "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", - "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", - "amount-per-kilometer": "Amount per kilometer", - "apartment-suite-etc": "Apartment, suite, etc.", - "application_name": "Lauf für Kaya! - Admin", - "applying-changes": "Applying Changes", - "attention": "Attention!", - "author": "Author", - "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", - "by": "by", - "cancel": "Cancel", - "cancel-delete": "Cancel Delete", - "cancel-keep-donor": "Cancel, keep donor", - "cancel-keep-organization": "Cancel, keep organization", - "cancel-keep-team": "Cancel, keep team", - "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", - "city": "City", - "close": "Close", - "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", - "confirm": "Confirm", - "confirm-delete": "Confirm Delete", - "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", - "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", - "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", - "confirm-deletion": "Confirm Deletion", - "contact": "Contact", - "contact-deleted": "Contact deleted", - "contact-information": "Contact Information", - "contact-is-being-updated": "Contact is being updated...", - "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", - "contacts": "Contacts", - "contacts-are-being-loaded": "contacts are being loaded...", - "count_organizations": "# Organizations", - "count_teams": "# Teams", - "create": "Create", - "create-a-new": "Create a new", - "create-a-new-contact": "Create a new contact", - "create-a-new-distance-donation": "Create a new distance donation", - "create-a-new-donor": "Create a new donor", - "create-a-new-fixed-donation": "Create a new fixed donation", - "create-a-new-organization": "Create a new Organization", - "create-a-new-runner": "Create a new Runner", - "create-a-new-team": "Create a new team", - "create-a-new-track": "Create a new Track", - "create-a-new-user": "Create a new User", - "create-organization": "Create Organization", - "create-team": "Create Team", - "create-track": "Create Track", - "create-user": "Create User", - "credits": "Credits", - "csv_import__class": "Class", - "csv_import__firstname": "Firstname", - "csv_import__lastname": "Lastname", - "csv_import__middlename": "Middlename", - "csv_import__team": "Team", - "dashboard-greeting": "hello there", - "dashboard-title": "Dashboard", - "datatable": { - "search": "🔍 Search...", - "sort_column_ascending": "Sort column ascending", - "sort_column_descending": "Sort column descending", - "previous": "Previous", - "next": "Next", - "page": "Page", - "showing": "Showing", - "records": "Records", - "of": "of", - "to": "to", - "loading": "Loading...", - "no_matching_records_found": "No matching records found", - "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" - }, - "delete": "Delete", - "delete-contact": "Delete Contact", - "delete-donation": "Delete Donation", - "delete-donor": "Delete donor", - "delete-organization": "Delete Organization", - "delete-runner": "Delete Runner", - "delete-team": "Delete Team", - "delete-user": "Delete User", - "dependency_name": "Name", - "deselect-all": "deselect all", - "details": "Details", - "distance": "Distance", - "distance-donation": "distance donation", - "distance-in-km": "Distance in km", - "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", - "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", - "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", - "donation-amount": "Donation amount", - "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", - "donations": "Donations", - "donor": "Donor", - "donor-added": "Donor added", - "donor-deleted": "donor deleted", - "donor-has-no-associated-donations": "Donor has no associated donations.", - "donor-is-being-added": "Donor is being added...", - "donor-is-being-updated": "Donor is being updated", - "donors": "Donors", - "donors-are-being-loaded": "donors are being loaded", - "dont-have-your-email-connected": "Don't have your email connected?", - "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", - "e-mail-adress": "E-Mail Adress", - "edit": "Edit", - "edit-permissions": "edit permissions", - "email_address_or_username": "Email / username", - "error_on_login": "Error on login", - "erteilte": "Directly granted", - "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", - "faq": "FAQ", - "filter-by-organization-team": "Filter by Organization/ Team", - "first-name": "First name", - "first-name-is-required": "First Name is required", - "fixed-donation": "fixed donation", - "forgot_password": "Forgot your password?", - "geerbte": "inherited", - "general-stats": "General Stats", - "general_promise_error": "😢 Error", - "generate-sponsoring-contract": "generate sponsoring contract", - "generate-sponsoring-contracts": "generate sponsoring contracts", - "generating-pdf": "generating PDF...", - "generating-pdfs": "generating PDFs...", - "generic-ui-logic-error": "Something went wrong in the UI logic", - "go-to-login": "Go To Login", - "goback": "Go Home", - "group": "Group", - "groups": "Groups", - "home": "Home", - "icon-image-credits": "We also want to thank these projects for illustrations and icons:", - "import-finished": "Import finished", - "import-runners": "Import runners", - "import__target-organization": "Target Organization", - "imprint": "Imprint", - "imprint-loading": "Imprint loading...", - "inactive": "Inactive", - "installed-version": "Installed version", - "internal-error": "Internal Error", - "invalid-mail-reset": "the provided email is invalid", - "laeufer-hinzufuegen": "Add runner", - "laeufer-importieren": "Läufer importieren", - "last-name": "Last name", - "last-name-is-required": "Last Name is required", - "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", - "license": "License", - "licenses-are-being-loaded": "Licenses are being loaded...", - "loading-contact-details": "Loading contact details...", - "loading-donation-details": "Loading donation details", - "loading-donor-details": "Loading donor details", - "loading-runners": "loading runners...", - "log_in": "Log in", - "log_in_to_your_account": "Log in to your account", - "login_is_checked": "Login is being checked...", - "logout": "Logout", - "mail-validation-in-progress": "mail validation in progress...", - "manage-admin-users": "manage admin users", - "middle-name": "Middle name", - "minimum-lap-time-in-s": "minimum lap time in s", - "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", - "name": "Name", - "new-password": "New password", - "no-contact-specified": "no contact specified", - "no-license-text-could-be-found": "No license text could be found 😢", - "no-organization-specified": "no organization specified", - "no-tracks-added-yet": "there are no tracks added yet.", - "organization": "Organization", - "organization-added": "Organization added", - "organization-deleted": "Organization deleted", - "organization-detail-is-being-loaded": "organization detail is being loaded...", - "organization-is-being-added": "Organization is being added...", - "organization-name-is-required": "Organization name is required", - "organizations": "Organizations", - "organizations-are-being-loaded": "organizations are being loaded...", - "orgs": "Orgs", - "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", - "password": "Password", - "password-is-required": "Password is required", - "password-reset-failed": "Password reset failed!", - "password-reset-in-progress": "Password Reset in Progress...", - "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", - "password-reset-successful": "Password Reset successful!", - "pdf-generation-failed": "PDF generation failed!", - "pdf-successfully-generated": "PDF successfully generated!", - "pdfs-successfully-generated": "PDFs successfully generated!", - "per-kilometer": "per Kilometer", - "permissions": "Permissions", - "permissions-updated": "Permissions updated!", - "phone": "Phone", - "please-provide-a-password": "Please provide a password...", - "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", - "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", - "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", - "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", - "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", - "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", - "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", - "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", - "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", - "please-request-a-new-reset-mail": "Please request a new reset mail...", - "privacy": "Privacy", - "privacy-loading": "Privacy loading...", - "profile-picture": "Profile Picture", - "read-license": "Read License", - "receipt-needed": "Receipt needed", - "repo_link": "Link", - "request-a-new-reset-mail": "Request a new reset mail", - "reset-my-password": "Reset my password", - "reset-password": "Reset your password", - "runner": "Runner", - "runner-added": "Runner added", - "runner-import": "Runner Import", - "runner-is-being-added": "Runner is being added...", - "runner-updated": "Runner updated!", - "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", - "runners": "Runners", - "runners-are-being-imported": "Runners are being imported...", - "runners-are-being-loaded": "runners are being loaded...", - "save": "Save", - "save-changes": "Save Changes", - "select-all": "select all", - "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", - "settings": "Settings", - "stats-are-being-loaded": "stats are being loaded...", - "status": "Status", - "successful-password-reset": "Successful password reset!", - "team": "Team", - "team-detail-is-being-loaded": "team detail is being loaded...", - "team-name": "Team name", - "team-name-is-required": "team name is required", - "teams": "Teams", - "teams-are-being-loaded": "teams are being loaded...", - "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", - "there-are-no-contacts-added-yet": "There are no contacts added yet.", - "there-are-no-donors-yet": "There are no donors yet", - "there-are-no-organizations-added-yet": "There are no organizations added yet.", - "there-are-no-runners-added-yet": "There are no runners added yet.", - "there-are-no-teams-added-yet": "There are no teams added yet.", - "there-are-no-users-added-yet": "There are no users added yet.", - "this-might-take-a-moment": "This might take a moment 👀", - "total-distance": "total distance", - "total-donation-amount": "total donation amount", - "total-donations": "total donations", - "total-scans": "total scans", - "track-added": "Track added", - "track-data-is-being-loaded": "Track data is being loaded", - "track-is-being-added": "Track is being added...", - "track-length-in-m": "Track Length in m", - "track-length-must-be-greater-than-0": "Track length must be greater than 0", - "track-name": "Track name", - "track-name-must-not-be-empty": "Track name must not be empty", - "tracks": "Tracks", - "updated-contact": "Updated contact!", - "updated-donor": "updated donor", - "updated-organization": "updated organization", - "updating-organization": "updating organization", - "updating-runner": "Updating runner...", - "updating-user": "updating user...", - "user-added": "User added", - "user-is-being-added": "User is being added...", - "user-updated": "User updated", - "username": "Username", - "users": "Users", - "valid-city-is-required": "Valid city is required", - "valid-email-is-required": "valid email is required", - "valid-international-phone-number-is-required": "valid international phone number is required...", - "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", - "verfuegbare": "availdable", - "welcome_wavinghand": "Welcome 👋", - "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", - "zip-postal-code": "ZIP/ postal code", - "group-name-is-required": "Group name is required", - "updating-permissions": "updating permissions...", - "granted": "granted", - "group-is-being-added": "Group is being added...", - "group-added": "Group added", - "create-a-new-user-group": "Create a new user group", - "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", - "name-is-required": "Name is required", - "description-optional": "Description (optional)", - "something-about-the-group": "Something about the group...", - "add-user-group": "Add User Group", - "user-groups": "User Groups", - "there-are-no-groups-yet": "There are no groups yet", - "add-your-first-group": "Add your first group", - "description": "description", - "search-for-permission": "Search for permission", - "set-the-user-active-inactive": "set the user active/ inactive", - "delete-group": "Delete Group", - "updateing-group": "updateing group...", - "group-updated": "group updated" -} + "404message": "Sorry, the page you are looking for could not be found.", + "404title": "Error 404", + "about": "About", + "action": "Action", + "active": "Active", + "add-donation": "Add donation", + "add-donor": "add donor", + "add-user-group": "Add User Group", + "add-your-first-contact": "Add your first contact", + "add-your-first-donor": "add your first donor", + "add-your-first-group": "Add your first group", + "add-your-first-organization": "Add your first organization", + "add-your-first-runner": "Add your first runner", + "add-your-first-team": "Add your first team", + "add-your-first-track": "Add your first track.", + "add-your-first-user": "Add your first user", + "address": "Address", + "address-is-required": "Address is required", + "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", + "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", + "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", + "amount-per-kilometer": "Amount per kilometer", + "apartment-suite-etc": "Apartment, suite, etc.", + "application_name": "Lauf für Kaya! - Admin", + "applying-changes": "Applying Changes", + "attention": "Attention!", + "author": "Author", + "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", + "by": "by", + "cancel": "Cancel", + "cancel-delete": "Cancel Delete", + "cancel-keep-donor": "Cancel, keep donor", + "cancel-keep-organization": "Cancel, keep organization", + "cancel-keep-team": "Cancel, keep team", + "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", + "city": "City", + "close": "Close", + "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", + "confirm": "Confirm", + "confirm-delete": "Confirm Delete", + "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", + "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", + "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", + "confirm-deletion": "Confirm Deletion", + "contact": "Contact", + "contact-deleted": "Contact deleted", + "contact-information": "Contact Information", + "contact-is-being-updated": "Contact is being updated...", + "contact-is-not-a-member-in-any-group": "Contact is not a member in any group", + "contacts": "Contacts", + "contacts-are-being-loaded": "contacts are being loaded...", + "count_organizations": "# Organizations", + "count_teams": "# Teams", + "create": "Create", + "create-a-new": "Create a new", + "create-a-new-contact": "Create a new contact", + "create-a-new-distance-donation": "Create a new distance donation", + "create-a-new-donor": "Create a new donor", + "create-a-new-fixed-donation": "Create a new fixed donation", + "create-a-new-organization": "Create a new Organization", + "create-a-new-runner": "Create a new Runner", + "create-a-new-team": "Create a new team", + "create-a-new-track": "Create a new Track", + "create-a-new-user": "Create a new User", + "create-a-new-user-group": "Create a new user group", + "create-organization": "Create Organization", + "create-team": "Create Team", + "create-track": "Create Track", + "create-user": "Create User", + "credits": "Credits", + "csv_import__class": "Class", + "csv_import__firstname": "Firstname", + "csv_import__lastname": "Lastname", + "csv_import__middlename": "Middlename", + "csv_import__team": "Team", + "dashboard-greeting": "hello there", + "dashboard-title": "Dashboard", + "datatable": { + "search": "🔍 Search...", + "sort_column_ascending": "Sort column ascending", + "sort_column_descending": "Sort column descending", + "previous": "Previous", + "next": "Next", + "page": "Page", + "showing": "Showing", + "records": "Records", + "of": "of", + "to": "to", + "loading": "Loading...", + "no_matching_records_found": "No matching records found", + "an_error_happened_while_fetching_the_data": "An error happened while fetching the data" + }, + "delete": "Delete", + "delete-contact": "Delete Contact", + "delete-donation": "Delete Donation", + "delete-donor": "Delete donor", + "delete-group": "Delete Group", + "delete-organization": "Delete Organization", + "delete-runner": "Delete Runner", + "delete-team": "Delete Team", + "delete-user": "Delete User", + "dependency_name": "Name", + "description": "description", + "description-optional": "Description (optional)", + "deselect-all": "deselect all", + "details": "Details", + "distance": "Distance", + "distance-donation": "distance donation", + "distance-in-km": "Distance in km", + "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", + "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", + "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", + "donation-amount": "Donation amount", + "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", + "donations": "Donations", + "donor": "Donor", + "donor-added": "Donor added", + "donor-deleted": "donor deleted", + "donor-has-no-associated-donations": "Donor has no associated donations.", + "donor-is-being-added": "Donor is being added...", + "donor-is-being-updated": "Donor is being updated", + "donors": "Donors", + "donors-are-being-loaded": "donors are being loaded", + "dont-have-your-email-connected": "Don't have your email connected?", + "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", + "e-mail-adress": "E-Mail Adress", + "edit": "Edit", + "edit-permissions": "edit permissions", + "email_address_or_username": "Email / username", + "error_on_login": "Error on login", + "erteilte": "Directly granted", + "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", + "faq": "FAQ", + "filter-by-organization-team": "Filter by Organization/ Team", + "first-name": "First name", + "first-name-is-required": "First Name is required", + "fixed-donation": "fixed donation", + "forgot_password": "Forgot your password?", + "geerbte": "inherited", + "general-stats": "General Stats", + "general_promise_error": "😢 Error", + "generate-sponsoring-contract": "generate sponsoring contract", + "generate-sponsoring-contracts": "generate sponsoring contracts", + "generating-pdf": "generating PDF...", + "generating-pdfs": "generating PDFs...", + "generic-ui-logic-error": "Something went wrong in the UI logic", + "go-to-login": "Go To Login", + "goback": "Go Home", + "granted": "granted", + "group": "Group", + "group-added": "Group added", + "group-is-being-added": "Group is being added...", + "group-name-is-required": "Group name is required", + "group-updated": "group updated", + "groups": "Groups", + "home": "Home", + "icon-image-credits": "We also want to thank these projects for illustrations and icons:", + "import-finished": "Import finished", + "import-runners": "Import runners", + "import__target-organization": "Target Organization", + "imprint": "Imprint", + "imprint-loading": "Imprint loading...", + "inactive": "Inactive", + "installed-version": "Installed version", + "internal-error": "Internal Error", + "invalid-mail-reset": "the provided email is invalid", + "laeufer-hinzufuegen": "Add runner", + "laeufer-importieren": "Läufer importieren", + "last-name": "Last name", + "last-name-is-required": "Last Name is required", + "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", + "license": "License", + "licenses-are-being-loaded": "Licenses are being loaded...", + "loading-contact-details": "Loading contact details...", + "loading-donation-details": "Loading donation details", + "loading-donor-details": "Loading donor details", + "loading-runners": "loading runners...", + "log_in": "Log in", + "log_in_to_your_account": "Log in to your account", + "login_is_checked": "Login is being checked...", + "logout": "Logout", + "mail-validation-in-progress": "mail validation in progress...", + "manage-admin-users": "manage admin users", + "middle-name": "Middle name", + "minimum-lap-time-in-s": "minimum lap time in s", + "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", + "name": "Name", + "name-is-required": "Name is required", + "new-password": "New password", + "no-contact-specified": "no contact specified", + "no-license-text-could-be-found": "No license text could be found 😢", + "no-organization-specified": "no organization specified", + "no-tracks-added-yet": "there are no tracks added yet.", + "organization": "Organization", + "organization-added": "Organization added", + "organization-deleted": "Organization deleted", + "organization-detail-is-being-loaded": "organization detail is being loaded...", + "organization-is-being-added": "Organization is being added...", + "organization-name-is-required": "Organization name is required", + "organizations": "Organizations", + "organizations-are-being-loaded": "organizations are being loaded...", + "orgs": "Orgs", + "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", + "password": "Password", + "password-is-required": "Password is required", + "password-reset-failed": "Password reset failed!", + "password-reset-in-progress": "Password Reset in Progress...", + "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", + "password-reset-successful": "Password Reset successful!", + "pdf-generation-failed": "PDF generation failed!", + "pdf-successfully-generated": "PDF successfully generated!", + "pdfs-successfully-generated": "PDFs successfully generated!", + "per-kilometer": "per Kilometer", + "permissions": "Permissions", + "permissions-updated": "Permissions updated!", + "phone": "Phone", + "please-provide-a-password": "Please provide a password...", + "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", + "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", + "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", + "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", + "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", + "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", + "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", + "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", + "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", + "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", + "please-request-a-new-reset-mail": "Please request a new reset mail...", + "privacy": "Privacy", + "privacy-loading": "Privacy loading...", + "profile-picture": "Profile Picture", + "read-license": "Read License", + "receipt-needed": "Receipt needed", + "repo_link": "Link", + "request-a-new-reset-mail": "Request a new reset mail", + "reset-my-password": "Reset my password", + "reset-password": "Reset your password", + "runner": "Runner", + "runner-added": "Runner added", + "runner-import": "Runner Import", + "runner-is-being-added": "Runner is being added...", + "runner-updated": "Runner updated!", + "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", + "runners": "Runners", + "runners-are-being-imported": "Runners are being imported...", + "runners-are-being-loaded": "runners are being loaded...", + "save": "Save", + "save-changes": "Save Changes", + "search-for-permission": "Search for permission", + "select-all": "select all", + "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", + "set-the-user-active-inactive": "set the user active/ inactive", + "settings": "Settings", + "something-about-the-group": "Something about the group...", + "stats-are-being-loaded": "stats are being loaded...", + "status": "Status", + "successful-password-reset": "Successful password reset!", + "team": "Team", + "team-detail-is-being-loaded": "team detail is being loaded...", + "team-name": "Team name", + "team-name-is-required": "team name is required", + "teams": "Teams", + "teams-are-being-loaded": "teams are being loaded...", + "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.
    please enter a valid international number...", + "there-are-no-contacts-added-yet": "There are no contacts added yet.", + "there-are-no-donors-yet": "There are no donors yet", + "there-are-no-groups-yet": "There are no groups yet", + "there-are-no-organizations-added-yet": "There are no organizations added yet.", + "there-are-no-runners-added-yet": "There are no runners added yet.", + "there-are-no-teams-added-yet": "There are no teams added yet.", + "there-are-no-users-added-yet": "There are no users added yet.", + "this-might-take-a-moment": "This might take a moment 👀", + "total-distance": "total distance", + "total-donation-amount": "total donation amount", + "total-donations": "total donations", + "total-scans": "total scans", + "track-added": "Track added", + "track-data-is-being-loaded": "Track data is being loaded", + "track-is-being-added": "Track is being added...", + "track-length-in-m": "Track Length in m", + "track-length-must-be-greater-than-0": "Track length must be greater than 0", + "track-name": "Track name", + "track-name-must-not-be-empty": "Track name must not be empty", + "tracks": "Tracks", + "updated-contact": "Updated contact!", + "updated-donor": "updated donor", + "updated-organization": "updated organization", + "updateing-group": "updateing group...", + "updating-organization": "updating organization", + "updating-permissions": "updating permissions...", + "updating-runner": "Updating runner...", + "updating-user": "updating user...", + "user-added": "User added", + "user-groups": "User Groups", + "user-is-being-added": "User is being added...", + "user-updated": "User updated", + "username": "Username", + "users": "Users", + "valid-city-is-required": "Valid city is required", + "valid-email-is-required": "valid email is required", + "valid-international-phone-number-is-required": "valid international phone number is required...", + "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", + "verfuegbare": "availdable", + "welcome_wavinghand": "Welcome 👋", + "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", + "zip-postal-code": "ZIP/ postal code" +} \ No newline at end of file From 29f99f0b2047686327fe8c6f6ae68427c6db724b Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 19:53:18 +0100 Subject: [PATCH 27/30] =?UTF-8?q?Added=20missing=20translations=20?= =?UTF-8?q?=F0=9F=8C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #48 --- src/components/dashboard/Dashboard.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/dashboard/Dashboard.svelte b/src/components/dashboard/Dashboard.svelte index 62e5db67..4c66b23c 100644 --- a/src/components/dashboard/Dashboard.svelte +++ b/src/components/dashboard/Dashboard.svelte @@ -84,7 +84,7 @@ viewBox="0 0 640 512"> - UserGroups + {$_('user-groups')} {/if} {#if store.state.jwtinfo.userdetails.permissions.includes('RUNNER:GET')} From bfc93158f50bfa78a26340b609dffcc6b164f90c Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 19:58:46 +0100 Subject: [PATCH 28/30] Udergroup permission reactivity fix ref #48 --- src/components/groups/GroupDetail.svelte | 2 +- src/components/groups/GroupPermissions.svelte | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/groups/GroupDetail.svelte b/src/components/groups/GroupDetail.svelte index eab75d0e..414790fb 100644 --- a/src/components/groups/GroupDetail.svelte +++ b/src/components/groups/GroupDetail.svelte @@ -118,7 +118,7 @@
  • - {original_data.name} + {editable.name}
  • diff --git a/src/components/groups/GroupPermissions.svelte b/src/components/groups/GroupPermissions.svelte index c7ae9bc2..85a6d1f9 100644 --- a/src/components/groups/GroupPermissions.svelte +++ b/src/components/groups/GroupPermissions.svelte @@ -49,6 +49,7 @@ UserGroupService, (o) => o.target + ":" + o.action !== a.target + ":" + a.action ); }); + grantedPermissions_initial = grantedPermissions; Toastify({ text: $_("permissions-updated"), duration: 2500, @@ -91,7 +92,7 @@ UserGroupService, d="M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z" />
  • - {$_('users')}{$_('user-groups')} Date: Fri, 26 Feb 2021 19:59:38 +0100 Subject: [PATCH 29/30] User permission update reactivity fix ref #48 --- src/components/users/UserPermissions.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/users/UserPermissions.svelte b/src/components/users/UserPermissions.svelte index 36b1c04f..28bb92f0 100644 --- a/src/components/users/UserPermissions.svelte +++ b/src/components/users/UserPermissions.svelte @@ -50,6 +50,7 @@ (o) => o.target + ":" + o.action !== a.target + ":" + a.action ); }); + grantedPermissions_initial = grantedPermissions; Toastify({ text: $_("permissions-updated"), duration: 2500, From e1ac35f848e810191b98b2dc2b9f6ec7e4975f6f Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 26 Feb 2021 20:01:16 +0100 Subject: [PATCH 30/30] Fixed root breadcrumb linking ref #48 --- src/components/groups/GroupPermissions.svelte | 2 +- src/components/users/UserPermissions.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/groups/GroupPermissions.svelte b/src/components/groups/GroupPermissions.svelte index 85a6d1f9..8bd4714b 100644 --- a/src/components/groups/GroupPermissions.svelte +++ b/src/components/groups/GroupPermissions.svelte @@ -92,7 +92,7 @@ UserGroupService, d="M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z" />
  • - {$_('user-groups')}{$_('user-groups')}
  • - {$_('users')}{$_('users')}