diff --git a/top.go b/top.go index 962b983..1add63f 100644 --- a/top.go +++ b/top.go @@ -37,6 +37,7 @@ type RenderedSidebox struct { Title string Subtext *string Items []RenderedSideboxItem + Flags map[string]bool } /* buildCommunitiesSidebox creates the data for the "My/Featured Communities" sidebox. @@ -48,31 +49,41 @@ type RenderedSidebox struct { * Standard Go error status. */ func buildCommunitiesSidebox(uid int32, out *RenderedSidebox, in *database.Sidebox) error { - var err error - var anon bool - anon, err = database.AmIsUserAnon(uid) + user, err := database.AmGetUser(uid) if err == nil { - if anon { - out.Title = "Featured Communities" - } else { - out.Title = "Your Communities" - } - var l []*database.Community - l, err = database.AmGetCommunitiesForUser(uid) + var g *database.Globals + g, err = database.AmGlobals() if err == nil { - out.Items = make([]RenderedSideboxItem, len(l)) - for i, c := range l { - out.Items[i].Text = c.Name - lk := fmt.Sprintf("/comm/%s/profile", c.Alias) - out.Items[i].Link = &lk - out.Items[i].Flags = make(map[string]bool) - var level uint16 - level, err = database.AmGetCommunityAccessLevel(uid, c.Id) - if err == nil && database.AmTestPermission("Community.ShowAdmin", level) { - out.Items[i].Flags["admin"] = true - } + if user.IsAnon { + out.Title = "Featured Communities" + } else { + out.Title = "Your Communities" + } + var l []*database.Community + l, err = database.AmGetCommunitiesForUser(uid) + if err == nil { + out.Items = make([]RenderedSideboxItem, len(l)) + for i, c := range l { + out.Items[i].Text = c.Name + lk := fmt.Sprintf("/comm/%s/profile", c.Alias) + out.Items[i].Link = &lk + out.Items[i].Flags = make(map[string]bool) + var level uint16 + level, err = database.AmGetCommunityAccessLevel(uid, c.Id) + if err == nil && database.AmTestPermission("Community.ShowAdmin", level) { + out.Items[i].Flags["admin"] = true + } + } + out.Flags = make(map[string]bool) + if user.IsAnon { + out.Flags["canManage"] = false + out.Flags["canCreate"] = false + } else { + out.Flags["canManage"] = true + out.Flags["canCreate"] = user.BaseLevel >= uint16(g.CommunityCreateLevel) + } + out.TemplateName = "sb_ftrcomm.jet" } - out.TemplateName = "sb_ftrcomm.jet" } } _ = in diff --git a/ui/views/frame.jet b/ui/views/frame.jet index e0b9048..b042adb 100644 --- a/ui/views/frame.jet +++ b/ui/views/frame.jet @@ -26,9 +26,9 @@
- + Amsterdam Test
@@ -36,9 +36,7 @@
Help @@ -69,6 +67,10 @@ {{ if !isset(amsterdam_suppressLogin) || !amsterdam_suppressLogin }} - Log Out + {{ if !.CurrentUser().VerifyEMail }} + | + Verify E-Mail + {{ end }} | Profile {{ end }} @@ -124,4 +126,4 @@
- \ No newline at end of file + diff --git a/ui/views/sb_ftrcomm.jet b/ui/views/sb_ftrcomm.jet index f6e288f..9d7a43e 100644 --- a/ui/views/sb_ftrcomm.jet +++ b/ui/views/sb_ftrcomm.jet @@ -26,11 +26,20 @@
You are not a member of any communities.
{{ end }}
-
- - [ Manage | - Create New ] - -
+ {{ if sb.Flags["canManage"] || sb.Flags["canCreate"] }} +
+ + [ + {{ if sb.Flags["canManage"] }} + Manage + {{ if sb.Flags["canCreate"] }}|{{ end }} + {{ end }} + {{ if sb.Flags["canCreate"] }} + Create New + {{ end }} + ] + +
+ {{ end }}