posts.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package tables
  2. import (
  3. "github.com/GoAdminGroup/go-admin/context"
  4. "github.com/GoAdminGroup/go-admin/modules/db"
  5. "github.com/GoAdminGroup/go-admin/plugins/admin/modules/table"
  6. "github.com/GoAdminGroup/go-admin/template"
  7. "github.com/GoAdminGroup/go-admin/template/types"
  8. "github.com/GoAdminGroup/go-admin/template/types/form"
  9. editType "github.com/GoAdminGroup/go-admin/template/types/table"
  10. )
  11. // GetPostsTable return the model of table posts.
  12. func GetPostsTable(ctx *context.Context) (postsTable table.Table) {
  13. postsTable = table.NewDefaultTable(ctx, table.DefaultConfigWithDriver("sqlite"))
  14. info := postsTable.GetInfo()
  15. info.AddField("ID", "id", db.Int).FieldSortable()
  16. info.AddField("Title", "title", db.Varchar)
  17. info.AddField("AuthorID", "author_id", db.Int).FieldDisplay(func(value types.FieldModel) interface{} {
  18. return template.Default().
  19. Link().
  20. SetURL("/admin/info/authors/detail?__goadmin_detail_pk=" + value.Value).
  21. SetContent(template.HTML(value.Value)).
  22. OpenInNewTab().
  23. SetTabTitle(template.HTML("Author Detail(" + value.Value + ")")).
  24. GetContent()
  25. })
  26. info.AddField("AuthorName", "name", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} {
  27. first, _ := value.Row["authors_goadmin_join_first_name"].(string)
  28. last, _ := value.Row["authors_goadmin_join_last_name"].(string)
  29. return first + " " + last
  30. })
  31. info.AddField("AuthorFirstName", "first_name", db.Varchar).FieldJoin(types.Join{
  32. Field: "author_id",
  33. JoinField: "id",
  34. Table: "authors",
  35. }).FieldHide()
  36. info.AddField("AuthorLastName", "last_name", db.Varchar).FieldJoin(types.Join{
  37. Field: "author_id",
  38. JoinField: "id",
  39. Table: "authors",
  40. }).FieldHide()
  41. info.AddField("Description", "description", db.Varchar)
  42. info.AddField("Content", "content", db.Varchar).FieldEditAble(editType.Textarea)
  43. info.AddField("Date", "date", db.Varchar)
  44. info.SetTable("posts").SetTitle("Posts").SetDescription("Posts")
  45. formList := postsTable.GetForm()
  46. formList.AddField("ID", "id", db.Int, form.Default).FieldNotAllowEdit().FieldNotAllowAdd()
  47. formList.AddField("Title", "title", db.Varchar, form.Text)
  48. formList.AddField("Description", "description", db.Varchar, form.Text)
  49. formList.AddField("Content", "content", db.Varchar, form.RichText).FieldEnableFileUpload()
  50. formList.AddField("Date", "date", db.Varchar, form.Datetime)
  51. formList.EnableAjax("Success", "Fail")
  52. formList.SetTable("posts").SetTitle("Posts").SetDescription("Posts")
  53. return
  54. }