Added the registration logs.

Tweaked the h1 CSS for the Control Panel in Cosora.
Improved the support for autocompleters.
Reverted some of the int64s back to ints.
The per-request user variable should now have the IPs for guests.
Removed some obsolete statements.
Removed a couple obsolete phrases.
Moved a couple more accumulator initializers out of the store initializers.
Refactored one of the report statements to use a store instead of a statement.
Created the menuhead CSS class.
Added the GetOffset method to the LogStore interface and refactored the mod and admin log pages to use it.
Changed the labels on the adminlog and modlog pages to make them more understandable.
Removed the generated templates from Git.

Run the patcher / update script to get the new table.
This commit is contained in:
Azareal 2018-05-16 20:46:14 +10:00
parent 2be884edc1
commit ba98b0c952
45 changed files with 621 additions and 5284 deletions

View File

@ -9,21 +9,32 @@ import (
var ModLogs LogStore var ModLogs LogStore
var AdminLogs LogStore var AdminLogs LogStore
type LogItem struct {
Action string
ElementID int
ElementType string
IPAddress string
ActorID int
DoneAt string
}
type LogStore interface { type LogStore interface {
Create(action string, elementID int, elementType string, ipaddress string, actorID int) (err error) Create(action string, elementID int, elementType string, ipaddress string, actorID int) (err error)
GlobalCount() int GlobalCount() int
GetOffset(offset int, perPage int) (logs []LogItem, err error)
} }
type SQLModLogStore struct { type SQLModLogStore struct {
create *sql.Stmt create *sql.Stmt
count *sql.Stmt count *sql.Stmt
getOffset *sql.Stmt
} }
func NewModLogStore() (*SQLModLogStore, error) { func NewModLogStore(acc *qgen.Accumulator) (*SQLModLogStore, error) {
acc := qgen.Builder.Accumulator()
return &SQLModLogStore{ return &SQLModLogStore{
create: acc.Insert("moderation_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Fields("?,?,?,?,?,UTC_TIMESTAMP()").Prepare(), create: acc.Insert("moderation_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Fields("?,?,?,?,?,UTC_TIMESTAMP()").Prepare(),
count: acc.Count("moderation_logs").Prepare(), count: acc.Count("moderation_logs").Prepare(),
getOffset: acc.Select("moderation_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Orderby("doneAt DESC").Limit("?,?").Prepare(),
}, acc.FirstError() }, acc.FirstError()
} }
@ -41,16 +52,38 @@ func (store *SQLModLogStore) GlobalCount() (logCount int) {
return logCount return logCount
} }
func buildLogList(rows *sql.Rows) (logs []LogItem, err error) {
for rows.Next() {
var log LogItem
err := rows.Scan(&log.Action, &log.ElementID, &log.ElementType, &log.IPAddress, &log.ActorID, &log.DoneAt)
if err != nil {
return logs, err
}
logs = append(logs, log)
}
return logs, rows.Err()
}
func (store *SQLModLogStore) GetOffset(offset int, perPage int) (logs []LogItem, err error) {
rows, err := store.getOffset.Query(offset, perPage)
if err != nil {
return logs, err
}
defer rows.Close()
return buildLogList(rows)
}
type SQLAdminLogStore struct { type SQLAdminLogStore struct {
create *sql.Stmt create *sql.Stmt
count *sql.Stmt count *sql.Stmt
getOffset *sql.Stmt
} }
func NewAdminLogStore() (*SQLAdminLogStore, error) { func NewAdminLogStore(acc *qgen.Accumulator) (*SQLAdminLogStore, error) {
acc := qgen.Builder.Accumulator()
return &SQLAdminLogStore{ return &SQLAdminLogStore{
create: acc.Insert("administration_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Fields("?,?,?,?,?,UTC_TIMESTAMP()").Prepare(), create: acc.Insert("administration_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Fields("?,?,?,?,?,UTC_TIMESTAMP()").Prepare(),
count: acc.Count("administration_logs").Prepare(), count: acc.Count("administration_logs").Prepare(),
getOffset: acc.Select("administration_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Orderby("doneAt DESC").Limit("?,?").Prepare(),
}, acc.FirstError() }, acc.FirstError()
} }
@ -67,3 +100,12 @@ func (store *SQLAdminLogStore) GlobalCount() (logCount int) {
} }
return logCount return logCount
} }
func (store *SQLAdminLogStore) GetOffset(offset int, perPage int) (logs []LogItem, err error) {
rows, err := store.getOffset.Query(offset, perPage)
if err != nil {
return logs, err
}
defer rows.Close()
return buildLogList(rows)
}

View File

@ -8,16 +8,16 @@ import (
) )
// nolint I don't want to write comments for each of these o.o // nolint I don't want to write comments for each of these o.o
const Hour int64 = 60 * 60 const Hour int = 60 * 60
const Day int64 = Hour * 24 const Day int = Hour * 24
const Week int64 = Day * 7 const Week int = Day * 7
const Month int64 = Day * 30 const Month int = Day * 30
const Year int64 = Day * 365 const Year int = Day * 365
const Kilobyte int64 = 1024 const Kilobyte int = 1024
const Megabyte int64 = Kilobyte * 1024 const Megabyte int = Kilobyte * 1024
const Gigabyte int64 = Megabyte * 1024 const Gigabyte int = Megabyte * 1024
const Terabyte int64 = Gigabyte * 1024 const Terabyte int = Gigabyte * 1024
const Petabyte int64 = Terabyte * 1024 const Petabyte int = Terabyte * 1024
const SaltLength int = 32 const SaltLength int = 32
const SessionLength int = 80 const SessionLength int = 80

93
common/misc_logs.go Normal file
View File

@ -0,0 +1,93 @@
package common
import "database/sql"
import "../query_gen/lib"
var RegLogs RegLogStore
type RegLogItem struct {
ID int
Username string
Email string
FailureReason string
Success bool
IPAddress string
DoneAt string
}
type RegLogStmts struct {
update *sql.Stmt
create *sql.Stmt
}
var regLogStmts RegLogStmts
func init() {
DbInits.Add(func(acc *qgen.Accumulator) error {
regLogStmts = RegLogStmts{
update: acc.Update("registration_logs").Set("username = ?, email = ?, failureReason = ?, success = ?").Where("rlid = ?").Prepare(),
create: acc.Insert("registration_logs").Columns("username, email, failureReason, success, ipaddress, doneAt").Fields("?,?,?,?,?,UTC_TIMESTAMP()").Prepare(),
}
return acc.FirstError()
})
}
// TODO: Reload this item in the store, probably doesn't matter right now, but it might when we start caching this stuff in memory
// ! Retroactive updates of date are not permitted for integrity reasons
func (log *RegLogItem) Commit() error {
_, err := regLogStmts.update.Exec(log.Username, log.Email, log.FailureReason, log.Success, log.ID)
return err
}
func (log *RegLogItem) Create() (id int, err error) {
res, err := regLogStmts.create.Exec(log.Username, log.Email, log.FailureReason, log.Success, log.IPAddress)
if err != nil {
return 0, err
}
id64, err := res.LastInsertId()
log.ID = int(id64)
return log.ID, err
}
type RegLogStore interface {
GlobalCount() (logCount int)
GetOffset(offset int, perPage int) (logs []RegLogItem, err error)
}
type SQLRegLogStore struct {
count *sql.Stmt
getOffset *sql.Stmt
}
func NewRegLogStore(acc *qgen.Accumulator) (*SQLRegLogStore, error) {
return &SQLRegLogStore{
count: acc.Count("registration_logs").Prepare(),
getOffset: acc.Select("registration_logs").Columns("rlid, username, email, failureReason, success, ipaddress, doneAt").Orderby("doneAt DESC").Limit("?,?").Prepare(),
}, acc.FirstError()
}
func (store *SQLRegLogStore) GlobalCount() (logCount int) {
err := store.count.QueryRow().Scan(&logCount)
if err != nil {
LogError(err)
}
return logCount
}
func (store *SQLRegLogStore) GetOffset(offset int, perPage int) (logs []RegLogItem, err error) {
rows, err := store.getOffset.Query(offset, perPage)
if err != nil {
return logs, err
}
defer rows.Close()
for rows.Next() {
var log RegLogItem
err := rows.Scan(&log.ID, &log.Username, &log.Email, &log.FailureReason, &log.Success, &log.IPAddress, &log.DoneAt)
if err != nil {
return logs, err
}
logs = append(logs, log)
}
return logs, rows.Err()
}

View File

