Add support for record page button settings
This commit is contained in:
parent
ef803a8198
commit
e6264c8195
@ -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)
|
||||
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user