Add settings UI option for user nick and user name

Updates #13
This commit is contained in:
Jan-Lukas Else 2022-11-27 07:20:49 +01:00
parent 0df2802c74
commit 1b02b400fd
8 changed files with 82 additions and 0 deletions

View File

@ -461,6 +461,29 @@ func (a *goBlog) initConfig(logging bool) error {
if err = a.loadSections(); err != nil {
return err
}
// Load other settings from database
// User nick
if userNick, err := a.getSettingValue(userNickSetting); err != nil {
return err
} else if userNick == "" {
// Migrate to database
if err = a.saveSettingValue(userNickSetting, a.cfg.User.Nick); err != nil {
return err
}
} else {
a.cfg.User.Nick = userNick
}
// User name
if userName, err := a.getSettingValue(userNameSetting); err != nil {
return err
} else if userName == "" {
// Migrate to database
if err = a.saveSettingValue(userNameSetting, a.cfg.User.Name); err != nil {
return err
}
} else {
a.cfg.User.Name = userName
}
// Check config for each blog
for blog, bc := range a.cfg.Blogs {
// Check sections and add section if none exists

View File

@ -461,5 +461,6 @@ func (a *goBlog) blogSettingsRouter(_ *configBlog) func(r chi.Router) {
r.Post(settingsHideOldContentWarningPath, a.settingsHideOldContentWarning)
r.Post(settingsHideShareButtonPath, a.settingsHideShareButton)
r.Post(settingsHideTranslateButtonPath, a.settingsHideTranslateButton)
r.Post(settingsUpdateUserPath, a.settingsUpdateUser)
}
}

View File

@ -23,6 +23,8 @@ func (a *goBlog) serveSettings(w http.ResponseWriter, r *http.Request) {
hideOldContentWarning: bc.hideOldContentWarning,
hideShareButton: bc.hideShareButton,
hideTranslateButton: bc.hideTranslateButton,
userNick: a.cfg.User.Nick,
userName: a.cfg.User.Name,
},
})
}
@ -203,3 +205,31 @@ func (a *goBlog) settingsHideTranslateButton(w http.ResponseWriter, r *http.Requ
a.cache.purge()
http.Redirect(w, r, bc.getRelativePath(settingsPath), http.StatusFound)
}
const settingsUpdateUserPath = "/user"
func (a *goBlog) settingsUpdateUser(w http.ResponseWriter, r *http.Request) {
_, bc := a.getBlog(r)
// Read values
userNick := r.FormValue(userNickSetting)
userName := r.FormValue(userNameSetting)
if userNick == "" || userName == "" {
a.serveError(w, r, "Values must not be empty", http.StatusInternalServerError)
return
}
// Update
err := a.saveSettingValue(userNickSetting, userNick)
if err != nil {
a.serveError(w, r, "Failed to update user nick in database", http.StatusInternalServerError)
return
}
err = a.saveSettingValue(userNameSetting, userName)
if err != nil {
a.serveError(w, r, "Failed to update user name in database", http.StatusInternalServerError)
return
}
a.cfg.User.Nick = userNick
a.cfg.User.Name = userName
a.cache.purge()
http.Redirect(w, r, bc.getRelativePath(settingsPath), http.StatusFound)
}

View File

@ -17,6 +17,8 @@ const (
hideOldContentWarningSetting = "hideoldcontentwarning"
hideShareButtonSetting = "hidesharebutton"
hideTranslateButtonSetting = "hidetranslatebutton"
userNickSetting = "usernick"
userNameSetting = "username"
)
func (a *goBlog) getSettingValue(name string) (string, error) {

View File

@ -67,6 +67,8 @@ sectionshowfull: "Vollständigen Inhalt in der Zusammenfassung anzeigen"
sectiontitle: "Title"
send: "Senden (zur Überprüfung)"
settings: "Einstellungen"
settingsusername: "Vollständiger Benutzername"
settingsusernick: "Benutzer-Nickname (Login-Benutzername)"
share: "Online teilen"
shorturl: "Kurz-Link:"
speak: "Vorlesen"
@ -82,6 +84,7 @@ unlistedpostsdesc: "Veröffentlichte Posts mit der Sichtbarkeit `unlisted`, die
update: "Aktualisieren"
updatedon: "Aktualisiert am"
upload: "Hochladen"
user: "Benutzer"
view: "Anschauen"
visibility: "Sichtbarkeit"
whatistor: "Was ist Tor?"

View File

@ -82,6 +82,8 @@ sectionshowfull: "Show full content in summary"
sectiontitle: "Title"
send: "Send (to review)"
settings: "Settings"
settingsusername: "Full user name"
settingsusernick: "User nickname (login username)"
share: "Share online"
shorturl: "Short link:"
speak: "Read aloud"
@ -98,6 +100,7 @@ unlistedpostsdesc: "Published posts with visibility `unlisted` that are not disp
update: "Update"
updatedon: "Updated on"
upload: "Upload"
user: "User"
username: "Username"
verified: "Verified"
view: "View"

5
ui.go
View File

@ -1521,6 +1521,8 @@ type settingsRenderData struct {
hideOldContentWarning bool
hideShareButton bool
hideTranslateButton bool
userNick string
userName string
}
func (a *goBlog) renderSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData) {
@ -1568,6 +1570,9 @@ func (a *goBlog) renderSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData) {
srd.hideTranslateButton,
)
// User settings
a.renderUserSettings(hb, rd, srd)
// Post sections
a.renderPostSectionSettings(hb, rd, srd)

View File

@ -654,3 +654,18 @@ func (a *goBlog) renderBooleanSetting(hb *htmlbuilder.HtmlBuilder, rd *renderDat
hb.WriteElementClose("form")
}
func (a *goBlog) renderUserSettings(hb *htmlbuilder.HtmlBuilder, rd *renderData, srd *settingsRenderData) {
hb.WriteElementOpen("h2")
hb.WriteEscaped(a.ts.GetTemplateStringVariant(rd.Blog.Lang, "user"))
hb.WriteElementClose("h2")
hb.WriteElementOpen("form", "class", "fw p", "method", "post")
hb.WriteElementOpen("input", "type", "text", "name", "usernick", "required", "", "value", srd.userNick, "placeholder", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "settingsusernick"))
hb.WriteElementOpen("input", "type", "text", "name", "username", "required", "", "value", srd.userName, "placeholder", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "settingsusername"))
hb.WriteElementOpen(
"input", "type", "submit", "value", a.ts.GetTemplateStringVariant(rd.Blog.Lang, "update"),
"formaction", rd.Blog.getRelativePath(settingsPath+settingsUpdateUserPath),
)
hb.WriteElementClose("form")
}