@ -383,7 +383,7 @@ type PanelBackupPage struct {
Backups []BackupItem Backups []BackupItem
} }
type LogItem struct { type PageLogItem struct {
Action template.HTML Action template.HTML
IPAddress string IPAddress string
DoneAt string DoneAt string
@ -395,7 +395,22 @@ type PanelLogsPage struct {
Header *Header Header *Header
Stats PanelStats Stats PanelStats
Zone string Zone string
Logs []LogItem Logs []PageLogItem
Paginator
}
type PageRegLogItem struct {
RegLogItem
ParsedReason string
}
type PanelRegLogsPage struct {
Title string
CurrentUser User
Header *Header
Stats PanelStats
Zone string
Logs []PageRegLogItem
Paginator Paginator
} }

View File

@ -263,10 +263,6 @@ func preRoute(w http.ResponseWriter, r *http.Request) (User, bool) {
if halt { if halt {
return *user, false return *user, false
} }
if user == &GuestUser {
return *user, true
}
var usercpy *User = BlankUser() var usercpy *User = BlankUser()
*usercpy = *user *usercpy = *user
@ -276,6 +272,11 @@ func preRoute(w http.ResponseWriter, r *http.Request) (User, bool) {
PreError("Bad IP", w, r) PreError("Bad IP", w, r)
return *usercpy, false return *usercpy, false
} }
if user == &GuestUser {
usercpy.LastIP = host
return *usercpy, true
}
if host != usercpy.LastIP { if host != usercpy.LastIP {
err = usercpy.UpdateIP(host) err = usercpy.UpdateIP(host)
if err != nil { if err != nil {

View File

@ -52,7 +52,7 @@ type config struct {
SslPrivkey string SslPrivkey string
SslFullchain string SslFullchain string
MaxRequestSize int64 MaxRequestSize int
CacheTopicUser int CacheTopicUser int
UserCacheCapacity int UserCacheCapacity int
TopicCacheCapacity int TopicCacheCapacity int

View File

@ -151,8 +151,8 @@ func ConvertByteInUnit(bytes float64, unit string) (count float64) {
// TODO: Re-add T as int64 // TODO: Re-add T as int64
func ConvertUnit(num int) (int, string) { func ConvertUnit(num int) (int, string) {
switch { switch {
//case num >= 1000000000000: case num >= 1000000000000:
// return num / 1000000000000, "T" return num / 1000000000000, "T"
case num >= 1000000000: case num >= 1000000000:
return num / 1000000000, "B" return num / 1000000000, "B"
case num >= 1000000: case num >= 1000000:
@ -169,10 +169,10 @@ func ConvertUnit(num int) (int, string) {
// TODO: Re-add trillion as int64 // TODO: Re-add trillion as int64
func ConvertFriendlyUnit(num int) (int, string) { func ConvertFriendlyUnit(num int) (int, string) {
switch { switch {
//case num >= 1000000000000000: case num >= 1000000000000000:
// return 0, " quadrillion" return 0, " quadrillion"
//case num >= 1000000000000: case num >= 1000000000000:
// return 0, " trillion" return 0, " trillion"
case num >= 1000000000: case num >= 1000000000:
return num / 1000000000, " billion" return num / 1000000000, " billion"
case num >= 1000000: case num >= 1000000:

View File

@ -12,11 +12,6 @@ type Stmts struct {
isPluginActive *sql.Stmt isPluginActive *sql.Stmt
getUsersOffset *sql.Stmt getUsersOffset *sql.Stmt
isThemeDefault *sql.Stmt isThemeDefault *sql.Stmt
getModlogs *sql.Stmt
getModlogsOffset *sql.Stmt
getAdminlogsOffset *sql.Stmt
getTopicFID *sql.Stmt
getUserName *sql.Stmt
getEmailsByUser *sql.Stmt getEmailsByUser *sql.Stmt
getTopicBasic *sql.Stmt getTopicBasic *sql.Stmt
forumEntryExists *sql.Stmt forumEntryExists *sql.Stmt
@ -27,7 +22,6 @@ type Stmts struct {
addPlugin *sql.Stmt addPlugin *sql.Stmt
addTheme *sql.Stmt addTheme *sql.Stmt
createWordFilter *sql.Stmt createWordFilter *sql.Stmt
editReply *sql.Stmt
updatePlugin *sql.Stmt updatePlugin *sql.Stmt
updatePluginInstall *sql.Stmt updatePluginInstall *sql.Stmt
updateTheme *sql.Stmt updateTheme *sql.Stmt
@ -81,46 +75,6 @@ func _gen_mssql() (err error) {
return err return err
} }
common.DebugLog("Preparing getModlogs statement.")
stmts.getModlogs, err = db.Prepare("SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [moderation_logs]")
if err != nil {
log.Print("Error in getModlogs statement.")
log.Print("Bad Query: ","SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [moderation_logs]")
return err
}
common.DebugLog("Preparing getModlogsOffset statement.")
stmts.getModlogsOffset, err = db.Prepare("SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [moderation_logs] ORDER BY doneAt DESC OFFSET ?1 ROWS FETCH NEXT ?2 ROWS ONLY")
if err != nil {
log.Print("Error in getModlogsOffset statement.")
log.Print("Bad Query: ","SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [moderation_logs] ORDER BY doneAt DESC OFFSET ?1 ROWS FETCH NEXT ?2 ROWS ONLY")
return err
}
common.DebugLog("Preparing getAdminlogsOffset statement.")
stmts.getAdminlogsOffset, err = db.Prepare("SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [administration_logs] ORDER BY doneAt DESC OFFSET ?1 ROWS FETCH NEXT ?2 ROWS ONLY")
if err != nil {
log.Print("Error in getAdminlogsOffset statement.")
log.Print("Bad Query: ","SELECT [action],[elementID],[elementType],[ipaddress],[actorID],[doneAt] FROM [administration_logs] ORDER BY doneAt DESC OFFSET ?1 ROWS FETCH NEXT ?2 ROWS ONLY")
return err
}
common.DebugLog("Preparing getTopicFID statement.")
stmts.getTopicFID, err = db.Prepare("SELECT [parentID] FROM [topics] WHERE [tid] = ?1")
if err != nil {
log.Print("Error in getTopicFID statement.")
log.Print("Bad Query: ","SELECT [parentID] FROM [topics] WHERE [tid] = ?1")
return err
}
common.DebugLog("Preparing getUserName statement.")
stmts.getUserName, err = db.Prepare("SELECT [name] FROM [users] WHERE [uid] = ?1")
if err != nil {
log.Print("Error in getUserName statement.")
log.Print("Bad Query: ","SELECT [name] FROM [users] WHERE [uid] = ?1")
return err
}
common.DebugLog("Preparing getEmailsByUser statement.") common.DebugLog("Preparing getEmailsByUser statement.")
stmts.getEmailsByUser, err = db.Prepare("SELECT [email],[validated],[token] FROM [emails] WHERE [uid] = ?1") stmts.getEmailsByUser, err = db.Prepare("SELECT [email],[validated],[token] FROM [emails] WHERE [uid] = ?1")
if err != nil { if err != nil {
@ -201,14 +155,6 @@ func _gen_mssql() (err error) {
return err return err
} }
common.DebugLog("Preparing editReply statement.")
stmts.editReply, err = db.Prepare("UPDATE [replies] SET [content] = ?,[parsed_content] = ? WHERE [rid] = ?")
if err != nil {
log.Print("Error in editReply statement.")
log.Print("Bad Query: ","UPDATE [replies] SET [content] = ?,[parsed_content] = ? WHERE [rid] = ?")
return err
}
common.DebugLog("Preparing updatePlugin statement.") common.DebugLog("Preparing updatePlugin statement.")
stmts.updatePlugin, err = db.Prepare("UPDATE [plugins] SET [active] = ? WHERE [uname] = ?") stmts.updatePlugin, err = db.Prepare("UPDATE [plugins] SET [active] = ? WHERE [uname] = ?")
if err != nil { if err != nil {

View File

@ -14,11 +14,6 @@ type Stmts struct {
isPluginActive *sql.Stmt isPluginActive *sql.Stmt
getUsersOffset *sql.Stmt getUsersOffset *sql.Stmt
isThemeDefault *sql.Stmt isThemeDefault *sql.Stmt
getModlogs *sql.Stmt
getModlogsOffset *sql.Stmt
getAdminlogsOffset *sql.Stmt
getTopicFID *sql.Stmt
getUserName *sql.Stmt
getEmailsByUser *sql.Stmt getEmailsByUser *sql.Stmt
getTopicBasic *sql.Stmt getTopicBasic *sql.Stmt
forumEntryExists *sql.Stmt forumEntryExists *sql.Stmt
@ -29,7 +24,6 @@ type Stmts struct {
addPlugin *sql.Stmt addPlugin *sql.Stmt
addTheme *sql.Stmt addTheme *sql.Stmt
createWordFilter *sql.Stmt createWordFilter *sql.Stmt
editReply *sql.Stmt
updatePlugin *sql.Stmt updatePlugin *sql.Stmt
updatePluginInstall *sql.Stmt updatePluginInstall *sql.Stmt
updateTheme *sql.Stmt updateTheme *sql.Stmt
@ -80,41 +74,6 @@ func _gen_mysql() (err error) {
return err return err
} }
common.DebugLog("Preparing getModlogs statement.")
stmts.getModlogs, err = db.Prepare("SELECT `action`,`elementID`,`elementType`,`ipaddress`,`actorID`,`doneAt` FROM `moderation_logs`")
if err != nil {
log.Print("Error in getModlogs statement.")
return err
}
common.DebugLog("Preparing getModlogsOffset statement.")
stmts.getModlogsOffset, err = db.Prepare("SELECT `action`,`elementID`,`elementType`,`ipaddress`,`actorID`,`doneAt` FROM `moderation_logs` ORDER BY `doneAt` DESC LIMIT ?,?")
if err != nil {
log.Print("Error in getModlogsOffset statement.")
return err
}
common.DebugLog("Preparing getAdminlogsOffset statement.")
stmts.getAdminlogsOffset, err = db.Prepare("SELECT `action`,`elementID`,`elementType`,`ipaddress`,`actorID`,`doneAt` FROM `administration_logs` ORDER BY `doneAt` DESC LIMIT ?,?")
if err != nil {
log.Print("Error in getAdminlogsOffset statement.")
return err
}
common.DebugLog("Preparing getTopicFID statement.")
stmts.getTopicFID, err = db.Prepare("SELECT `parentID` FROM `topics` WHERE `tid` = ?")
if err != nil {
log.Print("Error in getTopicFID statement.")
return err
}
common.DebugLog("Preparing getUserName statement.")
stmts.getUserName, err = db.Prepare("SELECT `name` FROM `users` WHERE `uid` = ?")
if err != nil {
log.Print("Error in getUserName statement.")
return err
}
common.DebugLog("Preparing getEmailsByUser statement.") common.DebugLog("Preparing getEmailsByUser statement.")
stmts.getEmailsByUser, err = db.Prepare("SELECT `email`,`validated`,`token` FROM `emails` WHERE `uid` = ?") stmts.getEmailsByUser, err = db.Prepare("SELECT `email`,`validated`,`token` FROM `emails` WHERE `uid` = ?")
if err != nil { if err != nil {
@ -185,13 +144,6 @@ func _gen_mysql() (err error) {
return err return err
} }
common.DebugLog("Preparing editReply statement.")
stmts.editReply, err = db.Prepare("UPDATE `replies` SET `content` = ?,`parsed_content` = ? WHERE `rid` = ?")
if err != nil {
log.Print("Error in editReply statement.")
return err
}
common.DebugLog("Preparing updatePlugin statement.") common.DebugLog("Preparing updatePlugin statement.")
stmts.updatePlugin, err = db.Prepare("UPDATE `plugins` SET `active` = ? WHERE `uname` = ?") stmts.updatePlugin, err = db.Prepare("UPDATE `plugins` SET `active` = ? WHERE `uname` = ?")
if err != nil { if err != nil {

View File

@ -9,7 +9,6 @@ import "./common"
// nolint // nolint
type Stmts struct { type Stmts struct {
editReply *sql.Stmt
updatePlugin *sql.Stmt updatePlugin *sql.Stmt
updatePluginInstall *sql.Stmt updatePluginInstall *sql.Stmt
updateTheme *sql.Stmt updateTheme *sql.Stmt
@ -36,13 +35,6 @@ type Stmts struct {
func _gen_pgsql() (err error) { func _gen_pgsql() (err error) {
common.DebugLog("Building the generated statements") common.DebugLog("Building the generated statements")
common.DebugLog("Preparing editReply statement.")
stmts.editReply, err = db.Prepare("UPDATE `replies` SET `content` = ?,`parsed_content` = ? WHERE `rid` = ?")
if err != nil {
log.Print("Error in editReply statement.")
return err
}
common.DebugLog("Preparing updatePlugin statement.") common.DebugLog("Preparing updatePlugin statement.")
stmts.updatePlugin, err = db.Prepare("UPDATE `plugins` SET `active` = ? WHERE `uname` = ?") stmts.updatePlugin, err = db.Prepare("UPDATE `plugins` SET `active` = ? WHERE `uname` = ?")
if err != nil { if err != nil {

View File

@ -85,6 +85,7 @@ var RouteMap = map[string]interface{}{
"routePanelGroupsEditPermsSubmit": routePanelGroupsEditPermsSubmit, "routePanelGroupsEditPermsSubmit": routePanelGroupsEditPermsSubmit,
"routePanelGroupsCreateSubmit": routePanelGroupsCreateSubmit, "routePanelGroupsCreateSubmit": routePanelGroupsCreateSubmit,
"routePanelBackups": routePanelBackups, "routePanelBackups": routePanelBackups,
"routePanelLogsRegs": routePanelLogsRegs,
"routePanelLogsMod": routePanelLogsMod, "routePanelLogsMod": routePanelLogsMod,
"routePanelDebug": routePanelDebug, "routePanelDebug": routePanelDebug,
"routePanelDashboard": routePanelDashboard, "routePanelDashboard": routePanelDashboard,
@ -201,52 +202,53 @@ var routeMapEnum = map[string]int{
"routePanelGroupsEditPermsSubmit": 63, "routePanelGroupsEditPermsSubmit": 63,
"routePanelGroupsCreateSubmit": 64, "routePanelGroupsCreateSubmit": 64,
"routePanelBackups": 65, "routePanelBackups": 65,
"routePanelLogsMod": 66, "routePanelLogsRegs": 66,
"routePanelDebug": 67, "routePanelLogsMod": 67,
"routePanelDashboard": 68, "routePanelDebug": 68,
"routes.AccountEditCritical": 69, "routePanelDashboard": 69,
"routes.AccountEditCriticalSubmit": 70, "routes.AccountEditCritical": 70,
"routes.AccountEditAvatar": 71, "routes.AccountEditCriticalSubmit": 71,
"routes.AccountEditAvatarSubmit": 72, "routes.AccountEditAvatar": 72,
"routes.AccountEditUsername": 73, "routes.AccountEditAvatarSubmit": 73,
"routes.AccountEditUsernameSubmit": 74, "routes.AccountEditUsername": 74,
"routeAccountEditEmail": 75, "routes.AccountEditUsernameSubmit": 75,
"routeAccountEditEmailTokenSubmit": 76, "routeAccountEditEmail": 76,
"routes.ViewProfile": 77, "routeAccountEditEmailTokenSubmit": 77,
"routes.BanUserSubmit": 78, "routes.ViewProfile": 78,
"routes.UnbanUser": 79, "routes.BanUserSubmit": 79,
"routes.ActivateUser": 80, "routes.UnbanUser": 80,
"routes.IPSearch": 81, "routes.ActivateUser": 81,
"routes.CreateTopicSubmit": 82, "routes.IPSearch": 82,
"routes.EditTopicSubmit": 83, "routes.CreateTopicSubmit": 83,
"routes.DeleteTopicSubmit": 84, "routes.EditTopicSubmit": 84,
"routes.StickTopicSubmit": 85, "routes.DeleteTopicSubmit": 85,
"routes.UnstickTopicSubmit": 86, "routes.StickTopicSubmit": 86,
"routes.LockTopicSubmit": 87, "routes.UnstickTopicSubmit": 87,
"routes.UnlockTopicSubmit": 88, "routes.LockTopicSubmit": 88,
"routes.MoveTopicSubmit": 89, "routes.UnlockTopicSubmit": 89,
"routes.LikeTopicSubmit": 90, "routes.MoveTopicSubmit": 90,
"routes.ViewTopic": 91, "routes.LikeTopicSubmit": 91,
"routes.CreateReplySubmit": 92, "routes.ViewTopic": 92,
"routes.ReplyEditSubmit": 93, "routes.CreateReplySubmit": 93,
"routes.ReplyDeleteSubmit": 94, "routes.ReplyEditSubmit": 94,
"routes.ReplyLikeSubmit": 95, "routes.ReplyDeleteSubmit": 95,
"routes.ProfileReplyCreateSubmit": 96, "routes.ReplyLikeSubmit": 96,
"routes.ProfileReplyEditSubmit": 97, "routes.ProfileReplyCreateSubmit": 97,
"routes.ProfileReplyDeleteSubmit": 98, "routes.ProfileReplyEditSubmit": 98,
"routes.PollVote": 99, "routes.ProfileReplyDeleteSubmit": 99,
"routes.PollResults": 100, "routes.PollVote": 100,
"routes.AccountLogin": 101, "routes.PollResults": 101,
"routes.AccountRegister": 102, "routes.AccountLogin": 102,
"routes.AccountLogout": 103, "routes.AccountRegister": 103,
"routes.AccountLoginSubmit": 104, "routes.AccountLogout": 104,
"routes.AccountRegisterSubmit": 105, "routes.AccountLoginSubmit": 105,
"routes.DynamicRoute": 106, "routes.AccountRegisterSubmit": 106,
"routes.UploadedFile": 107, "routes.DynamicRoute": 107,
"routes.StaticFile": 108, "routes.UploadedFile": 108,
"routes.RobotsTxt": 109, "routes.StaticFile": 109,
"routes.SitemapXml": 110, "routes.RobotsTxt": 110,
"routes.BadRoute": 111, "routes.SitemapXml": 111,
"routes.BadRoute": 112,
} }
var reverseRouteMapEnum = map[int]string{ var reverseRouteMapEnum = map[int]string{
0: "routeAPI", 0: "routeAPI",
@ -315,52 +317,53 @@ var reverseRouteMapEnum = map[int]string{
63: "routePanelGroupsEditPermsSubmit", 63: "routePanelGroupsEditPermsSubmit",
64: "routePanelGroupsCreateSubmit", 64: "routePanelGroupsCreateSubmit",
65: "routePanelBackups", 65: "routePanelBackups",
66: "routePanelLogsMod", 66: "routePanelLogsRegs",
67: "routePanelDebug", 67: "routePanelLogsMod",
68: "routePanelDashboard", 68: "routePanelDebug",
69: "routes.AccountEditCritical", 69: "routePanelDashboard",
70: "routes.AccountEditCriticalSubmit", 70: "routes.AccountEditCritical",
71: "routes.AccountEditAvatar", 71: "routes.AccountEditCriticalSubmit",
72: "routes.AccountEditAvatarSubmit", 72: "routes.AccountEditAvatar",
73: "routes.AccountEditUsername", 73: "routes.AccountEditAvatarSubmit",
74: "routes.AccountEditUsernameSubmit", 74: "routes.AccountEditUsername",
75: "routeAccountEditEmail", 75: "routes.AccountEditUsernameSubmit",
76: "routeAccountEditEmailTokenSubmit", 76: "routeAccountEditEmail",
77: "routes.ViewProfile", 77: "routeAccountEditEmailTokenSubmit",
78: "routes.BanUserSubmit", 78: "routes.ViewProfile",
79: "routes.UnbanUser", 79: "routes.BanUserSubmit",
80: "routes.ActivateUser", 80: "routes.UnbanUser",
81: "routes.IPSearch", 81: "routes.ActivateUser",
82: "routes.CreateTopicSubmit", 82: "routes.IPSearch",
83: "routes.EditTopicSubmit", 83: "routes.CreateTopicSubmit",
84: "routes.DeleteTopicSubmit", 84: "routes.EditTopicSubmit",
85: "routes.StickTopicSubmit", 85: "routes.DeleteTopicSubmit",
86: "routes.UnstickTopicSubmit", 86: "routes.StickTopicSubmit",
87: "routes.LockTopicSubmit", 87: "routes.UnstickTopicSubmit",
88: "routes.UnlockTopicSubmit", 88: "routes.LockTopicSubmit",
89: "routes.MoveTopicSubmit", 89: "routes.UnlockTopicSubmit",
90: "routes.LikeTopicSubmit", 90: "routes.MoveTopicSubmit",
91: "routes.ViewTopic", 91: "routes.LikeTopicSubmit",
92: "routes.CreateReplySubmit", 92: "routes.ViewTopic",
93: "routes.ReplyEditSubmit", 93: "routes.CreateReplySubmit",
94: "routes.ReplyDeleteSubmit", 94: "routes.ReplyEditSubmit",
95: "routes.ReplyLikeSubmit", 95: "routes.ReplyDeleteSubmit",
96: "routes.ProfileReplyCreateSubmit", 96: "routes.ReplyLikeSubmit",
97: "routes.ProfileReplyEditSubmit", 97: "routes.ProfileReplyCreateSubmit",
98: "routes.ProfileReplyDeleteSubmit", 98: "routes.ProfileReplyEditSubmit",
99: "routes.PollVote", 99: "routes.ProfileReplyDeleteSubmit",
100: "routes.PollResults", 100: "routes.PollVote",
101: "routes.AccountLogin", 101: "routes.PollResults",
102: "routes.AccountRegister", 102: "routes.AccountLogin",
103: "routes.AccountLogout", 103: "routes.AccountRegister",
104: "routes.AccountLoginSubmit", 104: "routes.AccountLogout",
105: "routes.AccountRegisterSubmit", 105: "routes.AccountLoginSubmit",
106: "routes.DynamicRoute", 106: "routes.AccountRegisterSubmit",
107: "routes.UploadedFile", 107: "routes.DynamicRoute",
108: "routes.StaticFile", 108: "routes.UploadedFile",
109: "routes.RobotsTxt", 109: "routes.StaticFile",
110: "routes.SitemapXml", 110: "routes.RobotsTxt",
111: "routes.BadRoute", 111: "routes.SitemapXml",
112: "routes.BadRoute",
} }
var osMapEnum = map[string]int{ var osMapEnum = map[string]int{
"unknown": 0, "unknown": 0,
@ -656,7 +659,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
counters.GlobalViewCounter.Bump() counters.GlobalViewCounter.Bump()
if prefix == "/static" { if prefix == "/static" {
counters.RouteViewCounter.Bump(108) counters.RouteViewCounter.Bump(109)
req.URL.Path += extraData req.URL.Path += extraData
routes.StaticFile(w, req) routes.StaticFile(w, req)
return return
@ -1293,8 +1296,11 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
counters.RouteViewCounter.Bump(65) counters.RouteViewCounter.Bump(65)
err = routePanelBackups(w,req,user,extraData) err = routePanelBackups(w,req,user,extraData)
case "/panel/logs/mod/": case "/panel/logs/regs/":
counters.RouteViewCounter.Bump(66) counters.RouteViewCounter.Bump(66)
err = routePanelLogsRegs(w,req,user)
case "/panel/logs/mod/":
counters.RouteViewCounter.Bump(67)
err = routePanelLogsMod(w,req,user) err = routePanelLogsMod(w,req,user)
case "/panel/debug/": case "/panel/debug/":
err = common.AdminOnly(w,req,user) err = common.AdminOnly(w,req,user)
@ -1303,10 +1309,10 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(67) counters.RouteViewCounter.Bump(68)
err = routePanelDebug(w,req,user) err = routePanelDebug(w,req,user)
default: default:
counters.RouteViewCounter.Bump(68) counters.RouteViewCounter.Bump(69)
err = routePanelDashboard(w,req,user) err = routePanelDashboard(w,req,user)
} }
if err != nil { if err != nil {
@ -1321,7 +1327,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(69) counters.RouteViewCounter.Bump(70)
err = routes.AccountEditCritical(w,req,user) err = routes.AccountEditCritical(w,req,user)
case "/user/edit/critical/submit/": case "/user/edit/critical/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1336,7 +1342,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(70) counters.RouteViewCounter.Bump(71)
err = routes.AccountEditCriticalSubmit(w,req,user) err = routes.AccountEditCriticalSubmit(w,req,user)
case "/user/edit/avatar/": case "/user/edit/avatar/":
err = common.MemberOnly(w,req,user) err = common.MemberOnly(w,req,user)
@ -1345,7 +1351,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(71) counters.RouteViewCounter.Bump(72)
err = routes.AccountEditAvatar(w,req,user) err = routes.AccountEditAvatar(w,req,user)
case "/user/edit/avatar/submit/": case "/user/edit/avatar/submit/":
err = common.MemberOnly(w,req,user) err = common.MemberOnly(w,req,user)
@ -1365,7 +1371,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(72) counters.RouteViewCounter.Bump(73)
err = routes.AccountEditAvatarSubmit(w,req,user) err = routes.AccountEditAvatarSubmit(w,req,user)
case "/user/edit/username/": case "/user/edit/username/":
err = common.MemberOnly(w,req,user) err = common.MemberOnly(w,req,user)
@ -1374,7 +1380,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(73) counters.RouteViewCounter.Bump(74)
err = routes.AccountEditUsername(w,req,user) err = routes.AccountEditUsername(w,req,user)
case "/user/edit/username/submit/": case "/user/edit/username/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1389,7 +1395,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(74) counters.RouteViewCounter.Bump(75)
err = routes.AccountEditUsernameSubmit(w,req,user) err = routes.AccountEditUsernameSubmit(w,req,user)
case "/user/edit/email/": case "/user/edit/email/":
err = common.MemberOnly(w,req,user) err = common.MemberOnly(w,req,user)
@ -1398,7 +1404,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(75) counters.RouteViewCounter.Bump(76)
err = routeAccountEditEmail(w,req,user) err = routeAccountEditEmail(w,req,user)
case "/user/edit/token/": case "/user/edit/token/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1413,11 +1419,11 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(76) counters.RouteViewCounter.Bump(77)
err = routeAccountEditEmailTokenSubmit(w,req,user,extraData) err = routeAccountEditEmailTokenSubmit(w,req,user,extraData)
default: default:
req.URL.Path += extraData req.URL.Path += extraData
counters.RouteViewCounter.Bump(77) counters.RouteViewCounter.Bump(78)
err = routes.ViewProfile(w,req,user) err = routes.ViewProfile(w,req,user)
} }
if err != nil { if err != nil {
@ -1438,7 +1444,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(78) counters.RouteViewCounter.Bump(79)
err = routes.BanUserSubmit(w,req,user,extraData) err = routes.BanUserSubmit(w,req,user,extraData)
case "/users/unban/": case "/users/unban/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1453,7 +1459,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(79) counters.RouteViewCounter.Bump(80)
err = routes.UnbanUser(w,req,user,extraData) err = routes.UnbanUser(w,req,user,extraData)
case "/users/activate/": case "/users/activate/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1468,7 +1474,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(80) counters.RouteViewCounter.Bump(81)
err = routes.ActivateUser(w,req,user,extraData) err = routes.ActivateUser(w,req,user,extraData)
case "/users/ips/": case "/users/ips/":
err = common.MemberOnly(w,req,user) err = common.MemberOnly(w,req,user)
@ -1477,7 +1483,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(81) counters.RouteViewCounter.Bump(82)
err = routes.IPSearch(w,req,user) err = routes.IPSearch(w,req,user)
} }
if err != nil { if err != nil {
@ -1503,7 +1509,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(82) counters.RouteViewCounter.Bump(83)
err = routes.CreateTopicSubmit(w,req,user) err = routes.CreateTopicSubmit(w,req,user)
case "/topic/edit/submit/": case "/topic/edit/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1518,7 +1524,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(83) counters.RouteViewCounter.Bump(84)
err = routes.EditTopicSubmit(w,req,user,extraData) err = routes.EditTopicSubmit(w,req,user,extraData)
case "/topic/delete/submit/": case "/topic/delete/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1534,7 +1540,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
} }
req.URL.Path += extraData req.URL.Path += extraData
counters.RouteViewCounter.Bump(84) counters.RouteViewCounter.Bump(85)
err = routes.DeleteTopicSubmit(w,req,user) err = routes.DeleteTopicSubmit(w,req,user)
case "/topic/stick/submit/": case "/topic/stick/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1549,7 +1555,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(85) counters.RouteViewCounter.Bump(86)
err = routes.StickTopicSubmit(w,req,user,extraData) err = routes.StickTopicSubmit(w,req,user,extraData)
case "/topic/unstick/submit/": case "/topic/unstick/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1564,7 +1570,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(86) counters.RouteViewCounter.Bump(87)
err = routes.UnstickTopicSubmit(w,req,user,extraData) err = routes.UnstickTopicSubmit(w,req,user,extraData)
case "/topic/lock/submit/": case "/topic/lock/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1580,7 +1586,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
} }
req.URL.Path += extraData req.URL.Path += extraData
counters.RouteViewCounter.Bump(87) counters.RouteViewCounter.Bump(88)
err = routes.LockTopicSubmit(w,req,user) err = routes.LockTopicSubmit(w,req,user)
case "/topic/unlock/submit/": case "/topic/unlock/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1595,7 +1601,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(88) counters.RouteViewCounter.Bump(89)
err = routes.UnlockTopicSubmit(w,req,user,extraData) err = routes.UnlockTopicSubmit(w,req,user,extraData)
case "/topic/move/submit/": case "/topic/move/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1610,7 +1616,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(89) counters.RouteViewCounter.Bump(90)
err = routes.MoveTopicSubmit(w,req,user,extraData) err = routes.MoveTopicSubmit(w,req,user,extraData)
case "/topic/like/submit/": case "/topic/like/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1631,10 +1637,10 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(90) counters.RouteViewCounter.Bump(91)
err = routes.LikeTopicSubmit(w,req,user,extraData) err = routes.LikeTopicSubmit(w,req,user,extraData)
default: default:
counters.RouteViewCounter.Bump(91) counters.RouteViewCounter.Bump(92)
err = routes.ViewTopic(w,req,user, extraData) err = routes.ViewTopic(w,req,user, extraData)
} }
if err != nil { if err != nil {
@ -1660,7 +1666,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(92) counters.RouteViewCounter.Bump(93)
err = routes.CreateReplySubmit(w,req,user) err = routes.CreateReplySubmit(w,req,user)
case "/reply/edit/submit/": case "/reply/edit/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1675,7 +1681,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(93) counters.RouteViewCounter.Bump(94)
err = routes.ReplyEditSubmit(w,req,user,extraData) err = routes.ReplyEditSubmit(w,req,user,extraData)
case "/reply/delete/submit/": case "/reply/delete/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1690,7 +1696,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(94) counters.RouteViewCounter.Bump(95)
err = routes.ReplyDeleteSubmit(w,req,user,extraData) err = routes.ReplyDeleteSubmit(w,req,user,extraData)
case "/reply/like/submit/": case "/reply/like/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1711,7 +1717,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(95) counters.RouteViewCounter.Bump(96)
err = routes.ReplyLikeSubmit(w,req,user,extraData) err = routes.ReplyLikeSubmit(w,req,user,extraData)
} }
if err != nil { if err != nil {
@ -1732,7 +1738,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(96) counters.RouteViewCounter.Bump(97)
err = routes.ProfileReplyCreateSubmit(w,req,user) err = routes.ProfileReplyCreateSubmit(w,req,user)
case "/profile/reply/edit/submit/": case "/profile/reply/edit/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1747,7 +1753,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(97) counters.RouteViewCounter.Bump(98)
err = routes.ProfileReplyEditSubmit(w,req,user,extraData) err = routes.ProfileReplyEditSubmit(w,req,user,extraData)
case "/profile/reply/delete/submit/": case "/profile/reply/delete/submit/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1762,7 +1768,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(98) counters.RouteViewCounter.Bump(99)
err = routes.ProfileReplyDeleteSubmit(w,req,user,extraData) err = routes.ProfileReplyDeleteSubmit(w,req,user,extraData)
} }
if err != nil { if err != nil {
@ -1783,10 +1789,10 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(99) counters.RouteViewCounter.Bump(100)
err = routes.PollVote(w,req,user,extraData) err = routes.PollVote(w,req,user,extraData)
case "/poll/results/": case "/poll/results/":
counters.RouteViewCounter.Bump(100) counters.RouteViewCounter.Bump(101)
err = routes.PollResults(w,req,user,extraData) err = routes.PollResults(w,req,user,extraData)
} }
if err != nil { if err != nil {
@ -1795,10 +1801,10 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
case "/accounts": case "/accounts":
switch(req.URL.Path) { switch(req.URL.Path) {
case "/accounts/login/": case "/accounts/login/":
counters.RouteViewCounter.Bump(101) counters.RouteViewCounter.Bump(102)
err = routes.AccountLogin(w,req,user) err = routes.AccountLogin(w,req,user)
case "/accounts/create/": case "/accounts/create/":
counters.RouteViewCounter.Bump(102) counters.RouteViewCounter.Bump(103)
err = routes.AccountRegister(w,req,user) err = routes.AccountRegister(w,req,user)
case "/accounts/logout/": case "/accounts/logout/":
err = common.NoSessionMismatch(w,req,user) err = common.NoSessionMismatch(w,req,user)
@ -1813,7 +1819,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(103) counters.RouteViewCounter.Bump(104)
err = routes.AccountLogout(w,req,user) err = routes.AccountLogout(w,req,user)
case "/accounts/login/submit/": case "/accounts/login/submit/":
err = common.ParseForm(w,req,user) err = common.ParseForm(w,req,user)
@ -1822,7 +1828,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(104) counters.RouteViewCounter.Bump(105)
err = routes.AccountLoginSubmit(w,req,user) err = routes.AccountLoginSubmit(w,req,user)
case "/accounts/create/submit/": case "/accounts/create/submit/":
err = common.ParseForm(w,req,user) err = common.ParseForm(w,req,user)
@ -1831,7 +1837,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
return return
} }
counters.RouteViewCounter.Bump(105) counters.RouteViewCounter.Bump(106)
err = routes.AccountRegisterSubmit(w,req,user) err = routes.AccountRegisterSubmit(w,req,user)
} }
if err != nil { if err != nil {
@ -1848,7 +1854,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
common.NotFound(w,req,nil) common.NotFound(w,req,nil)
return return
} }
counters.RouteViewCounter.Bump(107) counters.RouteViewCounter.Bump(108)
req.URL.Path += extraData req.URL.Path += extraData
// TODO: Find a way to propagate errors up from this? // TODO: Find a way to propagate errors up from this?
router.UploadHandler(w,req) // TODO: Count these views router.UploadHandler(w,req) // TODO: Count these views
@ -1857,14 +1863,14 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
// TODO: Add support for favicons and robots.txt files // TODO: Add support for favicons and robots.txt files
switch(extraData) { switch(extraData) {
case "robots.txt": case "robots.txt":
counters.RouteViewCounter.Bump(109) counters.RouteViewCounter.Bump(110)
err = routes.RobotsTxt(w,req) err = routes.RobotsTxt(w,req)
if err != nil { if err != nil {
router.handleError(err,w,req,user) router.handleError(err,w,req,user)
} }
return return
/*case "sitemap.xml": /*case "sitemap.xml":
counters.RouteViewCounter.Bump(110) counters.RouteViewCounter.Bump(111)
err = routes.SitemapXml(w,req) err = routes.SitemapXml(w,req)
if err != nil { if err != nil {
router.handleError(err,w,req,user) router.handleError(err,w,req,user)
@ -1893,7 +1899,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
router.RUnlock() router.RUnlock()
if ok { if ok {
counters.RouteViewCounter.Bump(106) // TODO: Be more specific about *which* dynamic route it is counters.RouteViewCounter.Bump(107) // TODO: Be more specific about *which* dynamic route it is
req.URL.Path += extraData req.URL.Path += extraData
err = handle(w,req,user) err = handle(w,req,user)
if err != nil { if err != nil {
@ -1908,7 +1914,7 @@ func (router *GenRouter) ServeHTTP(w http.ResponseWriter, req *http.Request) {
} else { } else {
router.DumpRequest(req,"Bad Route") router.DumpRequest(req,"Bad Route")
} }
counters.RouteViewCounter.Bump(111) counters.RouteViewCounter.Bump(112)
common.NotFound(w,req,nil) common.NotFound(w,req,nil)
} }
} }

View File

@ -96,8 +96,9 @@
"panel_themes_menus":"Menu Manager", "panel_themes_menus":"Menu Manager",
"panel_themes_menus_edit":"Menu Editor", "panel_themes_menus_edit":"Menu Editor",
"panel_backups":"Backups", "panel_backups":"Backups",
"panel_mod_logs":"Moderation Logs", "panel_registration_logs":"Registration Logs",
"panel_admin_logs":"Administration Logs", "panel_mod_logs":"Mod Action Logs",
"panel_admin_logs":"Admin Action Logs",
"panel_debug":"Debug" "panel_debug":"Debug"
}, },
@ -547,8 +548,9 @@
"panel_menu_statistics_referrers":"Referrers", "panel_menu_statistics_referrers":"Referrers",
"panel_menu_reports":"Reports", "panel_menu_reports":"Reports",
"panel_menu_logs":"Logs", "panel_menu_logs":"Logs",
"panel_menu_logs_moderators":"Moderators", "panel_menu_logs_registrations":"Registrations",
"panel_menu_logs_administrators":"Administrators", "panel_menu_logs_moderators":"Mod Actions",
"panel_menu_logs_administrators":"Admin Actions",
"panel_menu_system":"System", "panel_menu_system":"System",
"panel_menu_plugins":"Plugins", "panel_menu_plugins":"Plugins",
"panel_menu_backups":"Backups", "panel_menu_backups":"Backups",
@ -680,10 +682,12 @@
"panel_statistics_operating_systems_no_operating_systems":"No operating systems could be found in the selected time range", "panel_statistics_operating_systems_no_operating_systems":"No operating systems could be found in the selected time range",
"panel_logs_menu_head":"Logs", "panel_logs_menu_head":"Logs",
"panel_logs_menu_moderation":"Moderation Logs", "panel_logs_registration_head":"Registrations",
"panel_logs_menu_administration":"Administration Logs", "panel_logs_registration_attempt":"Attempt",
"panel_logs_moderation_head":"Moderation Logs", "panel_logs_registration_email":"email",
"panel_logs_administration_head":"Administration Logs", "panel_logs_registration_reason":"reason",
"panel_logs_moderation_head":"Mod Action Logs",
"panel_logs_administration_head":"Admin Action Logs",
"panel_plugins_head":"Plugins", "panel_plugins_head":"Plugins",
"panel_plugins_author_prefix":"Author: ", "panel_plugins_author_prefix":"Author: ",

View File

@ -107,11 +107,15 @@ func afterDBInit() (err error) {
} }
log.Print("Initialising the stores") log.Print("Initialising the stores")
common.ModLogs, err = common.NewModLogStore() common.RegLogs, err = common.NewRegLogStore(acc)
if err != nil { if err != nil {
return err return err
} }
common.AdminLogs, err = common.NewAdminLogStore() common.ModLogs, err = common.NewModLogStore(acc)
if err != nil {
return err
}
common.AdminLogs, err = common.NewAdminLogStore(acc)
if err != nil { if err != nil {
return err return err
} }

View File

@ -42,13 +42,13 @@ func routeReportSubmit(w http.ResponseWriter, r *http.Request, user common.User,
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }
err = stmts.getUserName.QueryRow(userReply.ParentID).Scan(&title) profileOwner, err := common.Users.Get(userReply.ParentID)
if err == ErrNoRows { if err == ErrNoRows {
return common.LocalError("We weren't able to find the profile the reported post is supposed to be on", w, r, user) return common.LocalError("We weren't able to find the profile the reported post is supposed to be on", w, r, user)
} else if err != nil { } else if err != nil {
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }
title = "Profile: " + title title = "Profile: " + profileOwner.Name
content = userReply.Content + "\n\nOriginal Post: @" + strconv.Itoa(userReply.ParentID) content = userReply.Content + "\n\nOriginal Post: @" + strconv.Itoa(userReply.ParentID)
} else if itemType == "topic" { } else if itemType == "topic" {
err = stmts.getTopicBasic.QueryRow(itemID).Scan(&title, &content) err = stmts.getTopicBasic.QueryRow(itemID).Scan(&title, &content)

View File

@ -2701,6 +2701,31 @@ func routePanelBackups(w http.ResponseWriter, r *http.Request, user common.User,
return panelRenderTemplate("panel_backups", w, r, user, &pi) return panelRenderTemplate("panel_backups", w, r, user, &pi)
} }
func routePanelLogsRegs(w http.ResponseWriter, r *http.Request, user common.User) common.RouteError {
headerVars, stats, ferr := common.PanelUserCheck(w, r, &user)
if ferr != nil {
return ferr
}
logCount := common.RegLogs.GlobalCount()
page, _ := strconv.Atoi(r.FormValue("page"))
perPage := 10
offset, page, lastPage := common.PageOffset(logCount, page, perPage)
logs, err := common.RegLogs.GetOffset(offset, perPage)
if err != nil {
return common.InternalError(err, w, r)
}
var llist = make([]common.PageRegLogItem, len(logs))
for index, log := range logs {
llist[index] = common.PageRegLogItem{log, strings.Replace(strings.TrimSuffix(log.FailureReason,"|"), "|", " | ", -1)}
}
pageList := common.Paginate(logCount, perPage, 5)
pi := common.PanelRegLogsPage{common.GetTitlePhrase("panel_registration_logs"), user, headerVars, stats, "logs", llist, common.Paginator{pageList, page, lastPage}}
return panelRenderTemplate("panel_reglogs", w, r, user, &pi)
}
// TODO: Log errors when something really screwy is going on? // TODO: Log errors when something really screwy is going on?
func handleUnknownUser(user *common.User, err error) *common.User { func handleUnknownUser(user *common.User, err error) *common.User {
if err != nil { if err != nil {
@ -2720,7 +2745,6 @@ func topicElementTypeAction(action string, elementType string, elementID int, ac
if action == "delete" { if action == "delete" {
return fmt.Sprintf("Topic #%d was deleted by <a href='%s'>%s</a>", elementID, actor.Link, actor.Name) return fmt.Sprintf("Topic #%d was deleted by <a href='%s'>%s</a>", elementID, actor.Link, actor.Name)
} }
switch action { switch action {
case "lock": case "lock":
out = "<a href='%s'>%s</a> was locked by <a href='%s'>%s</a>" out = "<a href='%s'>%s</a> was locked by <a href='%s'>%s</a>"
@ -2778,32 +2802,19 @@ func routePanelLogsMod(w http.ResponseWriter, r *http.Request, user common.User)
perPage := 10 perPage := 10
offset, page, lastPage := common.PageOffset(logCount, page, perPage) offset, page, lastPage := common.PageOffset(logCount, page, perPage)
rows, err := stmts.getModlogsOffset.Query(offset, perPage) logs, err := common.ModLogs.GetOffset(offset, perPage)
if err != nil { if err != nil {
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }
defer rows.Close() var llist = make([]common.PageLogItem, len(logs))
for index, log := range logs {
var logs []common.LogItem actor := handleUnknownUser(common.Users.Get(log.ActorID))
var action, elementType, ipaddress, doneAt string action := modlogsElementType(log.Action, log.ElementType, log.ElementID, actor)
var elementID, actorID int llist[index] = common.PageLogItem{Action: template.HTML(action), IPAddress: log.IPAddress, DoneAt: log.DoneAt}
for rows.Next() {
err := rows.Scan(&action, &elementID, &elementType, &ipaddress, &actorID, &doneAt)
if err != nil {
return common.InternalError(err, w, r)
}
actor := handleUnknownUser(common.Users.Get(actorID))
action = modlogsElementType(action, elementType, elementID, actor)
logs = append(logs, common.LogItem{Action: template.HTML(action), IPAddress: ipaddress, DoneAt: doneAt})
}
err = rows.Err()
if err != nil {
return common.InternalError(err, w, r)
} }
pageList := common.Paginate(logCount, perPage, 5) pageList := common.Paginate(logCount, perPage, 5)
pi := common.PanelLogsPage{common.GetTitlePhrase("panel_mod_logs"), user, headerVars, stats, "logs", logs, common.Paginator{pageList, page, lastPage}} pi := common.PanelLogsPage{common.GetTitlePhrase("panel_mod_logs"), user, headerVars, stats, "logs", llist, common.Paginator{pageList, page, lastPage}}
return panelRenderTemplate("panel_modlogs", w, r, user, &pi) return panelRenderTemplate("panel_modlogs", w, r, user, &pi)
} }
@ -2818,32 +2829,19 @@ func routePanelLogsAdmin(w http.ResponseWriter, r *http.Request, user common.Use
perPage := 10 perPage := 10
offset, page, lastPage := common.PageOffset(logCount, page, perPage) offset, page, lastPage := common.PageOffset(logCount, page, perPage)
rows, err := stmts.getAdminlogsOffset.Query(offset, perPage) logs, err := common.AdminLogs.GetOffset(offset, perPage)
if err != nil { if err != nil {
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }
defer rows.Close() var llist = make([]common.PageLogItem, len(logs))
for index, log := range logs {
var logs []common.LogItem actor := handleUnknownUser(common.Users.Get(log.ActorID))
var action, elementType, ipaddress, doneAt string action := modlogsElementType(log.Action, log.ElementType, log.ElementID, actor)
var elementID, actorID int llist[index] = common.PageLogItem{Action: template.HTML(action), IPAddress: log.IPAddress, DoneAt: log.DoneAt}
for rows.Next() {
err := rows.Scan(&action, &elementID, &elementType, &ipaddress, &actorID, &doneAt)
if err != nil {
return common.InternalError(err, w, r)
}
actor := handleUnknownUser(common.Users.Get(actorID))
action = modlogsElementType(action, elementType, elementID, actor)
logs = append(logs, common.LogItem{Action: template.HTML(action), IPAddress: ipaddress, DoneAt: doneAt})
}
err = rows.Err()
if err != nil {
return common.InternalError(err, w, r)
} }
pageList := common.Paginate(logCount, perPage, 5) pageList := common.Paginate(logCount, perPage, 5)
pi := common.PanelLogsPage{common.GetTitlePhrase("panel_admin_logs"), user, headerVars, stats, "logs", logs, common.Paginator{pageList, page, lastPage}} pi := common.PanelLogsPage{common.GetTitlePhrase("panel_admin_logs"), user, headerVars, stats, "logs", llist, common.Paginator{pageList, page, lastPage}}
return panelRenderTemplate("panel_adminlogs", w, r, user, &pi) return panelRenderTemplate("panel_adminlogs", w, r, user, &pi)
} }

View File

@ -2,7 +2,6 @@ package main
import ( import (
"bufio" "bufio"
"database/sql"
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
@ -17,6 +16,12 @@ import (
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
) )
var patches = make(map[int]func(*bufio.Scanner) error)
func addPatch(index int, handle func(*bufio.Scanner) error) {
patches[index] = handle
}
func main() { func main() {
scanner := bufio.NewScanner(os.Stdin) scanner := bufio.NewScanner(os.Stdin)
@ -92,55 +97,21 @@ func patcher(scanner *bufio.Scanner) error {
} }
fmt.Println("Applying the patches") fmt.Println("Applying the patches")
if dbVersion < 2 { var pslice = make([]func(*bufio.Scanner) error, len(patches))
if dbVersion < 1 { for i := 0; i < len(patches); i++ {
err := patch0(scanner) pslice[i] = patches[i]
}
// Run the queued up patches
for index, patch := range pslice {
if dbVersion > index {
continue
}
err := patch(scanner)
if err != nil { if err != nil {
return err return err
} }
} }
return patch1(scanner)
} return nil
return patch2(scanner)
}
func execStmt(stmt *sql.Stmt, err error) error {
if err != nil {
return err
}
_, err = stmt.Exec()
return err
}
/*func eachUserQuick(handle func(int)) error {
stmt, err := qgen.Builder.Select("users").Orderby("uid desc").Limit(1).Prepare()
if err != nil {
return err
}
var topID int
err := stmt.QueryRow(topID)
if err != nil {
return err
}
for i := 1; i <= topID; i++ {
err = handle(i)
if err != nil {
return err
}
}
}*/
func eachUser(handle func(int) error) error {
acc := qgen.Builder.Accumulator()
err := acc.Select("users").Each(func(rows *sql.Rows) error {
var uid int
err := rows.Scan(&uid)
if err != nil {
return err
}
return handle(uid)
})
return err
} }

View File

@ -7,6 +7,13 @@ import (
"../query_gen/lib" "../query_gen/lib"
) )
func init() {
addPatch(0, patch0)
addPatch(1, patch1)
addPatch(2, patch2)
addPatch(3, patch3)
}
func patch0(scanner *bufio.Scanner) (err error) { func patch0(scanner *bufio.Scanner) (err error) {
err = execStmt(qgen.Builder.DropTable("menus")) err = execStmt(qgen.Builder.DropTable("menus"))
if err != nil { if err != nil {
@ -206,3 +213,25 @@ func patch2(scanner *bufio.Scanner) error {
return nil return nil
} }
func patch3(scanner *bufio.Scanner) error {
err := execStmt(qgen.Builder.CreateTable("registration_logs", "", "",
[]qgen.DBTableColumn{
qgen.DBTableColumn{"rlid", "int", 0, false, true, ""},
qgen.DBTableColumn{"username", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"email", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"failureReason", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"success", "bool", 0, false, false, "0"}, // Did this attempt succeed?
qgen.DBTableColumn{"ipaddress", "varchar", 200, false, false, ""},
qgen.DBTableColumn{"doneAt", "createdAt", 0, false, false, ""},
},
[]qgen.DBTableKey{
qgen.DBTableKey{"rlid", "primary"},
},
))
if err != nil {
return err
}
return nil
}

45
patcher/utils.go Normal file
View File

@ -0,0 +1,45 @@
package main
import "database/sql"
import "../query_gen/lib"
func execStmt(stmt *sql.Stmt, err error) error {
if err != nil {
return err
}
_, err = stmt.Exec()
return err
}
/*func eachUserQuick(handle func(int)) error {
stmt, err := qgen.Builder.Select("users").Orderby("uid desc").Limit(1).Prepare()
if err != nil {
return err
}
var topID int
err := stmt.QueryRow(topID)
if err != nil {
return err
}
for i := 1; i <= topID; i++ {
err = handle(i)
if err != nil {
return err
}
}
}*/
func eachUser(handle func(int) error) error {
acc := qgen.Builder.Accumulator()
err := acc.Select("users").Each(func(rows *sql.Rows) error {
var uid int
err := rows.Scan(&uid)
if err != nil {
return err
}
return handle(uid)
})
return err
}

View File

@ -265,19 +265,9 @@ func writeSelects(adapter qgen.Adapter) error {
build.Select("isThemeDefault").Table("themes").Columns("default").Where("uname = ?").Parse() build.Select("isThemeDefault").Table("themes").Columns("default").Where("uname = ?").Parse()
build.Select("getModlogs").Table("moderation_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Parse()
build.Select("getModlogsOffset").Table("moderation_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Orderby("doneAt DESC").Limit("?,?").Parse()
build.Select("getAdminlogsOffset").Table("administration_logs").Columns("action, elementID, elementType, ipaddress, actorID, doneAt").Orderby("doneAt DESC").Limit("?,?").Parse()
build.Select("getTopicFID").Table("topics").Columns("parentID").Where("tid = ?").Parse()
build.Select("getUserName").Table("users").Columns("name").Where("uid = ?").Parse()
build.Select("getEmailsByUser").Table("emails").Columns("email, validated, token").Where("uid = ?").Parse() build.Select("getEmailsByUser").Table("emails").Columns("email, validated, token").Where("uid = ?").Parse()
build.Select("getTopicBasic").Table("topics").Columns("title, content").Where("tid = ?").Parse() build.Select("getTopicBasic").Table("topics").Columns("title, content").Where("tid = ?").Parse() // TODO: Comment this out and see if anything breaks
build.Select("forumEntryExists").Table("forums").Columns("fid").Where("name = ''").Orderby("fid ASC").Limit("0,1").Parse() build.Select("forumEntryExists").Table("forums").Columns("fid").Where("name = ''").Orderby("fid ASC").Limit("0,1").Parse()
@ -315,8 +305,6 @@ func writeInserts(adapter qgen.Adapter) error {
func writeUpdates(adapter qgen.Adapter) error { func writeUpdates(adapter qgen.Adapter) error {
build := adapter.Builder() build := adapter.Builder()
build.Update("editReply").Table("replies").Set("content = ?, parsed_content = ?").Where("rid = ?").Parse()
build.Update("updatePlugin").Table("plugins").Set("active = ?").Where("uname = ?").Parse() build.Update("updatePlugin").Table("plugins").Set("active = ?").Where("uname = ?").Parse()
build.Update("updatePluginInstall").Table("plugins").Set("installed = ?").Where("uname = ?").Parse() build.Update("updatePluginInstall").Table("plugins").Set("installed = ?").Where("uname = ?").Parse()

View File

@ -411,18 +411,20 @@ func createTables(adapter qgen.Adapter) error {
}, },
) )
/*
qgen.Install.CreateTable("registration_logs", "", "", qgen.Install.CreateTable("registration_logs", "", "",
[]qgen.DBTableColumn{ []qgen.DBTableColumn{
qgen.DBTableColumn{"rlid", "int", 0, false, true, ""},
qgen.DBTableColumn{"username", "varchar", 100, false, false, ""}, qgen.DBTableColumn{"username", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"email", "varchar", 100, false, false, ""}, qgen.DBTableColumn{"email", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"failureReason", "varchar", 100, false, false, ""}, qgen.DBTableColumn{"failureReason", "varchar", 100, false, false, ""},
qgen.DBTableColumn{"success", "int", 0, false, false, "0"}, // Did this attempt succeed? qgen.DBTableColumn{"success", "bool", 0, false, false, "0"}, // Did this attempt succeed?
qgen.DBTableColumn{"ipaddress", "varchar", 200, false, false, ""},
qgen.DBTableColumn{"doneAt", "createdAt", 0, false, false, ""}, qgen.DBTableColumn{"doneAt", "createdAt", 0, false, false, ""},
}, },
[]qgen.DBTableKey{}, []qgen.DBTableKey{
qgen.DBTableKey{"rlid", "primary"},
},
) )
*/
qgen.Install.CreateTable("moderation_logs", "", "", qgen.Install.CreateTable("moderation_logs", "", "",
[]qgen.DBTableColumn{ []qgen.DBTableColumn{

View File

@ -194,6 +194,7 @@ func buildPanelRoutes() {
Action("routePanelGroupsCreateSubmit", "/panel/groups/create/"), Action("routePanelGroupsCreateSubmit", "/panel/groups/create/"),
View("routePanelBackups", "/panel/backups/", "extraData").Before("SuperAdminOnly"), // TODO: Test View("routePanelBackups", "/panel/backups/", "extraData").Before("SuperAdminOnly"), // TODO: Test
View("routePanelLogsRegs", "/panel/logs/regs/"),
View("routePanelLogsMod", "/panel/logs/mod/"), View("routePanelLogsMod", "/panel/logs/mod/"),
View("routePanelDebug", "/panel/debug/").Before("AdminOnly"), View("routePanelDebug", "/panel/debug/").Before("AdminOnly"),
) )

View File

@ -108,28 +108,47 @@ func AccountRegister(w http.ResponseWriter, r *http.Request, user common.User) c
func AccountRegisterSubmit(w http.ResponseWriter, r *http.Request, user common.User) common.RouteError { func AccountRegisterSubmit(w http.ResponseWriter, r *http.Request, user common.User) common.RouteError {
headerLite, _ := common.SimpleUserCheck(w, r, &user) headerLite, _ := common.SimpleUserCheck(w, r, &user)
username := html.EscapeString(strings.Replace(r.PostFormValue("username"), "\n", "", -1)) // TODO: Should we push multiple validation errors to the user instead of just one?
if username == "" { var regSuccess = true
return common.LocalError("You didn't put in a username.", w, r, user) var regErrMsg = ""
var regErrReason = ""
var regError = func(userMsg string, reason string) {
regSuccess = false
if regErrMsg == "" {
regErrMsg = userMsg
} }
regErrReason += reason + "|"
}
username := html.EscapeString(strings.Replace(r.PostFormValue("username"), "\n", "", -1))
email := html.EscapeString(strings.Replace(r.PostFormValue("email"), "\n", "", -1)) email := html.EscapeString(strings.Replace(r.PostFormValue("email"), "\n", "", -1))
if username == "" {
regError("You didn't put in a username.", "no-username")
}
if email == "" { if email == "" {
return common.LocalError("You didn't put in an email.", w, r, user) regError("You didn't put in an email.", "no-email")
} }
password := r.PostFormValue("password") password := r.PostFormValue("password")
// ? Move this into Create()? What if we want to programatically set weak passwords for tests? // ? Move this into Create()? What if we want to programatically set weak passwords for tests?
err := common.WeakPassword(password, username, email) err := common.WeakPassword(password, username, email)
if err != nil { if err != nil {
return common.LocalError(err.Error(), w, r, user) regError(err.Error(), "weak-password")
} else {
// Do the two inputted passwords match..?
confirmPassword := r.PostFormValue("confirm_password")
if password != confirmPassword {
regError("The two passwords don't match.", "password-mismatch")
}
} }
confirmPassword := r.PostFormValue("confirm_password") regLog := common.RegLogItem{Username: username, Email: email, FailureReason: regErrReason, Success: regSuccess, IPAddress: user.LastIP}
common.DebugLog("Registration Attempt! Username: " + username) // TODO: Add more controls over what is logged when? _, err = regLog.Create()
if err != nil {
// Do the two inputted passwords match..? return common.InternalError(err, w, r)
if password != confirmPassword { }
return common.LocalError("The two passwords don't match.", w, r, user) if !regSuccess {
return common.LocalError(regErrMsg, w, r, user)
} }
var active bool var active bool
@ -142,12 +161,30 @@ func AccountRegisterSubmit(w http.ResponseWriter, r *http.Request, user common.U
group = common.Config.ActivationGroup group = common.Config.ActivationGroup
} }
// TODO: Do the registration attempt logging a little less messily (without having to amend the result after the insert)
uid, err := common.Users.Create(username, password, email, group, active) uid, err := common.Users.Create(username, password, email, group, active)
if err != nil {
regLog.Success = false
if err == common.ErrAccountExists { if err == common.ErrAccountExists {
regLog.FailureReason += "username-exists"
err = regLog.Commit()
if err != nil {
return common.InternalError(err, w, r)
}
return common.LocalError("This username isn't available. Try another.", w, r, user) return common.LocalError("This username isn't available. Try another.", w, r, user)
} else if err == common.ErrLongUsername { } else if err == common.ErrLongUsername {
regLog.FailureReason += "username-too-long"
err = regLog.Commit()
if err != nil {
return common.InternalError(err, w, r)
}
return common.LocalError("The username is too long, max: "+strconv.Itoa(common.Config.MaxUsernameLength), w, r, user) return common.LocalError("The username is too long, max: "+strconv.Itoa(common.Config.MaxUsernameLength), w, r, user)
} else if err != nil { }
regLog.FailureReason += "internal-error"
err2 := regLog.Commit()
if err2 != nil {
return common.InternalError(err2, w, r)
}
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }
@ -161,7 +198,6 @@ func AccountRegisterSubmit(w http.ResponseWriter, r *http.Request, user common.U
// TODO: Add an EmailStore and move this there // TODO: Add an EmailStore and move this there
acc := qgen.Builder.Accumulator() acc := qgen.Builder.Accumulator()
_, err = acc.Insert("emails").Columns("email, uid, validated, token").Fields("?,?,?,?").Exec(email, uid, 0, token) _, err = acc.Insert("emails").Columns("email, uid, validated, token").Fields("?,?,?,?").Exec(email, uid, 0, token)
//_, err = stmts.addEmail.Exec(email, uid, 0, token)
if err != nil { if err != nil {
return common.InternalError(err, w, r) return common.InternalError(err, w, r)
} }

View File

@ -0,0 +1,10 @@
CREATE TABLE [registration_logs] (
[rlid] int not null IDENTITY,
[username] nvarchar (100) not null,
[email] nvarchar (100) not null,
[failureReason] nvarchar (100) not null,
[success] bool DEFAULT 0 not null,
[ipaddress] nvarchar (200) not null,
[doneAt] datetime not null,
primary key([rlid])
);

View File

@ -0,0 +1,10 @@
CREATE TABLE `registration_logs` (
`rlid` int not null AUTO_INCREMENT,
`username` varchar(100) not null,
`email` varchar(100) not null,
`failureReason` varchar(100) not null,
`success` bool DEFAULT 0 not null,
`ipaddress` varchar(200) not null,
`doneAt` datetime not null,
primary key(`rlid`)
);

View File

@ -0,0 +1,10 @@
CREATE TABLE `registration_logs` (
`rlid` serial not null,
`username` varchar (100) not null,
`email` varchar (100) not null,
`failureReason` varchar (100) not null,
`success` bool DEFAULT 0 not null,
`ipaddress` varchar (200) not null,
`doneAt` timestamp not null,
primary key(`rlid`)
);

View File

@ -1,5 +1,5 @@
{ {
"DBVersion":"3", "DBVersion":"4",
"DynamicFileVersion":"0", "DynamicFileVersion":"0",
"MinGoVersion":"1.10", "MinGoVersion":"1.10",
"MinVersion":"" "MinVersion":""

View File

@ -1,121 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
var error_tmpl_phrase_id int
// nolint
func init() {
common.Template_error_handle = Template_error
common.Ctemplates = append(common.Ctemplates,"error")
common.TmplPtrMap["error"] = &common.Template_error_handle
common.TmplPtrMap["o_error"] = Template_error
error_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"error_head",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_error(tmpl_error_vars common.Page, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(error_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_error_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_error_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_error_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_error_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_error_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_error_vars.Header.Scripts) != 0 {
for _, item := range tmpl_error_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_error_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_error_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_error_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_error_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_error_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_error_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_error_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_error_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_error_vars.Header)))
w.Write(header_frags[21])
if tmpl_error_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_error_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_error_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(error_frags[0])
w.Write(phrases[1])
w.Write(error_frags[1])
w.Write([]byte(tmpl_error_vars.Something.(string)))
w.Write(error_frags[2])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_error_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[2])
w.Write(footer_frags[2])
w.Write(phrases[3])
w.Write(footer_frags[3])
w.Write(phrases[4])
w.Write(footer_frags[4])
if len(tmpl_error_vars.Header.Themes) != 0 {
for _, item := range tmpl_error_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_error_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_error_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,370 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "strconv"
import "io"
import "./common"
var forum_tmpl_phrase_id int
// nolint
func init() {
common.Template_forum_handle = Template_forum
common.Ctemplates = append(common.Ctemplates,"forum")
common.TmplPtrMap["forum"] = &common.Template_forum_handle
common.TmplPtrMap["o_forum"] = Template_forum
forum_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"paginator_prev_page_aria",
"paginator_less_than",
"paginator_next_page_aria",
"paginator_greater_than",
"topic_list_create_topic_tooltip",
"topic_list_create_topic_aria",
"topic_list_moderate_tooltip",
"topic_list_moderate_aria",
"forum_locked_tooltip",
"forum_locked_aria",
"topic_list_what_to_do",
"topic_list_moderate_delete",
"topic_list_moderate_lock",
"topic_list_moderate_move",
"topic_list_moderate_run",
"quick_topic_aria",
"quick_topic_avatar_alt",
"quick_topic_avatar_tooltip",
"quick_topic_whatsup",
"quick_topic_content_placeholder",
"quick_topic_create_topic_button",
"quick_topic_add_poll_button",
"quick_topic_add_file_button",
"quick_topic_cancel_button",
"forum_list_aria",
"status_closed_tooltip",
"status_pinned_tooltip",
"forum_no_topics",
"forum_start_one",
"paginator_prev_page_aria",
"paginator_prev_page",
"paginator_next_page_aria",
"paginator_next_page",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_forum(tmpl_forum_vars common.ForumPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(forum_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_forum_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_forum_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_forum_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_forum_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_forum_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_forum_vars.Header.Scripts) != 0 {
for _, item := range tmpl_forum_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_forum_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_forum_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_forum_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_forum_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_forum_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_forum_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_forum_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_forum_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_forum_vars.Header)))
w.Write(header_frags[21])
if tmpl_forum_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_forum_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_forum_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
if tmpl_forum_vars.Page > 1 {
w.Write(forum_frags[0])
w.Write(phrases[1])
w.Write(forum_frags[1])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Forum.ID)))
w.Write(forum_frags[2])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page - 1)))
w.Write(forum_frags[3])
w.Write(phrases[2])
w.Write(forum_frags[4])
}
if tmpl_forum_vars.LastPage != tmpl_forum_vars.Page {
w.Write(forum_frags[5])
w.Write(phrases[3])
w.Write(forum_frags[6])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Forum.ID)))
w.Write(forum_frags[7])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page + 1)))
w.Write(forum_frags[8])
w.Write(phrases[4])
w.Write(forum_frags[9])
}
w.Write(forum_frags[10])
if tmpl_forum_vars.CurrentUser.ID != 0 {
w.Write(forum_frags[11])
}
w.Write(forum_frags[12])
w.Write([]byte(tmpl_forum_vars.Title))
w.Write(forum_frags[13])
if tmpl_forum_vars.CurrentUser.ID != 0 {
w.Write(forum_frags[14])
if tmpl_forum_vars.CurrentUser.Perms.CreateTopic {
w.Write(forum_frags[15])
w.Write(phrases[5])
w.Write(forum_frags[16])
w.Write(phrases[6])
w.Write(forum_frags[17])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Forum.ID)))
w.Write(forum_frags[18])
w.Write(forum_frags[19])
w.Write(phrases[7])
w.Write(forum_frags[20])
w.Write(phrases[8])
w.Write(forum_frags[21])
} else {
w.Write(forum_frags[22])
w.Write(phrases[9])
w.Write(forum_frags[23])
w.Write(phrases[10])
w.Write(forum_frags[24])
}
w.Write(forum_frags[25])
}
w.Write(forum_frags[26])
if tmpl_forum_vars.CurrentUser.ID != 0 {
w.Write(forum_frags[27])
w.Write(phrases[11])
w.Write(forum_frags[28])
w.Write(phrases[12])
w.Write(forum_frags[29])
w.Write(phrases[13])
w.Write(forum_frags[30])
w.Write(phrases[14])
w.Write(forum_frags[31])
w.Write(phrases[15])
w.Write(forum_frags[32])
if tmpl_forum_vars.CurrentUser.Perms.CreateTopic {
w.Write(forum_frags[33])
w.Write(phrases[16])
w.Write(forum_frags[34])
w.Write([]byte(tmpl_forum_vars.CurrentUser.Avatar))
w.Write(forum_frags[35])
w.Write(phrases[17])
w.Write(forum_frags[36])
w.Write(phrases[18])
w.Write(forum_frags[37])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Forum.ID)))
w.Write(forum_frags[38])
w.Write(phrases[19])
w.Write(forum_frags[39])
w.Write(phrases[20])
w.Write(forum_frags[40])
w.Write(phrases[21])
w.Write(forum_frags[41])
w.Write(phrases[22])
w.Write(forum_frags[42])
if tmpl_forum_vars.CurrentUser.Perms.UploadFiles {
w.Write(forum_frags[43])
w.Write(phrases[23])
w.Write(forum_frags[44])
}
w.Write(forum_frags[45])
w.Write(phrases[24])
w.Write(forum_frags[46])
}
}
w.Write(forum_frags[47])
w.Write(phrases[25])
w.Write(forum_frags[48])
if len(tmpl_forum_vars.ItemList) != 0 {
for _, item := range tmpl_forum_vars.ItemList {
w.Write(forum_frags[49])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(forum_frags[50])
if item.Sticky {
w.Write(forum_frags[51])
} else {
if item.IsClosed {
w.Write(forum_frags[52])
}
}
w.Write(forum_frags[53])
w.Write([]byte(item.Creator.Link))
w.Write(forum_frags[54])
w.Write([]byte(item.Creator.Avatar))
w.Write(forum_frags[55])
w.Write([]byte(item.Creator.Name))
w.Write(forum_frags[56])
w.Write([]byte(item.Creator.Name))
w.Write(forum_frags[57])
w.Write([]byte(item.Link))
w.Write(forum_frags[58])
w.Write([]byte(item.Title))
w.Write(forum_frags[59])
w.Write([]byte(item.Title))
w.Write(forum_frags[60])
w.Write([]byte(item.Creator.Link))
w.Write(forum_frags[61])
w.Write([]byte(item.Creator.Name))
w.Write(forum_frags[62])
w.Write([]byte(item.Creator.Name))
w.Write(forum_frags[63])
if item.IsClosed {
w.Write(forum_frags[64])
w.Write(phrases[26])
w.Write(forum_frags[65])
}
if item.Sticky {
w.Write(forum_frags[66])
w.Write(phrases[27])
w.Write(forum_frags[67])
}
w.Write(forum_frags[68])
w.Write([]byte(strconv.Itoa(item.PostCount)))
w.Write(forum_frags[69])
w.Write([]byte(strconv.Itoa(item.LikeCount)))
w.Write(forum_frags[70])
if item.Sticky {
w.Write(forum_frags[71])
} else {
if item.IsClosed {
w.Write(forum_frags[72])
}
}
w.Write(forum_frags[73])
w.Write([]byte(item.LastUser.Link))
w.Write(forum_frags[74])
w.Write([]byte(item.LastUser.Avatar))
w.Write(forum_frags[75])
w.Write([]byte(item.LastUser.Name))
w.Write(forum_frags[76])
w.Write([]byte(item.LastUser.Name))
w.Write(forum_frags[77])
w.Write([]byte(item.LastUser.Link))
w.Write(forum_frags[78])
w.Write([]byte(item.LastUser.Name))
w.Write(forum_frags[79])
w.Write([]byte(item.LastUser.Name))
w.Write(forum_frags[80])
w.Write([]byte(item.RelativeLastReplyAt))
w.Write(forum_frags[81])
}
} else {
w.Write(forum_frags[82])
w.Write(phrases[28])
if tmpl_forum_vars.CurrentUser.Perms.CreateTopic {
w.Write(forum_frags[83])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Forum.ID)))
w.Write(forum_frags[84])
w.Write(phrases[29])
w.Write(forum_frags[85])
}
w.Write(forum_frags[86])
}
w.Write(forum_frags[87])
if tmpl_forum_vars.LastPage > 1 {
w.Write(paginator_frags[0])
if tmpl_forum_vars.Page > 1 {
w.Write(paginator_frags[1])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page - 1)))
w.Write(paginator_frags[2])
w.Write(phrases[30])
w.Write(paginator_frags[3])
w.Write(phrases[31])
w.Write(paginator_frags[4])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page - 1)))
w.Write(paginator_frags[5])
}
if len(tmpl_forum_vars.PageList) != 0 {
for _, item := range tmpl_forum_vars.PageList {
w.Write(paginator_frags[6])
w.Write([]byte(strconv.Itoa(item)))
w.Write(paginator_frags[7])
w.Write([]byte(strconv.Itoa(item)))
w.Write(paginator_frags[8])
}
}
if tmpl_forum_vars.LastPage != tmpl_forum_vars.Page {
w.Write(paginator_frags[9])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page + 1)))
w.Write(paginator_frags[10])
w.Write([]byte(strconv.Itoa(tmpl_forum_vars.Page + 1)))
w.Write(paginator_frags[11])
w.Write(phrases[32])
w.Write(paginator_frags[12])
w.Write(phrases[33])
w.Write(paginator_frags[13])
}
w.Write(paginator_frags[14])
}
w.Write(forum_frags[88])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_forum_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[34])
w.Write(footer_frags[2])
w.Write(phrases[35])
w.Write(footer_frags[3])
w.Write(phrases[36])
w.Write(footer_frags[4])
if len(tmpl_forum_vars.Header.Themes) != 0 {
for _, item := range tmpl_forum_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_forum_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_forum_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,174 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "./common"
import "io"
var forums_tmpl_phrase_id int
// nolint
func init() {
common.Template_forums_handle = Template_forums
common.Ctemplates = append(common.Ctemplates,"forums")
common.TmplPtrMap["forums"] = &common.Template_forums_handle
common.TmplPtrMap["o_forums"] = Template_forums
forums_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"forums_head",
"forums_no_description",
"forums_none",
"forums_no_forums",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_forums(tmpl_forums_vars common.ForumsPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(forums_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_forums_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_forums_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_forums_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_forums_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_forums_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_forums_vars.Header.Scripts) != 0 {
for _, item := range tmpl_forums_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_forums_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_forums_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_forums_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_forums_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_forums_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_forums_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_forums_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_forums_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_forums_vars.Header)))
w.Write(header_frags[21])
if tmpl_forums_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_forums_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_forums_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(forums_frags[0])
w.Write(phrases[1])
w.Write(forums_frags[1])
if len(tmpl_forums_vars.ItemList) != 0 {
for _, item := range tmpl_forums_vars.ItemList {
w.Write(forums_frags[2])
if item.Desc != "" || item.LastTopic.Title != "" {
w.Write(forums_frags[3])
}
w.Write(forums_frags[4])
w.Write([]byte(item.Link))
w.Write(forums_frags[5])
w.Write([]byte(item.Name))
w.Write(forums_frags[6])
if item.Desc != "" {
w.Write(forums_frags[7])
w.Write([]byte(item.Desc))
w.Write(forums_frags[8])
} else {
w.Write(forums_frags[9])
w.Write(phrases[2])
w.Write(forums_frags[10])
}
w.Write(forums_frags[11])
if item.LastReplyer.Avatar != "" {
w.Write(forums_frags[12])
w.Write([]byte(item.LastReplyer.Avatar))
w.Write(forums_frags[13])
w.Write([]byte(item.LastReplyer.Name))
w.Write(forums_frags[14])
w.Write([]byte(item.LastReplyer.Name))
w.Write(forums_frags[15])
}
w.Write(forums_frags[16])
w.Write([]byte(item.LastTopic.Link))
w.Write(forums_frags[17])
if item.LastTopic.Title != "" {
w.Write([]byte(item.LastTopic.Title))
} else {
w.Write(phrases[3])
}
w.Write(forums_frags[18])
if item.LastTopicTime != "" {
w.Write(forums_frags[19])
w.Write([]byte(item.LastTopicTime))
w.Write(forums_frags[20])
}
w.Write(forums_frags[21])
}
} else {
w.Write(forums_frags[22])
w.Write(phrases[4])
w.Write(forums_frags[23])
}
w.Write(forums_frags[24])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_forums_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[5])
w.Write(footer_frags[2])
w.Write(phrases[6])
w.Write(footer_frags[3])
w.Write(phrases[7])
w.Write(footer_frags[4])
if len(tmpl_forums_vars.Header.Themes) != 0 {
for _, item := range tmpl_forums_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_forums_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_forums_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,133 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
import "./extend/guilds/lib"
import "strconv"
var guilds_guild_list_tmpl_phrase_id int
// nolint
func init() {
common.TmplPtrMap["o_guilds_guild_list"] = Template_guilds_guild_list
guilds_guild_list_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_guilds_guild_list(tmpl_guilds_guild_list_vars guilds.ListPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(guilds_guild_list_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_guilds_guild_list_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_guilds_guild_list_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_guilds_guild_list_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_guilds_guild_list_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_guilds_guild_list_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_guilds_guild_list_vars.Header.Scripts) != 0 {
for _, item := range tmpl_guilds_guild_list_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_guilds_guild_list_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_guilds_guild_list_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_guilds_guild_list_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_guilds_guild_list_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_guilds_guild_list_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_guilds_guild_list_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_guilds_guild_list_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_guilds_guild_list_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_guilds_guild_list_vars.Header)))
w.Write(header_frags[21])
if tmpl_guilds_guild_list_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_guilds_guild_list_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_guilds_guild_list_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(guilds_guild_list_frags[0])
if len(tmpl_guilds_guild_list_vars.GuildList) != 0 {
for _, item := range tmpl_guilds_guild_list_vars.GuildList {
w.Write(guilds_guild_list_frags[1])
w.Write([]byte(item.Link))
w.Write(guilds_guild_list_frags[2])
w.Write([]byte(item.Name))
w.Write(guilds_guild_list_frags[3])
w.Write([]byte(item.Desc))
w.Write(guilds_guild_list_frags[4])
w.Write([]byte(strconv.Itoa(item.MemberCount)))
w.Write(guilds_guild_list_frags[5])
w.Write([]byte(item.LastUpdateTime))
w.Write(guilds_guild_list_frags[6])
}
} else {
w.Write(guilds_guild_list_frags[7])
}
w.Write(guilds_guild_list_frags[8])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_guilds_guild_list_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[1])
w.Write(footer_frags[2])
w.Write(phrases[2])
w.Write(footer_frags[3])
w.Write(phrases[3])
w.Write(footer_frags[4])
if len(tmpl_guilds_guild_list_vars.Header.Themes) != 0 {
for _, item := range tmpl_guilds_guild_list_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_guilds_guild_list_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_guilds_guild_list_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,154 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
var ip_search_tmpl_phrase_id int
// nolint
func init() {
common.Template_ip_search_handle = Template_ip_search
common.Ctemplates = append(common.Ctemplates,"ip_search")
common.TmplPtrMap["ip_search"] = &common.Template_ip_search_handle
common.TmplPtrMap["o_ip_search"] = Template_ip_search
ip_search_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"ip_search_head",
"ip_search_search_button",
"ip_search_no_users",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_ip_search(tmpl_ip_search_vars common.IPSearchPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(ip_search_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_ip_search_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_ip_search_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_ip_search_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_ip_search_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_ip_search_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_ip_search_vars.Header.Scripts) != 0 {
for _, item := range tmpl_ip_search_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_ip_search_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_ip_search_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_ip_search_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_ip_search_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_ip_search_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_ip_search_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_ip_search_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_ip_search_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_ip_search_vars.Header)))
w.Write(header_frags[21])
if tmpl_ip_search_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_ip_search_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_ip_search_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(ip_search_frags[0])
w.Write(phrases[1])
w.Write(ip_search_frags[1])
if tmpl_ip_search_vars.IP != "" {
w.Write(ip_search_frags[2])
w.Write([]byte(tmpl_ip_search_vars.IP))
w.Write(ip_search_frags[3])
}
w.Write(ip_search_frags[4])
w.Write(phrases[2])
w.Write(ip_search_frags[5])
if tmpl_ip_search_vars.IP != "" {
w.Write(ip_search_frags[6])
if len(tmpl_ip_search_vars.ItemList) != 0 {
for _, item := range tmpl_ip_search_vars.ItemList {
w.Write(ip_search_frags[7])
w.Write([]byte(item.Avatar))
w.Write(ip_search_frags[8])
w.Write([]byte(item.Avatar))
w.Write(ip_search_frags[9])
w.Write([]byte(item.Name))
w.Write(ip_search_frags[10])
w.Write([]byte(item.Link))
w.Write(ip_search_frags[11])
w.Write([]byte(item.Name))
w.Write(ip_search_frags[12])
}
} else {
w.Write(ip_search_frags[13])
w.Write(phrases[3])
w.Write(ip_search_frags[14])
}
w.Write(ip_search_frags[15])
}
w.Write(ip_search_frags[16])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_ip_search_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[4])
w.Write(footer_frags[2])
w.Write(phrases[5])
w.Write(footer_frags[3])
w.Write(phrases[6])
w.Write(footer_frags[4])
if len(tmpl_ip_search_vars.Header.Themes) != 0 {
for _, item := range tmpl_ip_search_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_ip_search_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_ip_search_vars.Header)))
w.Write(footer_frags[11])
return nil
}

File diff suppressed because it is too large Load Diff

View File

@ -1,134 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
var login_tmpl_phrase_id int
// nolint
func init() {
common.Template_login_handle = Template_login
common.Ctemplates = append(common.Ctemplates,"login")
common.TmplPtrMap["login"] = &common.Template_login_handle
common.TmplPtrMap["o_login"] = Template_login
login_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"login_head",
"login_account_name",
"login_account_name",
"login_account_password",
"login_submit_button",
"login_no_account",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_login(tmpl_login_vars common.Page, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(login_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_login_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_login_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_login_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_login_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_login_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_login_vars.Header.Scripts) != 0 {
for _, item := range tmpl_login_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_login_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_login_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_login_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_login_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_login_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_login_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_login_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_login_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_login_vars.Header)))
w.Write(header_frags[21])
if tmpl_login_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_login_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_login_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(login_frags[0])
w.Write(phrases[1])
w.Write(login_frags[1])
w.Write(phrases[2])
w.Write(login_frags[2])
w.Write(phrases[3])
w.Write(login_frags[3])
w.Write(phrases[4])
w.Write(login_frags[4])
w.Write(phrases[5])
w.Write(login_frags[5])
w.Write(phrases[6])
w.Write(login_frags[6])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_login_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[7])
w.Write(footer_frags[2])
w.Write(phrases[8])
w.Write(footer_frags[3])
w.Write(phrases[9])
w.Write(footer_frags[4])
if len(tmpl_login_vars.Header.Themes) != 0 {
for _, item := range tmpl_login_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_login_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_login_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,347 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "strconv"
import "io"
import "./common"
var profile_tmpl_phrase_id int
// nolint
func init() {
common.Template_profile_handle = Template_profile
common.Ctemplates = append(common.Ctemplates,"profile")
common.TmplPtrMap["profile"] = &common.Template_profile_handle
common.TmplPtrMap["o_profile"] = Template_profile
profile_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"profile_login_for_options",
"profile_add_friend",
"profile_unban",
"profile_ban",
"profile_report_user_aria",
"profile_report_user_tooltip",
"profile_ban_user_head",
"profile_ban_user_notice",
"profile_ban_user_days",
"profile_ban_user_weeks",
"profile_ban_user_months",
"profile_ban_user_reason",
"profile_ban_user_button",
"profile_comments_head",
"profile_comments_edit_tooltip",
"profile_comments_edit_aria",
"profile_comments_delete_tooltip",
"profile_comments_delete_aria",
"profile_comments_report_tooltip",
"profile_comments_report_aria",
"profile_comments_edit_tooltip",
"profile_comments_edit_aria",
"profile_comments_delete_tooltip",
"profile_comments_delete_aria",
"profile_comments_report_tooltip",
"profile_comments_report_aria",
"profile_comments_form_content",
"profile_comments_form_button",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_profile(tmpl_profile_vars common.ProfilePage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(profile_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_profile_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_profile_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_profile_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_profile_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_profile_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_profile_vars.Header.Scripts) != 0 {
for _, item := range tmpl_profile_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_profile_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_profile_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_profile_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_profile_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_profile_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_profile_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_profile_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_profile_vars.Header)))
w.Write(header_frags[21])
if tmpl_profile_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_profile_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_profile_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(profile_frags[0])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Avatar))
w.Write(profile_frags[1])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Name))
w.Write(profile_frags[2])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Name))
w.Write(profile_frags[3])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Name))
w.Write(profile_frags[4])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Name))
w.Write(profile_frags[5])
if tmpl_profile_vars.ProfileOwner.Tag != "" {
w.Write(profile_frags[6])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Tag))
w.Write(profile_frags[7])
w.Write([]byte(tmpl_profile_vars.ProfileOwner.Tag))
w.Write(profile_frags[8])
}
w.Write(profile_frags[9])
if !tmpl_profile_vars.CurrentUser.Loggedin {
w.Write(profile_frags[10])
w.Write(phrases[1])
w.Write(profile_frags[11])
} else {
w.Write(profile_frags[12])
w.Write(phrases[2])
w.Write(profile_frags[13])
if tmpl_profile_vars.CurrentUser.IsSuperMod && !tmpl_profile_vars.ProfileOwner.IsSuperMod {
w.Write(profile_frags[14])
if tmpl_profile_vars.ProfileOwner.IsBanned {
w.Write(profile_frags[15])
w.Write([]byte(strconv.Itoa(tmpl_profile_vars.ProfileOwner.ID)))
w.Write(profile_frags[16])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_frags[17])
w.Write(phrases[3])
w.Write(profile_frags[18])
} else {
w.Write(profile_frags[19])
w.Write(phrases[4])
w.Write(profile_frags[20])
}
w.Write(profile_frags[21])
}
w.Write(profile_frags[22])
w.Write([]byte(strconv.Itoa(tmpl_profile_vars.ProfileOwner.ID)))
w.Write(profile_frags[23])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_frags[24])
w.Write(phrases[5])
w.Write(profile_frags[25])
w.Write(phrases[6])
w.Write(profile_frags[26])
}
w.Write(profile_frags[27])
if tmpl_profile_vars.CurrentUser.Perms.BanUsers {
w.Write(profile_frags[28])
w.Write(phrases[7])
w.Write(profile_frags[29])
w.Write([]byte(strconv.Itoa(tmpl_profile_vars.ProfileOwner.ID)))
w.Write(profile_frags[30])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_frags[31])
w.Write(profile_frags[32])
w.Write(phrases[8])
w.Write(profile_frags[33])
w.Write(phrases[9])
w.Write(profile_frags[34])
w.Write(phrases[10])
w.Write(profile_frags[35])
w.Write(phrases[11])
w.Write(profile_frags[36])
w.Write(phrases[12])
w.Write(profile_frags[37])
w.Write(phrases[13])
w.Write(profile_frags[38])
}
w.Write(profile_frags[39])
w.Write(phrases[14])
w.Write(profile_frags[40])
if tmpl_profile_vars.Header.Theme.BgAvatars {
if len(tmpl_profile_vars.ItemList) != 0 {
for _, item := range tmpl_profile_vars.ItemList {
w.Write(profile_comments_row_frags[0])
w.Write([]byte(item.ClassName))
w.Write(profile_comments_row_frags[1])
w.Write([]byte(item.Avatar))
w.Write(profile_comments_row_frags[2])
if item.ContentLines <= 5 {
w.Write(profile_comments_row_frags[3])
}
w.Write(profile_comments_row_frags[4])
w.Write([]byte(item.ContentHtml))
w.Write(profile_comments_row_frags[5])
w.Write([]byte(item.UserLink))
w.Write(profile_comments_row_frags[6])
w.Write([]byte(item.CreatedByName))
w.Write(profile_comments_row_frags[7])
if tmpl_profile_vars.CurrentUser.IsMod {
w.Write(profile_comments_row_frags[8])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[9])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[10])
w.Write(phrases[15])
w.Write(profile_comments_row_frags[11])
w.Write(phrases[16])
w.Write(profile_comments_row_frags[12])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[13])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[14])
w.Write(phrases[17])
w.Write(profile_comments_row_frags[15])
w.Write(phrases[18])
w.Write(profile_comments_row_frags[16])
}
w.Write(profile_comments_row_frags[17])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[18])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[19])
w.Write(phrases[19])
w.Write(profile_comments_row_frags[20])
w.Write(phrases[20])
w.Write(profile_comments_row_frags[21])
if item.Tag != "" {
w.Write(profile_comments_row_frags[22])
w.Write([]byte(item.Tag))
w.Write(profile_comments_row_frags[23])
}
w.Write(profile_comments_row_frags[24])
}
}
} else {
if len(tmpl_profile_vars.ItemList) != 0 {
for _, item := range tmpl_profile_vars.ItemList {
w.Write(profile_comments_row_frags[25])
w.Write([]byte(item.ClassName))
w.Write(profile_comments_row_frags[26])
w.Write([]byte(item.Avatar))
w.Write(profile_comments_row_frags[27])
w.Write([]byte(item.CreatedByName))
w.Write(profile_comments_row_frags[28])
w.Write([]byte(item.CreatedByName))
w.Write(profile_comments_row_frags[29])
w.Write([]byte(item.UserLink))
w.Write(profile_comments_row_frags[30])
w.Write([]byte(item.CreatedByName))
w.Write(profile_comments_row_frags[31])
if item.Tag != "" {
w.Write(profile_comments_row_frags[32])
w.Write([]byte(item.Tag))
w.Write(profile_comments_row_frags[33])
}
w.Write(profile_comments_row_frags[34])
if tmpl_profile_vars.CurrentUser.IsMod {
w.Write(profile_comments_row_frags[35])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[36])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[37])
w.Write(phrases[21])
w.Write(profile_comments_row_frags[38])
w.Write(phrases[22])
w.Write(profile_comments_row_frags[39])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[40])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[41])
w.Write(phrases[23])
w.Write(profile_comments_row_frags[42])
w.Write(phrases[24])
w.Write(profile_comments_row_frags[43])
}
w.Write(profile_comments_row_frags[44])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(profile_comments_row_frags[45])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_comments_row_frags[46])
w.Write(phrases[25])
w.Write(profile_comments_row_frags[47])
w.Write(phrases[26])
w.Write(profile_comments_row_frags[48])
w.Write([]byte(item.ContentHtml))
w.Write(profile_comments_row_frags[49])
}
}
}
w.Write(profile_frags[41])
if !tmpl_profile_vars.CurrentUser.IsBanned {
w.Write(profile_frags[42])
w.Write([]byte(tmpl_profile_vars.CurrentUser.Session))
w.Write(profile_frags[43])
w.Write([]byte(strconv.Itoa(tmpl_profile_vars.ProfileOwner.ID)))
w.Write(profile_frags[44])
w.Write(phrases[27])
w.Write(profile_frags[45])
w.Write(phrases[28])
w.Write(profile_frags[46])
}
w.Write(profile_frags[47])
w.Write(profile_frags[48])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_profile_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[29])
w.Write(footer_frags[2])
w.Write(phrases[30])
w.Write(footer_frags[3])
w.Write(phrases[31])
w.Write(footer_frags[4])
if len(tmpl_profile_vars.Header.Themes) != 0 {
for _, item := range tmpl_profile_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_profile_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_profile_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,137 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
var register_tmpl_phrase_id int
// nolint
func init() {
common.Template_register_handle = Template_register
common.Ctemplates = append(common.Ctemplates,"register")
common.TmplPtrMap["register"] = &common.Template_register_handle
common.TmplPtrMap["o_register"] = Template_register
register_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"register_head",
"register_account_name",
"register_account_name",
"register_account_email",
"register_account_password",
"register_account_confirm_password",
"register_submit_button",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_register(tmpl_register_vars common.Page, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(register_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_register_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_register_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_register_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_register_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_register_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_register_vars.Header.Scripts) != 0 {
for _, item := range tmpl_register_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_register_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_register_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_register_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_register_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_register_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_register_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_register_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_register_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_register_vars.Header)))
w.Write(header_frags[21])
if tmpl_register_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_register_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_register_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(register_frags[0])
w.Write(phrases[1])
w.Write(register_frags[1])
w.Write(phrases[2])
w.Write(register_frags[2])
w.Write(phrases[3])
w.Write(register_frags[3])
w.Write(phrases[4])
w.Write(register_frags[4])
w.Write(phrases[5])
w.Write(register_frags[5])
w.Write(phrases[6])
w.Write(register_frags[6])
w.Write(phrases[7])
w.Write(register_frags[7])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_register_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[8])
w.Write(footer_frags[2])
w.Write(phrases[9])
w.Write(footer_frags[3])
w.Write(phrases[10])
w.Write(footer_frags[4])
if len(tmpl_register_vars.Header.Themes) != 0 {
for _, item := range tmpl_register_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_register_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_register_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,590 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "strconv"
import "io"
import "./common"
var topic_tmpl_phrase_id int
// nolint
func init() {
common.Template_topic_handle = Template_topic
common.Ctemplates = append(common.Ctemplates,"topic")
common.TmplPtrMap["topic"] = &common.Template_topic_handle
common.TmplPtrMap["o_topic"] = Template_topic
topic_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"paginator_prev_page_aria",
"paginator_less_than",
"paginator_next_page_aria",
"paginator_greater_than",
"topic_opening_post_aria",
"status_closed_tooltip",
"topic_status_closed_aria",
"topic_title_input_aria",
"topic_update_button",
"topic_poll_aria",
"topic_poll_vote",
"topic_poll_results",
"topic_poll_cancel",
"topic_opening_post_aria",
"topic_post_controls_aria",
"topic_unlike_tooltip",
"topic_unlike_aria",
"topic_like_tooltip",
"topic_like_aria",
"topic_edit_tooltip",
"topic_edit_aria",
"topic_delete_tooltip",
"topic_delete_aria",
"topic_unlock_tooltip",
"topic_unlock_aria",
"topic_lock_tooltip",
"topic_lock_aria",
"topic_unpin_tooltip",
"topic_unpin_aria",
"topic_pin_tooltip",
"topic_pin_aria",
"topic_ip_tooltip",
"topic_flag_tooltip",
"topic_flag_aria",
"topic_like_count_aria",
"topic_like_count_tooltip",
"topic_level_aria",
"topic_level_tooltip",
"topic_current_page_aria",
"topic_post_like_tooltip",
"topic_post_like_aria",
"topic_post_unlike_tooltip",
"topic_post_unlike_aria",
"topic_post_edit_tooltip",
"topic_post_edit_aria",
"topic_post_delete_tooltip",
"topic_post_delete_aria",
"topic_post_ip_tooltip",
"topic_post_flag_tooltip",
"topic_post_flag_aria",
"topic_post_like_count_tooltip",
"topic_post_level_aria",
"topic_post_level_tooltip",
"topic_reply_aria",
"topic_reply_content",
"topic_reply_add_poll_option",
"topic_reply_button",
"topic_reply_add_poll_button",
"topic_reply_add_file_button",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_topic(tmpl_topic_vars common.TopicPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(topic_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_topic_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_topic_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_topic_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_topic_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_topic_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_topic_vars.Header.Scripts) != 0 {
for _, item := range tmpl_topic_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_topic_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_topic_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_topic_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_topic_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_topic_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_topic_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_topic_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_topic_vars.Header)))
w.Write(header_frags[21])
if tmpl_topic_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_topic_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_topic_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(topic_frags[0])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[1])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[2])
if tmpl_topic_vars.Page > 1 {
w.Write(topic_frags[3])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[4])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Page - 1)))
w.Write(topic_frags[5])
w.Write(phrases[1])
w.Write(topic_frags[6])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[7])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Page - 1)))
w.Write(topic_frags[8])
w.Write(phrases[2])
w.Write(topic_frags[9])
}
if tmpl_topic_vars.LastPage != tmpl_topic_vars.Page {
w.Write(topic_frags[10])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[11])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Page + 1)))
w.Write(topic_frags[12])
w.Write(phrases[3])
w.Write(topic_frags[13])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[14])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Page + 1)))
w.Write(topic_frags[15])
w.Write(phrases[4])
w.Write(topic_frags[16])
}
w.Write(topic_frags[17])
w.Write(topic_frags[18])
w.Write(phrases[5])
w.Write(topic_frags[19])
if tmpl_topic_vars.Topic.Sticky {
w.Write(topic_frags[20])
} else {
if tmpl_topic_vars.Topic.IsClosed {
w.Write(topic_frags[21])
}
}
w.Write(topic_frags[22])
w.Write([]byte(tmpl_topic_vars.Topic.Title))
w.Write(topic_frags[23])
w.Write([]byte(tmpl_topic_vars.Topic.Title))
w.Write(topic_frags[24])
if tmpl_topic_vars.Topic.IsClosed {
w.Write(topic_frags[25])
w.Write(phrases[6])
w.Write(topic_frags[26])
w.Write(phrases[7])
w.Write(topic_frags[27])
}
if tmpl_topic_vars.CurrentUser.Perms.EditTopic {
w.Write(topic_frags[28])
w.Write([]byte(tmpl_topic_vars.Topic.Title))
w.Write(topic_frags[29])
w.Write(phrases[8])
w.Write(topic_frags[30])
w.Write(phrases[9])
w.Write(topic_frags[31])
}
w.Write(topic_frags[32])
if tmpl_topic_vars.Poll.ID > 0 {
w.Write(topic_frags[33])
w.Write(phrases[10])
w.Write(topic_frags[34])
w.Write([]byte(tmpl_topic_vars.Topic.ClassName))
w.Write(topic_frags[35])
w.Write([]byte(tmpl_topic_vars.Topic.Avatar))
w.Write(topic_frags[36])
w.Write([]byte(tmpl_topic_vars.Header.Theme.Name))
w.Write(topic_frags[37])
if tmpl_topic_vars.Topic.ContentLines <= 5 {
w.Write(topic_frags[38])
}
w.Write(topic_frags[39])
if len(tmpl_topic_vars.Poll.QuickOptions) != 0 {
for _, item := range tmpl_topic_vars.Poll.QuickOptions {
w.Write(topic_frags[40])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Poll.ID)))
w.Write(topic_frags[41])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[42])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[43])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[44])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[45])
w.Write([]byte(item.Value))
w.Write(topic_frags[46])
}
}
w.Write(topic_frags[47])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Poll.ID)))
w.Write(topic_frags[48])
w.Write(phrases[11])
w.Write(topic_frags[49])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Poll.ID)))
w.Write(topic_frags[50])
w.Write(phrases[12])
w.Write(topic_frags[51])
w.Write(phrases[13])
w.Write(topic_frags[52])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Poll.ID)))
w.Write(topic_frags[53])
}
w.Write(topic_frags[54])
w.Write(topic_frags[55])
w.Write(phrases[14])
w.Write(topic_frags[56])
w.Write([]byte(tmpl_topic_vars.Topic.ClassName))
w.Write(topic_frags[57])
w.Write([]byte(tmpl_topic_vars.Topic.Avatar))
w.Write(topic_frags[58])
w.Write([]byte(tmpl_topic_vars.Header.Theme.Name))
w.Write(topic_frags[59])
if tmpl_topic_vars.Topic.ContentLines <= 5 {
w.Write(topic_frags[60])
}
w.Write(topic_frags[61])
w.Write([]byte(tmpl_topic_vars.Topic.ContentHTML))
w.Write(topic_frags[62])
w.Write([]byte(tmpl_topic_vars.Topic.Content))
w.Write(topic_frags[63])
if tmpl_topic_vars.Topic.LikeCount > 0 {
w.Write(topic_frags[64])
}
w.Write(topic_frags[65])
w.Write(phrases[15])
w.Write(topic_frags[66])
w.Write([]byte(tmpl_topic_vars.Topic.UserLink))
w.Write(topic_frags[67])
w.Write([]byte(tmpl_topic_vars.Topic.CreatedByName))
w.Write(topic_frags[68])
if tmpl_topic_vars.CurrentUser.Perms.LikeItem {
w.Write(topic_frags[69])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[70])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[71])
if tmpl_topic_vars.Topic.Liked {
w.Write(topic_frags[72])
w.Write(phrases[16])
w.Write(topic_frags[73])
w.Write(phrases[17])
w.Write(topic_frags[74])
} else {
w.Write(topic_frags[75])
w.Write(phrases[18])
w.Write(topic_frags[76])
w.Write(phrases[19])
w.Write(topic_frags[77])
}
w.Write(topic_frags[78])
if tmpl_topic_vars.Topic.Liked {
w.Write(topic_frags[79])
} else {
w.Write(topic_frags[80])
}
w.Write(topic_frags[81])
}
if tmpl_topic_vars.CurrentUser.Perms.EditTopic {
w.Write(topic_frags[82])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[83])
w.Write(phrases[20])
w.Write(topic_frags[84])
w.Write(phrases[21])
w.Write(topic_frags[85])
}
if tmpl_topic_vars.CurrentUser.Perms.DeleteTopic {
w.Write(topic_frags[86])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[87])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[88])
w.Write(phrases[22])
w.Write(topic_frags[89])
w.Write(phrases[23])
w.Write(topic_frags[90])
}
if tmpl_topic_vars.CurrentUser.Perms.CloseTopic {
if tmpl_topic_vars.Topic.IsClosed {
w.Write(topic_frags[91])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[92])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[93])
w.Write(phrases[24])
w.Write(topic_frags[94])
w.Write(phrases[25])
w.Write(topic_frags[95])
} else {
w.Write(topic_frags[96])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[97])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[98])
w.Write(phrases[26])
w.Write(topic_frags[99])
w.Write(phrases[27])
w.Write(topic_frags[100])
}
}
if tmpl_topic_vars.CurrentUser.Perms.PinTopic {
if tmpl_topic_vars.Topic.Sticky {
w.Write(topic_frags[101])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[102])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[103])
w.Write(phrases[28])
w.Write(topic_frags[104])
w.Write(phrases[29])
w.Write(topic_frags[105])
} else {
w.Write(topic_frags[106])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[107])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[108])
w.Write(phrases[30])
w.Write(topic_frags[109])
w.Write(phrases[31])
w.Write(topic_frags[110])
}
}
if tmpl_topic_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_frags[111])
w.Write([]byte(tmpl_topic_vars.Topic.IPAddress))
w.Write(topic_frags[112])
w.Write(phrases[32])
w.Write(topic_frags[113])
w.Write([]byte(tmpl_topic_vars.Topic.IPAddress))
w.Write(topic_frags[114])
}
w.Write(topic_frags[115])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[116])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[117])
w.Write(phrases[33])
w.Write(topic_frags[118])
w.Write(phrases[34])
w.Write(topic_frags[119])
w.Write(phrases[35])
w.Write(topic_frags[120])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.LikeCount)))
w.Write(topic_frags[121])
w.Write(phrases[36])
w.Write(topic_frags[122])
if tmpl_topic_vars.Topic.Tag != "" {
w.Write(topic_frags[123])
w.Write([]byte(tmpl_topic_vars.Topic.Tag))
w.Write(topic_frags[124])
} else {
w.Write(topic_frags[125])
w.Write(phrases[37])
w.Write(topic_frags[126])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.Level)))
w.Write(topic_frags[127])
w.Write(phrases[38])
w.Write(topic_frags[128])
}
w.Write(topic_frags[129])
w.Write(phrases[39])
w.Write(topic_frags[130])
if len(tmpl_topic_vars.ItemList) != 0 {
for _, item := range tmpl_topic_vars.ItemList {
if item.ActionType != "" {
w.Write(topic_frags[131])
w.Write([]byte(item.ActionIcon))
w.Write(topic_frags[132])
w.Write([]byte(item.ActionType))
w.Write(topic_frags[133])
} else {
w.Write(topic_frags[134])
w.Write(topic_frags[135])
w.Write([]byte(item.ClassName))
w.Write(topic_frags[136])
w.Write([]byte(item.Avatar))
w.Write(topic_frags[137])
w.Write([]byte(tmpl_topic_vars.Header.Theme.Name))
w.Write(topic_frags[138])
if item.ContentLines <= 5 {
w.Write(topic_frags[139])
}
w.Write(topic_frags[140])
w.Write(topic_frags[141])
w.Write([]byte(item.ContentHtml))
w.Write(topic_frags[142])
if item.LikeCount > 0 {
w.Write(topic_frags[143])
}
w.Write(topic_frags[144])
w.Write([]byte(item.UserLink))
w.Write(topic_frags[145])
w.Write([]byte(item.CreatedByName))
w.Write(topic_frags[146])
if tmpl_topic_vars.CurrentUser.Perms.LikeItem {
if item.Liked {
w.Write(topic_frags[147])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[148])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[149])
w.Write(phrases[40])
w.Write(topic_frags[150])
w.Write(phrases[41])
w.Write(topic_frags[151])
} else {
w.Write(topic_frags[152])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[153])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[154])
w.Write(phrases[42])
w.Write(topic_frags[155])
w.Write(phrases[43])
w.Write(topic_frags[156])
}
}
if tmpl_topic_vars.CurrentUser.Perms.EditReply {
w.Write(topic_frags[157])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[158])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[159])
w.Write(phrases[44])
w.Write(topic_frags[160])
w.Write(phrases[45])
w.Write(topic_frags[161])
}
if tmpl_topic_vars.CurrentUser.Perms.DeleteReply {
w.Write(topic_frags[162])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[163])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[164])
w.Write(phrases[46])
w.Write(topic_frags[165])
w.Write(phrases[47])
w.Write(topic_frags[166])
}
if tmpl_topic_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_frags[167])
w.Write([]byte(item.IPAddress))
w.Write(topic_frags[168])
w.Write(phrases[48])
w.Write(topic_frags[169])
w.Write([]byte(item.IPAddress))
w.Write(topic_frags[170])
}
w.Write(topic_frags[171])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_frags[172])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[173])
w.Write(phrases[49])
w.Write(topic_frags[174])
w.Write(phrases[50])
w.Write(topic_frags[175])
w.Write([]byte(strconv.Itoa(item.LikeCount)))
w.Write(topic_frags[176])
w.Write(phrases[51])
w.Write(topic_frags[177])
if item.Tag != "" {
w.Write(topic_frags[178])
w.Write([]byte(item.Tag))
w.Write(topic_frags[179])
} else {
w.Write(topic_frags[180])
w.Write(phrases[52])
w.Write(topic_frags[181])
w.Write([]byte(strconv.Itoa(item.Level)))
w.Write(topic_frags[182])
w.Write(phrases[53])
w.Write(topic_frags[183])
}
w.Write(topic_frags[184])
}
}
}
w.Write(topic_frags[185])
if tmpl_topic_vars.CurrentUser.Perms.CreateReply {
w.Write(topic_frags[186])
w.Write(phrases[54])
w.Write(topic_frags[187])
w.Write([]byte(tmpl_topic_vars.CurrentUser.Session))
w.Write(topic_frags[188])
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
w.Write(topic_frags[189])
w.Write(phrases[55])
w.Write(topic_frags[190])
w.Write(phrases[56])
w.Write(topic_frags[191])
w.Write(phrases[57])
w.Write(topic_frags[192])
w.Write(phrases[58])
w.Write(topic_frags[193])
if tmpl_topic_vars.CurrentUser.Perms.UploadFiles {
w.Write(topic_frags[194])
w.Write(phrases[59])
w.Write(topic_frags[195])
}
w.Write(topic_frags[196])
}
w.Write(topic_frags[197])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_topic_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[60])
w.Write(footer_frags[2])
w.Write(phrases[61])
w.Write(footer_frags[3])
w.Write(phrases[62])
w.Write(footer_frags[4])
if len(tmpl_topic_vars.Header.Themes) != 0 {
for _, item := range tmpl_topic_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_topic_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_topic_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,583 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "./common"
import "strconv"
import "io"
var topic_alt_tmpl_phrase_id int
// nolint
func init() {
common.Template_topic_alt_handle = Template_topic_alt
common.Ctemplates = append(common.Ctemplates,"topic_alt")
common.TmplPtrMap["topic_alt"] = &common.Template_topic_alt_handle
common.TmplPtrMap["o_topic_alt"] = Template_topic_alt
topic_alt_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"paginator_prev_page_aria",
"paginator_less_than",
"paginator_next_page_aria",
"paginator_greater_than",
"topic_opening_post_aria",
"status_closed_tooltip",
"topic_status_closed_aria",
"topic_title_input_aria",
"topic_update_button",
"topic_userinfo_aria",
"topic_level_prefix",
"topic_poll_vote",
"topic_poll_results",
"topic_poll_cancel",
"topic_opening_post_aria",
"topic_userinfo_aria",
"topic_level_prefix",
"topic_like_aria",
"topic_edit_aria",
"topic_delete_aria",
"topic_unlock_aria",
"topic_lock_aria",
"topic_unpin_aria",
"topic_pin_aria",
"topic_ip_full_tooltip",
"topic_ip_full_aria",
"topic_report_aria",
"topic_like_count_aria",
"topic_ip_full_tooltip",
"topic_userinfo_aria",
"topic_level_prefix",
"topic_post_like_aria",
"topic_post_edit_aria",
"topic_post_delete_aria",
"topic_ip_full_tooltip",
"topic_ip_full_aria",
"topic_report_aria",
"topic_post_like_count_tooltip",
"topic_your_information",
"topic_level_prefix",
"topic_reply_aria",
"topic_reply_content_alt",
"topic_reply_add_poll_option",
"topic_reply_button",
"topic_reply_add_poll_button",
"topic_reply_add_file_button",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_topic_alt(tmpl_topic_alt_vars common.TopicPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(topic_alt_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_topic_alt_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_topic_alt_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_topic_alt_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_topic_alt_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_topic_alt_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_topic_alt_vars.Header.Scripts) != 0 {
for _, item := range tmpl_topic_alt_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_topic_alt_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_topic_alt_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_topic_alt_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_topic_alt_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_topic_alt_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_topic_alt_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_topic_alt_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_topic_alt_vars.Header)))
w.Write(header_frags[21])
if tmpl_topic_alt_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_topic_alt_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_topic_alt_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
if tmpl_topic_alt_vars.Page > 1 {
w.Write(topic_alt_frags[0])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[1])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Page - 1)))
w.Write(topic_alt_frags[2])
w.Write(phrases[1])
w.Write(topic_alt_frags[3])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[4])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Page - 1)))
w.Write(topic_alt_frags[5])
w.Write(phrases[2])
w.Write(topic_alt_frags[6])
}
if tmpl_topic_alt_vars.LastPage != tmpl_topic_alt_vars.Page {
w.Write(topic_alt_frags[7])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[8])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Page + 1)))
w.Write(topic_alt_frags[9])
w.Write(phrases[3])
w.Write(topic_alt_frags[10])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[11])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Page + 1)))
w.Write(topic_alt_frags[12])
w.Write(phrases[4])
w.Write(topic_alt_frags[13])
}
w.Write(topic_alt_frags[14])
w.Write(topic_alt_frags[15])
w.Write(phrases[5])
w.Write(topic_alt_frags[16])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[17])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[18])
if tmpl_topic_alt_vars.Topic.Sticky {
w.Write(topic_alt_frags[19])
} else {
if tmpl_topic_alt_vars.Topic.IsClosed {
w.Write(topic_alt_frags[20])
}
}
w.Write(topic_alt_frags[21])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Title))
w.Write(topic_alt_frags[22])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Title))
w.Write(topic_alt_frags[23])
if tmpl_topic_alt_vars.Topic.IsClosed {
w.Write(topic_alt_frags[24])
w.Write(phrases[6])
w.Write(topic_alt_frags[25])
w.Write(phrases[7])
w.Write(topic_alt_frags[26])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.EditTopic {
w.Write(topic_alt_frags[27])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Title))
w.Write(topic_alt_frags[28])
w.Write(phrases[8])
w.Write(topic_alt_frags[29])
w.Write(phrases[9])
w.Write(topic_alt_frags[30])
}
w.Write(topic_alt_frags[31])
if tmpl_topic_alt_vars.Poll.ID > 0 {
w.Write(topic_alt_frags[32])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[33])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[34])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[35])
w.Write(phrases[10])
w.Write(topic_alt_frags[36])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Avatar))
w.Write(topic_alt_frags[37])
w.Write([]byte(tmpl_topic_alt_vars.Topic.UserLink))
w.Write(topic_alt_frags[38])
w.Write([]byte(tmpl_topic_alt_vars.Topic.CreatedByName))
w.Write(topic_alt_frags[39])
if tmpl_topic_alt_vars.Topic.Tag != "" {
w.Write(topic_alt_frags[40])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Tag))
w.Write(topic_alt_frags[41])
} else {
w.Write(topic_alt_frags[42])
w.Write(phrases[11])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.Level)))
w.Write(topic_alt_frags[43])
}
w.Write(topic_alt_frags[44])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[45])
if len(tmpl_topic_alt_vars.Poll.QuickOptions) != 0 {
for _, item := range tmpl_topic_alt_vars.Poll.QuickOptions {
w.Write(topic_alt_frags[46])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[47])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[48])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[49])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[50])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[51])
w.Write([]byte(item.Value))
w.Write(topic_alt_frags[52])
}
}
w.Write(topic_alt_frags[53])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[54])
w.Write(phrases[12])
w.Write(topic_alt_frags[55])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[56])
w.Write(phrases[13])
w.Write(topic_alt_frags[57])
w.Write(phrases[14])
w.Write(topic_alt_frags[58])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Poll.ID)))
w.Write(topic_alt_frags[59])
}
w.Write(topic_alt_frags[60])
w.Write(topic_alt_frags[61])
w.Write(phrases[15])
w.Write(topic_alt_frags[62])
w.Write(phrases[16])
w.Write(topic_alt_frags[63])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Avatar))
w.Write(topic_alt_frags[64])
w.Write([]byte(tmpl_topic_alt_vars.Topic.UserLink))
w.Write(topic_alt_frags[65])
w.Write([]byte(tmpl_topic_alt_vars.Topic.CreatedByName))
w.Write(topic_alt_frags[66])
if tmpl_topic_alt_vars.Topic.Tag != "" {
w.Write(topic_alt_frags[67])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Tag))
w.Write(topic_alt_frags[68])
} else {
w.Write(topic_alt_frags[69])
w.Write(phrases[17])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.Level)))
w.Write(topic_alt_frags[70])
}
w.Write(topic_alt_frags[71])
w.Write([]byte(tmpl_topic_alt_vars.Topic.ContentHTML))
w.Write(topic_alt_frags[72])
w.Write([]byte(tmpl_topic_alt_vars.Topic.Content))
w.Write(topic_alt_frags[73])
if tmpl_topic_alt_vars.Topic.LikeCount > 0 {
w.Write(topic_alt_frags[74])
}
w.Write(topic_alt_frags[75])
if tmpl_topic_alt_vars.CurrentUser.Loggedin {
if tmpl_topic_alt_vars.CurrentUser.Perms.LikeItem {
w.Write(topic_alt_frags[76])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[77])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[78])
if tmpl_topic_alt_vars.Topic.Liked {
w.Write(topic_alt_frags[79])
} else {
w.Write(topic_alt_frags[80])
}
w.Write(topic_alt_frags[81])
w.Write(phrases[18])
w.Write(topic_alt_frags[82])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.EditTopic {
w.Write(topic_alt_frags[83])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[84])
w.Write(phrases[19])
w.Write(topic_alt_frags[85])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.DeleteTopic {
w.Write(topic_alt_frags[86])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[87])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[88])
w.Write(phrases[20])
w.Write(topic_alt_frags[89])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.CloseTopic {
if tmpl_topic_alt_vars.Topic.IsClosed {
w.Write(topic_alt_frags[90])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[91])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[92])
w.Write(phrases[21])
w.Write(topic_alt_frags[93])
} else {
w.Write(topic_alt_frags[94])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[95])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[96])
w.Write(phrases[22])
w.Write(topic_alt_frags[97])
}
}
if tmpl_topic_alt_vars.CurrentUser.Perms.PinTopic {
if tmpl_topic_alt_vars.Topic.Sticky {
w.Write(topic_alt_frags[98])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[99])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[100])
w.Write(phrases[23])
w.Write(topic_alt_frags[101])
} else {
w.Write(topic_alt_frags[102])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[103])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[104])
w.Write(phrases[24])
w.Write(topic_alt_frags[105])
}
}
if tmpl_topic_alt_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_alt_frags[106])
w.Write([]byte(tmpl_topic_alt_vars.Topic.IPAddress))
w.Write(topic_alt_frags[107])
w.Write(phrases[25])
w.Write(topic_alt_frags[108])
w.Write(phrases[26])
w.Write(topic_alt_frags[109])
}
w.Write(topic_alt_frags[110])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[111])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[112])
w.Write(phrases[27])
w.Write(topic_alt_frags[113])
}
w.Write(topic_alt_frags[114])
w.Write(phrases[28])
w.Write(topic_alt_frags[115])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.LikeCount)))
w.Write(topic_alt_frags[116])
w.Write([]byte(tmpl_topic_alt_vars.Topic.RelativeCreatedAt))
w.Write(topic_alt_frags[117])
if tmpl_topic_alt_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_alt_frags[118])
w.Write([]byte(tmpl_topic_alt_vars.Topic.IPAddress))
w.Write(topic_alt_frags[119])
w.Write(phrases[29])
w.Write(topic_alt_frags[120])
w.Write([]byte(tmpl_topic_alt_vars.Topic.IPAddress))
w.Write(topic_alt_frags[121])
}
w.Write(topic_alt_frags[122])
if len(tmpl_topic_alt_vars.ItemList) != 0 {
for _, item := range tmpl_topic_alt_vars.ItemList {
w.Write(topic_alt_frags[123])
w.Write(topic_alt_frags[124])
if item.ActionType != "" {
w.Write(topic_alt_frags[125])
}
w.Write(topic_alt_frags[126])
w.Write(phrases[30])
w.Write(topic_alt_frags[127])
w.Write([]byte(item.Avatar))
w.Write(topic_alt_frags[128])
w.Write([]byte(item.UserLink))
w.Write(topic_alt_frags[129])
w.Write([]byte(item.CreatedByName))
w.Write(topic_alt_frags[130])
if item.Tag != "" {
w.Write(topic_alt_frags[131])
w.Write([]byte(item.Tag))
w.Write(topic_alt_frags[132])
} else {
w.Write(topic_alt_frags[133])
w.Write(phrases[31])
w.Write([]byte(strconv.Itoa(item.Level)))
w.Write(topic_alt_frags[134])
}
w.Write(topic_alt_frags[135])
if item.ActionType != "" {
w.Write(topic_alt_frags[136])
}
w.Write(topic_alt_frags[137])
if item.ActionType != "" {
w.Write(topic_alt_frags[138])
w.Write([]byte(item.ActionIcon))
w.Write(topic_alt_frags[139])
w.Write([]byte(item.ActionType))
w.Write(topic_alt_frags[140])
} else {
w.Write(topic_alt_frags[141])
w.Write([]byte(item.ContentHtml))
w.Write(topic_alt_frags[142])
if item.LikeCount > 0 {
w.Write(topic_alt_frags[143])
}
w.Write(topic_alt_frags[144])
if tmpl_topic_alt_vars.CurrentUser.Loggedin {
if tmpl_topic_alt_vars.CurrentUser.Perms.LikeItem {
w.Write(topic_alt_frags[145])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[146])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[147])
if item.Liked {
w.Write(topic_alt_frags[148])
} else {
w.Write(topic_alt_frags[149])
}
w.Write(topic_alt_frags[150])
w.Write(phrases[32])
w.Write(topic_alt_frags[151])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.EditReply {
w.Write(topic_alt_frags[152])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[153])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[154])
w.Write(phrases[33])
w.Write(topic_alt_frags[155])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.DeleteReply {
w.Write(topic_alt_frags[156])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[157])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[158])
w.Write(phrases[34])
w.Write(topic_alt_frags[159])
}
if tmpl_topic_alt_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_alt_frags[160])
w.Write([]byte(item.IPAddress))
w.Write(topic_alt_frags[161])
w.Write(phrases[35])
w.Write(topic_alt_frags[162])
w.Write(phrases[36])
w.Write(topic_alt_frags[163])
}
w.Write(topic_alt_frags[164])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topic_alt_frags[165])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[166])
w.Write(phrases[37])
w.Write(topic_alt_frags[167])
}
w.Write(topic_alt_frags[168])
w.Write(phrases[38])
w.Write(topic_alt_frags[169])
w.Write([]byte(strconv.Itoa(item.LikeCount)))
w.Write(topic_alt_frags[170])
w.Write([]byte(item.RelativeCreatedAt))
w.Write(topic_alt_frags[171])
if tmpl_topic_alt_vars.CurrentUser.Perms.ViewIPs {
w.Write(topic_alt_frags[172])
w.Write([]byte(item.IPAddress))
w.Write(topic_alt_frags[173])
w.Write([]byte(item.IPAddress))
w.Write(topic_alt_frags[174])
}
w.Write(topic_alt_frags[175])
}
w.Write(topic_alt_frags[176])
}
}
w.Write(topic_alt_frags[177])
if tmpl_topic_alt_vars.CurrentUser.Perms.CreateReply {
w.Write(topic_alt_frags[178])
w.Write(phrases[39])
w.Write(topic_alt_frags[179])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Avatar))
w.Write(topic_alt_frags[180])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Link))
w.Write(topic_alt_frags[181])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Name))
w.Write(topic_alt_frags[182])
if tmpl_topic_alt_vars.CurrentUser.Tag != "" {
w.Write(topic_alt_frags[183])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Tag))
w.Write(topic_alt_frags[184])
} else {
w.Write(topic_alt_frags[185])
w.Write(phrases[40])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.CurrentUser.Level)))
w.Write(topic_alt_frags[186])
}
w.Write(topic_alt_frags[187])
w.Write(phrases[41])
w.Write(topic_alt_frags[188])
w.Write([]byte(tmpl_topic_alt_vars.CurrentUser.Session))
w.Write(topic_alt_frags[189])
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
w.Write(topic_alt_frags[190])
w.Write(phrases[42])
w.Write(topic_alt_frags[191])
w.Write(phrases[43])
w.Write(topic_alt_frags[192])
w.Write(phrases[44])
w.Write(topic_alt_frags[193])
w.Write(phrases[45])
w.Write(topic_alt_frags[194])
if tmpl_topic_alt_vars.CurrentUser.Perms.UploadFiles {
w.Write(topic_alt_frags[195])
w.Write(phrases[46])
w.Write(topic_alt_frags[196])
}
w.Write(topic_alt_frags[197])
}
w.Write(topic_alt_frags[198])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_topic_alt_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[47])
w.Write(footer_frags[2])
w.Write(phrases[48])
w.Write(footer_frags[3])
w.Write(phrases[49])
w.Write(footer_frags[4])
if len(tmpl_topic_alt_vars.Header.Themes) != 0 {
for _, item := range tmpl_topic_alt_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_topic_alt_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_topic_alt_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,388 +0,0 @@
// +build !no_templategen
// Code generated by Gosora. More below:
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
package main
import "io"
import "./common"
import "strconv"
var topics_tmpl_phrase_id int
// nolint
func init() {
common.Template_topics_handle = Template_topics
common.Ctemplates = append(common.Ctemplates,"topics")
common.TmplPtrMap["topics"] = &common.Template_topics_handle
common.TmplPtrMap["o_topics"] = Template_topics
topics_tmpl_phrase_id = common.RegisterTmplPhraseNames([]string{
"menu_hamburger_tooltip",
"topics_head",
"topic_list_create_topic_tooltip",
"topic_list_create_topic_aria",
"topic_list_moderate_tooltip",
"topic_list_moderate_aria",
"topics_locked_tooltip",
"topics_locked_aria",
"topic_list_what_to_do",
"topic_list_moderate_delete",
"topic_list_moderate_lock",
"topic_list_moderate_move",
"topic_list_moderate_run",
"topic_list_move_head",
"topic_list_move_button",
"quick_topic_aria",
"quick_topic_avatar_alt",
"quick_topic_avatar_tooltip",
"quick_topic_whatsup",
"quick_topic_content_placeholder",
"quick_topic_add_poll_option",
"quick_topic_create_topic_button",
"quick_topic_add_poll_button",
"quick_topic_add_file_button",
"quick_topic_cancel_button",
"topics_list_aria",
"status_closed_tooltip",
"status_pinned_tooltip",
"topics_no_topics",
"topics_start_one",
"paginator_prev_page_aria",
"paginator_prev_page",
"paginator_next_page_aria",
"paginator_next_page",
"footer_powered_by",
"footer_made_with_love",
"footer_theme_selector_aria",
})
}
// nolint
func Template_topics(tmpl_topics_vars common.TopicListPage, w io.Writer) error {
var phrases = common.GetTmplPhrasesBytes(topics_tmpl_phrase_id)
w.Write(header_frags[0])
w.Write([]byte(tmpl_topics_vars.Title))
w.Write(header_frags[1])
w.Write([]byte(tmpl_topics_vars.Header.Site.Name))
w.Write(header_frags[2])
w.Write([]byte(tmpl_topics_vars.Header.Theme.Name))
w.Write(header_frags[3])
if len(tmpl_topics_vars.Header.Stylesheets) != 0 {
for _, item := range tmpl_topics_vars.Header.Stylesheets {
w.Write(header_frags[4])
w.Write([]byte(item))
w.Write(header_frags[5])
}
}
w.Write(header_frags[6])
if len(tmpl_topics_vars.Header.Scripts) != 0 {
for _, item := range tmpl_topics_vars.Header.Scripts {
w.Write(header_frags[7])
w.Write([]byte(item))
w.Write(header_frags[8])
}
}
w.Write(header_frags[9])
w.Write([]byte(tmpl_topics_vars.CurrentUser.Session))
w.Write(header_frags[10])
w.Write([]byte(tmpl_topics_vars.Header.Site.URL))
w.Write(header_frags[11])
if tmpl_topics_vars.Header.MetaDesc != "" {
w.Write(header_frags[12])
w.Write([]byte(tmpl_topics_vars.Header.MetaDesc))
w.Write(header_frags[13])
}
w.Write(header_frags[14])
if !tmpl_topics_vars.CurrentUser.IsSuperMod {
w.Write(header_frags[15])
}
w.Write(header_frags[16])
w.Write([]byte(common.BuildWidget("leftOfNav",tmpl_topics_vars.Header)))
w.Write(header_frags[17])
w.Write([]byte(tmpl_topics_vars.Header.Site.ShortName))
w.Write(header_frags[18])
w.Write([]byte(common.BuildWidget("topMenu",tmpl_topics_vars.Header)))
w.Write(header_frags[19])
w.Write(phrases[0])
w.Write(header_frags[20])
w.Write([]byte(common.BuildWidget("rightOfNav",tmpl_topics_vars.Header)))
w.Write(header_frags[21])
if tmpl_topics_vars.Header.Widgets.RightSidebar != "" {
w.Write(header_frags[22])
}
w.Write(header_frags[23])
if len(tmpl_topics_vars.Header.NoticeList) != 0 {
for _, item := range tmpl_topics_vars.Header.NoticeList {
w.Write(notice_frags[0])
w.Write([]byte(item))
w.Write(notice_frags[1])
}
}
w.Write(header_frags[24])
w.Write(topics_frags[0])
if tmpl_topics_vars.CurrentUser.ID != 0 {
w.Write(topics_frags[1])
}
w.Write(topics_frags[2])
w.Write(phrases[1])
w.Write(topics_frags[3])
if tmpl_topics_vars.CurrentUser.ID != 0 {
w.Write(topics_frags[4])
if len(tmpl_topics_vars.ForumList) != 0 {
w.Write(topics_frags[5])
w.Write(phrases[2])
w.Write(topics_frags[6])
w.Write(phrases[3])
w.Write(topics_frags[7])
w.Write(topics_frags[8])
w.Write(phrases[4])
w.Write(topics_frags[9])
w.Write(phrases[5])
w.Write(topics_frags[10])
} else {
w.Write(topics_frags[11])
w.Write(phrases[6])
w.Write(topics_frags[12])
w.Write(phrases[7])
w.Write(topics_frags[13])
}
w.Write(topics_frags[14])
}
w.Write(topics_frags[15])
if tmpl_topics_vars.CurrentUser.ID != 0 {
w.Write(topics_frags[16])
w.Write(phrases[8])
w.Write(topics_frags[17])
w.Write(phrases[9])
w.Write(topics_frags[18])
w.Write(phrases[10])
w.Write(topics_frags[19])
w.Write(phrases[11])
w.Write(topics_frags[20])
w.Write(phrases[12])
w.Write(topics_frags[21])
if len(tmpl_topics_vars.ForumList) != 0 {
w.Write(topics_frags[22])
w.Write([]byte(tmpl_topics_vars.CurrentUser.Session))
w.Write(topics_frags[23])
w.Write(phrases[13])
w.Write(topics_frags[24])
if len(tmpl_topics_vars.ForumList) != 0 {
for _, item := range tmpl_topics_vars.ForumList {
w.Write(topics_frags[25])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topics_frags[26])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topics_frags[27])
w.Write([]byte(item.Name))
w.Write(topics_frags[28])
}
}
w.Write(topics_frags[29])
w.Write(phrases[14])
w.Write(topics_frags[30])
w.Write(phrases[15])
w.Write(topics_frags[31])
w.Write([]byte(tmpl_topics_vars.CurrentUser.Session))
w.Write(topics_frags[32])
w.Write([]byte(tmpl_topics_vars.CurrentUser.Avatar))
w.Write(topics_frags[33])
w.Write(phrases[16])
w.Write(topics_frags[34])
w.Write(phrases[17])
w.Write(topics_frags[35])
if len(tmpl_topics_vars.ForumList) != 0 {
for _, item := range tmpl_topics_vars.ForumList {
w.Write(topics_frags[36])
if item.ID == tmpl_topics_vars.DefaultForum {
w.Write(topics_frags[37])
}
w.Write(topics_frags[38])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topics_frags[39])
w.Write([]byte(item.Name))
w.Write(topics_frags[40])
}
}
w.Write(topics_frags[41])
w.Write(phrases[18])
w.Write(topics_frags[42])
w.Write(phrases[19])
w.Write(topics_frags[43])
w.Write(phrases[20])
w.Write(topics_frags[44])
w.Write(phrases[21])
w.Write(topics_frags[45])
w.Write(phrases[22])
w.Write(topics_frags[46])
if tmpl_topics_vars.CurrentUser.Perms.UploadFiles {
w.Write(topics_frags[47])
w.Write(phrases[23])
w.Write(topics_frags[48])
}
w.Write(topics_frags[49])
w.Write(phrases[24])
w.Write(topics_frags[50])
}
}
w.Write(topics_frags[51])
w.Write(phrases[25])
w.Write(topics_frags[52])
if len(tmpl_topics_vars.TopicList) != 0 {
for _, item := range tmpl_topics_vars.TopicList {
w.Write(topics_frags[53])
w.Write([]byte(strconv.Itoa(item.ID)))
w.Write(topics_frags[54])
if item.Sticky {
w.Write(topics_frags[55])
} else {
if item.IsClosed {
w.Write(topics_frags[56])
}
}
w.Write(topics_frags[57])
w.Write([]byte(item.Creator.Link))
w.Write(topics_frags[58])
w.Write([]byte(item.Creator.Avatar))
w.Write(topics_frags[59])
w.Write([]byte(item.Creator.Name))
w.Write(topics_frags[60])
w.Write([]byte(item.Creator.Name))
w.Write(topics_frags[61])
w.Write([]byte(item.Link))
w.Write(topics_frags[62])
w.Write([]byte(item.Title))
w.Write(topics_frags[63])
w.Write([]byte(item.Title))
w.Write(topics_frags[64])
if item.ForumName != "" {
w.Write(topics_frags[65])
w.Write([]byte(item.ForumLink))
w.Write(topics_frags[66])
w.Write([]byte(item.ForumName))
w.Write(topics_frags[67])
w.Write([]byte(item.ForumName))
w.Write(topics_frags[68])
}
w.Write(topics_frags[69])
w.Write([]byte(item.Creator.Link))
w.Write(topics_frags[70])
w.Write([]byte(item.Creator.Name))
w.Write(topics_frags[71])
w.Write([]byte(item.Creator.Name))
w.Write(topics_frags[72])
if item.IsClosed {
w.Write(topics_frags[73])
w.Write(phrases[26])
w.Write(topics_frags[74])
}
if item.Sticky {
w.Write(topics_frags[75])
w.Write(phrases[27])
w.Write(topics_frags[76])
}
w.Write(topics_frags[77])
w.Write([]byte(strconv.Itoa(item.PostCount)))
w.Write(topics_frags[78])
w.Write([]byte(strconv.Itoa(item.LikeCount)))
w.Write(topics_frags[79])
if item.Sticky {
w.Write(topics_frags[80])
} else {
if item.IsClosed {
w.Write(topics_frags[81])
}
}
w.Write(topics_frags[82])
w.Write([]byte(item.LastUser.Link))
w.Write(topics_frags[83])
w.Write([]byte(item.LastUser.Avatar))
w.Write(topics_frags[84])
w.Write([]byte(item.LastUser.Name))
w.Write(topics_frags[85])
w.Write([]byte(item.LastUser.Name))
w.Write(topics_frags[86])
w.Write([]byte(item.LastUser.Link))
w.Write(topics_frags[87])
w.Write([]byte(item.LastUser.Name))
w.Write(topics_frags[88])
w.Write([]byte(item.LastUser.Name))
w.Write(topics_frags[89])
w.Write([]byte(item.RelativeLastReplyAt))
w.Write(topics_frags[90])
}
} else {
w.Write(topics_frags[91])
w.Write(phrases[28])
if tmpl_topics_vars.CurrentUser.Perms.CreateTopic {
w.Write(topics_frags[92])
w.Write(phrases[29])
w.Write(topics_frags[93])
}
w.Write(topics_frags[94])
}
w.Write(topics_frags[95])
if tmpl_topics_vars.LastPage > 1 {
w.Write(paginator_frags[0])
if tmpl_topics_vars.Page > 1 {
w.Write(paginator_frags[1])
w.Write([]byte(strconv.Itoa(tmpl_topics_vars.Page - 1)))
w.Write(paginator_frags[2])
w.Write(phrases[30])
w.Write(paginator_frags[3])
w.Write(phrases[31])
w.Write(paginator_frags[4])
w.Write([]byte(strconv.Itoa(tmpl_topics_vars.Page - 1)))
w.Write(paginator_frags[5])
}
if len(tmpl_topics_vars.PageList) != 0 {
for _, item := range tmpl_topics_vars.PageList {
w.Write(paginator_frags[6])
w.Write([]byte(strconv.Itoa(item)))
w.Write(paginator_frags[7])
w.Write([]byte(strconv.Itoa(item)))
w.Write(paginator_frags[8])
}
}
if tmpl_topics_vars.LastPage != tmpl_topics_vars.Page {
w.Write(paginator_frags[9])
w.Write([]byte(strconv.Itoa(tmpl_topics_vars.Page + 1)))
w.Write(paginator_frags[10])
w.Write([]byte(strconv.Itoa(tmpl_topics_vars.Page + 1)))
w.Write(paginator_frags[11])
w.Write(phrases[32])
w.Write(paginator_frags[12])
w.Write(phrases[33])
w.Write(paginator_frags[13])
}
w.Write(paginator_frags[14])
}
w.Write(topics_frags[96])
w.Write(footer_frags[0])
w.Write([]byte(common.BuildWidget("footer",tmpl_topics_vars.Header)))
w.Write(footer_frags[1])
w.Write(phrases[34])
w.Write(footer_frags[2])
w.Write(phrases[35])
w.Write(footer_frags[3])
w.Write(phrases[36])
w.Write(footer_frags[4])
if len(tmpl_topics_vars.Header.Themes) != 0 {
for _, item := range tmpl_topics_vars.Header.Themes {
if !item.HideFromThemes {
w.Write(footer_frags[5])
w.Write([]byte(item.Name))
w.Write(footer_frags[6])
if tmpl_topics_vars.Header.Theme.Name == item.Name {
w.Write(footer_frags[7])
}
w.Write(footer_frags[8])
w.Write([]byte(item.FriendlyName))
w.Write(footer_frags[9])
}
}
}
w.Write(footer_frags[10])
w.Write([]byte(common.BuildWidget("rightSidebar",tmpl_topics_vars.Header)))
w.Write(footer_frags[11])
return nil
}

