Moved the tree counter node into it's own experimental area.
Added ItemList microdata to /forum/, /forums/, and /topics. Moved the meta description for /forums/ to the right place. Began revamping the Control Panel menu.
This commit is contained in:
parent
21999cd7c6
commit
ac9623ab6b
|
@ -245,20 +245,3 @@ func (counter *DefaultTopicViewCounter) Bump(topicID int) {
|
||||||
counter.oddLock.Unlock()
|
counter.oddLock.Unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type TreeCounterNode struct {
|
|
||||||
Value int64
|
|
||||||
Zero *TreeCounterNode
|
|
||||||
One *TreeCounterNode
|
|
||||||
Parent *TreeCounterNode
|
|
||||||
}
|
|
||||||
|
|
||||||
// MEGA EXPERIMENTAL. Start from the right-most bits in the integer and move leftwards
|
|
||||||
type TreeTopicViewCounter struct {
|
|
||||||
zero *TreeCounterNode
|
|
||||||
one *TreeCounterNode
|
|
||||||
}
|
|
||||||
|
|
||||||
func (counter *TreeTopicViewCounter) Bump(topicID int64) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -125,6 +125,7 @@ type PanelPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ItemList []interface{}
|
ItemList []interface{}
|
||||||
Something interface{}
|
Something interface{}
|
||||||
}
|
}
|
||||||
|
@ -144,6 +145,7 @@ type PanelDashboardPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
GridItems []GridElement
|
GridItems []GridElement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +154,7 @@ type PanelThemesPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
PrimaryThemes []*Theme
|
PrimaryThemes []*Theme
|
||||||
VariantThemes []*Theme
|
VariantThemes []*Theme
|
||||||
}
|
}
|
||||||
|
@ -161,6 +164,7 @@ type PanelUserPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ItemList []User
|
ItemList []User
|
||||||
PageList []int
|
PageList []int
|
||||||
Page int
|
Page int
|
||||||
|
@ -172,6 +176,7 @@ type PanelGroupPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ItemList []GroupAdmin
|
ItemList []GroupAdmin
|
||||||
PageList []int
|
PageList []int
|
||||||
Page int
|
Page int
|
||||||
|
@ -183,6 +188,7 @@ type PanelEditGroupPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ID int
|
ID int
|
||||||
Name string
|
Name string
|
||||||
Tag string
|
Tag string
|
||||||
|
@ -200,6 +206,7 @@ type PanelEditForumPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ID int
|
ID int
|
||||||
Name string
|
Name string
|
||||||
Desc string
|
Desc string
|
||||||
|
@ -208,11 +215,6 @@ type PanelEditForumPage struct {
|
||||||
Groups []GroupForumPermPreset
|
Groups []GroupForumPermPreset
|
||||||
}
|
}
|
||||||
|
|
||||||
/*type NameLangPair struct {
|
|
||||||
Name string
|
|
||||||
LangStr string
|
|
||||||
}*/
|
|
||||||
|
|
||||||
type NameLangToggle struct {
|
type NameLangToggle struct {
|
||||||
Name string
|
Name string
|
||||||
LangStr string
|
LangStr string
|
||||||
|
@ -224,6 +226,7 @@ type PanelEditGroupPermsPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
ID int
|
ID int
|
||||||
Name string
|
Name string
|
||||||
LocalPerms []NameLangToggle
|
LocalPerms []NameLangToggle
|
||||||
|
@ -243,6 +246,7 @@ type PanelBackupPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
Backups []BackupItem
|
Backups []BackupItem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,6 +261,7 @@ type PanelLogsPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
Logs []LogItem
|
Logs []LogItem
|
||||||
PageList []int
|
PageList []int
|
||||||
Page int
|
Page int
|
||||||
|
@ -268,6 +273,7 @@ type PanelDebugPage struct {
|
||||||
CurrentUser User
|
CurrentUser User
|
||||||
Header *HeaderVars
|
Header *HeaderVars
|
||||||
Stats PanelStats
|
Stats PanelStats
|
||||||
|
Zone string
|
||||||
Uptime string
|
Uptime string
|
||||||
OpenConns int
|
OpenConns int
|
||||||
DBAdapter string
|
DBAdapter string
|
||||||
|
|
|
@ -25,6 +25,7 @@ var ShutdownTasks []func() error
|
||||||
var taskStmts TaskStmts
|
var taskStmts TaskStmts
|
||||||
var lastSync time.Time
|
var lastSync time.Time
|
||||||
|
|
||||||
|
// TODO: Add a TaskInits.Add
|
||||||
func init() {
|
func init() {
|
||||||
lastSync = time.Now()
|
lastSync = time.Now()
|
||||||
DbInits.Add(func(acc *qgen.Accumulator) error {
|
DbInits.Add(func(acc *qgen.Accumulator) error {
|
||||||
|
|
|
@ -141,7 +141,7 @@ func routePanel(w http.ResponseWriter, r *http.Request, user common.User) common
|
||||||
gridElements = append(gridElements, common.GridElement{"dash-visitorsperweek", "2 visitors / week", 13, "grid_stat stat_disabled", "", "", "Coming Soon!" /*"The number of unique visitors we've had over the last 7 days"*/})
|
gridElements = append(gridElements, common.GridElement{"dash-visitorsperweek", "2 visitors / week", 13, "grid_stat stat_disabled", "", "", "Coming Soon!" /*"The number of unique visitors we've had over the last 7 days"*/})
|
||||||
gridElements = append(gridElements, common.GridElement{"dash-postsperuser", "5 posts / user / week", 14, "grid_stat stat_disabled", "", "", "Coming Soon!" /*"The average number of posts made by each active user over the past week"*/})
|
gridElements = append(gridElements, common.GridElement{"dash-postsperuser", "5 posts / user / week", 14, "grid_stat stat_disabled", "", "", "Coming Soon!" /*"The average number of posts made by each active user over the past week"*/})
|
||||||
|
|
||||||
pi := common.PanelDashboardPage{common.GetTitlePhrase("panel-dashboard"), user, headerVars, stats, gridElements}
|
pi := common.PanelDashboardPage{common.GetTitlePhrase("panel-dashboard"), user, headerVars, stats, "dashboard", gridElements}
|
||||||
if common.PreRenderHooks["pre_render_panel_dashboard"] != nil {
|
if common.PreRenderHooks["pre_render_panel_dashboard"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_dashboard", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_dashboard", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -180,7 +180,7 @@ func routePanelForums(w http.ResponseWriter, r *http.Request, user common.User)
|
||||||
forumList = append(forumList, fadmin)
|
forumList = append(forumList, fadmin)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-forums"), user, headerVars, stats, forumList, nil}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-forums"), user, headerVars, stats, "forums", forumList, nil}
|
||||||
if common.PreRenderHooks["pre_render_panel_forums"] != nil {
|
if common.PreRenderHooks["pre_render_panel_forums"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_forums", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_forums", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -244,7 +244,7 @@ func routePanelForumsDelete(w http.ResponseWriter, r *http.Request, user common.
|
||||||
confirmMsg := "Are you sure you want to delete the '" + forum.Name + "' forum?"
|
confirmMsg := "Are you sure you want to delete the '" + forum.Name + "' forum?"
|
||||||
yousure := common.AreYouSure{"/panel/forums/delete/submit/" + strconv.Itoa(fid), confirmMsg}
|
yousure := common.AreYouSure{"/panel/forums/delete/submit/" + strconv.Itoa(fid), confirmMsg}
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-delete-forum"), user, headerVars, stats, tList, yousure}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-delete-forum"), user, headerVars, stats, "forums", tList, yousure}
|
||||||
if common.PreRenderHooks["pre_render_panel_delete_forum"] != nil {
|
if common.PreRenderHooks["pre_render_panel_delete_forum"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_delete_forum", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_delete_forum", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -320,7 +320,7 @@ func routePanelForumsEdit(w http.ResponseWriter, r *http.Request, user common.Us
|
||||||
gplist = append(gplist, common.GroupForumPermPreset{group, common.ForumPermsToGroupForumPreset(group.Forums[fid])})
|
gplist = append(gplist, common.GroupForumPermPreset{group, common.ForumPermsToGroupForumPreset(group.Forums[fid])})
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelEditForumPage{common.GetTitlePhrase("panel-edit-forum"), user, headerVars, stats, forum.ID, forum.Name, forum.Desc, forum.Active, forum.Preset, gplist}
|
pi := common.PanelEditForumPage{common.GetTitlePhrase("panel-edit-forum"), user, headerVars, stats, "forums", forum.ID, forum.Name, forum.Desc, forum.Active, forum.Preset, gplist}
|
||||||
if common.PreRenderHooks["pre_render_panel_edit_forum"] != nil {
|
if common.PreRenderHooks["pre_render_panel_edit_forum"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_edit_forum", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_edit_forum", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -458,7 +458,7 @@ func routePanelSettings(w http.ResponseWriter, r *http.Request, user common.User
|
||||||
settingList[setting.Name] = setting.Content
|
settingList[setting.Name] = setting.Content
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-settings"), user, headerVars, stats, tList, settingList}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-settings"), user, headerVars, stats, "settings", tList, settingList}
|
||||||
if common.PreRenderHooks["pre_render_panel_settings"] != nil {
|
if common.PreRenderHooks["pre_render_panel_settings"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_settings", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_settings", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -504,7 +504,7 @@ func routePanelSettingEdit(w http.ResponseWriter, r *http.Request, user common.U
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-setting"), user, headerVars, stats, itemList, setting}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-setting"), user, headerVars, stats, "settings", itemList, setting}
|
||||||
if common.PreRenderHooks["pre_render_panel_setting"] != nil {
|
if common.PreRenderHooks["pre_render_panel_setting"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_setting", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_setting", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -549,7 +549,7 @@ func routePanelWordFilters(w http.ResponseWriter, r *http.Request, user common.U
|
||||||
}
|
}
|
||||||
|
|
||||||
var filterList = common.WordFilterBox.Load().(common.WordFilterMap)
|
var filterList = common.WordFilterBox.Load().(common.WordFilterMap)
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-word-filters"), user, headerVars, stats, tList, filterList}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-word-filters"), user, headerVars, stats, "word-filters", tList, filterList}
|
||||||
if common.PreRenderHooks["pre_render_panel_word_filters"] != nil {
|
if common.PreRenderHooks["pre_render_panel_word_filters"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_word_filters", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_word_filters", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -610,7 +610,7 @@ func routePanelWordFiltersEdit(w http.ResponseWriter, r *http.Request, user comm
|
||||||
|
|
||||||
_ = wfid
|
_ = wfid
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-word-filter"), user, headerVars, stats, tList, nil}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-word-filter"), user, headerVars, stats, "word-filters", tList, nil}
|
||||||
if common.PreRenderHooks["pre_render_panel_word_filters_edit"] != nil {
|
if common.PreRenderHooks["pre_render_panel_word_filters_edit"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_word_filters_edit", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_word_filters_edit", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -703,7 +703,7 @@ func routePanelPlugins(w http.ResponseWriter, r *http.Request, user common.User)
|
||||||
pluginList = append(pluginList, plugin)
|
pluginList = append(pluginList, plugin)
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-plugins"), user, headerVars, stats, pluginList, nil}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-plugins"), user, headerVars, stats, "plugins", pluginList, nil}
|
||||||
if common.PreRenderHooks["pre_render_panel_plugins"] != nil {
|
if common.PreRenderHooks["pre_render_panel_plugins"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_plugins", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_plugins", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -924,7 +924,7 @@ func routePanelUsers(w http.ResponseWriter, r *http.Request, user common.User) c
|
||||||
}
|
}
|
||||||
|
|
||||||
pageList := common.Paginate(stats.Users, perPage, 5)
|
pageList := common.Paginate(stats.Users, perPage, 5)
|
||||||
pi := common.PanelUserPage{common.GetTitlePhrase("panel-users"), user, headerVars, stats, userList, pageList, page, lastPage}
|
pi := common.PanelUserPage{common.GetTitlePhrase("panel-users"), user, headerVars, stats, "users", userList, pageList, page, lastPage}
|
||||||
if common.PreRenderHooks["pre_render_panel_users"] != nil {
|
if common.PreRenderHooks["pre_render_panel_users"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_users", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_users", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -979,7 +979,7 @@ func routePanelUsersEdit(w http.ResponseWriter, r *http.Request, user common.Use
|
||||||
groupList = append(groupList, group)
|
groupList = append(groupList, group)
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-user"), user, headerVars, stats, groupList, targetUser}
|
pi := common.PanelPage{common.GetTitlePhrase("panel-edit-user"), user, headerVars, stats, "users", groupList, targetUser}
|
||||||
if common.PreRenderHooks["pre_render_panel_edit_user"] != nil {
|
if common.PreRenderHooks["pre_render_panel_edit_user"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_edit_user", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_edit_user", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1120,7 +1120,7 @@ func routePanelGroups(w http.ResponseWriter, r *http.Request, user common.User)
|
||||||
//log.Printf("groupList: %+v\n", groupList)
|
//log.Printf("groupList: %+v\n", groupList)
|
||||||
|
|
||||||
pageList := common.Paginate(stats.Groups, perPage, 5)
|
pageList := common.Paginate(stats.Groups, perPage, 5)
|
||||||
pi := common.PanelGroupPage{common.GetTitlePhrase("panel-groups"), user, headerVars, stats, groupList, pageList, page, lastPage}
|
pi := common.PanelGroupPage{common.GetTitlePhrase("panel-groups"), user, headerVars, stats, "groups", groupList, pageList, page, lastPage}
|
||||||
if common.PreRenderHooks["pre_render_panel_groups"] != nil {
|
if common.PreRenderHooks["pre_render_panel_groups"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_groups", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_groups", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1179,7 +1179,7 @@ func routePanelGroupsEdit(w http.ResponseWriter, r *http.Request, user common.Us
|
||||||
|
|
||||||
disableRank := !user.Perms.EditGroupGlobalPerms || (group.ID == 6)
|
disableRank := !user.Perms.EditGroupGlobalPerms || (group.ID == 6)
|
||||||
|
|
||||||
pi := common.PanelEditGroupPage{common.GetTitlePhrase("panel-edit-group"), user, headerVars, stats, group.ID, group.Name, group.Tag, rank, disableRank}
|
pi := common.PanelEditGroupPage{common.GetTitlePhrase("panel-edit-group"), user, headerVars, stats, "groups", group.ID, group.Name, group.Tag, rank, disableRank}
|
||||||
if common.PreRenderHooks["pre_render_panel_edit_group"] != nil {
|
if common.PreRenderHooks["pre_render_panel_edit_group"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_edit_group", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_edit_group", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1257,7 +1257,7 @@ func routePanelGroupsEditPerms(w http.ResponseWriter, r *http.Request, user comm
|
||||||
globalPerms = append(globalPerms, common.NameLangToggle{"ViewIPs", common.GetGlobalPermPhrase("ViewIPs"), group.Perms.ViewIPs})
|
globalPerms = append(globalPerms, common.NameLangToggle{"ViewIPs", common.GetGlobalPermPhrase("ViewIPs"), group.Perms.ViewIPs})
|
||||||
globalPerms = append(globalPerms, common.NameLangToggle{"UploadFiles", common.GetGlobalPermPhrase("UploadFiles"), group.Perms.UploadFiles})
|
globalPerms = append(globalPerms, common.NameLangToggle{"UploadFiles", common.GetGlobalPermPhrase("UploadFiles"), group.Perms.UploadFiles})
|
||||||
|
|
||||||
pi := common.PanelEditGroupPermsPage{common.GetTitlePhrase("panel-edit-group"), user, headerVars, stats, group.ID, group.Name, localPerms, globalPerms}
|
pi := common.PanelEditGroupPermsPage{common.GetTitlePhrase("panel-edit-group"), user, headerVars, stats, "groups", group.ID, group.Name, localPerms, globalPerms}
|
||||||
if common.PreRenderHooks["pre_render_panel_edit_group_perms"] != nil {
|
if common.PreRenderHooks["pre_render_panel_edit_group_perms"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_edit_group_perms", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_edit_group_perms", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1486,7 +1486,7 @@ func routePanelThemes(w http.ResponseWriter, r *http.Request, user common.User)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelThemesPage{common.GetTitlePhrase("panel-themes"), user, headerVars, stats, pThemeList, vThemeList}
|
pi := common.PanelThemesPage{common.GetTitlePhrase("panel-themes"), user, headerVars, stats, "themes", pThemeList, vThemeList}
|
||||||
if common.PreRenderHooks["pre_render_panel_themes"] != nil {
|
if common.PreRenderHooks["pre_render_panel_themes"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_themes", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_themes", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1603,7 +1603,7 @@ func routePanelBackups(w http.ResponseWriter, r *http.Request, user common.User,
|
||||||
backupList = append(backupList, common.BackupItem{backupFile.Name(), backupFile.ModTime()})
|
backupList = append(backupList, common.BackupItem{backupFile.Name(), backupFile.ModTime()})
|
||||||
}
|
}
|
||||||
|
|
||||||
pi := common.PanelBackupPage{common.GetTitlePhrase("panel-backups"), user, headerVars, stats, backupList}
|
pi := common.PanelBackupPage{common.GetTitlePhrase("panel-backups"), user, headerVars, stats, "backups", backupList}
|
||||||
err = common.Templates.ExecuteTemplate(w, "panel-backups.html", pi)
|
err = common.Templates.ExecuteTemplate(w, "panel-backups.html", pi)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return common.InternalError(err, w, r)
|
return common.InternalError(err, w, r)
|
||||||
|
@ -1701,7 +1701,7 @@ func routePanelLogsMod(w http.ResponseWriter, r *http.Request, user common.User)
|
||||||
}
|
}
|
||||||
|
|
||||||
pageList := common.Paginate(logCount, perPage, 5)
|
pageList := common.Paginate(logCount, perPage, 5)
|
||||||
pi := common.PanelLogsPage{common.GetTitlePhrase("panel-mod-logs"), user, headerVars, stats, logs, pageList, page, lastPage}
|
pi := common.PanelLogsPage{common.GetTitlePhrase("panel-mod-logs"), user, headerVars, stats, "logs", logs, pageList, page, lastPage}
|
||||||
if common.PreRenderHooks["pre_render_panel_mod_log"] != nil {
|
if common.PreRenderHooks["pre_render_panel_mod_log"] != nil {
|
||||||
if common.RunPreRenderHook("pre_render_panel_mod_log", w, r, &user, &pi) {
|
if common.RunPreRenderHook("pre_render_panel_mod_log", w, r, &user, &pi) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -1725,7 +1725,7 @@ func routePanelDebug(w http.ResponseWriter, r *http.Request, user common.User) c
|
||||||
openConnCount := dbStats.OpenConnections
|
openConnCount := dbStats.OpenConnections
|
||||||
// Disk I/O?
|
// Disk I/O?
|
||||||
|
|
||||||
pi := common.PanelDebugPage{common.GetTitlePhrase("panel-debug"), user, headerVars, stats, uptime, openConnCount, dbAdapter}
|
pi := common.PanelDebugPage{common.GetTitlePhrase("panel-debug"), user, headerVars, stats, "debug", uptime, openConnCount, dbAdapter}
|
||||||
err := common.Templates.ExecuteTemplate(w, "panel-debug.html", pi)
|
err := common.Templates.ExecuteTemplate(w, "panel-debug.html", pi)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return common.InternalError(err, w, r)
|
return common.InternalError(err, w, r)
|
||||||
|
|
|
@ -303,7 +303,6 @@ func routeForum(w http.ResponseWriter, r *http.Request, user common.User, sfid s
|
||||||
return common.InternalError(err, w, r)
|
return common.InternalError(err, w, r)
|
||||||
}
|
}
|
||||||
headerVars.Zone = "view_forum"
|
headerVars.Zone = "view_forum"
|
||||||
headerVars.MetaDesc = headerVars.Settings["meta_desc"].(string)
|
|
||||||
|
|
||||||
// Calculate the offset
|
// Calculate the offset
|
||||||
var offset int
|
var offset int
|
||||||
|
@ -390,6 +389,7 @@ func routeForums(w http.ResponseWriter, r *http.Request, user common.User) commo
|
||||||
return ferr
|
return ferr
|
||||||
}
|
}
|
||||||
headerVars.Zone = "forums"
|
headerVars.Zone = "forums"
|
||||||
|
headerVars.MetaDesc = headerVars.Settings["meta_desc"].(string)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
var forumList []common.Forum
|
var forumList []common.Forum
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
{{if ne .LastPage .Page}}<link rel="prerender" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}" />
|
{{if ne .LastPage .Page}}<link rel="prerender" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}" />
|
||||||
<div id="nextFloat" class="next_button"><a class="next_link" aria-label="Go to the next page" rel="next" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
<div id="nextFloat" class="next_button"><a class="next_link" aria-label="Go to the next page" rel="next" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
||||||
|
|
||||||
<main>
|
<main itemscope itemtype="http://schema.org/ItemList">
|
||||||
<div id="forum_head_block" class="rowblock rowhead topic_list_title_block">
|
<div id="forum_head_block" class="rowblock rowhead topic_list_title_block">
|
||||||
<div class="rowitem forum_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}">
|
<div class="rowitem forum_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}">
|
||||||
<h1>{{.Title}}</h1>
|
<h1 itemprop="name">{{.Title}}</h1>
|
||||||
</div>
|
</div>
|
||||||
{{if ne .CurrentUser.ID 0}}
|
{{if ne .CurrentUser.ID 0}}
|
||||||
{{if .CurrentUser.Perms.CreateTopic}}
|
{{if .CurrentUser.Perms.CreateTopic}}
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<span class="selector"></span>
|
<span class="selector"></span>
|
||||||
<a href="{{.Creator.Link}}"><img src="{{.Creator.Avatar}}" height="64" alt="{{.Creator.Name}}'s Avatar" title="{{.Creator.Name}}'s Avatar" /></a>
|
<a href="{{.Creator.Link}}"><img src="{{.Creator.Avatar}}" height="64" alt="{{.Creator.Name}}'s Avatar" title="{{.Creator.Name}}'s Avatar" /></a>
|
||||||
<span class="topic_inner_left">
|
<span class="topic_inner_left">
|
||||||
<a class="rowtopic" href="{{.Link}}"><span>{{.Title}}</span></a>
|
<a class="rowtopic" href="{{.Link}}" itemprop="itemListElement"><span>{{.Title}}</span></a>
|
||||||
<br /><a class="rowsmall starter" href="{{.Creator.Link}}">{{.Creator.Name}}</a>
|
<br /><a class="rowsmall starter" href="{{.Creator.Link}}">{{.Creator.Name}}</a>
|
||||||
{{/** TODO: Avoid the double '|' when both .IsClosed and .Sticky are set to true. We could probably do this with CSS **/}}
|
{{/** TODO: Avoid the double '|' when both .IsClosed and .Sticky are set to true. We could probably do this with CSS **/}}
|
||||||
{{if .IsClosed}}<span class="rowsmall topic_status_e topic_status_closed" title="Status: Closed"> | 🔒︎</span>{{end}}
|
{{if .IsClosed}}<span class="rowsmall topic_status_e topic_status_closed" title="Status: Closed"> | 🔒︎</span>{{end}}
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<main>
|
<main itemscope itemtype="http://schema.org/ItemList">
|
||||||
|
|
||||||
<div class="rowblock opthead">
|
<div class="rowblock opthead">
|
||||||
<div class="rowitem"><h1>Forums</h1></div>
|
<div class="rowitem"><h1 itemprop="name">Forums</h1></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rowblock forum_list">
|
<div class="rowblock forum_list">
|
||||||
{{range .ItemList}}<div class="rowitem {{if (.Desc) or (.LastTopic.Title)}}datarow{{end}}">
|
{{range .ItemList}}<div class="rowitem {{if (.Desc) or (.LastTopic.Title)}}datarow {{end}}"itemprop="itemListElement" itemscope
|
||||||
|
itemtype="http://schema.org/ListItem">
|
||||||
<span class="forum_left shift_left">
|
<span class="forum_left shift_left">
|
||||||
<a href="{{.Link}}">{{.Name}}</a>
|
<a href="{{.Link}}" itemprop="item">{{.Name}}</a>
|
||||||
{{if .Desc}}
|
{{if .Desc}}
|
||||||
<br /><span class="rowsmall">{{.Desc}}</span>
|
<br /><span class="rowsmall" itemprop="description">{{.Desc}}</span>
|
||||||
{{else}}
|
{{else}}
|
||||||
<br /><span class="rowsmall" style="font-style: italic;">No description</span>
|
<br /><span class="rowsmall" style="font-style: italic;">No description</span>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
<nav class="colstack_left" aria-label="The control panel menu">
|
<nav class="colstack_left" aria-label="The control panel menu">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head submenu_fallback">
|
||||||
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="colstack_item rowmenu">
|
<div class="colstack_item rowmenu submenu_fallback">
|
||||||
<div class="rowitem passive"><a href="/panel/logs/mod/">Moderation Logs</a></div>
|
<div class="rowitem passive"><a href="/panel/logs/mod/">Moderation Logs</a></div>
|
||||||
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive"><a>Administration Logs</a></div>{{end}}
|
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive"><a>Administration Logs</a></div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,6 +38,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main id="panel_dashboard_right" class="colstack_right">
|
<main id="panel_dashboard_right" class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main id="panel_dashboard_right" class="colstack_right">
|
<main id="panel_dashboard_right" class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<script>
|
<script>
|
||||||
var form_vars = {'perm_preset': ['can_moderate','can_post','read_only','no_access','default','custom']};
|
var form_vars = {'perm_preset': ['can_moderate','can_post','read_only','no_access','default','custom']};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<script>var form_vars = {
|
<script>var form_vars = {
|
||||||
'forum_active': ['Hide','Show'],
|
'forum_active': ['Hide','Show'],
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
<nav class="colstack_left" aria-label="The control panel menu">
|
<nav class="colstack_left" aria-label="The control panel menu">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="/panel/groups/edit/{{.ID}}">Group Editor</a></div>
|
<div class="rowitem"><a href="/panel/groups/edit/{{.ID}}">Group Editor</a></div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
<nav class="colstack_left" aria-label="The control panel menu">
|
<nav class="colstack_left" aria-label="The control panel menu">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="/panel/groups/edit/{{.ID}}">Group Editor</a></div>
|
<div class="rowitem"><a href="/panel/groups/edit/{{.ID}}">Group Editor</a></div>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -20,9 +20,32 @@
|
||||||
{{if .CurrentUser.Perms.ManageThemes}}<div class="rowitem passive">
|
{{if .CurrentUser.Perms.ManageThemes}}<div class="rowitem passive">
|
||||||
<a href="/panel/themes/">Themes</a> <a class="menu_stats" href="#">({{.Stats.Themes}})</a>
|
<a href="/panel/themes/">Themes</a> <a class="menu_stats" href="#">({{.Stats.Themes}})</a>
|
||||||
</div>{{end}}
|
</div>{{end}}
|
||||||
|
</div>
|
||||||
|
<div class="colstack_item colstack_head">
|
||||||
|
<div class="rowitem"><a href="#">Events</a></div>
|
||||||
|
</div>
|
||||||
|
<div class="colstack_item rowmenu">
|
||||||
|
<div class="rowitem passive">
|
||||||
|
<a href="/panel/analytics/views/">Statistics</a>
|
||||||
|
</div>
|
||||||
|
{{if eq .Zone "analytics"}}
|
||||||
|
<div class="rowitem passive submenu">
|
||||||
|
<a href="/panel/analytics/posts/">Posts</a>
|
||||||
|
</div>
|
||||||
|
<div class="rowitem passive submenu">
|
||||||
|
<a href="/panel/analytics/crawlers/">Crawlers</a>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
<div class="rowitem passive">
|
<div class="rowitem passive">
|
||||||
<a href="/forum/1">Reports</a> <a class="menu_stats" href="#">({{.Stats.Reports}})</a>
|
<a href="/forum/1">Reports</a> <a class="menu_stats" href="#">({{.Stats.Reports}})</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="rowitem passive">
|
||||||
|
<a href="/panel/logs/mod/">Logs</a>
|
||||||
|
</div>
|
||||||
|
{{if eq .Zone "logs"}}
|
||||||
|
<div class="rowitem passive submenu"><a href="/panel/logs/mod/">Moderators</a></div>
|
||||||
|
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive submenu"><a>Administrators</a></div>{{end}}
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="#">System</a></div>
|
<div class="rowitem"><a href="#">System</a></div>
|
||||||
|
@ -34,9 +57,6 @@
|
||||||
{{if .CurrentUser.IsSuperAdmin}}<div class="rowitem passive">
|
{{if .CurrentUser.IsSuperAdmin}}<div class="rowitem passive">
|
||||||
<a href="/panel/backups/">Backups</a>
|
<a href="/panel/backups/">Backups</a>
|
||||||
</div>{{end}}
|
</div>{{end}}
|
||||||
<div class="rowitem passive">
|
|
||||||
<a href="/panel/logs/mod/">Logs</a>
|
|
||||||
</div>
|
|
||||||
{{if .CurrentUser.IsAdmin}}<div class="rowitem passive">
|
{{if .CurrentUser.IsAdmin}}<div class="rowitem passive">
|
||||||
<a href="/panel/debug/">Debug</a>
|
<a href="/panel/debug/">Debug</a>
|
||||||
</div>{{end}}
|
</div>{{end}}
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
<nav class="colstack_left" aria-label="The control panel menu">
|
<nav class="colstack_left" aria-label="The control panel menu">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head submenu_fallback">
|
||||||
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="colstack_item rowmenu">
|
<div class="colstack_item rowmenu submenu_fallback">
|
||||||
<div class="rowitem passive"><a href="/panel/logs/mod/">Moderation Logs</a></div>
|
<div class="rowitem passive"><a href="/panel/logs/mod/">Moderation Logs</a></div>
|
||||||
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive"><a>Administration Logs</a></div>{{end}}
|
{{if .CurrentUser.Perms.ViewAdminLogs}}<div class="rowitem passive"><a>Administration Logs</a></div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -39,6 +38,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
|
@ -15,6 +14,5 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
<nav class="colstack_left" aria-label="The control panel menu">
|
<nav class="colstack_left" aria-label="The control panel menu">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack">
|
<div class="colstack panel_stack">
|
||||||
|
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<main class="colstack_right">
|
<main class="colstack_right">
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<main>
|
<main itemscope itemtype="http://schema.org/ItemList">
|
||||||
|
|
||||||
<div class="rowblock rowhead topic_list_title_block">
|
<div class="rowblock rowhead topic_list_title_block">
|
||||||
<div class="rowitem topic_list_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}"><h1>All Topics</h1></div>
|
<div class="rowitem topic_list_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}"><h1 itemprop="name">All Topics</h1></div>
|
||||||
{{if ne .CurrentUser.ID 0}}
|
{{if ne .CurrentUser.ID 0}}
|
||||||
{{if .ForumList}}
|
{{if .ForumList}}
|
||||||
<div class="pre_opt auto_hide"></div>
|
<div class="pre_opt auto_hide"></div>
|
||||||
|
@ -74,7 +74,7 @@
|
||||||
<span class="selector"></span>
|
<span class="selector"></span>
|
||||||
<a href="{{.Creator.Link}}"><img src="{{.Creator.Avatar}}" height="64" alt="{{.Creator.Name}}'s Avatar" title="{{.Creator.Name}}'s Avatar" /></a>
|
<a href="{{.Creator.Link}}"><img src="{{.Creator.Avatar}}" height="64" alt="{{.Creator.Name}}'s Avatar" title="{{.Creator.Name}}'s Avatar" /></a>
|
||||||
<span class="topic_inner_left">
|
<span class="topic_inner_left">
|
||||||
<a class="rowtopic" href="{{.Link}}"><span>{{.Title}}</span></a> {{if .ForumName}}<a class="rowsmall parent_forum" href="{{.ForumLink}}">{{.ForumName}}</a>{{end}}
|
<a class="rowtopic" href="{{.Link}}" itemprop="itemListElement"><span>{{.Title}}</span></a> {{if .ForumName}}<a class="rowsmall parent_forum" href="{{.ForumLink}}">{{.ForumName}}</a>{{end}}
|
||||||
<br /><a class="rowsmall starter" href="{{.Creator.Link}}">{{.Creator.Name}}</a>
|
<br /><a class="rowsmall starter" href="{{.Creator.Link}}">{{.Creator.Name}}</a>
|
||||||
{{/** TODO: Avoid the double '|' when both .IsClosed and .Sticky are set to true. We could probably do this with CSS **/}}
|
{{/** TODO: Avoid the double '|' when both .IsClosed and .Sticky are set to true. We could probably do this with CSS **/}}
|
||||||
{{if .IsClosed}}<span class="rowsmall topic_status_e topic_status_closed" title="Status: Closed"> | 🔒︎</span>{{end}}
|
{{if .IsClosed}}<span class="rowsmall topic_status_e topic_status_closed" title="Status: Closed"> | 🔒︎</span>{{end}}
|
||||||
|
|
|
@ -68,7 +68,7 @@ body, #back {
|
||||||
}
|
}
|
||||||
.nav {
|
.nav {
|
||||||
padding-top: 16px;
|
padding-top: 16px;
|
||||||
border-bottom: 2px solid var(--header-border-color);
|
border-bottom: 1.5px solid var(--header-border-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
li {
|
||||||
|
|
|
@ -1,3 +1,44 @@
|
||||||
|
#back {
|
||||||
|
padding-top: 0px;
|
||||||
|
}
|
||||||
|
#main {
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
.colstack_left {
|
||||||
|
background-color: hsl(0,0%,90%);
|
||||||
|
}
|
||||||
|
.colstack_left .colstack_head {
|
||||||
|
margin-top: -1px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
margin-left: 0px;
|
||||||
|
padding-bottom: 12px;
|
||||||
|
padding-top: 12px;
|
||||||
|
border-bottom: 1.5px solid var(--element-border-color);
|
||||||
|
}
|
||||||
|
.colstack_left .rowmenu .passive:first-child {
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
.colstack_left .rowmenu .passive:last-child {
|
||||||
|
border-bottom: 0.5px solid var(--element-border-color) !important;
|
||||||
|
}
|
||||||
|
/*.colstack_left > *:not(.colstack_head):last-child {
|
||||||
|
border-bottom: 0.5px solid var(--element-border-color) !important;
|
||||||
|
}*/
|
||||||
|
.submenu {
|
||||||
|
margin-left: 12px;
|
||||||
|
}
|
||||||
|
.submenu_fallback {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.colstack_right {
|
||||||
|
margin-right: 14px;
|
||||||
|
margin-top: 14px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
margin-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
.complex_rowlist {
|
.complex_rowlist {
|
||||||
background-color: inherit !important;
|
background-color: inherit !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
|
|
Loading…
Reference in New Issue