Add setting for default format

This commit is contained in:
r 2020-10-19 06:51:23 +00:00
parent ef41ff32e2
commit fdd9b8fd2b
7 changed files with 26 additions and 5 deletions

View File

@ -7,6 +7,7 @@ type PostFormat struct {
type PostContext struct {
DefaultVisibility string
DefaultFormat string
ReplyContext *ReplyContext
Formats []PostFormat
DarkMode bool

View File

@ -2,6 +2,7 @@ package model
type Settings struct {
DefaultVisibility string `json:"default_visibility"`
DefaultFormat string `json:"default_format"`
CopyScope bool `json:"copy_scope"`
ThreadInNewTab bool `json:"thread_in_new_tab"`
HideAttachments bool `json:"hide_attachments"`
@ -15,6 +16,7 @@ type Settings struct {
func NewSettings() *Settings {
return &Settings{
DefaultVisibility: "public",
DefaultFormat: "",
CopyScope: true,
ThreadInNewTab: false,
HideAttachments: false,

View File

@ -121,5 +121,6 @@ type SearchData struct {
type SettingsData struct {
*CommonData
Settings *model.Settings
Settings *model.Settings
PostFormats []model.PostFormat
}

View File

@ -4,8 +4,8 @@ import (
"context"
"errors"
"fmt"
"mime/multipart"
"html/template"
"mime/multipart"
"net/url"
"strings"
@ -198,6 +198,7 @@ func (svc *service) ServeNavPage(c *model.Client) (err error) {
postContext := model.PostContext{
DefaultVisibility: c.Session.Settings.DefaultVisibility,
DefaultFormat: c.Session.Settings.DefaultFormat,
Formats: svc.postFormats,
}
@ -326,6 +327,7 @@ func (svc *service) ServeThreadPage(c *model.Client, id string, reply bool) (err
postContext = model.PostContext{
DefaultVisibility: visibility,
DefaultFormat: c.Session.Settings.DefaultFormat,
Formats: svc.postFormats,
ReplyContext: &model.ReplyContext{
InReplyToID: id,
@ -686,8 +688,9 @@ func (svc *service) ServeSearchPage(c *model.Client,
func (svc *service) ServeSettingsPage(c *model.Client) (err error) {
commonData := svc.getCommonData(c, "settings")
data := &renderer.SettingsData{
CommonData: commonData,
Settings: &c.Session.Settings,
CommonData: commonData,
Settings: &c.Session.Settings,
PostFormats: svc.postFormats,
}
rCtx := getRendererContext(c)

View File

@ -584,6 +584,7 @@ func NewHandler(s Service, staticDir string) http.Handler {
settings := func(w http.ResponseWriter, req *http.Request) {
c := newClient(w, req, req.FormValue("csrf_token"))
visibility := req.FormValue("visibility")
format := req.FormValue("format")
copyScope := req.FormValue("copy_scope") == "true"
threadInNewTab := req.FormValue("thread_in_new_tab") == "true"
hideAttachments := req.FormValue("hide_attachments") == "true"
@ -595,6 +596,7 @@ func NewHandler(s Service, staticDir string) http.Handler {
settings := &model.Settings{
DefaultVisibility: visibility,
DefaultFormat: format,
CopyScope: copyScope,
ThreadInNewTab: threadInNewTab,
HideAttachments: hideAttachments,

View File

@ -16,8 +16,11 @@
<div>
{{if gt (len .Formats) 0}}
<span class="post-form-field">
{{$defFormat := .DefaultFormat}}
<select id="post-format" name="format" accesskey="F" title="Format (F)">
{{range .Formats}} <option value="{{.Type}}">{{.Name}}</option> {{end}}
{{range .Formats}}
<option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option>
{{end}}
</select>
</span>
{{end}}

View File

@ -4,6 +4,15 @@
<form id="settings-form" action="/settings" method="POST">
<input type="hidden" name="csrf_token" value="{{$.Ctx.CSRFToken}}">
<div class="settings-form-field">
<label for="visibility"> Default format </label>
{{$defFormat := .Settings.DefaultFormat}}
<select id="post-format" name="format">
{{range .PostFormats}}
<option value="{{.Type}}" {{if eq $defFormat .Type}}selected{{end}}>{{.Name}}</option>
{{end}}
</select>
</div>
<div class="settings-form-field">
<label for="visibility"> Default scope </label>
<select id="visibility" name="visibility">