Skip to content

Commit 1b02b40

Browse files
committedNov 27, 2022
Add settings UI option for user nick and user name
Updates #13
1 parent 0df2802 commit 1b02b40

8 files changed

+82
-0
lines changed
 

‎config.go

+23
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,29 @@ func (a *goBlog) initConfig(logging bool) error {
461461
if err = a.loadSections(); err != nil {
462462
return err
463463
}
464+
// Load other settings from database
465+
// User nick
466+
if userNick, err := a.getSettingValue(userNickSetting); err != nil {
467+
return err
468+
} else if userNick == "" {
469+
// Migrate to database
470+
if err = a.saveSettingValue(userNickSetting, a.cfg.User.Nick); err != nil {
471+
return err
472+
}
473+
} else {
474+
a.cfg.User.Nick = userNick
475+
}
476+
// User name
477+
if userName, err := a.getSettingValue(userNameSetting); err != nil {
478+
return err
479+
} else if userName == "" {
480+
// Migrate to database
481+
if err = a.saveSettingValue(userNameSetting, a.cfg.User.Name); err != nil {
482+
return err
483+
}
484+
} else {
485+
a.cfg.User.Name = userName
486+
}
464487
// Check config for each blog
465488
for blog, bc := range a.cfg.Blogs {
466489
// Check sections and add section if none exists

‎httpRouters.go

+1
Original file line numberDiff line numberDiff line change
@@ -461,5 +461,6 @@ func (a *goBlog) blogSettingsRouter(_ *configBlog) func(r chi.Router) {
461461
r.Post(settingsHideOldContentWarningPath, a.settingsHideOldContentWarning)
462462
r.Post(settingsHideShareButtonPath, a.settingsHideShareButton)
463463
r.Post(settingsHideTranslateButtonPath, a.settingsHideTranslateButton)
464+
r.Post(settingsUpdateUserPath, a.settingsUpdateUser)
464465
}
465466
}

‎settings.go

+30
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ func (a *goBlog) serveSettings(w http.ResponseWriter, r *http.Request) {
2323
hideOldContentWarning: bc.hideOldContentWarning,
2424
hideShareButton: bc.hideShareButton,
2525
hideTranslateButton: bc.hideTranslateButton,
26+
userNick: a.cfg.User.Nick,
27+
userName: a.cfg.User.Name,
2628
},
2729
})
2830
}
@@ -203,3 +205,31 @@ func (a *goBlog) settingsHideTranslateButton(w http.ResponseWriter, r *http.Requ
203205
a.cache.purge()
204206
http.Redirect(w, r, bc.getRelativePath(settingsPath), http.StatusFound)
205207
}
208+
209+
const settingsUpdateUserPath = "/user"
210+
211+
func (a *goBlog) settingsUpdateUser(w http.ResponseWriter, r *http.Request) {
212+
_, bc := a.getBlog(r)
213+
// Read values
214+
userNick := r.FormValue(userNickSetting)
215+
userName := r.FormValue(userNameSetting)
216+
if userNick == "" || userName == "" {
217+
a.serveError(w, r, "Values must not be empty", http.StatusInternalServerError)
218+
return
219+
}
220+
// Update
221+
err := a.saveSettingValue(userNickSetting, userNick)
222+
if err != nil {
223+
a.serveError(w, r, "Failed to update user nick in database", http.StatusInternalServerError)
224+
return
225+
}
226+
err = a.saveSettingValue(userNameSetting, userName)
227+
if err != nil {
228+
a.serveError(w, r, "Failed to update user name in database", http.StatusInternalServerError)
229+
return
230+
}
231+
a.cfg.User.Nick = userNick
232+
a.cfg.User.Name = userName
233+
a.cache.purge()
234+
http.Redirect(w, r, bc.getRelativePath(settingsPath), http.StatusFound)
235+
}

