feat: add crud for integrations (#11)
* wip: add crud for services and integrations * feat: remove services * feat: move integration definitions to homarr/definitions, add temporary test connection solution without actual request * feat: add integration count badge * feat: add translation for integrations * feat: add notifications and translate them * feat: add notice to integration forms about test connection * chore: fix ci check issues * feat: add confirm modals for integration deletion and secret card cancellation, change ordering for list page, add name property to integrations * refactor: move revalidate path action * chore: fix ci check issues * chore: install missing dependencies * chore: fix ci check issues * chore: address pull request feedback
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import "dayjs/locale/de";
|
||||
|
||||
export default {
|
||||
user: {
|
||||
page: {
|
||||
@@ -26,6 +28,132 @@ export default {
|
||||
create: "Benutzer erstellen",
|
||||
},
|
||||
},
|
||||
integration: {
|
||||
page: {
|
||||
list: {
|
||||
title: "Integrationen",
|
||||
search: "Integration suchen",
|
||||
empty: "Keine Integrationen gefunden",
|
||||
},
|
||||
create: {
|
||||
title: "Neue {name} Integration erstellen",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Erstellung erfolgreich",
|
||||
message: "Die Integration wurde erfolgreich erstellt",
|
||||
},
|
||||
error: {
|
||||
title: "Erstellung fehlgeschlagen",
|
||||
message: "Die Integration konnte nicht erstellt werden",
|
||||
},
|
||||
},
|
||||
},
|
||||
edit: {
|
||||
title: "{name} Integration bearbeiten",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Änderungen erfolgreich angewendet",
|
||||
message: "Die Integration wurde erfolgreich gespeichert",
|
||||
},
|
||||
error: {
|
||||
title: "Änderungen konnten nicht angewendet werden",
|
||||
message: "Die Integration konnte nicht gespeichert werden",
|
||||
},
|
||||
},
|
||||
},
|
||||
delete: {
|
||||
title: "Integration entfernen",
|
||||
message: "Möchtest du die Integration {name} wirklich entfernen?",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Entfernen erfolgreich",
|
||||
message: "Die Integration wurde erfolgreich entfernt",
|
||||
},
|
||||
error: {
|
||||
title: "Entfernen fehlgeschlagen",
|
||||
message: "Die Integration konnte nicht entfernt werden",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
field: {
|
||||
name: {
|
||||
label: "Name",
|
||||
},
|
||||
url: {
|
||||
label: "Url",
|
||||
},
|
||||
},
|
||||
action: {
|
||||
create: "Neue Integration",
|
||||
},
|
||||
testConnection: {
|
||||
action: "Verbindung überprüfen",
|
||||
alertNotice:
|
||||
"Der Button zum Speichern wird aktiviert, sobald die Verbindung erfolgreich überprüft wurde",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Verbindung erfolgreich",
|
||||
message: "Die Verbindung wurde erfolgreich hergestellt",
|
||||
},
|
||||
invalidUrl: {
|
||||
title: "Ungültige URL",
|
||||
message: "Die URL ist ungültig",
|
||||
},
|
||||
notAllSecretsProvided: {
|
||||
title: "Fehlende Zugangsdaten",
|
||||
message: "Es wurden nicht alle Zugangsdaten angegeben",
|
||||
},
|
||||
invalidCredentials: {
|
||||
title: "Ungültige Zugangsdaten",
|
||||
message: "Die Zugangsdaten sind ungültig",
|
||||
},
|
||||
commonError: {
|
||||
title: "Verbindung fehlgeschlagen",
|
||||
message: "Die Verbindung konnte nicht hergestellt werden",
|
||||
},
|
||||
},
|
||||
},
|
||||
secrets: {
|
||||
title: "Zugangsdaten",
|
||||
lastUpdated: "Zuletzt geändert {date}",
|
||||
secureNotice:
|
||||
"Diese Zugangsdaten können nach der Erstellung nicht mehr ausgelesen werden",
|
||||
reset: {
|
||||
title: "Zugangsdaten zurücksetzen",
|
||||
message: "Möchtest du diese Zugangsdaten wirklich zurücksetzen?",
|
||||
},
|
||||
kind: {
|
||||
username: {
|
||||
label: "Benutzername",
|
||||
newLabel: "Neuer Benutzername",
|
||||
},
|
||||
apiKey: {
|
||||
label: "API Key",
|
||||
newLabel: "Neuer API Key",
|
||||
},
|
||||
password: {
|
||||
label: "Passwort",
|
||||
newLabel: "Neues Passwort",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
common: {
|
||||
action: {
|
||||
backToOverview: "Zurück zur Übersicht",
|
||||
create: "Erstellen",
|
||||
edit: "Bearbeiten",
|
||||
save: "Speichern",
|
||||
cancel: "Abbrechen",
|
||||
confirm: "Bestätigen",
|
||||
},
|
||||
noResults: "Keine Ergebnisse gefunden",
|
||||
search: {
|
||||
placeholder: "Suche nach etwas...",
|
||||
nothingFound: "Nichts gefunden",
|
||||
},
|
||||
},
|
||||
widget: {
|
||||
clock: {
|
||||
option: {
|
||||
@@ -52,10 +180,4 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
common: {
|
||||
search: {
|
||||
placeholder: "Suche nach etwas...",
|
||||
nothingFound: "Nichts gefunden",
|
||||
},
|
||||
},
|
||||
} as const;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import "dayjs/locale/en";
|
||||
|
||||
export default {
|
||||
user: {
|
||||
page: {
|
||||
@@ -26,6 +28,131 @@ export default {
|
||||
create: "Create user",
|
||||
},
|
||||
},
|
||||
integration: {
|
||||
page: {
|
||||
list: {
|
||||
title: "Integrations",
|
||||
search: "Search integrations",
|
||||
empty: "No integrations found",
|
||||
},
|
||||
create: {
|
||||
title: "New {name} integration",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Creation successful",
|
||||
message: "The integration was successfully created",
|
||||
},
|
||||
error: {
|
||||
title: "Creation failed",
|
||||
message: "The integration could not be created",
|
||||
},
|
||||
},
|
||||
},
|
||||
edit: {
|
||||
title: "Edit {name} integration",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Changes applied successfully",
|
||||
message: "The integration was successfully saved",
|
||||
},
|
||||
error: {
|
||||
title: "Unable to apply changes",
|
||||
message: "The integration could not be saved",
|
||||
},
|
||||
},
|
||||
},
|
||||
delete: {
|
||||
title: "Delete integration",
|
||||
message: "Are you sure you want to delete the integration {name}?",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Deletion successful",
|
||||
message: "The integration was successfully deleted",
|
||||
},
|
||||
error: {
|
||||
title: "Deletion failed",
|
||||
message: "Unable to delete the integration",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
field: {
|
||||
name: {
|
||||
label: "Name",
|
||||
},
|
||||
url: {
|
||||
label: "Url",
|
||||
},
|
||||
},
|
||||
action: {
|
||||
create: "New integration",
|
||||
},
|
||||
testConnection: {
|
||||
action: "Test connection",
|
||||
alertNotice:
|
||||
"The Save button is enabled once a successful connection is established",
|
||||
notification: {
|
||||
success: {
|
||||
title: "Connection successful",
|
||||
message: "The connection was successfully established",
|
||||
},
|
||||
invalidUrl: {
|
||||
title: "Invalid URL",
|
||||
message: "The URL is invalid",
|
||||
},
|
||||
notAllSecretsProvided: {
|
||||
title: "Missing credentials",
|
||||
message: "Not all credentials were provided",
|
||||
},
|
||||
invalidCredentials: {
|
||||
title: "Invalid credentials",
|
||||
message: "The credentials are invalid",
|
||||
},
|
||||
commonError: {
|
||||
title: "Connection failed",
|
||||
message: "The connection could not be established",
|
||||
},
|
||||
},
|
||||
},
|
||||
secrets: {
|
||||
title: "Secrets",
|
||||
lastUpdated: "Last updated {date}",
|
||||
secureNotice: "This secret cannot be retrieved after creation",
|
||||
reset: {
|
||||
title: "Reset secret",
|
||||
message: "Are you sure you want to reset this secret?",
|
||||
},
|
||||
kind: {
|
||||
username: {
|
||||
label: "Username",
|
||||
newLabel: "New username",
|
||||
},
|
||||
apiKey: {
|
||||
label: "API Key",
|
||||
newLabel: "New API Key",
|
||||
},
|
||||
password: {
|
||||
label: "Password",
|
||||
newLabel: "New password",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
common: {
|
||||
action: {
|
||||
backToOverview: "Back to overview",
|
||||
create: "Create",
|
||||
edit: "Edit",
|
||||
save: "Save",
|
||||
cancel: "Cancel",
|
||||
confirm: "Confirm",
|
||||
},
|
||||
search: {
|
||||
placeholder: "Search for anything...",
|
||||
nothingFound: "Nothing found",
|
||||
},
|
||||
noResults: "No results found",
|
||||
},
|
||||
widget: {
|
||||
clock: {
|
||||
option: {
|
||||
@@ -52,12 +179,6 @@ export default {
|
||||
},
|
||||
},
|
||||
},
|
||||
common: {
|
||||
search: {
|
||||
placeholder: "Search for anything...",
|
||||
nothingFound: "Nothing found",
|
||||
},
|
||||
},
|
||||
management: {
|
||||
metaTitle: "Management",
|
||||
title: {
|
||||
|
||||
Reference in New Issue
Block a user