Added support for screen readers.
Refactored the setting system to make it thread-safe. Planned out the task system. Fixed the closed topic status header.
This commit is contained in:
parent
bfff7f3dee
commit
409719d10e
23
main.go
23
main.go
|
@ -32,7 +32,6 @@ var startTime time.Time
|
||||||
//var timeLocation *time.Location
|
//var timeLocation *time.Location
|
||||||
var templates = template.New("")
|
var templates = template.New("")
|
||||||
//var no_css_tmpl template.CSS = template.CSS("")
|
//var no_css_tmpl template.CSS = template.CSS("")
|
||||||
var settings map[string]interface{} = make(map[string]interface{})
|
|
||||||
var external_sites map[string]string = map[string]string{
|
var external_sites map[string]string = map[string]string{
|
||||||
"YT":"https://www.youtube.com/",
|
"YT":"https://www.youtube.com/",
|
||||||
}
|
}
|
||||||
|
@ -340,6 +339,28 @@ func main(){
|
||||||
log.Print("Initialising the authentication system")
|
log.Print("Initialising the authentication system")
|
||||||
auth = NewDefaultAuth()
|
auth = NewDefaultAuth()
|
||||||
|
|
||||||
|
// Run this goroutine once a second
|
||||||
|
second_ticker := time.NewTicker(1 * time.Second)
|
||||||
|
fifteen_minute_ticker := time.NewTicker(15 * time.Minute)
|
||||||
|
//hour_ticker := time.NewTicker(1 * time.Hour)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <- second_ticker.C:
|
||||||
|
// TO-DO: Handle delayed moderation tasks
|
||||||
|
// TO-DO: Handle the daily clean-up. Move this to a 24 hour task?
|
||||||
|
// TO-DO: Sync with the database, if there are any changes
|
||||||
|
// TO-DO: Manage the TopicStore, UserStore, and ForumStore
|
||||||
|
// TO-DO: Alert the admin, if CPU usage, RAM usage, or the number of posts in the past second are too high
|
||||||
|
// TO-DO: Clean-up alerts with no unread matches which are over two weeks old. Move this to a 24 hour task?
|
||||||
|
case <- fifteen_minute_ticker.C:
|
||||||
|
// TO-DO: Handle temporary bans.
|
||||||
|
// TO-DO: Automatically lock topics, if they're really old, and the associated setting is enabled.
|
||||||
|
// TO-DO: Publish scheduled posts. Move this to a 15 minute task?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
log.Print("Initialising the router")
|
log.Print("Initialising the router")
|
||||||
router = NewGenRouter(http.FileServer(http.Dir("./uploads")))
|
router = NewGenRouter(http.FileServer(http.Dir("./uploads")))
|
||||||
///router.HandleFunc("/static/", route_static)
|
///router.HandleFunc("/static/", route_static)
|
||||||
|
|
8
pages.go
8
pages.go
|
@ -15,9 +15,17 @@ type HeaderVars struct
|
||||||
Stylesheets []string
|
Stylesheets []string
|
||||||
Widgets PageWidgets
|
Widgets PageWidgets
|
||||||
Site *Site
|
Site *Site
|
||||||
|
Settings map[string]interface{}
|
||||||
ExtData ExtData
|
ExtData ExtData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TO-DO: Add this to routes which don't use templates. E.g. Json APIs.
|
||||||
|
type HeaderLite struct
|
||||||
|
{
|
||||||
|
Site *Site
|
||||||
|
Settings SettingBox
|
||||||
|
}
|
||||||
|
|
||||||
type PageWidgets struct
|
type PageWidgets struct
|
||||||
{
|
{
|
||||||
LeftSidebar template.HTML
|
LeftSidebar template.HTML
|
||||||
|
|
|
@ -219,7 +219,7 @@ func route_panel_forums(w http.ResponseWriter, r *http.Request, user User){
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_forums_create_submit(w http.ResponseWriter, r *http.Request, user User){
|
func route_panel_forums_create_submit(w http.ResponseWriter, r *http.Request, user User){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -298,7 +298,7 @@ func route_panel_forums_delete(w http.ResponseWriter, r *http.Request, user User
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_forums_delete_submit(w http.ResponseWriter, r *http.Request, user User, sfid string) {
|
func route_panel_forums_delete_submit(w http.ResponseWriter, r *http.Request, user User, sfid string) {
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ func route_panel_forums_edit(w http.ResponseWriter, r *http.Request, user User,
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_forums_edit_submit(w http.ResponseWriter, r *http.Request, user User, sfid string) {
|
func route_panel_forums_edit_submit(w http.ResponseWriter, r *http.Request, user User, sfid string) {
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -466,7 +466,7 @@ func route_panel_forums_edit_submit(w http.ResponseWriter, r *http.Request, user
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_forums_edit_perms_submit(w http.ResponseWriter, r *http.Request, user User, sfid string){
|
func route_panel_forums_edit_perms_submit(w http.ResponseWriter, r *http.Request, user User, sfid string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -557,6 +557,7 @@ func route_panel_settings(w http.ResponseWriter, r *http.Request, user User){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//log.Print("headerVars.Settings",headerVars.Settings)
|
||||||
var settingList map[string]interface{} = make(map[string]interface{})
|
var settingList map[string]interface{} = make(map[string]interface{})
|
||||||
rows, err := get_settings_stmt.Query()
|
rows, err := get_settings_stmt.Query()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -666,7 +667,7 @@ func route_panel_setting(w http.ResponseWriter, r *http.Request, user User, snam
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_setting_edit(w http.ResponseWriter, r *http.Request, user User, sname string) {
|
func route_panel_setting_edit(w http.ResponseWriter, r *http.Request, user User, sname string) {
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
headerLite, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -711,11 +712,13 @@ func route_panel_setting_edit(w http.ResponseWriter, r *http.Request, user User,
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
errmsg := parseSetting(sname, scontent, stype, sconstraints)
|
errmsg := headerLite.Settings.ParseSetting(sname, scontent, stype, sconstraints)
|
||||||
if errmsg != "" {
|
if errmsg != "" {
|
||||||
LocalError(errmsg,w,r,user)
|
LocalError(errmsg,w,r,user)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
settingBox.Store(headerLite.Settings)
|
||||||
|
|
||||||
http.Redirect(w,r,"/panel/settings/",http.StatusSeeOther)
|
http.Redirect(w,r,"/panel/settings/",http.StatusSeeOther)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,7 +752,7 @@ func route_panel_plugins(w http.ResponseWriter, r *http.Request, user User){
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_plugins_activate(w http.ResponseWriter, r *http.Request, user User, uname string){
|
func route_panel_plugins_activate(w http.ResponseWriter, r *http.Request, user User, uname string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -825,7 +828,7 @@ func route_panel_plugins_activate(w http.ResponseWriter, r *http.Request, user U
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_plugins_deactivate(w http.ResponseWriter, r *http.Request, user User, uname string){
|
func route_panel_plugins_deactivate(w http.ResponseWriter, r *http.Request, user User, uname string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -873,7 +876,7 @@ func route_panel_plugins_deactivate(w http.ResponseWriter, r *http.Request, user
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_plugins_install(w http.ResponseWriter, r *http.Request, user User, uname string){
|
func route_panel_plugins_install(w http.ResponseWriter, r *http.Request, user User, uname string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1075,7 +1078,7 @@ func route_panel_users_edit(w http.ResponseWriter, r *http.Request, user User, s
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_users_edit_submit(w http.ResponseWriter, r *http.Request, user User, suid string){
|
func route_panel_users_edit_submit(w http.ResponseWriter, r *http.Request, user User, suid string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1369,7 +1372,7 @@ func route_panel_groups_edit_perms(w http.ResponseWriter, r *http.Request, user
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_groups_edit_submit(w http.ResponseWriter, r *http.Request, user User, sgid string){
|
func route_panel_groups_edit_submit(w http.ResponseWriter, r *http.Request, user User, sgid string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1501,7 +1504,7 @@ func route_panel_groups_edit_submit(w http.ResponseWriter, r *http.Request, user
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_groups_edit_perms_submit(w http.ResponseWriter, r *http.Request, user User, sgid string){
|
func route_panel_groups_edit_perms_submit(w http.ResponseWriter, r *http.Request, user User, sgid string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1577,7 +1580,7 @@ func route_panel_groups_edit_perms_submit(w http.ResponseWriter, r *http.Request
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_groups_create_submit(w http.ResponseWriter, r *http.Request, user User){
|
func route_panel_groups_create_submit(w http.ResponseWriter, r *http.Request, user User){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -1662,7 +1665,7 @@ func route_panel_themes(w http.ResponseWriter, r *http.Request, user User){
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_panel_themes_default(w http.ResponseWriter, r *http.Request, user User, uname string){
|
func route_panel_themes_default(w http.ResponseWriter, r *http.Request, user User, uname string){
|
||||||
ok := SimplePanelSessionCheck(w,r,&user)
|
_, ok := SimplePanelSessionCheck(w,r,&user)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,7 +197,7 @@ $(document).ready(function(){
|
||||||
|
|
||||||
$(".topic_item .submit_edit").click(function(event){
|
$(".topic_item .submit_edit").click(function(event){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
console.log("clicked on .topic_item .submit_edit");
|
//console.log("clicked on .topic_item .submit_edit");
|
||||||
$(".topic_name").html($(".topic_name_input").val());
|
$(".topic_name").html($(".topic_name_input").val());
|
||||||
$(".topic_content").html($(".topic_content_input").val());
|
$(".topic_content").html($(".topic_content_input").val());
|
||||||
$(".topic_status_e:not(.open_edit)").html($(".topic_status_input").val());
|
$(".topic_status_e:not(.open_edit)").html($(".topic_status_input").val());
|
||||||
|
|
10
routes.go
10
routes.go
|
@ -480,7 +480,7 @@ func route_topic_id(w http.ResponseWriter, r *http.Request, user User){
|
||||||
topic.ClassName = config.StaffCss
|
topic.ClassName = config.StaffCss
|
||||||
}
|
}
|
||||||
|
|
||||||
/*if settings["url_tags"] == false {
|
/*if headerVars.Settings["url_tags"] == false {
|
||||||
topic.URLName = ""
|
topic.URLName = ""
|
||||||
} else {
|
} else {
|
||||||
topic.URL, ok = external_sites[topic.URLPrefix]
|
topic.URL, ok = external_sites[topic.URLPrefix]
|
||||||
|
@ -547,7 +547,7 @@ func route_topic_id(w http.ResponseWriter, r *http.Request, user User){
|
||||||
|
|
||||||
replyItem.Tag = groups[replyItem.Group].Tag
|
replyItem.Tag = groups[replyItem.Group].Tag
|
||||||
|
|
||||||
/*if settings["url_tags"] == false {
|
/*if headerVars.Settings["url_tags"] == false {
|
||||||
replyItem.URLName = ""
|
replyItem.URLName = ""
|
||||||
} else {
|
} else {
|
||||||
replyItem.URL, ok = external_sites[replyItem.URLPrefix]
|
replyItem.URL, ok = external_sites[replyItem.URLPrefix]
|
||||||
|
@ -1683,7 +1683,7 @@ func route_account_own_edit_email_token_submit(w http.ResponseWriter, r *http.Re
|
||||||
}
|
}
|
||||||
|
|
||||||
// If Email Activation is on, then activate the account while we're here
|
// If Email Activation is on, then activate the account while we're here
|
||||||
if settings["activation_type"] == 2 {
|
if headerVars.Settings["activation_type"] == 2 {
|
||||||
_, err = activate_user_stmt.Exec(user.ID)
|
_, err = activate_user_stmt.Exec(user.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
InternalError(err,w)
|
InternalError(err,w)
|
||||||
|
@ -1801,6 +1801,8 @@ func route_register(w http.ResponseWriter, r *http.Request, user User) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func route_register_submit(w http.ResponseWriter, r *http.Request, user User) {
|
func route_register_submit(w http.ResponseWriter, r *http.Request, user User) {
|
||||||
|
headerLite, _ := SimpleSessionCheck(w,r,&user)
|
||||||
|
|
||||||
err := r.ParseForm()
|
err := r.ParseForm()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
LocalError("Bad Form",w,r,user)
|
LocalError("Bad Form",w,r,user)
|
||||||
|
@ -1850,7 +1852,7 @@ func route_register_submit(w http.ResponseWriter, r *http.Request, user User) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var active, group int
|
var active, group int
|
||||||
switch settings["activation_type"] {
|
switch headerLite.Settings["activation_type"] {
|
||||||
case 1: // Activate All
|
case 1: // Activate All
|
||||||
active = 1
|
active = 1
|
||||||
group = config.DefaultGroup
|
group = config.DefaultGroup
|
||||||
|
|
24
setting.go
24
setting.go
|
@ -1,9 +1,12 @@
|
||||||
package main
|
package main
|
||||||
import "strconv"
|
import "strconv"
|
||||||
import "strings"
|
import "strings"
|
||||||
|
import "sync/atomic"
|
||||||
|
|
||||||
// TO-DO: Move this into the phrase system
|
// TO-DO: Move this into the phrase system
|
||||||
var settingLabels map[string]string
|
var settingLabels map[string]string
|
||||||
|
type SettingBox map[string]interface{}
|
||||||
|
var settingBox atomic.Value // An atomic value pointing to a SettingBox
|
||||||
|
|
||||||
type OptionLabel struct
|
type OptionLabel struct
|
||||||
{
|
{
|
||||||
|
@ -23,6 +26,8 @@ type Setting struct
|
||||||
func init() {
|
func init() {
|
||||||
settingLabels = make(map[string]string)
|
settingLabels = make(map[string]string)
|
||||||
settingLabels["activation_type"] = "Activate All,Email Activation,Admin Approval"
|
settingLabels["activation_type"] = "Activate All,Email Activation,Admin Approval"
|
||||||
|
settingBox.Store(SettingBox(make(map[string]interface{})))
|
||||||
|
//settingBox.Store(make(map[string]interface{}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadSettings() error {
|
func LoadSettings() error {
|
||||||
|
@ -32,13 +37,15 @@ func LoadSettings() error {
|
||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
|
sBox := settingBox.Load().(SettingBox)
|
||||||
|
//sBox := settingBox.Load().(map[string]interface{})
|
||||||
var sname, scontent, stype, sconstraints string
|
var sname, scontent, stype, sconstraints string
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
err = rows.Scan(&sname, &scontent, &stype, &sconstraints)
|
err = rows.Scan(&sname, &scontent, &stype, &sconstraints)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
errmsg := parseSetting(sname, scontent, stype, sconstraints)
|
errmsg := sBox.ParseSetting(sname, scontent, stype, sconstraints)
|
||||||
if errmsg != "" {
|
if errmsg != "" {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -47,21 +54,24 @@ func LoadSettings() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settingBox.Store(sBox)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TO-DO: Add better support for HTML attributes (html-attribute). E.g. Meta descriptions.
|
// TO-DO: Add better support for HTML attributes (html-attribute). E.g. Meta descriptions.
|
||||||
func parseSetting(sname string, scontent string, stype string, constraint string) string {
|
func (sBox SettingBox) ParseSetting(sname string, scontent string, stype string, constraint string) string {
|
||||||
var err error
|
var err error
|
||||||
|
var ssBox map[string]interface{} = map[string]interface{}(sBox)
|
||||||
if stype == "bool" {
|
if stype == "bool" {
|
||||||
settings[sname] = (scontent == "1")
|
ssBox[sname] = (scontent == "1")
|
||||||
} else if stype == "int" {
|
} else if stype == "int" {
|
||||||
settings[sname], err = strconv.Atoi(scontent)
|
ssBox[sname], err = strconv.Atoi(scontent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
||||||
}
|
}
|
||||||
} else if stype == "int64" {
|
} else if stype == "int64" {
|
||||||
settings[sname], err = strconv.ParseInt(scontent, 10, 64)
|
ssBox[sname], err = strconv.ParseInt(scontent, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
return "You were supposed to enter an integer x.x\nType mismatch in " + sname
|
||||||
}
|
}
|
||||||
|
@ -88,9 +98,9 @@ func parseSetting(sname string, scontent string, stype string, constraint string
|
||||||
if value < con1 || value > con2 {
|
if value < con1 || value > con2 {
|
||||||
return "Only integers between a certain range are allowed in this setting"
|
return "Only integers between a certain range are allowed in this setting"
|
||||||
}
|
}
|
||||||
settings[sname] = value
|
ssBox[sname] = value
|
||||||
} else {
|
} else {
|
||||||
settings[sname] = scontent
|
ssBox[sname] = scontent
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ var header_9 []byte = []byte(`.supermod_only { display: none !important; }`)
|
||||||
var header_10 []byte = []byte(`</style>
|
var header_10 []byte = []byte(`</style>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
`)
|
`)
|
||||||
var menu_0 []byte = []byte(`<div class="nav">
|
var menu_0 []byte = []byte(`<nav class="nav">
|
||||||
<div class="move_left">
|
<div class="move_left">
|
||||||
<div class="move_right">
|
<div class="move_right">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -63,7 +63,7 @@ var menu_6 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</div>
|
</nav>
|
||||||
`)
|
`)
|
||||||
var header_11 []byte = []byte(`
|
var header_11 []byte = []byte(`
|
||||||
<div id="back"><div id="main" `)
|
<div id="back"><div id="main" `)
|
||||||
|
@ -90,6 +90,8 @@ var topic_9 []byte = []byte(`">></a>
|
||||||
</div>`)
|
</div>`)
|
||||||
var topic_10 []byte = []byte(`
|
var topic_10 []byte = []byte(`
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead topic_block">
|
<div class="rowblock rowhead topic_block">
|
||||||
<div class="rowitem topic_item`)
|
<div class="rowitem topic_item`)
|
||||||
var topic_11 []byte = []byte(` topic_sticky_head`)
|
var topic_11 []byte = []byte(` topic_sticky_head`)
|
||||||
|
@ -114,7 +116,7 @@ var topic_20 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="rowblock post_container top_post">
|
<article class="rowblock post_container top_post">
|
||||||
<div class="rowitem passive editable_parent post_item `)
|
<div class="rowitem passive editable_parent post_item `)
|
||||||
var topic_21 []byte = []byte(`" style="`)
|
var topic_21 []byte = []byte(`" style="`)
|
||||||
var topic_22 []byte = []byte(`background-image:url(`)
|
var topic_22 []byte = []byte(`background-image:url(`)
|
||||||
|
@ -162,18 +164,18 @@ var topic_52 []byte = []byte(`
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</article>
|
||||||
<div class="rowblock post_container" style="overflow: hidden;">`)
|
<div class="rowblock post_container" style="overflow: hidden;">`)
|
||||||
var topic_53 []byte = []byte(`
|
var topic_53 []byte = []byte(`
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item action_item">
|
<article class="rowitem passive deletable_block editable_parent post_item action_item">
|
||||||
<span class="action_icon" style="font-size: 18px;padding-right: 5px;">`)
|
<span class="action_icon" style="font-size: 18px;padding-right: 5px;">`)
|
||||||
var topic_54 []byte = []byte(`</span>
|
var topic_54 []byte = []byte(`</span>
|
||||||
<span>`)
|
<span>`)
|
||||||
var topic_55 []byte = []byte(`</span>
|
var topic_55 []byte = []byte(`</span>
|
||||||
</div>
|
</article>
|
||||||
`)
|
`)
|
||||||
var topic_56 []byte = []byte(`
|
var topic_56 []byte = []byte(`
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item `)
|
<article class="rowitem passive deletable_block editable_parent post_item `)
|
||||||
var topic_57 []byte = []byte(`" style="`)
|
var topic_57 []byte = []byte(`" style="`)
|
||||||
var topic_58 []byte = []byte(`background-image:url(`)
|
var topic_58 []byte = []byte(`background-image:url(`)
|
||||||
var topic_59 []byte = []byte(`), url(/static/post-avatar-bg.jpg);background-position: 0px `)
|
var topic_59 []byte = []byte(`), url(/static/post-avatar-bg.jpg);background-position: 0px `)
|
||||||
|
@ -212,7 +214,7 @@ var topic_82 []byte = []byte(`</a><a class="username hide_on_micro level_label"
|
||||||
var topic_83 []byte = []byte(`
|
var topic_83 []byte = []byte(`
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</article>
|
||||||
`)
|
`)
|
||||||
var topic_84 []byte = []byte(`</div>
|
var topic_84 []byte = []byte(`</div>
|
||||||
|
|
||||||
|
@ -230,6 +232,11 @@ var topic_86 []byte = []byte(`' type="hidden" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
`)
|
||||||
|
var topic_87 []byte = []byte(`
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
`)
|
`)
|
||||||
var footer_0 []byte = []byte(` </div>
|
var footer_0 []byte = []byte(` </div>
|
||||||
`)
|
`)
|
||||||
|
@ -253,6 +260,8 @@ var topic_alt_6 []byte = []byte(`?page=`)
|
||||||
var topic_alt_7 []byte = []byte(`">></a></div>`)
|
var topic_alt_7 []byte = []byte(`">></a></div>`)
|
||||||
var topic_alt_8 []byte = []byte(`
|
var topic_alt_8 []byte = []byte(`
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead topic_block">
|
<div class="rowblock rowhead topic_block">
|
||||||
<form action='/topic/edit/submit/`)
|
<form action='/topic/edit/submit/`)
|
||||||
var topic_alt_9 []byte = []byte(`' method="post">
|
var topic_alt_9 []byte = []byte(`' method="post">
|
||||||
|
@ -280,9 +289,10 @@ var topic_alt_19 []byte = []byte(`
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Stop inling this x.x -->
|
||||||
<style type="text/css">.rowitem:last-child .content_container { margin-bottom: 5px !important; }</style>
|
<style type="text/css">.rowitem:last-child .content_container { margin-bottom: 5px !important; }</style>
|
||||||
<div class="rowblock post_container" style="border-top: none;">
|
<div class="rowblock post_container" style="border-top: none;">
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item top_post" style="background-color: #eaeaea;padding-top: 4px;padding-left: 5px;clear: both;border-bottom: none;padding-right: 4px;padding-bottom: 2px;">
|
<article class="rowitem passive deletable_block editable_parent post_item top_post" style="background-color: #eaeaea;padding-top: 4px;padding-left: 5px;clear: both;border-bottom: none;padding-right: 4px;padding-bottom: 2px;">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
<div class="avatar_item" style="background-image: url(`)
|
<div class="avatar_item" style="background-image: url(`)
|
||||||
var topic_alt_20 []byte = []byte(`), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
var topic_alt_20 []byte = []byte(`), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
||||||
|
@ -329,10 +339,10 @@ var topic_alt_48 []byte = []byte(` up</a>`)
|
||||||
var topic_alt_49 []byte = []byte(`
|
var topic_alt_49 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
</div><div style="clear:both;"></div>
|
</div><div style="clear:both;"></div>
|
||||||
</div>
|
</article>
|
||||||
`)
|
`)
|
||||||
var topic_alt_50 []byte = []byte(`
|
var topic_alt_50 []byte = []byte(`
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item `)
|
<article class="rowitem passive deletable_block editable_parent post_item `)
|
||||||
var topic_alt_51 []byte = []byte(`action_item`)
|
var topic_alt_51 []byte = []byte(`action_item`)
|
||||||
var topic_alt_52 []byte = []byte(`">
|
var topic_alt_52 []byte = []byte(`">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
|
@ -388,7 +398,7 @@ var topic_alt_83 []byte = []byte(`
|
||||||
var topic_alt_84 []byte = []byte(`
|
var topic_alt_84 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
<div style="clear:both;"></div>
|
<div style="clear:both;"></div>
|
||||||
</div>
|
</article>
|
||||||
`)
|
`)
|
||||||
var topic_alt_85 []byte = []byte(`</div>
|
var topic_alt_85 []byte = []byte(`</div>
|
||||||
`)
|
`)
|
||||||
|
@ -405,6 +415,11 @@ var topic_alt_87 []byte = []byte(`' type="hidden" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
`)
|
||||||
|
var topic_alt_88 []byte = []byte(`
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
`)
|
`)
|
||||||
var profile_0 []byte = []byte(`
|
var profile_0 []byte = []byte(`
|
||||||
|
|
||||||
|
@ -510,6 +525,8 @@ var profile_39 []byte = []byte(`
|
||||||
|
|
||||||
`)
|
`)
|
||||||
var forums_0 []byte = []byte(`
|
var forums_0 []byte = []byte(`
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock opthead">
|
<div class="rowblock opthead">
|
||||||
<div class="rowitem"><a>Forums</a></div>
|
<div class="rowitem"><a>Forums</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -549,8 +566,12 @@ var forums_16 []byte = []byte(`
|
||||||
var forums_17 []byte = []byte(`<div class="rowitem passive">You don't have access to any forums.</div>`)
|
var forums_17 []byte = []byte(`<div class="rowitem passive">You don't have access to any forums.</div>`)
|
||||||
var forums_18 []byte = []byte(`
|
var forums_18 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
`)
|
`)
|
||||||
var topics_0 []byte = []byte(`
|
var topics_0 []byte = []byte(`
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead">
|
<div class="rowblock rowhead">
|
||||||
<div class="rowitem"><a>Topic List</a></div>
|
<div class="rowitem"><a>Topic List</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -604,6 +625,8 @@ var topics_28 []byte = []byte(` <a href="/topics/create/">Start one?</a>`)
|
||||||
var topics_29 []byte = []byte(`</div>`)
|
var topics_29 []byte = []byte(`</div>`)
|
||||||
var topics_30 []byte = []byte(`
|
var topics_30 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
`)
|
`)
|
||||||
var forum_0 []byte = []byte(`<div id="prevFloat" class="prev_button"><a class="prev_link" href="/forum/`)
|
var forum_0 []byte = []byte(`<div id="prevFloat" class="prev_button"><a class="prev_link" href="/forum/`)
|
||||||
var forum_1 []byte = []byte(`?page=`)
|
var forum_1 []byte = []byte(`?page=`)
|
||||||
|
@ -616,6 +639,8 @@ var forum_6 []byte = []byte(`?page=`)
|
||||||
var forum_7 []byte = []byte(`">></a></div>`)
|
var forum_7 []byte = []byte(`">></a></div>`)
|
||||||
var forum_8 []byte = []byte(`
|
var forum_8 []byte = []byte(`
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div id="forum_head_block" class="rowblock rowhead">
|
<div id="forum_head_block" class="rowblock rowhead">
|
||||||
<div class="rowitem forum_title`)
|
<div class="rowitem forum_title`)
|
||||||
var forum_9 []byte = []byte(` has_opt`)
|
var forum_9 []byte = []byte(` has_opt`)
|
||||||
|
@ -680,4 +705,6 @@ var forum_41 []byte = []byte(`">Start one?</a>`)
|
||||||
var forum_42 []byte = []byte(`</div>`)
|
var forum_42 []byte = []byte(`</div>`)
|
||||||
var forum_43 []byte = []byte(`
|
var forum_43 []byte = []byte(`
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
`)
|
`)
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
// Code generated by Gosora. More below:
|
// 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. */
|
/* This file was automatically generated by the software. Please don't edit it as your changes may be overwritten at any moment. */
|
||||||
package main
|
package main
|
||||||
import "strconv"
|
|
||||||
import "net/http"
|
import "net/http"
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
template_topic_handle = template_topic
|
template_topic_handle = template_topic
|
||||||
|
@ -256,6 +256,7 @@ w.Write(topic_85)
|
||||||
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
|
w.Write([]byte(strconv.Itoa(tmpl_topic_vars.Topic.ID)))
|
||||||
w.Write(topic_86)
|
w.Write(topic_86)
|
||||||
}
|
}
|
||||||
|
w.Write(topic_87)
|
||||||
w.Write(footer_0)
|
w.Write(footer_0)
|
||||||
if tmpl_topic_vars.Header.Widgets.RightSidebar != "" {
|
if tmpl_topic_vars.Header.Widgets.RightSidebar != "" {
|
||||||
w.Write(footer_1)
|
w.Write(footer_1)
|
||||||
|
|
|
@ -259,6 +259,7 @@ w.Write(topic_alt_86)
|
||||||
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
|
w.Write([]byte(strconv.Itoa(tmpl_topic_alt_vars.Topic.ID)))
|
||||||
w.Write(topic_alt_87)
|
w.Write(topic_alt_87)
|
||||||
}
|
}
|
||||||
|
w.Write(topic_alt_88)
|
||||||
w.Write(footer_0)
|
w.Write(footer_0)
|
||||||
if tmpl_topic_alt_vars.Header.Widgets.RightSidebar != "" {
|
if tmpl_topic_alt_vars.Header.Widgets.RightSidebar != "" {
|
||||||
w.Write(footer_1)
|
w.Write(footer_1)
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<div class="colstack_item colstack_head rowhead">
|
<div class="colstack_item colstack_head rowhead">
|
||||||
<div class="rowitem"><a>My Account</a></div>
|
<div class="rowitem"><a>My Account</a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="colstack_item rowmenu">
|
<div class="colstack_item rowmenu">
|
||||||
<div class="rowitem passive"><a href="/user/edit/avatar/">Change Avatar</a></div>
|
<div class="rowitem passive"><a href="/user/edit/avatar/">Avatar</a></div>
|
||||||
<div class="rowitem passive"><a href="/user/edit/username/">Change Username</a></div>
|
<div class="rowitem passive"><a href="/user/edit/username/">Username</a></div>
|
||||||
<div class="rowitem passive"><a href="/user/edit/critical/">Change Password</a></div>
|
<div class="rowitem passive"><a href="/user/edit/critical/">Password</a></div>
|
||||||
<div class="rowitem passive"><a href="/user/edit/email/">Change Email</a></div>
|
<div class="rowitem passive"><a href="/user/edit/email/">Email</a></div>
|
||||||
<div class="rowitem passive"><a href="/user/notifications">Notifications</a></div>
|
<div class="rowitem passive"><a href="/user/edit/notifications">Notifications</a></div>
|
||||||
{{/** TO-DO: Add an alerts page with pagination to go through alerts which either don't fit in the alerts drop-down or which have already been dismissed. Bear in mind though that dismissed alerts older than two weeks might be purged to save space and to speed up the database **/}}
|
{{/** TO-DO: Add an alerts page with pagination to go through alerts which either don't fit in the alerts drop-down or which have already been dismissed. Bear in mind though that dismissed alerts older than two weeks might be purged to save space and to speed up the database **/}}
|
||||||
<div class="rowitem passive"><a>Coming Soon</a></div>
|
<div class="rowitem passive"><a>Coming Soon</a></div>
|
||||||
<div class="rowitem passive"><a>Coming Soon</a></div>
|
<div class="rowitem passive"><a>Coming Soon</a></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</nav>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "account-menu.html" . }}
|
{{template "account-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head rowhead">
|
<div class="colstack_item colstack_head rowhead">
|
||||||
<div class="rowitem"><a>Edit Avatar</a></div>
|
<div class="rowitem"><a>Edit Avatar</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -20,5 +20,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "account-menu.html" . }}
|
{{template "account-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head rowhead">
|
<div class="colstack_item colstack_head rowhead">
|
||||||
<div class="rowitem"><a>Emails</a></div>
|
<div class="rowitem"><a>Emails</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,5 +16,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "account-menu.html" . }}
|
{{template "account-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head rowhead">
|
<div class="colstack_item colstack_head rowhead">
|
||||||
<div class="rowitem"><a>Edit Username</a></div>
|
<div class="rowitem"><a>Edit Username</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,5 +19,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "account-menu.html" . }}
|
{{template "account-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head rowhead">
|
<div class="colstack_item colstack_head rowhead">
|
||||||
<div class="rowitem"><a>Edit Password</a></div>
|
<div class="rowitem"><a>Edit Password</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -23,5 +23,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock rowhead">
|
<main>
|
||||||
<div class="rowitem"><a>Are you sure?</a></div>
|
<div class="rowblock rowhead">
|
||||||
</div>
|
<div class="rowitem"><a>Are you sure?</a></div>
|
||||||
<div class="rowblock">
|
|
||||||
<div class="rowitem passive">{{.Something.Message}}<br /><br />
|
|
||||||
<a class="username" href="{{.Something.URL}}?session={{.CurrentUser.Session}}">Continue</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="rowblock">
|
||||||
|
<div class="rowitem passive">{{.Something.Message}}<br /><br />
|
||||||
|
<a class="username" href="{{.Something.URL}}?session={{.CurrentUser.Session}}">Continue</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,26 +1,28 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock rowhead">
|
<main>
|
||||||
<div class="rowitem"><a>Create Topic</a></div>
|
<div class="rowblock rowhead">
|
||||||
</div>
|
<div class="rowitem"><a>Create Topic</a></div>
|
||||||
<div class="rowblock">
|
</div>
|
||||||
<form action="/topic/create/submit/" method="post">
|
<div class="rowblock">
|
||||||
<div class="formrow real_first_child">
|
<form action="/topic/create/submit/" method="post">
|
||||||
<div class="formitem formlabel"><a>Board</a></div>
|
<div class="formrow real_first_child">
|
||||||
<div class="formitem"><select name="topic-board">
|
<div class="formitem formlabel"><a>Board</a></div>
|
||||||
{{range .ItemList}}<option {{if eq .ID $.FID}}selected{{end}} value="{{.ID}}">{{.Name}}</option>{{end}}
|
<div class="formitem"><select name="topic-board">
|
||||||
</select></div>
|
{{range .ItemList}}<option {{if eq .ID $.FID}}selected{{end}} value="{{.ID}}">{{.Name}}</option>{{end}}
|
||||||
</div>
|
</select></div>
|
||||||
<div class="formrow">
|
</div>
|
||||||
<div class="formitem formlabel"><a>Topic Name</a></div>
|
<div class="formrow">
|
||||||
<div class="formitem"><input name="topic-name" type="text" placeholder="Topic Name" /></div>
|
<div class="formitem formlabel"><a>Topic Name</a></div>
|
||||||
</div>
|
<div class="formitem"><input name="topic-name" type="text" placeholder="Topic Name" /></div>
|
||||||
<div class="formrow">
|
</div>
|
||||||
<div class="formitem formlabel"><a>Content</a></div>
|
<div class="formrow">
|
||||||
<div class="formitem"><textarea class="large" name="topic-content" placeholder="Insert content here"></textarea></div>
|
<div class="formitem formlabel"><a>Content</a></div>
|
||||||
</div>
|
<div class="formitem"><textarea class="large" name="topic-content" placeholder="Insert content here"></textarea></div>
|
||||||
<div class="formrow">
|
</div>
|
||||||
<div class="formitem"><button name="topic-button" class="formbutton form_middle_button">Create Topic</button></div>
|
<div class="formrow">
|
||||||
</div>
|
<div class="formitem"><button name="topic-button" class="formbutton form_middle_button">Create Topic</button></div>
|
||||||
</form>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock">
|
<main>
|
||||||
<div class="rowitem">{{.Title}}</div>
|
<div class="rowblock">
|
||||||
</div>
|
<div class="rowitem">{{.Title}}</div>
|
||||||
<div class="rowblock">{{.Something}}</div>
|
</div>
|
||||||
|
<div class="rowblock">{{.Something}}</div>
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
|
@ -1,29 +1,29 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock">
|
<main>
|
||||||
<form action='/topic/edit/{{index .Something "ID"}}/submit/' method="post">
|
<div class="rowblock">
|
||||||
<div class="rowitem">
|
<form action='/topic/edit/{{index .Something "ID"}}/submit/' method="post">
|
||||||
<input name="topic_name" value='{{index .Something "content"}}' type="text" />
|
<div class="rowitem">
|
||||||
<select name="topic_status" class='show_on_edit'>
|
<input name="topic_name" value='{{index .Something "content"}}' type="text" />
|
||||||
{{range .StatusList}}<option>{{.}}</option>{{end}}
|
<select name="topic_status" class='show_on_edit'>
|
||||||
</select>
|
{{range .StatusList}}<option>{{.}}</option>{{end}}
|
||||||
<button name="topic-button" class="formbutton">Update</button>
|
</select>
|
||||||
|
<button name="topic-button" class="formbutton">Update</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="rowblock">
|
||||||
|
{{range $index, $element := .ItemList}}<div class="rowitem passive">{{$element.Content}}</div>{{end}}
|
||||||
|
</div>
|
||||||
|
<div class="rowblock">
|
||||||
|
<form action="/reply/create/" method="post">
|
||||||
|
<input name="tid" value='{{index .Something "tid"}}' type="hidden" />
|
||||||
|
<div class="formrow">
|
||||||
|
<div class="formitem"><textarea name="reply-content" placeholder="Insert reply here"></textarea></div>
|
||||||
|
</div>
|
||||||
|
<div class="formrow">
|
||||||
|
<div class="formitem"><button name="reply-button" class="formbutton">Create Reply</div></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</main>
|
||||||
</div>
|
|
||||||
<div class="rowblock">
|
|
||||||
{{range $index, $element := .ItemList}}<div class="rowitem passive">
|
|
||||||
{{$element.Content}}
|
|
||||||
</div>{{end}}
|
|
||||||
</div>
|
|
||||||
<div class="rowblock">
|
|
||||||
<form action="/reply/create/" method="post">
|
|
||||||
<input name="tid" value='{{index .Something "tid"}}' type="hidden" />
|
|
||||||
<div class="formrow">
|
|
||||||
<div class="formitem"><textarea name="reply-content" placeholder="Insert reply here"></textarea></div>
|
|
||||||
</div>
|
|
||||||
<div class="formrow">
|
|
||||||
<div class="formitem"><button name="reply-button" class="formbutton">Create Reply</div></div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
|
@ -1,8 +1,10 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock rowhead">
|
<main>
|
||||||
<div class="rowitem"><a>An error has occured</a></div>
|
<div class="rowblock rowhead">
|
||||||
</div>
|
<div class="rowitem"><a>An error has occured</a></div>
|
||||||
<div class="rowblock">
|
</div>
|
||||||
<div class="rowitem passive">{{.Something}}</div>
|
<div class="rowblock">
|
||||||
</div>
|
<div class="rowitem passive">{{.Something}}</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
{{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" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
<div id="nextFloat" class="next_button"><a class="next_link" href="/forum/{{.Forum.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div id="forum_head_block" class="rowblock rowhead">
|
<div id="forum_head_block" class="rowblock rowhead">
|
||||||
<div class="rowitem forum_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}"><a>{{.Title}}</a>
|
<div class="rowitem forum_title{{if ne .CurrentUser.ID 0}} has_opt{{end}}"><a>{{.Title}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,4 +38,6 @@
|
||||||
</div>
|
</div>
|
||||||
{{else}}<div class="rowitem passive">There aren't any topics in this forum yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/{{.Forum.ID}}">Start one?</a>{{end}}</div>{{end}}
|
{{else}}<div class="rowitem passive">There aren't any topics in this forum yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/{{.Forum.ID}}">Start one?</a>{{end}}</div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock opthead">
|
<div class="rowblock opthead">
|
||||||
<div class="rowitem"><a>Forums</a></div>
|
<div class="rowitem"><a>Forums</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -20,4 +22,6 @@
|
||||||
</div>
|
</div>
|
||||||
{{else}}<div class="rowitem passive">You don't have access to any forums.</div>{{end}}
|
{{else}}<div class="rowitem passive">You don't have access to any forums.</div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<div class="nav">
|
<nav class="nav">
|
||||||
<div class="move_left">
|
<div class="move_left">
|
||||||
<div class="move_right">
|
<div class="move_right">
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -25,4 +25,4 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</div>
|
</nav>
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
<main>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
{{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>
|
||||||
{{template "panel-inner-menu.html" . }}
|
{{template "panel-inner-menu.html" . }}
|
||||||
</div>
|
</nav>
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Administration Logs</a></div>
|
<div class="rowitem"><a>Administration Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,5 +24,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div 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">
|
||||||
<div class="rowitem"><a>Dashboard</a></div>
|
<div class="rowitem"><a>Dashboard</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -10,5 +10,5 @@
|
||||||
{{if .Background}}background-color: {{.Background}};{{end}}">{{.Body}}</div>
|
{{if .Background}}background-color: {{.Background}};{{end}}">{{.Body}}</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div 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">
|
||||||
<div class="rowitem"><a>Debug</a></div>
|
<div class="rowitem"><a>Debug</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -13,5 +13,5 @@
|
||||||
<div class="grid_item grid_stat">{{.OpenConns}}</div>
|
<div class="grid_item grid_stat">{{.OpenConns}}</div>
|
||||||
<div class="grid_item grid_stat">{{.DBAdapter}}</div>
|
<div class="grid_item grid_stat">{{.DBAdapter}}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
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']};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>{{.Name}} Forum</a></div>
|
<div class="rowitem"><a>{{.Name}} Forum</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -14,17 +14,17 @@ var form_vars = {'perm_preset': ['can_moderate','can_post','read_only','no_acces
|
||||||
<div class="formitem formlabel"><a>Name</a></div>
|
<div class="formitem formlabel"><a>Name</a></div>
|
||||||
<div class="formitem"><input name="forum_name" type="text" value="{{.Name}}" placeholder="General Forum" /></div>
|
<div class="formitem"><input name="forum_name" type="text" value="{{.Name}}" placeholder="General Forum" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="formrow">
|
<div class="formrow">
|
||||||
<div class="formitem formlabel"><a>Description</a></div>
|
<div class="formitem formlabel"><a>Description</a></div>
|
||||||
<div class="formitem"><input name="forum_desc" type="text" value="{{.Desc}}" placeholder="Where the general stuff happens" /></div>
|
<div class="formitem"><input name="forum_desc" type="text" value="{{.Desc}}" placeholder="Where the general stuff happens" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="formrow">
|
<div class="formrow">
|
||||||
<div class="formitem formlabel"><a>Hidden?</a></div>
|
<div class="formitem formlabel"><a>Hidden?</a></div>
|
||||||
<div class="formitem"><select name="forum_active">
|
<div class="formitem"><select name="forum_active">
|
||||||
<option{{if not .Active}} selected{{end}} value="1">Yes</option>
|
<option{{if not .Active}} selected{{end}} value="1">Yes</option>
|
||||||
<option{{if .Active}} selected{{end}} value="0">No</option>
|
<option{{if .Active}} selected{{end}} value="0">No</option>
|
||||||
</select></div>
|
</select></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="formrow">
|
<div class="formrow">
|
||||||
<div class="formitem formlabel"><a>Preset</a></div>
|
<div class="formitem formlabel"><a>Preset</a></div>
|
||||||
<div class="formitem">
|
<div class="formitem">
|
||||||
|
@ -36,7 +36,7 @@ var form_vars = {'perm_preset': ['can_moderate','can_post','read_only','no_acces
|
||||||
<option{{if eq .Preset "admins"}} selected{{end}} value="admins">Admin Only</option>
|
<option{{if eq .Preset "admins"}} selected{{end}} value="admins">Admin Only</option>
|
||||||
<option{{if eq .Preset "archive"}} selected{{end}} value="archive">Archive</option>
|
<option{{if eq .Preset "archive"}} selected{{end}} value="archive">Archive</option>
|
||||||
<option{{if eq .Preset "custom"}} selected{{end}} value="custom">Custom</option>
|
<option{{if eq .Preset "custom"}} selected{{end}} value="custom">Custom</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="formrow">
|
<div class="formrow">
|
||||||
|
@ -62,5 +62,5 @@ var form_vars = {'perm_preset': ['can_moderate','can_post','read_only','no_acces
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
'forum_preset': ['all','announce','members','staff','admins','archive','custom']};
|
'forum_preset': ['all','announce','members','staff','admins','archive','custom']};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Forums</a></div>
|
<div class="rowitem"><a>Forums</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -70,6 +70,6 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
|
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<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>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,8 +9,8 @@
|
||||||
<div class="rowitem passive"><a href="/panel/groups/edit/perms/{{.ID}}">Permissions</a></div>
|
<div class="rowitem passive"><a href="/panel/groups/edit/perms/{{.ID}}">Permissions</a></div>
|
||||||
</div>
|
</div>
|
||||||
{{template "panel-inner-menu.html" . }}
|
{{template "panel-inner-menu.html" . }}
|
||||||
</div>
|
</nav>
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>{{.Name}} Group</a></div>
|
<div class="rowitem"><a>{{.Name}} Group</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -59,5 +59,5 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<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>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,8 +9,8 @@
|
||||||
<div class="rowitem passive"><a href="/panel/groups/edit/perms/{{.ID}}">Permissions</a></div>
|
<div class="rowitem passive"><a href="/panel/groups/edit/perms/{{.ID}}">Permissions</a></div>
|
||||||
</div>
|
</div>
|
||||||
{{template "panel-inner-menu.html" . }}
|
{{template "panel-inner-menu.html" . }}
|
||||||
</div>
|
</nav>
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>{{.Name}} Group</a></div>
|
<div class="rowitem"><a>{{.Name}} Group</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -42,5 +42,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
|
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Groups</a></div>
|
<div class="rowitem"><a>Groups</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -56,5 +56,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
<div class="colstack_left">{{template "panel-inner-menu.html" . }}</div>
|
<nav class="colstack_left">{{template "panel-inner-menu.html" . }}</nav>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
<div class="rowitem"><a href="/panel/logs/mod/">Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,8 +8,8 @@
|
||||||
{{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>
|
||||||
{{template "panel-inner-menu.html" . }}
|
{{template "panel-inner-menu.html" . }}
|
||||||
</div>
|
</nav>
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Moderation Logs</a></div>
|
<div class="rowitem"><a>Moderation Logs</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,5 +36,5 @@
|
||||||
{{if ne .LastPage .Page}}<div class="pageitem"><a href="?page={{add .Page 1}}">Next</a></div>{{end}}
|
{{if ne .LastPage .Page}}<div class="pageitem"><a href="?page={{add .Page 1}}">Next</a></div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Plugins</a></div>
|
<div class="rowitem"><a>Plugins</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -20,5 +20,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Edit Setting</a></div>
|
<div class="rowitem"><a>Edit Setting</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -33,5 +33,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Settings</a></div>
|
<div class="rowitem"><a>Settings</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -12,5 +12,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="colstack_left">
|
<nav class="colstack_left">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a href="/panel/themes/">Theme Manager</a></div>
|
<div class="rowitem"><a href="/panel/themes/">Theme Manager</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
<div class="rowitem passive"><a href="#">Widgets</a></div>
|
<div class="rowitem passive"><a href="#">Widgets</a></div>
|
||||||
</div>
|
</div>
|
||||||
{{template "panel-inner-menu.html" . }}
|
{{template "panel-inner-menu.html" . }}
|
||||||
</div>
|
</nav>
|
||||||
|
|
||||||
<!-- Stop inlining this x.x -->
|
<!-- Stop inlining this x.x -->
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Primary Themes</a></div>
|
<div class="rowitem"><a>Primary Themes</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -55,5 +55,5 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>User Editor</a></div>
|
<div class="rowitem"><a>User Editor</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -32,5 +32,5 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
{{template "panel-menu.html" . }}
|
{{template "panel-menu.html" . }}
|
||||||
|
|
||||||
<div class="colstack_right">
|
<main class="colstack_right">
|
||||||
<div class="colstack_item colstack_head">
|
<div class="colstack_item colstack_head">
|
||||||
<div class="rowitem"><a>Users</a></div>
|
<div class="rowitem"><a>Users</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -28,5 +28,5 @@
|
||||||
{{if ne .LastPage .Page}}<div class="pageitem"><a href="?page={{add .Page 1}}">Next</a></div>{{end}}
|
{{if ne .LastPage .Page}}<div class="pageitem"><a href="?page={{add .Page 1}}">Next</a></div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead">
|
<div class="rowblock rowhead">
|
||||||
<div class="rowitem"><a>Create Account</a></div>
|
<div class="rowitem"><a>Create Account</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -25,4 +27,6 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead">
|
<div class="rowblock rowhead">
|
||||||
<div class="rowitem"><a>Create Group</a></div>
|
<div class="rowitem"><a>Create Group</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,4 +29,6 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,19 +1,21 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
<div class="rowblock opthead">
|
<main>
|
||||||
<div class="rowitem"><a>Group List</a></div>
|
<div class="rowblock opthead">
|
||||||
</div>
|
<div class="rowitem"><a>Group List</a></div>
|
||||||
<div class="rowblock">
|
|
||||||
{{range .GroupList}}<div class="rowitem datarow">
|
|
||||||
<span style="float: left;">
|
|
||||||
<a href="{{.Link}}" style="">{{.Name}}</a>
|
|
||||||
<br /><span class="rowsmall">{{.Desc}}</span>
|
|
||||||
</span>
|
|
||||||
<span style="float: right;">
|
|
||||||
<span style="float: right;font-size: 14px;">{{.MemberCount}} members</span>
|
|
||||||
<br /><span class="rowsmall">{{.LastUpdateTime}}</span>
|
|
||||||
</span>
|
|
||||||
<div style="clear: both;"></div>
|
|
||||||
</div>
|
</div>
|
||||||
{{else}}<div class="rowitem passive">There aren't any visible groups.</div>{{end}}
|
<div class="rowblock">
|
||||||
</div>
|
{{range .GroupList}}<div class="rowitem datarow">
|
||||||
|
<span style="float: left;">
|
||||||
|
<a href="{{.Link}}" style="">{{.Name}}</a>
|
||||||
|
<br /><span class="rowsmall">{{.Desc}}</span>
|
||||||
|
</span>
|
||||||
|
<span style="float: right;">
|
||||||
|
<span style="float: right;font-size: 14px;">{{.MemberCount}} members</span>
|
||||||
|
<br /><span class="rowsmall">{{.LastUpdateTime}}</span>
|
||||||
|
</span>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
{{else}}<div class="rowitem passive">There aren't any visible groups.</div>{{end}}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -8,16 +8,16 @@
|
||||||
<div id="nextFloat" class="next_button"><a class="next_link" href="/group/members/{{.SocialGroup.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
<div id="nextFloat" class="next_button"><a class="next_link" href="/group/members/{{.SocialGroup.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
||||||
|
|
||||||
<div class="sgBackdrop">
|
<div class="sgBackdrop">
|
||||||
<div class="miniMenu">
|
<nav class="miniMenu">
|
||||||
<div class="menuItem"><a href="/group/{{.SocialGroup.ID}}">{{.SocialGroup.Name}}</a></div>
|
<div class="menuItem"><a href="/group/{{.SocialGroup.ID}}">{{.SocialGroup.Name}}</a></div>
|
||||||
<div class="menuItem"><a href="#">About</a></div>
|
<div class="menuItem"><a href="#">About</a></div>
|
||||||
<div class="menuItem"><a href="/group/members/{{.SocialGroup.ID}}">Members</a></div>
|
<div class="menuItem"><a href="/group/members/{{.SocialGroup.ID}}">Members</a></div>
|
||||||
<div class="menuItem rightMenu"><a href="#">Edit</a></div>
|
<div class="menuItem rightMenu"><a href="#">Edit</a></div>
|
||||||
<div class="menuItem rightMenu"><a href="/group/join/{{.SocialGroup.ID}}">Join</a></div>
|
<div class="menuItem rightMenu"><a href="/group/join/{{.SocialGroup.ID}}">Join</a></div>
|
||||||
</div>
|
</nav>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="socialgroups_member_list" class="rowblock member_list" style="position: relative;z-index: 50;">
|
<main id="socialgroups_member_list" class="rowblock member_list" style="position: relative;z-index: 50;">
|
||||||
{{range .ItemList}}<div class="rowitem passive datarow" style="{{if .User.Avatar}}background-image: url({{.User.Avatar}});background-position: left;background-repeat: no-repeat;background-size: 64px;padding-left: 78px;{{end}}{{if .Offline}}background-color: #eaeaea;{{else if gt .Rank 0}}background-color: #e6f3ff;{{end}}">
|
{{range .ItemList}}<div class="rowitem passive datarow" style="{{if .User.Avatar}}background-image: url({{.User.Avatar}});background-position: left;background-repeat: no-repeat;background-size: 64px;padding-left: 78px;{{end}}{{if .Offline}}background-color: #eaeaea;{{else if gt .Rank 0}}background-color: #e6f3ff;{{end}}">
|
||||||
<span style="float: right;">
|
<span style="float: right;">
|
||||||
<span class="rank" style="font-size: 15px;">{{.RankString}}</span><br />
|
<span class="rank" style="font-size: 15px;">{{.RankString}}</span><br />
|
||||||
|
@ -30,5 +30,5 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -8,17 +8,17 @@
|
||||||
<div id="nextFloat" class="next_button"><a class="next_link" href="/group/{{.SocialGroup.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
<div id="nextFloat" class="next_button"><a class="next_link" href="/group/{{.SocialGroup.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
||||||
|
|
||||||
<div class="sgBackdrop">
|
<div class="sgBackdrop">
|
||||||
<div class="miniMenu">
|
<nav class="miniMenu">
|
||||||
<div class="menuItem"><a href="/group/{{.SocialGroup.ID}}">{{.SocialGroup.Name}}</a></div>
|
<div class="menuItem"><a href="/group/{{.SocialGroup.ID}}">{{.SocialGroup.Name}}</a></div>
|
||||||
<div class="menuItem"><a href="#">About</a></div>
|
<div class="menuItem"><a href="#">About</a></div>
|
||||||
<div class="menuItem"><a href="/group/members/{{.SocialGroup.ID}}">Members</a></div>
|
<div class="menuItem"><a href="/group/members/{{.SocialGroup.ID}}">Members</a></div>
|
||||||
<div class="menuItem rightMenu"><a href="#">Edit</a></div>
|
<div class="menuItem rightMenu"><a href="#">Edit</a></div>
|
||||||
<div class="menuItem rightMenu"><a href="/topics/create/{{.Forum.ID}}">Reply</a></div>
|
<div class="menuItem rightMenu"><a href="/topics/create/{{.Forum.ID}}">Reply</a></div>
|
||||||
<div class="menuItem rightMenu"><a href="/group/join/{{.SocialGroup.ID}}">Join</a></div>
|
<div class="menuItem rightMenu"><a href="/group/join/{{.SocialGroup.ID}}">Join</a></div>
|
||||||
</div>
|
</nav>
|
||||||
<div style="clear: both;"></div>
|
<div style="clear: both;"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="forum_topic_list" class="rowblock topic_list" style="position: relative;z-index: 50;">
|
<main id="forum_topic_list" class="rowblock topic_list" style="position: relative;z-index: 50;">
|
||||||
{{range .ItemList}}<div class="rowitem topic_left passive datarow" style="{{if .Creator.Avatar}}background-image: url({{.Creator.Avatar}});background-position: left;background-repeat: no-repeat;background-size: 64px;padding-left: 72px;{{end}}{{if .Sticky}}background-color: #FFFFCC;{{else if .Is_Closed}}background-color: #eaeaea;{{end}}">
|
{{range .ItemList}}<div class="rowitem topic_left passive datarow" style="{{if .Creator.Avatar}}background-image: url({{.Creator.Avatar}});background-position: left;background-repeat: no-repeat;background-size: 64px;padding-left: 72px;{{end}}{{if .Sticky}}background-color: #FFFFCC;{{else if .Is_Closed}}background-color: #eaeaea;{{end}}">
|
||||||
<span class="topic_inner_right rowsmall" style="float: right;">
|
<span class="topic_inner_right rowsmall" style="float: right;">
|
||||||
<span class="replyCount">{{.PostCount}} replies</span><br />
|
<span class="replyCount">{{.PostCount}} replies</span><br />
|
||||||
|
@ -37,5 +37,5 @@
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{{else}}<div class="rowitem passive">There aren't any topics in here yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/{{.Forum.ID}}">Start one?</a>{{end}}</div>{{end}}
|
{{else}}<div class="rowitem passive">There aren't any topics in here yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/{{.Forum.ID}}">Start one?</a>{{end}}</div>{{end}}
|
||||||
</div>
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
<a class="next_link" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}">></a>
|
<a class="next_link" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}">></a>
|
||||||
</div>{{end}}
|
</div>{{end}}
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead topic_block">
|
<div class="rowblock rowhead topic_block">
|
||||||
<div class="rowitem topic_item{{if .Topic.Sticky}} topic_sticky_head{{else if .Topic.Is_Closed}} topic_closed_head{{end}}">
|
<div class="rowitem topic_item{{if .Topic.Sticky}} topic_sticky_head{{else if .Topic.Is_Closed}} topic_closed_head{{end}}">
|
||||||
<a class='topic_name hide_on_edit'>{{.Topic.Title}}</a>
|
<a class='topic_name hide_on_edit'>{{.Topic.Title}}</a>
|
||||||
|
@ -23,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="rowblock post_container top_post">
|
<article class="rowblock post_container top_post">
|
||||||
<div class="rowitem passive editable_parent post_item {{.Topic.ClassName}}" style="{{if .Topic.Avatar}}background-image:url({{.Topic.Avatar}}), url(/static/post-avatar-bg.jpg);background-position: 0px {{if le .Topic.ContentLines 5}}-1{{end}}0px;background-repeat:no-repeat, repeat-y;{{end}}">
|
<div class="rowitem passive editable_parent post_item {{.Topic.ClassName}}" style="{{if .Topic.Avatar}}background-image:url({{.Topic.Avatar}}), url(/static/post-avatar-bg.jpg);background-position: 0px {{if le .Topic.ContentLines 5}}-1{{end}}0px;background-repeat:no-repeat, repeat-y;{{end}}">
|
||||||
<p class="hide_on_edit topic_content user_content" style="margin:0;padding:0;">{{.Topic.Content}}</p>
|
<p class="hide_on_edit topic_content user_content" style="margin:0;padding:0;">{{.Topic.Content}}</p>
|
||||||
<textarea name="topic_content" class="show_on_edit topic_content_input">{{.Topic.Content}}</textarea>
|
<textarea name="topic_content" class="show_on_edit topic_content_input">{{.Topic.Content}}</textarea>
|
||||||
|
@ -47,14 +49,14 @@
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</article>
|
||||||
<div class="rowblock post_container" style="overflow: hidden;">{{range .ItemList}}{{if .ActionType}}
|
<div class="rowblock post_container" style="overflow: hidden;">{{range .ItemList}}{{if .ActionType}}
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item action_item">
|
<article class="rowitem passive deletable_block editable_parent post_item action_item">
|
||||||
<span class="action_icon" style="font-size: 18px;padding-right: 5px;">{{.ActionIcon}}</span>
|
<span class="action_icon" style="font-size: 18px;padding-right: 5px;">{{.ActionIcon}}</span>
|
||||||
<span>{{.ActionType}}</span>
|
<span>{{.ActionType}}</span>
|
||||||
</div>
|
</article>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item {{.ClassName}}" style="{{if .Avatar}}background-image:url({{.Avatar}}), url(/static/post-avatar-bg.jpg);background-position: 0px {{if le .ContentLines 5}}-1{{end}}0px;background-repeat:no-repeat, repeat-y;{{end}}">
|
<article class="rowitem passive deletable_block editable_parent post_item {{.ClassName}}" style="{{if .Avatar}}background-image:url({{.Avatar}}), url(/static/post-avatar-bg.jpg);background-position: 0px {{if le .ContentLines 5}}-1{{end}}0px;background-repeat:no-repeat, repeat-y;{{end}}">
|
||||||
<p class="editable_block user_content" style="margin:0;padding:0;">{{.ContentHtml}}</p>
|
<p class="editable_block user_content" style="margin:0;padding:0;">{{.ContentHtml}}</p>
|
||||||
|
|
||||||
<span class="controls">
|
<span class="controls">
|
||||||
|
@ -72,7 +74,7 @@
|
||||||
{{if .Tag}}<a class="username hide_on_micro user_tag">{{.Tag}}</a>{{else}}<a class="username hide_on_micro level">{{.Level}}</a><a class="username hide_on_micro level_label" style="float:right;" title="Level"></a>{{end}}
|
{{if .Tag}}<a class="username hide_on_micro user_tag">{{.Tag}}</a>{{else}}<a class="username hide_on_micro level">{{.Level}}</a><a class="username hide_on_micro level_label" style="float:right;" title="Level"></a>{{end}}
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</article>
|
||||||
{{end}}{{end}}</div>
|
{{end}}{{end}}</div>
|
||||||
|
|
||||||
{{if .CurrentUser.Perms.CreateReply}}
|
{{if .CurrentUser.Perms.CreateReply}}
|
||||||
|
@ -88,4 +90,7 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
{{if ne .LastPage .Page}}<link rel="prerender" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}" />
|
{{if ne .LastPage .Page}}<link rel="prerender" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}" />
|
||||||
<div id="nextFloat" class="next_button"><a class="next_link" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
<div id="nextFloat" class="next_button"><a class="next_link" href="/topic/{{.Topic.ID}}?page={{add .Page 1}}">></a></div>{{end}}
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead topic_block">
|
<div class="rowblock rowhead topic_block">
|
||||||
<form action='/topic/edit/submit/{{.Topic.ID}}' method="post">
|
<form action='/topic/edit/submit/{{.Topic.ID}}' method="post">
|
||||||
<div class="rowitem topic_item{{if .Topic.Sticky}} topic_sticky_head{{else if .Topic.Is_Closed}} topic_closed_head{{end}}">
|
<div class="rowitem topic_item{{if .Topic.Sticky}} topic_sticky_head{{else if .Topic.Is_Closed}} topic_closed_head{{end}}">
|
||||||
|
@ -20,9 +22,10 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Stop inling this x.x -->
|
||||||
<style type="text/css">.rowitem:last-child .content_container { margin-bottom: 5px !important; }</style>
|
<style type="text/css">.rowitem:last-child .content_container { margin-bottom: 5px !important; }</style>
|
||||||
<div class="rowblock post_container" style="border-top: none;">
|
<div class="rowblock post_container" style="border-top: none;">
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item top_post" style="background-color: #eaeaea;padding-top: 4px;padding-left: 5px;clear: both;border-bottom: none;padding-right: 4px;padding-bottom: 2px;">
|
<article class="rowitem passive deletable_block editable_parent post_item top_post" style="background-color: #eaeaea;padding-top: 4px;padding-left: 5px;clear: both;border-bottom: none;padding-right: 4px;padding-bottom: 2px;">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
<div class="avatar_item" style="background-image: url({{.Topic.Avatar}}), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
<div class="avatar_item" style="background-image: url({{.Topic.Avatar}}), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
||||||
<a href="{{.Topic.UserLink}}" class="the_name">{{.Topic.CreatedByName}}</a>
|
<a href="{{.Topic.UserLink}}" class="the_name">{{.Topic.CreatedByName}}</a>
|
||||||
|
@ -45,9 +48,9 @@
|
||||||
{{if .Topic.LikeCount}}<a class="action_button action_button_right hide_on_micro">{{.Topic.LikeCount}} up</a>{{end}}
|
{{if .Topic.LikeCount}}<a class="action_button action_button_right hide_on_micro">{{.Topic.LikeCount}} up</a>{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div><div style="clear:both;"></div>
|
</div><div style="clear:both;"></div>
|
||||||
</div>
|
</article>
|
||||||
{{range .ItemList}}
|
{{range .ItemList}}
|
||||||
<div class="rowitem passive deletable_block editable_parent post_item {{if .ActionType}}action_item{{end}}">
|
<article class="rowitem passive deletable_block editable_parent post_item {{if .ActionType}}action_item{{end}}">
|
||||||
<div class="userinfo">
|
<div class="userinfo">
|
||||||
<div class="avatar_item" style="background-image: url({{.Avatar}}), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
<div class="avatar_item" style="background-image: url({{.Avatar}}), url(/static/white-dot.jpg);background-position: 0px -10px;"> </div>
|
||||||
<a href="{{.UserLink}}" class="the_name">{{.CreatedByName}}</a>
|
<a href="{{.UserLink}}" class="the_name">{{.CreatedByName}}</a>
|
||||||
|
@ -73,7 +76,7 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div style="clear:both;"></div>
|
<div style="clear:both;"></div>
|
||||||
</div>
|
</article>
|
||||||
{{end}}</div>
|
{{end}}</div>
|
||||||
{{if .CurrentUser.Perms.CreateReply}}
|
{{if .CurrentUser.Perms.CreateReply}}
|
||||||
<div class="rowblock topic_reply_form" style="border-top: none;">
|
<div class="rowblock topic_reply_form" style="border-top: none;">
|
||||||
|
@ -88,4 +91,7 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{{template "header.html" . }}
|
{{template "header.html" . }}
|
||||||
|
<main>
|
||||||
|
|
||||||
<div class="rowblock rowhead">
|
<div class="rowblock rowhead">
|
||||||
<div class="rowitem"><a>Topic List</a></div>
|
<div class="rowitem"><a>Topic List</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,4 +26,6 @@
|
||||||
</div>
|
</div>
|
||||||
{{else}}<div class="rowitem passive">There aren't any topics yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/">Start one?</a>{{end}}</div>{{end}}
|
{{else}}<div class="rowitem passive">There aren't any topics yet.{{if .CurrentUser.Perms.CreateTopic}} <a href="/topics/create/">Start one?</a>{{end}}</div>{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
{{template "footer.html" . }}
|
{{template "footer.html" . }}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="rowblock rowhead">
|
<div class="rowblock rowhead">
|
||||||
<div class="rowitem">{{.Name}}</div>
|
<div class="rowitem">{{.Name}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="rowblock">{{range .MenuList}}
|
<nav class="rowblock">{{range .MenuList}}
|
||||||
<div class="rowitem {{if .Compact}}datarow{{end}}"><a href="{{.Location}}">{{.Text}}</a></div>
|
<div class="rowitem {{if .Compact}}datarow{{end}}"><a href="{{.Location}}">{{.Text}}</a></div>
|
||||||
{{end}}</div>
|
{{end}}</nav>
|
||||||
|
|
|
@ -166,9 +166,16 @@ a {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Topic View */
|
||||||
|
|
||||||
|
/* TO-DO: How should we handle the sticky headers? */
|
||||||
.topic_sticky_head {
|
.topic_sticky_head {
|
||||||
}
|
}
|
||||||
.topic_closed_head {
|
|
||||||
|
/* TO-DO: Rewrite the closed topic header so that it looks more consistent with the rest of the theme */
|
||||||
|
.topic_closed_head .topic_status_closed {
|
||||||
|
margin-bottom: -10px;
|
||||||
|
font-size: 19px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post_item {
|
.post_item {
|
||||||
|
|
28
user.go
28
user.go
|
@ -14,10 +14,13 @@ import (
|
||||||
var guest_user User = User{ID:0,Link:"#",Group:6,Perms:GuestPerms}
|
var guest_user User = User{ID:0,Link:"#",Group:6,Perms:GuestPerms}
|
||||||
|
|
||||||
var PreRoute func(http.ResponseWriter, *http.Request) (User,bool) = _pre_route
|
var PreRoute func(http.ResponseWriter, *http.Request) (User,bool) = _pre_route
|
||||||
|
|
||||||
|
// TO-DO: Are these even session checks anymore? We might need to rethink these names
|
||||||
var PanelSessionCheck func(http.ResponseWriter, *http.Request, *User) (HeaderVars,PanelStats,bool) = _panel_session_check
|
var PanelSessionCheck func(http.ResponseWriter, *http.Request, *User) (HeaderVars,PanelStats,bool) = _panel_session_check
|
||||||
var SimplePanelSessionCheck func(http.ResponseWriter, *http.Request, *User) bool = _simple_panel_session_check
|
var SimplePanelSessionCheck func(http.ResponseWriter, *http.Request, *User) (HeaderLite,bool) = _simple_panel_session_check
|
||||||
var SimpleForumSessionCheck func(w http.ResponseWriter, r *http.Request, user *User, fid int) (success bool) = _simple_forum_session_check
|
var SimpleForumSessionCheck func(w http.ResponseWriter, r *http.Request, user *User, fid int) (success bool) = _simple_forum_session_check
|
||||||
var ForumSessionCheck func(w http.ResponseWriter, r *http.Request, user *User, fid int) (headerVars HeaderVars, success bool) = _forum_session_check
|
var ForumSessionCheck func(w http.ResponseWriter, r *http.Request, user *User, fid int) (headerVars HeaderVars, success bool) = _forum_session_check
|
||||||
|
var SimpleSessionCheck func(w http.ResponseWriter, r *http.Request, user *User) (headerLite HeaderLite, success bool) = _simple_session_check
|
||||||
var SessionCheck func(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, success bool) = _session_check
|
var SessionCheck func(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, success bool) = _session_check
|
||||||
|
|
||||||
var CheckPassword func(real_password string, password string, salt string) (err error) = BcryptCheckPassword
|
var CheckPassword func(real_password string, password string, salt string) (err error) = BcryptCheckPassword
|
||||||
|
@ -210,6 +213,7 @@ func _forum_session_check(w http.ResponseWriter, r *http.Request, user *User, fi
|
||||||
// Even if they have the right permissions, the control panel is only open to supermods+. There are many areas without subpermissions which assume that the current user is a supermod+ and admins are extremely unlikely to give these permissions to someone who isn't at-least a supermod to begin with
|
// Even if they have the right permissions, the control panel is only open to supermods+. There are many areas without subpermissions which assume that the current user is a supermod+ and admins are extremely unlikely to give these permissions to someone who isn't at-least a supermod to begin with
|
||||||
func _panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, stats PanelStats, success bool) {
|
func _panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, stats PanelStats, success bool) {
|
||||||
headerVars.Site = site
|
headerVars.Site = site
|
||||||
|
headerVars.Settings = settingBox.Load().(SettingBox)
|
||||||
if !user.Is_Super_Mod {
|
if !user.Is_Super_Mod {
|
||||||
NoPermissions(w,r,*user)
|
NoPermissions(w,r,*user)
|
||||||
return headerVars, stats, false
|
return headerVars, stats, false
|
||||||
|
@ -241,7 +245,7 @@ func _panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (h
|
||||||
|
|
||||||
stats.Users = users.GetGlobalCount()
|
stats.Users = users.GetGlobalCount()
|
||||||
stats.Forums = fstore.GetGlobalCount() // TO-DO: Stop it from showing the blanked forums
|
stats.Forums = fstore.GetGlobalCount() // TO-DO: Stop it from showing the blanked forums
|
||||||
stats.Settings = len(settings) // TO-DO: IS this racey?
|
stats.Settings = len(headerVars.Settings) // TO-DO: IS this racey?
|
||||||
stats.Themes = len(themes)
|
stats.Themes = len(themes)
|
||||||
stats.Reports = 0 // TO-DO: Do the report count. Only show open threads?
|
stats.Reports = 0 // TO-DO: Do the report count. Only show open threads?
|
||||||
|
|
||||||
|
@ -258,16 +262,27 @@ func _panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (h
|
||||||
|
|
||||||
return headerVars, stats, true
|
return headerVars, stats, true
|
||||||
}
|
}
|
||||||
func _simple_panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (success bool) {
|
|
||||||
|
func _simple_panel_session_check(w http.ResponseWriter, r *http.Request, user *User) (headerLite HeaderLite, success bool) {
|
||||||
if !user.Is_Super_Mod {
|
if !user.Is_Super_Mod {
|
||||||
NoPermissions(w,r,*user)
|
NoPermissions(w,r,*user)
|
||||||
return false
|
return headerLite, false
|
||||||
}
|
}
|
||||||
return true
|
headerLite.Site = site
|
||||||
|
headerLite.Settings = settingBox.Load().(SettingBox)
|
||||||
|
return headerLite, true
|
||||||
|
}
|
||||||
|
|
||||||
|
// SimpleSessionCheck is back from the grave, yay :D
|
||||||
|
func _simple_session_check(w http.ResponseWriter, r *http.Request, user *User) (headerLite HeaderLite, success bool) {
|
||||||
|
headerLite.Site = site
|
||||||
|
headerLite.Settings = settingBox.Load().(SettingBox)
|
||||||
|
return headerLite, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func _session_check(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, success bool) {
|
func _session_check(w http.ResponseWriter, r *http.Request, user *User) (headerVars HeaderVars, success bool) {
|
||||||
headerVars.Site = site
|
headerVars.Site = site
|
||||||
|
headerVars.Settings = settingBox.Load().(SettingBox)
|
||||||
if user.Is_Banned {
|
if user.Is_Banned {
|
||||||
headerVars.NoticeList = append(headerVars.NoticeList,"Your account has been suspended. Some of your permissions may have been revoked.")
|
headerVars.NoticeList = append(headerVars.NoticeList,"Your account has been suspended. Some of your permissions may have been revoked.")
|
||||||
}
|
}
|
||||||
|
@ -336,6 +351,7 @@ func words_to_score(wcount int, topic bool) (score int) {
|
||||||
score = 1
|
score = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settings := settingBox.Load().(map[string]interface{})
|
||||||
if wcount >= settings["megapost_min_words"].(int) {
|
if wcount >= settings["megapost_min_words"].(int) {
|
||||||
score += 4
|
score += 4
|
||||||
} else if wcount >= settings["bigpost_min_words"].(int) {
|
} else if wcount >= settings["bigpost_min_words"].(int) {
|
||||||
|
@ -355,6 +371,7 @@ func increase_post_user_stats(wcount int, uid int, topic bool, user User) error
|
||||||
base_score = 2
|
base_score = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settings := settingBox.Load().(map[string]interface{})
|
||||||
if wcount >= settings["megapost_min_words"].(int) {
|
if wcount >= settings["megapost_min_words"].(int) {
|
||||||
_, err := increment_user_megaposts_stmt.Exec(1,1,1,uid)
|
_, err := increment_user_megaposts_stmt.Exec(1,1,1,uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -394,6 +411,7 @@ func decrease_post_user_stats(wcount int, uid int, topic bool, user User) error
|
||||||
base_score = -2
|
base_score = -2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settings := settingBox.Load().(map[string]interface{})
|
||||||
if wcount >= settings["megapost_min_words"].(int) {
|
if wcount >= settings["megapost_min_words"].(int) {
|
||||||
_, err := increment_user_megaposts_stmt.Exec(-1,-1,-1,uid)
|
_, err := increment_user_megaposts_stmt.Exec(-1,-1,-1,uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue