broke out the generation of the sideboxes
This commit is contained in:
@@ -9,9 +9,73 @@
|
||||
// Package main contains the high-level Amsterdam logic.
|
||||
package main
|
||||
|
||||
import "git.erbosoft.com/amy/amsterdam/ui"
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.erbosoft.com/amy/amsterdam/database"
|
||||
"git.erbosoft.com/amy/amsterdam/ui"
|
||||
)
|
||||
|
||||
type RenderedSideboxItem struct {
|
||||
Text string
|
||||
Link *string
|
||||
Flags []string
|
||||
}
|
||||
|
||||
type RenderedSidebox struct {
|
||||
TemplateName string
|
||||
Title string
|
||||
Subtext *string
|
||||
Items []RenderedSideboxItem
|
||||
}
|
||||
|
||||
func buildFeaturedCommunities(uid int32, out *RenderedSidebox, in *database.Sidebox) error {
|
||||
out.TemplateName = "sb_ftrcomm.jet"
|
||||
return nil
|
||||
}
|
||||
|
||||
func buildFeaturedConferences(uid int32, out *RenderedSidebox, in *database.Sidebox) error {
|
||||
out.TemplateName = "sb_ftrconf.jet"
|
||||
return nil
|
||||
}
|
||||
|
||||
func buildUsersOnline(uid int32, out *RenderedSidebox, in *database.Sidebox) error {
|
||||
out.TemplateName = "sb_online.jet"
|
||||
return nil
|
||||
}
|
||||
|
||||
func buildRenderedSidebox(uid int32, out *RenderedSidebox, in *database.Sidebox) error {
|
||||
switch in.Boxid {
|
||||
case 1:
|
||||
return buildFeaturedCommunities(uid, out, in)
|
||||
case 2:
|
||||
return buildFeaturedConferences(uid, out, in)
|
||||
case 3:
|
||||
return buildUsersOnline(uid, out, in)
|
||||
default:
|
||||
return fmt.Errorf("unknown sidebox boxid: %d", in.Boxid)
|
||||
}
|
||||
}
|
||||
|
||||
func TopPage(ctxt ui.AmContext) (string, any, error) {
|
||||
// Set the page title.
|
||||
ctxt.VarMap().Set("amsterdam_pageTitle", "My Front Page")
|
||||
|
||||
// Retrieve the sideboxes and create the data to be presented.
|
||||
uid := ctxt.Session().Values["user_id"].(int32)
|
||||
sboxes, err := database.AmGetSideboxes(uid)
|
||||
if err != nil {
|
||||
return "string", "Unable to retrieve sideboxes", err
|
||||
}
|
||||
|
||||
rc := make([]RenderedSidebox, len(sboxes))
|
||||
for i, sb := range sboxes {
|
||||
err = buildRenderedSidebox(uid, &(rc[i]), sb)
|
||||
if err != nil {
|
||||
return "string", "Unable to render sideboxes", err
|
||||
}
|
||||
}
|
||||
|
||||
ctxt.VarMap().Set("sideboxes", rc)
|
||||
return "framed_template", "top.jet", nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user