feat: Admin settings 侧栏 aside_widgets 开关与排序

让运营可在 /admin/settings 配置右栏组件,并与友链页 aside 开关共用同一份 JSON。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-29 20:16:07 +08:00
parent 2d09729976
commit 5e623f67fb
10 changed files with 236 additions and 32 deletions

View File

@@ -0,0 +1,31 @@
package web
import (
"testing"
"git.iioio.com/freefire/jiang13-forum/services"
)
func TestMoveAsideWidget(t *testing.T) {
base := []services.AsideWidget{
{ID: services.AsideWidgetTagCloud, Enabled: true},
{ID: services.AsideWidgetRecentComments, Enabled: false},
{ID: services.AsideWidgetRecentUsers, Enabled: false},
{ID: services.AsideWidgetFriendLinks, Enabled: true},
}
up := moveAsideWidget(append([]services.AsideWidget(nil), base...), "up:"+services.AsideWidgetRecentComments)
if up[0].ID != services.AsideWidgetRecentComments || up[1].ID != services.AsideWidgetTagCloud {
t.Fatalf("up move failed: %+v", up)
}
down := moveAsideWidget(append([]services.AsideWidget(nil), base...), "down:"+services.AsideWidgetTagCloud)
if down[0].ID != services.AsideWidgetRecentComments || down[1].ID != services.AsideWidgetTagCloud {
t.Fatalf("down move failed: %+v", down)
}
noop := moveAsideWidget(append([]services.AsideWidget(nil), base...), "up:"+services.AsideWidgetTagCloud)
if noop[0].ID != services.AsideWidgetTagCloud {
t.Fatalf("top up should noop: %+v", noop)
}
}