‎settingsDb.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ const (
1717
hideOldContentWarningSetting = "hideoldcontentwarning"
1818
hideShareButtonSetting = "hidesharebutton"
1919
hideTranslateButtonSetting = "hidetranslatebutton"
20+
userNickSetting = "usernick"
21+
userNameSetting = "username"
2022
)
2123

2224
func (a *goBlog) getSettingValue(name string) (string, error) {

‎strings/de.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ sectionshowfull: "Vollständigen Inhalt in der Zusammenfassung anzeigen"
6767
sectiontitle: "Title"
6868
send: "Senden (zur Überprüfung)"
6969
settings: "Einstellungen"
70+
settingsusername: "Vollständiger Benutzername"
71+
settingsusernick: "Benutzer-Nickname (Login-Benutzername)"
7072
share: "Online teilen"
7173
shorturl: "Kurz-Link:"
7274
speak: "Vorlesen"
@@ -82,6 +84,7 @@ unlistedpostsdesc: "Veröffentlichte Posts mit der Sichtbarkeit `unlisted`, die
8284
update: "Aktualisieren"
8385
updatedon: "Aktualisiert am"
8486
upload: "Hochladen"
87+
user: "Benutzer"
8588
view: "Anschauen"
8689
visibility: "Sichtbarkeit"
8790
whatistor: "Was ist Tor?"

‎strings/default.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ sectionshowfull: "Show full content in summary"
8282
sectiontitle: "Title"
8383
send: "Send (to review)"
8484
settings: "Settings"
85+
settingsusername: "Full user name"
86+
settingsusernick: "User nickname (login username)"
8587
share: "Share online"
8688
shorturl: "Short link:"
8789
speak: "Read aloud"
@@ -98,6 +100,7 @@ unlistedpostsdesc: "Published posts with visibility `unlisted` that are not disp
98100
update: "Update"
99101
updatedon: "Updated on"
100102
upload: "Upload"
103+
user: "User"
101104
username: "Username"
102105
verified: "Verified"
103106
view: "View"

‎ui.go

+5
Original file line numberDiff line numberDiff line change
@@ -1521,6 +1521,8 @@ type settingsRenderData struct {
15211521
hideOldContentWarning bool
15221522
hideShareButton bool
15231523
hideTranslateButton bool
1524+
userNick string
1525+
userName string
15241526
}
15251527

15261528
func (a *goBlog) renderSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData) {
@@ -1568,6 +1570,9 @@ func (a *goBlog) renderSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData) {
15681570
srd.hideTranslateButton,
15691571
)
15701572

1573+
// User settings
1574+
a.renderUserSettings(hb, rd, srd)
1575+
15711576
// Post sections
15721577
a.renderPostSectionSettings(hb, rd, srd)
15731578

‎uiComponents.go

+15
Original file line numberDiff line numberDiff line change
@@ -654,3 +654,18 @@ func (a *goBlog) renderBooleanSetting(hb *htmlbuilder.HtmlBuilder, rd *renderDat
654654

655655
hb.WriteElementClose("form")
656656
}
657+
658+
func (a *goBlog) renderUserSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData, srd *settingsRenderData) {
659+
hb.WriteElementOpen("h2")
660+
hb.WriteEscaped(a.ts.GetTemplateStringVariant(rd.Blog.Lang, "user"))
661+
hb.WriteElementClose("h2")
662+
663+
hb.WriteElementOpen("form", "class", "fw p", "method", "post")
664+
hb.WriteElementOpen("input", "type", "text", "name", "usernick", "required", "", "value", srd.userNick, "placeholder", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "settingsusernick"))
665+
hb.WriteElementOpen("input", "type", "text", "name", "username", "required", "", "value", srd.userName, "placeholder", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "settingsusername"))
666+
hb.WriteElementOpen(
667+
"input", "type", "submit", "value", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "update"),
668+
"formaction", rd.Blog.getRelativePath(settingsPath+settingsUpdateUserPath),
669+
)
670+
hb.WriteElementClose("form")
671+
}

0 commit comments

Comments
 (0)
Please sign in to comment.