Noah
e42cebe4b8
* Add the Contact page where users can contact the site admins for feedback or to report a problematic user, photo or message. * Reports go into the admin Feedback table. * Admin nav bar indicates number of unread feedbacks. * Add "Report" button to profile pages, photo cards, and the top of Direct Message threads. Misc changes: * Send emails out asynchronously for more responsive page loads.
77 lines
2.1 KiB
Go
77 lines
2.1 KiB
Go
package templates
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"git.kirsle.net/apps/gosocial/pkg/config"
|
|
"git.kirsle.net/apps/gosocial/pkg/log"
|
|
"git.kirsle.net/apps/gosocial/pkg/models"
|
|
"git.kirsle.net/apps/gosocial/pkg/session"
|
|
)
|
|
|
|
// MergeVars mixes in globally available template variables. The http.Request is optional.
|
|
func MergeVars(r *http.Request, m map[string]interface{}) {
|
|
m["Title"] = config.Title
|
|
m["Subtitle"] = config.Subtitle
|
|
m["YYYY"] = time.Now().Year()
|
|
|
|
if r == nil {
|
|
return
|
|
}
|
|
|
|
m["Request"] = r
|
|
}
|
|
|
|
// MergeUserVars mixes in global template variables: LoggedIn and CurrentUser. The http.Request is optional.
|
|
func MergeUserVars(r *http.Request, m map[string]interface{}) {
|
|
// Defaults
|
|
m["LoggedIn"] = false
|
|
m["CurrentUser"] = nil
|
|
m["NavUnreadMessages"] = 0
|
|
m["NavFriendRequests"] = 0
|
|
m["NavAdminNotifications"] = 0 // total count of admin notifications for nav
|
|
m["NavCertificationPhotos"] = 0 // admin indicator for certification photos
|
|
m["NavAdminFeedback"] = 0 // admin indicator for unread feedback
|
|
m["SessionImpersonated"] = false
|
|
|
|
if r == nil {
|
|
return
|
|
}
|
|
|
|
m["SessionImpersonated"] = session.Impersonated(r)
|
|
|
|
if user, err := session.CurrentUser(r); err == nil {
|
|
m["LoggedIn"] = true
|
|
m["CurrentUser"] = user
|
|
|
|
// Get unread message count.
|
|
if count, err := models.CountUnreadMessages(user.ID); err == nil {
|
|
m["NavUnreadMessages"] = count
|
|
} else {
|
|
log.Error("MergeUserVars: couldn't CountUnreadMessages for %d: %s", user.ID, err)
|
|
}
|
|
|
|
// Get friend request count.
|
|
if count, err := models.CountFriendRequests(user.ID); err == nil {
|
|
m["NavFriendRequests"] = count
|
|
} else {
|
|
log.Error("MergeUserVars: couldn't CountFriendRequests for %d: %s", user.ID, err)
|
|
}
|
|
|
|
// Are we admin?
|
|
if user.IsAdmin {
|
|
// Any pending certification photos or feedback?
|
|
var (
|
|
certPhotos = models.CountCertificationPhotosNeedingApproval()
|
|
feedback = models.CountUnreadFeedback()
|
|
)
|
|
m["NavCertificationPhotos"] = certPhotos
|
|
m["NavAdminFeedback"] = feedback
|
|
|
|
// Total notification count for admin actions.
|
|
m["NavAdminNotifications"] = certPhotos + feedback
|
|
}
|
|
}
|
|
}
|