View File

@ -1,5 +1,5 @@
<nav class="colstack_left"> <nav class="colstack_left">
<div class="colstack_item colstack_head rowhead"> <div class="colstack_item colstack_head rowhead menuhead">
<div class="rowitem"> <div class="rowitem">
<a href="/user/edit/critical/"><h1>{{lang "account_menu_head"}}</h1></a> <a href="/user/edit/critical/"><h1>{{lang "account_menu_head"}}</h1></a>
</div> </div>

View File

@ -9,15 +9,15 @@
<form action="/user/edit/critical/submit/?session={{.CurrentUser.Session}}" method="post"> <form action="/user/edit/critical/submit/?session={{.CurrentUser.Session}}" method="post">
<div class="formrow real_first_child"> <div class="formrow real_first_child">
<div class="formitem formlabel"><a>{{lang "account_password_current_password"}}</a></div> <div class="formitem formlabel"><a>{{lang "account_password_current_password"}}</a></div>
<div class="formitem"><input name="account-current-password" type="password" placeholder="*****" required /></div> <div class="formitem"><input name="account-current-password" type="password" placeholder="*****" autocomplete="current-password" required /></div>
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "account_password_new_password"}}</a></div> <div class="formitem formlabel"><a>{{lang "account_password_new_password"}}</a></div>
<div class="formitem"><input name="account-new-password" type="password" placeholder="*****" required /></div> <div class="formitem"><input name="account-new-password" type="password" placeholder="*****" autocomplete="new-password" required /></div>
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a>{{lang "account_password_confirm_password"}}</a></div> <div class="formitem formlabel"><a>{{lang "account_password_confirm_password"}}</a></div>
<div class="formitem"><input name="account-confirm-password" type="password" placeholder="*****" required /></div> <div class="formitem"><input name="account-confirm-password" type="password" placeholder="*****" autocomplete="new-password" required /></div>
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem"><button name="account-button" class="formbutton form_middle_button">{{lang "account_password_update_button"}}</button></div> <div class="formitem"><button name="account-button" class="formbutton form_middle_button">{{lang "account_password_update_button"}}</button></div>

