form.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package pages
  2. import (
  3. "github.com/GoAdminGroup/go-admin/context"
  4. "github.com/GoAdminGroup/go-admin/modules/config"
  5. "github.com/GoAdminGroup/go-admin/modules/db"
  6. "github.com/GoAdminGroup/go-admin/modules/language"
  7. form2 "github.com/GoAdminGroup/go-admin/plugins/admin/modules/form"
  8. "github.com/GoAdminGroup/go-admin/template"
  9. "github.com/GoAdminGroup/go-admin/template/icon"
  10. "github.com/GoAdminGroup/go-admin/template/types"
  11. "github.com/GoAdminGroup/go-admin/template/types/form"
  12. )
  13. func GetFormContent(ctx *context.Context) (types.Panel, error) {
  14. components := template.Get(config.GetTheme())
  15. col1 := components.Col().GetContent()
  16. btn1 := components.Button().SetType("submit").
  17. SetContent(language.GetFromHtml("Save")).
  18. SetThemePrimary().
  19. SetOrientationRight().
  20. SetLoadingText(icon.Icon("fa-spinner fa-spin", 2) + `Save`).
  21. GetContent()
  22. btn2 := components.Button().SetType("reset").
  23. SetContent(language.GetFromHtml("Reset")).
  24. SetThemeWarning().
  25. SetOrientationLeft().
  26. GetContent()
  27. col2 := components.Col().SetSize(types.SizeMD(8)).
  28. SetContent(btn1 + btn2).GetContent()
  29. var panel = types.NewFormPanel()
  30. panel.AddField("Name", "name", db.Varchar, form.Text)
  31. panel.AddField("Age", "age", db.Int, form.Number)
  32. panel.AddField("HomePage", "homepage", db.Varchar, form.Url).FieldDefault("http://google.com")
  33. panel.AddField("Email", "email", db.Varchar, form.Email).FieldDefault("xxxx@xxx.com")
  34. panel.AddField("Birthday", "birthday", db.Varchar, form.Datetime).FieldDefault("2010-09-05")
  35. panel.AddField("Password", "password", db.Varchar, form.Password)
  36. panel.AddField("IP", "ip", db.Varchar, form.Ip)
  37. panel.AddField("Certificate", "certificate", db.Varchar, form.Multifile).FieldOptionExt(map[string]interface{}{
  38. "maxFileCount": 10,
  39. })
  40. panel.AddField("Money", "currency", db.Int, form.Currency)
  41. panel.AddField("Content", "content", db.Text, form.RichText).
  42. FieldDefault(`<h1>343434</h1><p>34344433434</p><ol><li>23234</li><li>2342342342</li><li>asdfads</li></ol><ul><li>3434334</li><li>34343343434</li><li>44455</li></ul><p><span style="color: rgb(194, 79, 74);">343434</span></p><p><span style="background-color: rgb(194, 79, 74); color: rgb(0, 0, 0);">434434433434</span></p><table border="0" width="100%" cellpadding="0" cellspacing="0"><tbody><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></tbody></table><p><br></p><p><span style="color: rgb(194, 79, 74);"><br></span></p>`)
  43. panel.AddField("Website", "website", db.Tinyint, form.Switch).
  44. FieldHelpMsg("The Website will not be able to access after closing, the admin system still can login").
  45. FieldOptions(types.FieldOptions{
  46. {Value: "0"},
  47. {Value: "1"},
  48. })
  49. panel.AddField("Fruit", "fruit", db.Varchar, form.SelectBox).
  50. FieldOptions(types.FieldOptions{
  51. {Text: "Apple", Value: "apple"},
  52. {Text: "Banana", Value: "banana"},
  53. {Text: "Watermelon", Value: "watermelon"},
  54. {Text: "Pear", Value: "pear"},
  55. }).
  56. FieldDisplay(func(value types.FieldModel) interface{} {
  57. return []string{"Pear"}
  58. })
  59. panel.AddField("Gender", "gender", db.Tinyint, form.Radio).
  60. FieldOptions(types.FieldOptions{
  61. {Text: "Men", Value: "0"},
  62. {Text: "Women", Value: "1"},
  63. })
  64. panel.AddField("Drink", "drink", db.Tinyint, form.Select).
  65. FieldOptions(types.FieldOptions{
  66. {Text: "Beer", Value: "beer"},
  67. {Text: "Juice", Value: "juice"},
  68. {Text: "Water", Value: "water"},
  69. {Text: "Red Bull", Value: "red bull"},
  70. }).FieldDefault("beer")
  71. panel.AddField("Work Experience", "experience", db.Tinyint, form.SelectSingle).
  72. FieldOptions(types.FieldOptions{
  73. {Text: "two years", Value: "0"},
  74. {Text: "three years", Value: "1"},
  75. {Text: "four years", Value: "2"},
  76. {Text: "five years", Value: "3"},
  77. }).FieldDefault("beer")
  78. panel.SetTabGroups(types.TabGroups{
  79. {"name", "age", "homepage", "email", "birthday", "password", "ip", "certificate", "currency", "content"},
  80. {"website", "fruit", "gender", "drink", "experience"},
  81. })
  82. panel.SetTabHeaders("input", "select")
  83. fields, headers := panel.GroupField()
  84. aform := components.Form().
  85. SetTabHeaders(headers).
  86. SetTabContents(fields).
  87. SetPrefix(config.PrefixFixSlash()).
  88. SetUrl("/admin/form/update").
  89. SetTitle("Form").
  90. SetHiddenFields(map[string]string{
  91. form2.PreviousKey: "/admin",
  92. }).
  93. SetOperationFooter(col1 + col2)
  94. return types.Panel{
  95. Content: components.Box().
  96. SetHeader(aform.GetDefaultBoxHeader()).
  97. WithHeadBorder().
  98. SetBody(aform.GetContent()).
  99. GetContent(),
  100. Title: "Form",
  101. Description: "form example",
  102. }, nil
  103. }