module_users.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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", Show: true, Icon: assets.SysSvgIconList},
  19. {Mount: "add", Name: "Add New User", Show: true, Icon: assets.SysSvgIconPlus},
  20. {Mount: "modify", Name: "Modify user", Show: false},
  21. },
  22. }, nil, func(wrap *wrapper.Wrapper) (string, string, string) {
  23. content := ""
  24. sidebar := ""
  25. if wrap.CurrSubModule == "" || wrap.CurrSubModule == "default" {
  26. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  27. {Name: "List of Users"},
  28. })
  29. content += builder.DataTable(wrap, "users", "id", "DESC", []builder.DataTableRow{
  30. {
  31. DBField: "id",
  32. },
  33. {
  34. DBField: "email",
  35. NameInTable: "Email / Name",
  36. CallBack: func(values *[]string) string {
  37. email := `<a href="/cp/` + wrap.CurrModule + `/modify/` + (*values)[0] + `/">` + html.EscapeString((*values)[1]) + `</a>`
  38. name := html.EscapeString((*values)[2])
  39. if name != "" && (*values)[3] != "" {
  40. name += ` ` + (*values)[3]
  41. }
  42. if name != "" {
  43. name = `<div><small>` + name + `</small></div>`
  44. }
  45. return `<div>` + email + `</div>` + name
  46. },
  47. },
  48. {
  49. DBField: "first_name",
  50. },
  51. {
  52. DBField: "last_name",
  53. },
  54. }, func(values *[]string) string {
  55. return `<a class="ico" href="/cp/` + wrap.CurrModule + `/modify/` + (*values)[0] + `/">` +
  56. assets.SysSvgIconEdit + `</a>` +
  57. `<a class="ico" href="#">` + assets.SysSvgIconRemove + `</a>`
  58. }, "/cp/"+wrap.CurrModule+"/")
  59. } else if wrap.CurrSubModule == "add" || wrap.CurrSubModule == "modify" {
  60. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  61. {Name: "Add New User"},
  62. })
  63. content += builder.DataForm(wrap, []builder.DataFormField{
  64. {
  65. Kind: builder.DFKHidden,
  66. Name: "action",
  67. Value: "users-modify",
  68. },
  69. {
  70. Kind: builder.DFKHidden,
  71. Name: "id",
  72. Value: "0",
  73. },
  74. {
  75. Kind: builder.DFKText,
  76. Caption: "First Name",
  77. Name: "first_name",
  78. Value: "",
  79. },
  80. {
  81. Kind: builder.DFKText,
  82. Caption: "Last Name",
  83. Name: "last_name",
  84. Value: "",
  85. },
  86. {
  87. Kind: builder.DFKEmail,
  88. Caption: "Email",
  89. Name: "email",
  90. Value: "",
  91. Required: true,
  92. },
  93. {
  94. Kind: builder.DFKPassword,
  95. Caption: "Password",
  96. Name: "password",
  97. Hint: "Leave the field blank to not change the password",
  98. },
  99. {
  100. Kind: builder.DFKMessage,
  101. },
  102. {
  103. Kind: builder.DFKSubmit,
  104. Value: "Add",
  105. Target: "add-edit-button",
  106. },
  107. })
  108. sidebar += `<button class="btn btn-primary btn-sidebar" id="add-edit-button">Add</button>`
  109. }
  110. return this.getSidebarModules(wrap), content, sidebar
  111. })
  112. }