Ejemplo n.º 1
0
Archivo: seo.go Proyecto: qor/seo
// ConfigureQorMetaBeforeInitialize configure SEO setting for qor admin
func (Setting) ConfigureQorMetaBeforeInitialize(meta resource.Metaor) {
	if meta, ok := meta.(*admin.Meta); ok {
		meta.Type = "seo"

		if meta.GetValuer() == nil {
			res := meta.GetBaseResource().(*admin.Resource)
			Admin := res.GetAdmin()

			tags := meta.FieldStruct.Struct.Tag.Get("seo")
			tagsArray := splitTags(tags)
			tagsArray = prependMainObjectTags(tagsArray, Admin.Config.DB.NewScope(res.Value).IndirectValue())

			meta.SetValuer(func(value interface{}, ctx *qor.Context) interface{} {
				settingField, _ := ctx.GetDB().NewScope(value).FieldByName(meta.FieldStruct.Struct.Name)
				setting := settingField.Field.Interface().(settingInterface).GetSetting()
				setting.Tags = tags
				setting.TagsArray = tagsArray
				return setting
			})
		}

		res := meta.GetBaseResource().(*admin.Resource)
		res.GetAdmin().RegisterViewPath("github.com/qor/seo/views")
		res.UseTheme("seo")
		registerFunctions(res)
	}
}