View File

@ -67,6 +67,7 @@
<a href="/panel/logs/mod/">{{lang "panel_menu_logs"}}</a> <a href="/panel/logs/mod/">{{lang "panel_menu_logs"}}</a>
</div> </div>
{{if eq .Zone "logs"}} {{if eq .Zone "logs"}}
<div class="rowitem passive submenu"><a href="/panel/logs/regs/">{{lang "panel_menu_logs_registrations"}}</a></div>
<div class="rowitem passive submenu"><a href="/panel/logs/mod/">{{lang "panel_menu_logs_moderators"}}</a></div> <div class="rowitem passive submenu"><a href="/panel/logs/mod/">{{lang "panel_menu_logs_moderators"}}</a></div>
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive submenu"><a>{{lang "panel_menu_logs_administrators"}}</a></div>{{end}} {{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive submenu"><a>{{lang "panel_menu_logs_administrators"}}</a></div>{{end}}
{{end}} {{end}}

View File

@ -14,7 +14,7 @@
</div> </div>
{{if .CurrentUser.Perms.EditUserPassword}}<div class="formrow"> {{if .CurrentUser.Perms.EditUserPassword}}<div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_user_password"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_user_password"}}</a></div>
<div class="formitem"><input name="user-password" type="password" placeholder="*****" /></div> <div class="formitem"><input name="user-password" type="password" placeholder="*****" autocomplete="off" /></div>
</div>{{end}} </div>{{end}}
{{if .CurrentUser.Perms.EditUserEmail}}<div class="formrow"> {{if .CurrentUser.Perms.EditUserEmail}}<div class="formrow">
<div class="formitem formlabel"><a>{{lang "panel_user_email"}}</a></div> <div class="formitem formlabel"><a>{{lang "panel_user_email"}}</a></div>

