module_notify_mail.go 3.8 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/sqlw"
  8. "golang-fave/engine/wrapper"
  9. "golang-fave/utils"
  10. )
  11. func (this *Modules) RegisterModule_NotifyMail() *Module {
  12. return this.newModule(MInfo{
  13. WantDB: true,
  14. Mount: "notify-mail",
  15. Name: "Mail notifier",
  16. Order: 803,
  17. System: true,
  18. Icon: assets.SysSvgIconEmail,
  19. Sub: &[]MISub{
  20. {Mount: "default", Name: "All", Show: true, Icon: assets.SysSvgIconList},
  21. {Mount: "success", Name: "Success", Show: true, Icon: assets.SysSvgIconList},
  22. {Mount: "in-progress", Name: "In progress", Show: true, Icon: assets.SysSvgIconList},
  23. {Mount: "error", Name: "Error", Show: true, Icon: assets.SysSvgIconList},
  24. },
  25. }, nil, func(wrap *wrapper.Wrapper) (string, string, string) {
  26. content := ""
  27. sidebar := ""
  28. if wrap.CurrSubModule == "" || wrap.CurrSubModule == "default" || wrap.CurrSubModule == "success" || wrap.CurrSubModule == "in-progress" || wrap.CurrSubModule == "error" {
  29. ModuleName := "All"
  30. ModulePagination := "/cp/" + wrap.CurrModule + "/"
  31. ModuleSqlWhere := ""
  32. if wrap.CurrSubModule == "success" {
  33. ModuleName = "Success"
  34. ModulePagination = "/cp/" + wrap.CurrModule + "/success/"
  35. ModuleSqlWhere = " WHERE notify_mail.status = 1"
  36. } else if wrap.CurrSubModule == "in-progress" {
  37. ModuleName = "In progress"
  38. ModulePagination = "/cp/" + wrap.CurrModule + "/in-progress/"
  39. ModuleSqlWhere = " WHERE notify_mail.status = 2"
  40. } else if wrap.CurrSubModule == "error" {
  41. ModuleName = "Error"
  42. ModulePagination = "/cp/" + wrap.CurrModule + "/error/"
  43. ModuleSqlWhere = " WHERE notify_mail.status = 0"
  44. }
  45. content += this.getBreadCrumbs(wrap, &[]consts.BreadCrumb{
  46. {Name: ModuleName},
  47. })
  48. content += builder.DataTable(
  49. wrap,
  50. "notify_mail",
  51. "id",
  52. "DESC",
  53. &[]builder.DataTableRow{
  54. {
  55. DBField: "id",
  56. },
  57. {
  58. DBField: "email",
  59. NameInTable: "Email / Subject",
  60. CallBack: func(values *[]string) string {
  61. email := `<a href="/cp/` + wrap.CurrModule + `/details/` + (*values)[0] + `/">` + html.EscapeString((*values)[1]) + `</a>`
  62. subject := html.EscapeString((*values)[2])
  63. if subject != "" {
  64. subject = `<div><small>` + subject + `</small></div>`
  65. }
  66. return `<div>` + email + `</div>` + subject
  67. },
  68. },
  69. {
  70. DBField: "subject",
  71. },
  72. {
  73. DBField: "datetime",
  74. DBExp: "UNIX_TIMESTAMP(`datetime`)",
  75. NameInTable: "Date / Time",
  76. Classes: "d-none d-md-table-cell",
  77. CallBack: func(values *[]string) string {
  78. t := int64(utils.StrToInt((*values)[3]))
  79. return `<div>` + utils.UnixTimestampToFormat(t, "02.01.2006") + `</div>` +
  80. `<div><small>` + utils.UnixTimestampToFormat(t, "15:04:05") + `</small></div>`
  81. },
  82. },
  83. {
  84. DBField: "status",
  85. NameInTable: "Status",
  86. Classes: "d-none d-sm-table-cell",
  87. CallBack: func(values *[]string) string {
  88. return builder.CheckBox(utils.StrToInt((*values)[4]))
  89. },
  90. },
  91. },
  92. nil,
  93. ModulePagination,
  94. func() (int, error) {
  95. var count int
  96. return count, wrap.DB.QueryRow(
  97. "SELECT COUNT(*) FROM `notify_mail`" + ModuleSqlWhere + ";",
  98. ).Scan(&count)
  99. },
  100. func(limit_offset int, pear_page int) (*sqlw.Rows, error) {
  101. return wrap.DB.Query(
  102. `SELECT
  103. notify_mail.id,
  104. notify_mail.email,
  105. notify_mail.subject,
  106. UNIX_TIMESTAMP(`+"`notify_mail`.`datetime`"+`) AS datetime,
  107. notify_mail.status
  108. FROM
  109. notify_mail
  110. `+ModuleSqlWhere+`
  111. ORDER BY
  112. notify_mail.id DESC
  113. LIMIT ?, ?;`,
  114. limit_offset,
  115. pear_page,
  116. )
  117. },
  118. true,
  119. )
  120. } else if wrap.CurrSubModule == "details" {
  121. //
  122. }
  123. return this.getSidebarModules(wrap), content, sidebar
  124. })
  125. }