217e7abab3
The query statements now use camelCase instead of undercase. Added more documentation. Renamed a few config variables. The length counters in the MemoryUserStore and MemoryTopicStore are now atomic. Added the Flush method to the UserCache and TopicCache. Made more visual improvements to Tempra Conflux. The avatar block vanished from the opening posts for topics for some reason, I added it back. Added more tests. And many more changes...
105 lines
1.8 KiB
Go
105 lines
1.8 KiB
Go
/* Copyright Azareal 2017 - 2018 */
|
|
package main
|
|
|
|
import "log"
|
|
import "bytes"
|
|
import "sync"
|
|
import "encoding/json"
|
|
|
|
//import "html/template"
|
|
|
|
var docks WidgetDocks
|
|
var widgetUpdateMutex sync.RWMutex
|
|
|
|
type WidgetDocks struct {
|
|
LeftSidebar []Widget
|
|
RightSidebar []Widget
|
|
//PanelLeft []Menus
|
|
}
|
|
|
|
type Widget struct {
|
|
Enabled bool
|
|
Location string // Coming Soon: overview, topics, topic / topic_view, forums, forum, global
|
|
Position int
|
|
Body string
|
|
}
|
|
|
|
type WidgetMenu struct {
|
|
Name string
|
|
MenuList []WidgetMenuItem
|
|
}
|
|
|
|
type WidgetMenuItem struct {
|
|
Text string
|
|
Location string
|
|
Compact bool
|
|
}
|
|
|
|
type NameTextPair struct {
|
|
Name string
|
|
Text string
|
|
}
|
|
|
|
func initWidgets() error {
|
|
rows, err := getWidgetsStmt.Query()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var sbytes []byte
|
|
var side, wtype, data string
|
|
|
|
var leftWidgets []Widget
|
|
var rightWidgets []Widget
|
|
|
|
for rows.Next() {
|
|
var widget Widget
|
|
err = rows.Scan(&widget.Position, &side, &wtype, &widget.Enabled, &widget.Location, &data)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
sbytes = []byte(data)
|
|
switch wtype {
|
|
case "simple":
|
|
var tmp NameTextPair
|
|
err = json.Unmarshal(sbytes, &tmp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var b bytes.Buffer
|
|
err = templates.ExecuteTemplate(&b, "widget_simple.html", tmp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
widget.Body = string(b.Bytes())
|
|
default:
|
|
widget.Body = data
|
|
}
|
|
|
|
if side == "left" {
|
|
leftWidgets = append(leftWidgets, widget)
|
|
} else if side == "right" {
|
|
rightWidgets = append(rightWidgets, widget)
|
|
}
|
|
}
|
|
err = rows.Err()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
widgetUpdateMutex.Lock()
|
|
docks.LeftSidebar = leftWidgets
|
|
docks.RightSidebar = rightWidgets
|
|
widgetUpdateMutex.Unlock()
|
|
|
|
if dev.SuperDebug {
|
|
log.Print("docks.LeftSidebar", docks.LeftSidebar)
|
|
log.Print("docks.RightSidebar", docks.RightSidebar)
|
|
}
|
|
|
|
return nil
|
|
}
|