本文整理汇总了Golang中github.com/qor/qor/admin.Resource.NewAttrs方法的典型用法代码示例。如果您正苦于以下问题:Golang Resource.NewAttrs方法的具体用法?Golang Resource.NewAttrs怎么用?Golang Resource.NewAttrs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/qor/qor/admin.Resource
的用法示例。
在下文中一共展示了Resource.NewAttrs方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InjectQorAdmin
func (s Status) InjectQorAdmin(res *admin.Resource) {
if res.GetMeta("PublishStatus") == nil {
res.IndexAttrs(append(res.IndexAttrs(), "-PublishStatus")...)
res.ShowAttrs(append(res.ShowAttrs(), "-PublishStatus")...)
res.EditAttrs(append(res.EditAttrs(), "-PublishStatus")...)
res.NewAttrs(append(res.NewAttrs(), "-PublishStatus")...)
}
}
示例2: ConfigureQorResource
func (l *Locale) ConfigureQorResource(res *admin.Resource) {
Admin := res.GetAdmin()
res.UseTheme("l10n")
if res.Config.Permission == nil {
res.Config.Permission = roles.NewPermission()
}
res.Config.Permission.Allow(roles.CRUD, "locale_admin").Allow(roles.Read, "locale_reader")
if res.GetMeta("Localization") == nil {
res.Meta(&admin.Meta{Name: "Localization", Valuer: func(value interface{}, ctx *qor.Context) interface{} {
db := ctx.GetDB()
context := Admin.NewContext(ctx.Writer, ctx.Request)
var languageCodes []string
scope := db.NewScope(value)
db.New().Set("l10n:mode", "unscoped").Model(res.Value).Where(fmt.Sprintf("%v = ?", scope.PrimaryKey()), scope.PrimaryKeyValue()).Pluck("language_code", &languageCodes)
var results string
availableLocales := getAvailableLocales(ctx.Request, ctx.CurrentUser)
OUT:
for _, locale := range availableLocales {
for _, localized := range languageCodes {
if locale == localized {
results += fmt.Sprintf("<span class=\"qor-label is-active\">%s</span> ", context.T(locale))
continue OUT
}
}
results += fmt.Sprintf("<span class=\"qor-label\">%s</span> ", context.T(locale))
}
return template.HTML(results)
}})
attrs := res.IndexAttrs()
var hasLocalization bool
for _, attr := range attrs {
if attr == "Localization" {
hasLocalization = true
break
}
}
if hasLocalization {
res.IndexAttrs(append(res.IndexAttrs(), "-LanguageCode")...)
} else {
res.IndexAttrs(append(res.IndexAttrs(), "-LanguageCode", "Localization")...)
}
res.ShowAttrs(append(res.ShowAttrs(), "-LanguageCode", "-Localization")...)
res.EditAttrs(append(res.EditAttrs(), "-LanguageCode", "-Localization")...)
res.NewAttrs(append(res.NewAttrs(), "-LanguageCode", "-Localization")...)
}
// Set meta permissions
for _, field := range Admin.Config.DB.NewScope(res.Value).Fields() {
if isSyncField(field.StructField) {
if meta := res.GetMeta(field.Name); meta != nil {
permission := meta.Permission
if permission == nil {
permission = roles.Allow(roles.CRUD, "global_admin").Allow(roles.Read, "locale_reader")
} else {
permission = permission.Allow(roles.CRUD, "global_admin").Allow(roles.Read, "locale_reader")
}
meta.Permission = permission
} else {
res.Meta(&admin.Meta{Name: field.Name, Permission: roles.Allow(roles.CRUD, "global_admin").Allow(roles.Read, "locale_reader")})
}
}
}
// Roles
role := res.Config.Permission.Role
if _, ok := role.Get("locale_admin"); !ok {
role.Register("locale_admin", func(req *http.Request, currentUser qor.CurrentUser) bool {
currentLocale := getLocaleFromContext(&qor.Context{Request: req})
for _, locale := range getEditableLocales(req, currentUser) {
if locale == currentLocale {
return true
}
}
return false
})
}
if _, ok := role.Get("global_admin"); !ok {
role.Register("global_admin", func(req *http.Request, currentUser qor.CurrentUser) bool {
return getLocaleFromContext(&qor.Context{Request: req}) == Global
})
}
if _, ok := role.Get("locale_reader"); !ok {
role.Register("locale_reader", func(req *http.Request, currentUser qor.CurrentUser) bool {
currentLocale := getLocaleFromContext(&qor.Context{Request: req})
for _, locale := range getAvailableLocales(req, currentUser) {
if locale == currentLocale {
return true
}
}
return false
})
//.........这里部分代码省略.........