3
0

Add support for record page button settings

This commit is contained in:
Tomaž Jerman 2022-04-25 13:54:26 +02:00 committed by Denis Arh
parent ef803a8198
commit e6264c8195
3 changed files with 81 additions and 8 deletions

View File

@ -571,6 +571,16 @@ func (app *CortezaApp) Activate(ctx context.Context) (err error) {
updatePasswdSettings(app.Opt.Auth, sysService.CurrentSettings)
})
cmpService.DefaultPage.UpdateConfig(sysService.CurrentSettings)
sysService.DefaultSettings.Register("compose.ui.record-toolbar", func(ctx context.Context, current interface{}, set types.SettingValueSet) {
appSettings, is := current.(*types.AppSettings)
if !is {
return
}
cmpService.DefaultPage.UpdateConfig(appSettings)
})
updateDiscoverySettings(app.Opt.Discovery, service.CurrentSettings)
updateLocaleSettings(app.Opt.Locale)

View File

@ -13,6 +13,7 @@ import (
"github.com/cortezaproject/corteza-server/pkg/label"
"github.com/cortezaproject/corteza-server/pkg/locale"
"github.com/cortezaproject/corteza-server/store"
systemTypes "github.com/cortezaproject/corteza-server/system/types"
)
type (
@ -22,6 +23,17 @@ type (
eventbus eventDispatcher
store store.Storer
locale ResourceTranslationsManagerService
pageSettings *pageSettings
}
pageSettings struct {
hideNew bool
hideEdit bool
hideSubmit bool
hideDelete bool
hideClone bool
hideBack bool
}
pageAccessController interface {
@ -46,11 +58,12 @@ const (
func Page() *page {
return &page{
actionlog: DefaultActionlog,
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
store: DefaultStore,
locale: DefaultResourceTranslation,
actionlog: DefaultActionlog,
ac: DefaultAccessControl,
eventbus: eventbus.Service(),
store: DefaultStore,
locale: DefaultResourceTranslation,
pageSettings: &pageSettings{},
}
}
@ -144,6 +157,11 @@ func (svc page) search(ctx context.Context, filter types.PageFilter) (set types.
return err
}
set.Walk(func(p *types.Page) error {
preparePageConfig(svc.pageSettings, p)
return nil
})
// i18n
tag := locale.GetAcceptLanguageFromContext(ctx)
set.Walk(func(p *types.Page) error {
@ -505,6 +523,8 @@ func (svc page) lookup(ctx context.Context, namespaceID uint64, lookup func(*pag
return err
}
preparePageConfig(svc.pageSettings, p)
p.DecodeTranslations(svc.locale.Locale().ResourceTranslations(locale.GetAcceptLanguageFromContext(ctx), p.ResourceTranslation()))
aProps.setPage(p)
@ -664,22 +684,55 @@ func (svc page) handleUndelete(ctx context.Context, ns *types.Namespace, m *type
return pageChanged, nil
}
func loadPage(ctx context.Context, s store.Storer, namespaceID, pageID uint64) (ns *types.Namespace, m *types.Page, err error) {
func preparePageConfig(ss *pageSettings, p *types.Page) {
if p.ModuleID == 0 {
p.Config.Buttons = nil
return
}
p.Config.Buttons = &types.PageButtonConfig{}
if ss == nil {
return
}
p.Config.Buttons.New.Enabled = !ss.hideNew
p.Config.Buttons.Edit.Enabled = !ss.hideEdit
p.Config.Buttons.Submit.Enabled = !ss.hideSubmit
p.Config.Buttons.Delete.Enabled = !ss.hideDelete
p.Config.Buttons.Clone.Enabled = !ss.hideClone
p.Config.Buttons.Back.Enabled = !ss.hideBack
}
func (svc *page) UpdateConfig(ss *systemTypes.AppSettings) {
a := ss.Compose.UI.RecordToolbar
svc.pageSettings = &pageSettings{
hideNew: a.HideNew,
hideEdit: a.HideEdit,
hideSubmit: a.HideSubmit,
hideDelete: a.HideDelete,
hideClone: a.HideClone,
hideBack: a.HideBack,
}
}
func loadPage(ctx context.Context, s store.Storer, namespaceID, pageID uint64) (ns *types.Namespace, p *types.Page, err error) {
if pageID == 0 {
return nil, nil, PageErrInvalidID()
}
if ns, err = loadNamespace(ctx, s, namespaceID); err == nil {
if m, err = store.LookupComposePageByID(ctx, s, pageID); errors.IsNotFound(err) {
if p, err = store.LookupComposePageByID(ctx, s, pageID); errors.IsNotFound(err) {
err = PageErrNotFound()
}
}
preparePageConfig(nil, p)
if err != nil {
return nil, nil, err
}
if namespaceID != m.NamespaceID {
if namespaceID != p.NamespaceID {
// Make sure chart belongs to the right namespace
return nil, nil, PageErrNotFound()
}

View File

@ -173,6 +173,16 @@ type (
// Hide namespace link at the end of the list
HideNamespaceListLink bool `json:"hideNamespaceListLink"`
} `kv:"sidebar,final" json:"sidebar"`
// Record toolbar specific settings
RecordToolbar struct {
HideNew bool `json:"hideNew"`
HideEdit bool `json:"hideEdit"`
HideSubmit bool `json:"hideSubmit"`
HideDelete bool `json:"hideDelete"`
HideClone bool `json:"hideClone"`
HideBack bool `json:"hideBack"`
} `kv:"record-toolbar,final" json:"record-toolbar"`
} `kv:"ui" json:"ui"`
// Record related settings