module_users.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package modules
  2. import (
  3. "html"
  4. "golang-fave/assets"
  5. "golang-fave/consts"
  6. "golang-fave/engine/builder"
  7. "golang-fave/engine/wrapper"
  8. )
  9. func (this *Modules) RegisterModule_Users() *Module {
  10. return this.newModule(MInfo{
  11. WantDB: true,
  12. Mount: "users",
  13. Name: "Users",
  14. Order: 800,
  15. System: true,
  16. Icon: assets.SysSvgIconUser,
  17. Sub: &[]MISub{
  18. {Mount: "default", Name: "List of Users", Icon: assets.SysSvgIconList},
  19. {Mount: "modify", Name: "Add New User", Icon: assets.SysSvgIconPlus},
  20. },
  21. }, nil, func(wrap *wrapper.Wrapper) (string, string, string) {
  22. content := ""
  23. sidebar := ""
  24. if wrap.CurrSubModule == "" || wrap.CurrSubModule == "default" {
  25. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  26. {Name: "List of Users"},
  27. })
  28. content += builder.DataTable(wrap, "users", "email", "ASC", []builder.DataTableRow{
  29. {
  30. DBField: "id",
  31. },
  32. {
  33. DBField: "email",
  34. NameInTable: "Email",
  35. CallBack: func(values *[]string) string {
  36. email := `<a href="/cp/users/modify/` + (*values)[0] + `/">` + html.EscapeString((*values)[1]) + `</a>`
  37. name := html.EscapeString((*values)[2])
  38. if name != "" && (*values)[3] != "" {
  39. name += ` ` + (*values)[3]
  40. }
  41. if name != "" {
  42. name = `<div><small>` + name + `</small></div>`
  43. }
  44. return `<div>` + email + `</div>` + name
  45. },
  46. },
  47. {
  48. DBField: "first_name",
  49. },
  50. {
  51. DBField: "last_name",
  52. },
  53. }, func(values *[]string) string {
  54. return `<a class="ico" href="/cp/users/modify/` + (*values)[0] + `/">` +
  55. assets.SysSvgIconEdit + `</a>` +
  56. `<a class="ico" href="#">` + assets.SysSvgIconRemove + `</a>`
  57. }, "/cp/users/")
  58. } else if wrap.CurrSubModule == "modify" {
  59. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  60. {Name: "Add New User"},
  61. })
  62. content += builder.DataForm(wrap, []builder.DataFormField{
  63. {
  64. Kind: builder.DFKHidden,
  65. Name: "action",
  66. Value: "users_edit",
  67. },
  68. {
  69. Kind: builder.DFKHidden,
  70. Name: "id",
  71. Value: "0",
  72. },
  73. {
  74. Kind: builder.DFKText,
  75. Caption: "User first name",
  76. Name: "first_name",
  77. Value: "1",
  78. },
  79. {
  80. Kind: builder.DFKText,
  81. Caption: "User last name",
  82. Name: "last_name",
  83. Value: "2",
  84. },
  85. {
  86. Kind: builder.DFKEmail,
  87. Caption: "User email",
  88. Name: "email",
  89. Value: "3",
  90. Required: true,
  91. },
  92. {
  93. Kind: builder.DFKPassword,
  94. Caption: "User password",
  95. Name: "password",
  96. Hint: "Leave the field blank to not change the password",
  97. },
  98. {
  99. Kind: builder.DFKSubmit,
  100. Value: "Add",
  101. Target: "add-edit-button",
  102. },
  103. })
  104. sidebar += `<button class="btn btn-primary btn-sidebar" id="add-edit-button">Add</button>`
  105. }
  106. return this.getSidebarModules(wrap), content, sidebar
  107. })
  108. }