1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-09-13 09:26:23 -07:00

Add announcement functionality

This commit is contained in:
Eggbertx 2023-09-03 16:48:42 -07:00
parent d5e614b664
commit b80c8b3f76
5 changed files with 108 additions and 29 deletions

View file

@ -52,10 +52,83 @@ func registerAdminPages() {
errEv.Err(err).Caller().Msg("Unable to get staff announcements")
return "", err
}
data := map[string]any{}
editIdStr := request.FormValue("edit")
var editID int
deleteIdStr := request.FormValue("delete")
var deleteID int
var announcement announcementWithName
if editIdStr != "" {
if editID, err = strconv.Atoi(editIdStr); err != nil {
errEv.Err(err).Str("editID", editIdStr).Send()
return "", err
}
data["editID"] = editID
for _, ann := range announcements {
if ann.ID == uint(editID) {
announcement = ann
break
}
}
if announcement.ID < 1 {
return "", fmt.Errorf("no announcement found with id %d", editID)
}
fmt.Println(announcement)
if request.PostFormValue("doedit") == "Submit" {
// announcement update submitted
announcement.Subject = request.PostFormValue("subject")
announcement.Message = request.PostFormValue("message")
if announcement.Message == "" {
errEv.Err(errMissingAnnouncementMessage).Caller().Send()
return "", errMissingAnnouncementMessage
}
updateSQL := `UPDATE DBPREFIXannouncements SET subject = ?, message = ?, timestamp = CURRENT_TIMESTAMP WHERE id = ?`
if _, err = gcsql.ExecSQL(updateSQL,
announcement.Subject,
announcement.Message,
announcement.ID); err != nil {
errEv.Err(err).Caller().
Str("subject", announcement.Subject).
Str("message", announcement.Message).
Uint("id", announcement.ID).
Msg("Unable to update announcement")
return "", errors.New("unable to update announcement")
}
fmt.Printf("Updated announcement #%d, message = %s\n", announcement.ID, announcement.Message)
}
} else if deleteIdStr != "" {
if deleteID, err = strconv.Atoi(deleteIdStr); err != nil {
errEv.Err(err).Str("deleteID", deleteIdStr).Send()
return "", err
}
deleteSQL := `DELETE FROM DBPREFIXannouncements WHERE id = ?`
if _, err = gcsql.ExecSQL(deleteSQL, deleteID); err != nil {
errEv.Err(err).Caller().
Int("deleteID", deleteID).
Msg("Unable to delete announcement")
return "", errors.New("unable to delete announcement")
}
} else if request.PostFormValue("newannouncement") == "Submit" {
insertSQL := `INSERT INTO DBPREFIXannouncements (staff_id, subject, message) VALUES(?, ?, ?)`
announcement.Subject = request.PostFormValue("subject")
announcement.Message = request.PostFormValue("message")
if _, err = gcsql.ExecSQL(insertSQL, staff.ID, announcement.Subject, announcement.Message); err != nil {
errEv.Err(err).Caller().
Str("subject", announcement.Subject).
Str("message", announcement.Message).
Msg("Unable to submit new announcement")
return "", errors.New("unable to submit announcement")
}
}
// update announcements array in data so the creation/edit/deletion shows up immediately
if data["announcements"], err = getAllAnnouncements(); err != nil {
errEv.Err(err).Caller().Msg("Unable to get staff announcements")
return "", err
}
data["announcement"] = announcement
pageBuffer := bytes.NewBufferString("")
err = serverutil.MinifyTemplate(gctemplates.ManageAnnouncements, map[string]any{
"announcements": announcements,
}, pageBuffer, "tex/thtml")
err = serverutil.MinifyTemplate(gctemplates.ManageAnnouncements, data,
pageBuffer, "tex/thtml")
return pageBuffer.String(), err
}},
Action{