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 } } }