module_users.go 3.4 KB

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