1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-06-27 16:36:00 +00:00

Make default home page configurable

This commit is contained in:
Romain de Laage 2022-07-20 22:07:55 +02:00 committed by Frédéric Guillot
parent 45a9fd5af6
commit 03a1cfcd5e
30 changed files with 125 additions and 14 deletions

View file

@ -30,6 +30,7 @@ type SettingsForm struct {
DisplayMode string
DefaultReadingSpeed int
CJKReadingSpeed int
DefaultHomePage string
}
// Merge updates the fields of the given user.
@ -48,6 +49,7 @@ func (s *SettingsForm) Merge(user *model.User) *model.User {
user.DisplayMode = s.DisplayMode
user.CJKReadingSpeed = s.CJKReadingSpeed
user.DefaultReadingSpeed = s.DefaultReadingSpeed
user.DefaultHomePage = s.DefaultHomePage
if s.Password != "" {
user.Password = s.Password
@ -58,7 +60,7 @@ func (s *SettingsForm) Merge(user *model.User) *model.User {
// Validate makes sure the form values are valid.
func (s *SettingsForm) Validate() error {
if s.Username == "" || s.Theme == "" || s.Language == "" || s.Timezone == "" || s.EntryDirection == "" || s.DisplayMode == "" {
if s.Username == "" || s.Theme == "" || s.Language == "" || s.Timezone == "" || s.EntryDirection == "" || s.DisplayMode == "" || s.DefaultHomePage == "" {
return errors.NewLocalizedError("error.settings_mandatory_fields")
}
@ -111,5 +113,6 @@ func NewSettingsForm(r *http.Request) *SettingsForm {
DisplayMode: r.FormValue("display_mode"),
DefaultReadingSpeed: int(defaultReadingSpeed),
CJKReadingSpeed: int(cjkReadingSpeed),
DefaultHomePage: r.FormValue("default_home_page"),
}
}

View file

@ -17,6 +17,7 @@ func TestValid(t *testing.T) {
DisplayMode: "standalone",
DefaultReadingSpeed: 35,
CJKReadingSpeed: 25,
DefaultHomePage: "unread",
}
err := settings.Validate()
@ -38,6 +39,7 @@ func TestConfirmationEmpty(t *testing.T) {
DisplayMode: "standalone",
DefaultReadingSpeed: 35,
CJKReadingSpeed: 25,
DefaultHomePage: "unread",
}
err := settings.Validate()
@ -63,6 +65,7 @@ func TestConfirmationIncorrect(t *testing.T) {
DisplayMode: "standalone",
DefaultReadingSpeed: 35,
CJKReadingSpeed: 25,
DefaultHomePage: "unread",
}
err := settings.Validate()

View file

@ -60,5 +60,5 @@ func (h *handler) checkLogin(w http.ResponseWriter, r *http.Request) {
config.Opts.BasePath(),
))
html.Redirect(w, r, route.Path(h.router, "unread"))
html.Redirect(w, r, route.Path(h.router, user.DefaultHomePage))
}

View file

@ -16,7 +16,13 @@ import (
func (h *handler) showLoginPage(w http.ResponseWriter, r *http.Request) {
if request.IsAuthenticated(r) {
html.Redirect(w, r, route.Path(h.router, "unread"))
user, err := h.store.UserByID(request.UserID(r))
if err != nil {
html.ServerError(w, r, err)
return
}
html.Redirect(w, r, route.Path(h.router, user.DefaultHomePage))
return
}

View file

@ -41,6 +41,7 @@ func (h *handler) showSettingsPage(w http.ResponseWriter, r *http.Request) {
DisplayMode: user.DisplayMode,
DefaultReadingSpeed: user.DefaultReadingSpeed,
CJKReadingSpeed: user.CJKReadingSpeed,
DefaultHomePage: user.DefaultHomePage,
}
timezones, err := h.store.Timezones()
@ -57,6 +58,7 @@ func (h *handler) showSettingsPage(w http.ResponseWriter, r *http.Request) {
view.Set("user", user)
view.Set("countUnread", h.store.CountUnreadEntries(user.ID))
view.Set("countErrorFeeds", h.store.CountUserFeedsWithErrors(user.ID))
view.Set("default_home_pages", model.HomePages())
html.OK(w, r, view.Render("settings"))
}

View file

@ -63,6 +63,7 @@ func (h *handler) updateSettings(w http.ResponseWriter, r *http.Request) {
DisplayMode: model.OptionalString(settingsForm.DisplayMode),
DefaultReadingSpeed: model.OptionalInt(settingsForm.DefaultReadingSpeed),
CJKReadingSpeed: model.OptionalInt(settingsForm.CJKReadingSpeed),
DefaultHomePage: model.OptionalString(settingsForm.DefaultHomePage),
}
if validationErr := validator.ValidateUserModification(h.store, loggedUser.ID, userModificationRequest); validationErr != nil {