View File

@ -0,0 +1,27 @@
{{template "header.html" . }}
<div class="colstack panel_stack">
{{template "panel-menu.html" . }}
<main class="colstack_right">
<div class="colstack_item colstack_head">
<div class="rowitem"><h1>{{lang "panel_logs_registration_head"}}</h1></div>
</div>
<div id="panel_modlogs" class="colstack_item rowlist">
{{range .Logs}}
<div class="rowitem panel_compactrow">
<span class="{{if not .Success}}panel_registration_attempt{{end}}" style="float: left;">
<span>{{if not .Success}}{{lang "panel_logs_registration_attempt"}}: {{end}}{{.Username}} ({{lang "panel_logs_registration_email"}}: {{.Email}}){{if .ParsedReason}} ({{lang "panel_logs_registration_reason"}}: {{.ParsedReason}}){{end}}</span>
{{if $.CurrentUser.Perms.ViewIPs}}<br /><small style="margin-left: 2px;font-size: 12px;">{{.IPAddress}}</small>{{end}}
</span>
<span class="to_right">
<span style="font-size: 14px;">{{.DoneAt}}</span>
</span>
<div style="clear: both;"></div>
</div>
{{end}}
</div>
{{if gt .LastPage 1}}
{{template "paginator.html" . }}
{{end}}
</main>
</div>
{{template "footer.html" . }}

