From dd3a2ec677ea5bafdaae9d2c687a4c44c7b51122 Mon Sep 17 00:00:00 2001 From: Amy Gale Ruth Bowersox Date: Mon, 5 Jan 2026 23:05:52 -0700 Subject: [PATCH] fixed bug in AmNewPost and filling in default pseud for post box --- conference.go | 86 ++++++++++++++++-------------------------- database/conference.go | 16 ++++++++ database/post.go | 2 +- ui/views/posts.jet | 2 +- 4 files changed, 50 insertions(+), 56 deletions(-) diff --git a/conference.go b/conference.go index f9c3626..a874d86 100644 --- a/conference.go +++ b/conference.go @@ -137,19 +137,11 @@ func NewTopicForm(ctxt ui.AmContext) (string, any, error) { ctxt.VarMap().Set("conferenceName", conf.Name) ctxt.VarMap().Set("urlStem", fmt.Sprintf("/comm/%s/conf/%s", comm.Alias, ctxt.URLParam("confid"))) ctxt.VarMap().Set("topicName", "") - cs, err := conf.Settings(ctxt.Ctx(), ctxt.CurrentUser()) + pseud, err := conf.DefaultPseud(ctxt.Ctx(), ctxt.CurrentUser()) if err != nil { return ui.ErrorPage(ctxt, err) } - if cs == nil || cs.DefaultPseud == nil { - ci, err := ctxt.CurrentUser().ContactInfo(ctxt.Ctx()) - if err != nil { - return ui.ErrorPage(ctxt, err) - } - ctxt.VarMap().Set("pseud", ci.FullName(false)) - } else { - ctxt.VarMap().Set("pseud", *cs.DefaultPseud) - } + ctxt.VarMap().Set("pseud", pseud) ctxt.VarMap().Set("pb", "") ctxt.VarMap().Set("amsterdam_pageTitle", "Create New Topic") return "framed_template", "new_topic.jet", nil @@ -524,6 +516,13 @@ func ReadPosts(ctxt ui.AmContext) (string, any, error) { plc.LastPost = postRange[1] postsPostRef := plc.AsString() + // Set the user's pseud. + pseud, err := conf.DefaultPseud(ctxt.Ctx(), ctxt.CurrentUser()) + if err != nil { + return ui.ErrorPage(ctxt, err) + } + ctxt.VarMap().Set("pseud", pseud) + // Render the output. ctxt.VarMap().Set("amsterdam_pageTitle", fmt.Sprintf("%s: %s", topic.Name, summaryLine)) ctxt.VarMap().Set("topicName", topic.Name) @@ -589,26 +588,29 @@ func PostInTopic(ctxt ui.AmContext) (string, any, error) { return ui.ErrorPage(ctxt, errors.New("this topic is archived, and you do not have permission to post to it")) } + // Set the escaped version of the text into the varmap, because it'll be needed if we do anything other than redirect. + checker, err := htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "escaper") + if err != nil { + return ui.ErrorPage(ctxt, err) + } + checker.Append(ctxt.FormField("pseud")) + checker.Finish() + v, _ := checker.Value() + ctxt.VarMap().Set("pseud", v) + postdata := ctxt.FormField("pb") + checker.Reset() + checker.Append(postdata) + checker.Finish() + v, _ = checker.Value() + ctxt.VarMap().Set("pb", v) + + // also set the "attach" flag into the post data + if ctxt.FormFieldIsSet("attach") { + ctxt.VarMap().Set("attachFile", true) + } + if ctxt.FormFieldIsSet("preview") { // Preview the post. - checker, err := htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "escaper") - if err != nil { - return ui.ErrorPage(ctxt, err) - } - checker.Append(ctxt.FormField("pseud")) - checker.Finish() - v, _ := checker.Value() - ctxt.VarMap().Set("pseud", v) - - // escape the data - postdata := ctxt.FormField("pb") - checker.Reset() - checker.Append(postdata) - checker.Finish() - v, _ = checker.Value() - ctxt.VarMap().Set("pb", v) - - // run the preview checker, err = htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "preview") if err != nil { return ui.ErrorPage(ctxt, err) @@ -622,9 +624,6 @@ func PostInTopic(ctxt ui.AmContext) (string, any, error) { ctxt.VarMap().Set("nError", nErr) ctxt.VarMap().Set("maxPost", ctxt.FormField("xp")) - if ctxt.FormFieldIsSet("attach") { - ctxt.VarMap().Set("attachFile", true) - } ctxt.VarMap().Set("urlStem", urlStem) ctxt.VarMap().Set("amsterdam_pageTitle", "Previewing Message") return "framed_template", "preview_post.jet", nil @@ -652,27 +651,6 @@ func PostInTopic(ctxt ui.AmContext) (string, any, error) { return ui.ErrorPage(ctxt, err) } - // start with escaping the post data - checker, err := htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "escaper") - if err != nil { - return ui.ErrorPage(ctxt, err) - } - checker.Append(ctxt.FormField("pseud")) - checker.Finish() - v, _ := checker.Value() - ctxt.VarMap().Set("pseud", v) - - // escape the data - postdata := ctxt.FormField("pb") - checker.Reset() - checker.Append(postdata) - checker.Finish() - v, _ = checker.Value() - ctxt.VarMap().Set("pb", v) - if ctxt.FormFieldIsSet("attach") { - ctxt.VarMap().Set("attachFile", true) - } - plc := database.AmCreatePostLinkContext("", ctxt.GetScratch("currentAlias").(string), topic.Number) topicConferenceRef := plc.AsString() plc.Community = comm.Alias @@ -692,8 +670,8 @@ func PostInTopic(ctxt ui.AmContext) (string, any, error) { return "framed_template", "slippage.jet", nil } - // start by checking the title and pseud - checker, err := htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "post-pseud") + // if we get here, we are posting - start by checking the title and pseud + checker, err = htmlcheck.AmNewHTMLChecker(ctxt.Ctx(), "post-pseud") if err != nil { return ui.ErrorPage(ctxt, err) } diff --git a/database/conference.go b/database/conference.go index fd0be0a..df86724 100644 --- a/database/conference.go +++ b/database/conference.go @@ -178,6 +178,22 @@ func (c *Conference) Settings(ctx context.Context, u *User) (*ConferenceSettings return &(dbdata[0]), nil } +// DefaultPseud returns the default pseud for a user in the conference. +func (c *Conference) DefaultPseud(ctx context.Context, u *User) (string, error) { + settings, err := c.Settings(ctx, u) + if err != nil { + return "", err + } + if settings != nil && settings.DefaultPseud != nil { + return *settings.DefaultPseud, nil + } + ci, err := u.ContactInfo(ctx) + if err != nil { + return "", err + } + return ci.FullName(false), nil +} + // TouchUpdate updates the "last update" date/time in the conference. func (c *Conference) TouchUpdate(ctx context.Context, tx *sqlx.Tx, lastUpdate time.Time) error { _, err := tx.ExecContext(ctx, "UPDATE confs SET lastupdate = ? WHERE confid = ?", lastUpdate, c.ConfId) diff --git a/database/post.go b/database/post.go index 62295b7..1de6c99 100644 --- a/database/post.go +++ b/database/post.go @@ -178,7 +178,7 @@ func AmNewPost(ctx context.Context, conf *Conference, topic *Topic, user *User, hdr := &(dbdata[0]) // Add the post data. - _, err = tx.ExecContext(ctx, "INSERT INTO postdata (postid, data) VALUES (?, ?)", int32(xid), hdr.PostId) + _, err = tx.ExecContext(ctx, "INSERT INTO postdata (postid, data) VALUES (?, ?)", hdr.PostId, post) if err != nil { return nil, err } diff --git a/ui/views/posts.jet b/ui/views/posts.jet index 9db0228..e488ded 100644 --- a/ui/views/posts.jet +++ b/ui/views/posts.jet @@ -113,7 +113,7 @@
-