688d2e0baa
* Fix a bug where explicit GIF videos weren't blurring when the user wanted them to be blurred. * Make some improvements to the forums: * Polls will now remember the Expires setting while you are previewing and revising your original post. * Add 14 day and 30 day Expire options for polls. * Add disclaimer warnings above the Photo Attachment field when the current forum or thread isn't marked for Explicit content.
295 lines
6.3 KiB
Go
295 lines
6.3 KiB
Go
package config
|
|
|
|
import "regexp"
|
|
|
|
// Various hard-coded enums such as choice of gender, sexuality, relationship status etc.
|
|
var (
|
|
MaritalStatus = []string{
|
|
"Single",
|
|
"Married",
|
|
"In a relationship",
|
|
"It's complicated",
|
|
"Divorced",
|
|
"Widowed",
|
|
"Widower",
|
|
}
|
|
|
|
RelationshipType = []string{
|
|
"Monogamous",
|
|
"Open",
|
|
}
|
|
|
|
Gender = []string{
|
|
"Man",
|
|
"Woman",
|
|
"Non-binary",
|
|
"Trans",
|
|
"Trans (FTM)",
|
|
"Trans (MTF)",
|
|
"Other",
|
|
}
|
|
|
|
Orientation = []string{
|
|
"Straight",
|
|
"Gay",
|
|
"Bisexual",
|
|
"Bicurious",
|
|
"Pansexual",
|
|
"Asexual",
|
|
}
|
|
|
|
HereFor = []string{
|
|
"Dating", "Relationship", "Platonic friends",
|
|
"Networking", "Casual acquaintances", "Hookups",
|
|
"Chat room", "Forums", "Galleries",
|
|
"Exhibitionism", "Voyeurism", "Couch surfing",
|
|
}
|
|
|
|
// Enums all wrapped up for template use.
|
|
ProfileEnums = map[string][]string{
|
|
"MaritalStatus": MaritalStatus,
|
|
"RelationshipType": RelationshipType,
|
|
"Gender": Gender,
|
|
"Orientation": Orientation,
|
|
"HereFor": HereFor,
|
|
}
|
|
|
|
// Input field names for profile fields.
|
|
ProfileFields = []string{
|
|
"gender",
|
|
"pronouns",
|
|
"city",
|
|
"job",
|
|
"orientation",
|
|
"marital_status",
|
|
"relationship_type",
|
|
"about_me",
|
|
"interests",
|
|
"music_movies",
|
|
"hide_age",
|
|
}
|
|
EssayProfileFields = []string{
|
|
"about_me",
|
|
"interests",
|
|
"music_movies",
|
|
}
|
|
|
|
// Site preference names (stored in ProfileField table)
|
|
SitePreferenceFields = []string{
|
|
"dm_privacy",
|
|
"blur_explicit",
|
|
"site_gallery_default", // default view on site gallery (friends-only or all certified?)
|
|
"chat_moderation_rules",
|
|
}
|
|
|
|
// Website theme color hue choices.
|
|
WebsiteThemeHueChoices = []OptGroup{
|
|
{
|
|
Header: "Custom Themes",
|
|
Options: []Option{
|
|
{
|
|
Label: "Default (no added color; classic nonshy theme)",
|
|
Value: "",
|
|
},
|
|
{
|
|
Label: "nonshy blue & pink",
|
|
Value: "blue-pink",
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Header: "Just a Splash of Color",
|
|
Options: []Option{
|
|
{
|
|
Label: "Burnt red",
|
|
Value: "red",
|
|
},
|
|
{
|
|
Label: "Harvest orange",
|
|
Value: "orange",
|
|
},
|
|
{
|
|
Label: "Golden yellow",
|
|
Value: "yellow",
|
|
},
|
|
{
|
|
Label: "Leafy green",
|
|
Value: "green",
|
|
},
|
|
{
|
|
Label: "Cool blue",
|
|
Value: "blue",
|
|
},
|
|
{
|
|
Label: "Pretty in pink",
|
|
Value: "pink",
|
|
},
|
|
{
|
|
Label: "Royal purple",
|
|
Value: "purple",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
// Choices for the Contact Us subject
|
|
ContactUsChoices = []OptGroup{
|
|
{
|
|
Header: "Website Feedback",
|
|
Options: []Option{
|
|
{"feedback", "Website feedback"},
|
|
{"feature", "Make a feature request"},
|
|
{"bug", "Report a bug or broken feature"},
|
|
{"other", "General/miscellaneous/other"},
|
|
},
|
|
},
|
|
{
|
|
Header: "Report a Problem",
|
|
Options: []Option{
|
|
{"report.user", "Report a problematic user"},
|
|
{"report.photo", "Report a problematic photo"},
|
|
{"report.message", "Report a direct message conversation"},
|
|
{"report.comment", "Report a forum post or comment"},
|
|
{"report.forum", "Report a forum or community"},
|
|
{"forum.adopt", "Adopt a forum"},
|
|
},
|
|
},
|
|
}
|
|
|
|
// Default forum categories for forum landing page.
|
|
ForumCategories = []string{
|
|
"Rules and Announcements",
|
|
"Nudists",
|
|
"Exhibitionists",
|
|
"Photo Boards",
|
|
"Anything Goes",
|
|
}
|
|
|
|
// Forum Poll expiration options.
|
|
PollExpires = []Option{
|
|
{
|
|
Label: "Never",
|
|
Value: "0",
|
|
},
|
|
{
|
|
Label: "1 Day",
|
|
Value: "1",
|
|
},
|
|
{
|
|
Label: "2 Days",
|
|
Value: "2",
|
|
},
|
|
{
|
|
Label: "3 Days",
|
|
Value: "3",
|
|
},
|
|
{
|
|
Label: "4 Days",
|
|
Value: "4",
|
|
},
|
|
{
|
|
Label: "5 Days",
|
|
Value: "5",
|
|
},
|
|
{
|
|
Label: "6 Days",
|
|
Value: "6",
|
|
},
|
|
{
|
|
Label: "7 Days",
|
|
Value: "7",
|
|
},
|
|
{
|
|
Label: "2 Weeks",
|
|
Value: "14",
|
|
},
|
|
{
|
|
Label: "1 Month (30 days)",
|
|
Value: "30",
|
|
},
|
|
}
|
|
|
|
// Keywords that appear in a DM that make it likely spam.
|
|
DirectMessageSpamKeywords = []*regexp.Regexp{
|
|
regexp.MustCompile(`\b(telegram|whats\s*app|signal|kik|session)\b`),
|
|
regexp.MustCompile(`https?://(t.me|join.skype.com|zoom.us|whereby.com|meet.jit.si|wa.me)`),
|
|
}
|
|
|
|
// Chat Moderation Rules.
|
|
ChatModerationRules = []ChecklistOption{
|
|
{
|
|
Value: "redcam",
|
|
Label: "Red camera",
|
|
Help: "The user's camera is forced to 'explicit' when they are broadcasting.",
|
|
},
|
|
{
|
|
Value: "nobroadcast",
|
|
Label: "No broadcast",
|
|
Help: "The user can not broadcast their webcam, but may still watch other peoples' webcams.",
|
|
},
|
|
{
|
|
Value: "novideo",
|
|
Label: "No webcam privileges ('Shy Accounts')",
|
|
Help: "The user can not broadcast or watch any webcam. Note: this option supercedes all other video-related rules.",
|
|
},
|
|
{
|
|
Value: "noimage",
|
|
Label: "No image sharing privileges ('Shy Accounts')",
|
|
Help: "The user can not share or see any image shared on chat.",
|
|
},
|
|
}
|
|
)
|
|
|
|
// OptGroup choices for the subject drop-down.
|
|
type OptGroup struct {
|
|
Header string
|
|
Options []Option
|
|
}
|
|
|
|
// Option for select boxes.
|
|
type Option struct {
|
|
Value string
|
|
Label string
|
|
}
|
|
|
|
// ChecklistOption for checkbox-lists.
|
|
type ChecklistOption struct {
|
|
Value string
|
|
Label string
|
|
Help string
|
|
}
|
|
|
|
// NotificationOptout field values (stored in user ProfileField table)
|
|
const (
|
|
NotificationOptOutFriendPhotos = "notif_optout_friends_photos"
|
|
NotificationOptOutPrivatePhotos = "notif_optout_private_photos"
|
|
NotificationOptOutExplicitPhotos = "notif_optout_explicit_photos"
|
|
NotificationOptOutLikes = "notif_optout_likes"
|
|
NotificationOptOutComments = "notif_optout_comments"
|
|
NotificationOptOutSubscriptions = "notif_optout_subscriptions"
|
|
NotificationOptOutFriendRequestAccepted = "notif_optout_friend_request_accepted"
|
|
NotificationOptOutPrivateGrant = "notif_optout_private_grant"
|
|
|
|
// Web Push Notifications
|
|
PushNotificationOptOutMessage = "notif_optout_push_messages"
|
|
PushNotificationOptOutFriends = "notif_optout_push_friends"
|
|
)
|
|
|
|
// Notification opt-outs (stored in ProfileField table)
|
|
var NotificationOptOutFields = []string{
|
|
NotificationOptOutFriendPhotos,
|
|
NotificationOptOutPrivatePhotos,
|
|
NotificationOptOutExplicitPhotos,
|
|
NotificationOptOutLikes,
|
|
NotificationOptOutComments,
|
|
NotificationOptOutSubscriptions,
|
|
NotificationOptOutFriendRequestAccepted,
|
|
NotificationOptOutPrivateGrant,
|
|
}
|
|
|
|
// Push Notification opt-outs (stored in ProfileField table)
|
|
var PushNotificationOptOutFields = []string{
|
|
PushNotificationOptOutMessage,
|
|
PushNotificationOptOutFriends,
|
|
}
|