View File

@ -19,7 +19,7 @@
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem formlabel"><a id="confirm_password_label">{{lang "register_account_confirm_password"}}</a></div> <div class="formitem formlabel"><a id="confirm_password_label">{{lang "register_account_confirm_password"}}</a></div>
<div class="formitem"><input name="confirm_password" type="password" placeholder="*****" aria-labelledby="confirm_password_label" required /></div> <div class="formitem"><input name="confirm_password" type="password" placeholder="*****" autocomplete="new-password" aria-labelledby="confirm_password_label" required /></div>
</div> </div>
<div class="formrow"> <div class="formrow">
<div class="formitem"><button name="register-button" class="formbutton">{{lang "register_submit_button"}}</button></div> <div class="formitem"><button name="register-button" class="formbutton">{{lang "register_submit_button"}}</button></div>

View File

@ -234,9 +234,14 @@ ul {
display: inline-block; display: inline-block;
} }
.colstack_head a h1 { .colstack_head a h1 {
font-size: 16px;
color: var(--primary-link-color); color: var(--primary-link-color);
} }
.colstack_head.menuhead a h1 {
font-size: 16px;
}
.colstack_head h1 {
font-size: 18px;
}
h1, h3 { h1, h3 {
-webkit-margin-before: 0; -webkit-margin-before: 0;
-webkit-margin-after: 0; -webkit-margin-after: 0;