Add support for exp/imp calendar module refs
This commit is contained in:
@@ -58,8 +58,16 @@ func Exporter(ctx context.Context, c *cli.Config) *cobra.Command {
|
||||
}
|
||||
}
|
||||
|
||||
roles, err = service.DefaultSystemRole.Find(ctx)
|
||||
cli.HandleError(err)
|
||||
// roles, err = service.DefaultSystemRole.Find(ctx)
|
||||
// cli.HandleError(err)
|
||||
// At the moment, we can not load roles from system service
|
||||
// so we'll just use static set of known roles
|
||||
//
|
||||
// Roles are use for resolving access control
|
||||
roles = sysTypes.RoleSet{
|
||||
&sysTypes.Role{ID: 1, Handle: "everyone"},
|
||||
&sysTypes.Role{ID: 2, Handle: "admins"},
|
||||
}
|
||||
|
||||
modules, _, err := service.DefaultModule.Find(types.ModuleFilter{NamespaceID: ns.ID})
|
||||
cli.HandleError(err)
|
||||
@@ -473,6 +481,29 @@ func expPageBlocks(in types.PageBlocks, pages types.PageSet, modules types.Modul
|
||||
})
|
||||
|
||||
out[i].Options["buttons"] = bb
|
||||
} else if out[i].Kind == "Calendar" {
|
||||
ff := make([]interface{}, 0)
|
||||
_ = deinterfacer.Each(out[i].Options["feeds"], func(_ int, _ string, def interface{}) error {
|
||||
feed := map[string]interface{}{}
|
||||
|
||||
_ = deinterfacer.Each(def, func(_ int, k string, v interface{}) error {
|
||||
switch k {
|
||||
case "moduleID":
|
||||
if module := modules.FindByID(deinterfacer.ToUint64(v)); module != nil {
|
||||
feed["module"] = makeHandleFromName(module.Name, module.Handle, "module-%d", module.ID)
|
||||
}
|
||||
default:
|
||||
feed[k] = v
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
ff = append(ff, feed)
|
||||
return nil
|
||||
})
|
||||
|
||||
out[i].Options["feeds"] = ff
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -396,6 +396,40 @@ func (pImp *Page) resolveRefs(page *types.Page) error {
|
||||
|
||||
b.Options["buttons"] = bb
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else if b.Kind == "Calendar" {
|
||||
ff := make([]interface{}, 0)
|
||||
err := deinterfacer.Each(b.Options["feeds"], func(_ int, _ string, def interface{}) (err error) {
|
||||
feed := map[string]interface{}{}
|
||||
|
||||
err = deinterfacer.Each(def, func(_ int, k string, v interface{}) error {
|
||||
switch k {
|
||||
case "module":
|
||||
if m, err := pImp.getModule(deinterfacer.ToString(v)); err != nil || m == nil {
|
||||
return errors.Errorf("could not load module %q for page %q block #%d (%v)",
|
||||
v, page.Handle, i+1, err)
|
||||
} else {
|
||||
feed["moduleID"] = m.ID
|
||||
}
|
||||
default:
|
||||
feed[k] = v
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ff = append(ff, feed)
|
||||
return nil
|
||||
})
|
||||
|
||||
b.Options["feeds"] = ff
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user