From 5152600ea3434efdcccffbd776ba7aa8f23e2363 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 1 Feb 2026 20:55:44 +0100 Subject: [PATCH] User can change a character from private to public and back --- backend/character/routes.go | 2 + backend/router/setup.go | 2 +- frontend/src/components/CharacterDetails.vue | 21 +++ frontend/src/components/VisibilityDialog.vue | 181 +++++++++++++++++++ frontend/src/locales/de | 13 ++ frontend/src/locales/en | 13 ++ 6 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/VisibilityDialog.vue diff --git a/backend/character/routes.go b/backend/character/routes.go index bc39338..ab80ee5 100644 --- a/backend/character/routes.go +++ b/backend/character/routes.go @@ -10,6 +10,8 @@ func RegisterRoutes(r *gin.RouterGroup) { charGrp.POST("", CreateCharacter) charGrp.GET("/:id", GetCharacter) charGrp.PUT("/:id", UpdateCharacter) + charGrp.PATCH("/:id", UpdateCharacter) + charGrp.DELETE("/:id", DeleteCharacter) charGrp.PUT("/:id/image", UpdateCharacterImage) charGrp.GET("/:id/datasheet-options", GetDatasheetOptions) diff --git a/backend/router/setup.go b/backend/router/setup.go index 92d0b42..81385a5 100644 --- a/backend/router/setup.go +++ b/backend/router/setup.go @@ -21,7 +21,7 @@ func SetupGin(r *gin.Engine) { r.Use(cors.New(cors.Config{ //AllowOrigins: []string{"http://localhost:3000"}, // Replace with your frontend's URL AllowOrigins: allowedOrigins, - AllowMethods: []string{"GET", "POST", "PUT", "DELETE"}, + AllowMethods: []string{"GET", "POST", "PUT", "PATCH", "DELETE"}, AllowHeaders: []string{"Origin", "Content-Type", "Authorization"}, ExposeHeaders: []string{"Content-Length"}, AllowCredentials: true, diff --git a/frontend/src/components/CharacterDetails.vue b/frontend/src/components/CharacterDetails.vue index 7e1116f..3ae6682 100644 --- a/frontend/src/components/CharacterDetails.vue +++ b/frontend/src/components/CharacterDetails.vue @@ -6,6 +6,9 @@ +

{{ $t('char') }}: {{ character.name }} ({{ $t(currentView) }})

@@ -18,6 +21,15 @@ @export-success="handleExportSuccess" /> + + + @@ -53,6 +65,7 @@ + + diff --git a/frontend/src/locales/de b/frontend/src/locales/de index ef61c2f..d0ac7f5 100644 --- a/frontend/src/locales/de +++ b/frontend/src/locales/de @@ -513,6 +513,19 @@ export default { pleaseWait: 'Bitte warten, dies kann einen Moment dauern', popupBlocked: 'Popup wurde blockiert. Bitte erlauben Sie Popups für diese Seite.' }, + visibility: { + title: 'Sichtbarkeit ändern', + description: 'Legen Sie fest, wer diesen Charakter sehen kann.', + private: 'Privat', + privateDescription: 'Nur Sie können diesen Charakter sehen', + public: 'Öffentlich', + publicDescription: 'Alle Benutzer können diesen Charakter sehen', + cancel: 'Abbrechen', + save: 'Speichern', + saving: 'Wird gespeichert...', + updating: 'Sichtbarkeit wird aktualisiert...', + updateError: 'Fehler beim Aktualisieren der Sichtbarkeit' + }, userManagement: { title: 'Benutzerverwaltung', loading: 'Lade Benutzer...', diff --git a/frontend/src/locales/en b/frontend/src/locales/en index 07217b0..0812e43 100644 --- a/frontend/src/locales/en +++ b/frontend/src/locales/en @@ -509,6 +509,19 @@ export default { pleaseWait: 'Please wait, this may take a moment', popupBlocked: 'Popup was blocked. Please allow popups for this site.' }, + visibility: { + title: 'Change Visibility', + description: 'Set who can see this character.', + private: 'Private', + privateDescription: 'Only you can see this character', + public: 'Public', + publicDescription: 'All users can see this character', + cancel: 'Cancel', + save: 'Save', + saving: 'Saving...', + updating: 'Updating visibility...', + updateError: 'Failed to update visibility' + }, userManagement: { title: 'User Management', loading: 'Loading users...',