Browse Source

Better action implementation for data table

Vova Tkach 6 years ago
parent
commit
f4b523438e
3 changed files with 53 additions and 9 deletions
  1. 21 0
      engine/builder/data_table_action.go
  2. 19 5
      modules/module_index.go
  3. 13 4
      modules/module_users.go

+ 21 - 0
engine/builder/data_table_action.go

@@ -0,0 +1,21 @@
+package builder
+
+type DataTableActionRow struct {
+	Icon   string
+	Href   string
+	Hint   string
+	Target string
+}
+
+func DataTableAction(data *[]DataTableActionRow) string {
+	result := ``
+	for _, row := range *data {
+		target := ``
+		if row.Target != "" {
+			target = ` target="` + row.Target + `"`
+		}
+		result += `<a class="ico" title="` + row.Hint + `" href="` +
+			row.Href + `"` + target + `>` + row.Icon + `</a>`
+	}
+	return result
+}

+ 19 - 5
modules/module_index.go

@@ -83,11 +83,25 @@ func (this *Modules) RegisterModule_Index() *Module {
 					},
 				},
 			}, func(values *[]string) string {
-				return `<a class="ico" title="View" href="` + (*values)[2] + `" target="_blank">` +
-					assets.SysSvgIconView + `</a>` + `<a class="ico" title="Edit" href="/cp/` +
-					wrap.CurrModule + `/modify/` + (*values)[0] + `/">` + assets.SysSvgIconEdit + `</a>` +
-					`<a class="ico" title="Delete" href="javascript:fave.ActionDataTableDelete(this,'index-delete','` +
-					(*values)[0] + `','Are you sure want to delete page?');">` + assets.SysSvgIconRemove + `</a>`
+				return builder.DataTableAction(&[]builder.DataTableActionRow{
+					{
+						Icon:   assets.SysSvgIconView,
+						Href:   (*values)[2],
+						Hint:   "View",
+						Target: "_blank",
+					},
+					{
+						Icon: assets.SysSvgIconEdit,
+						Href: "/cp/" + wrap.CurrModule + "/modify/" + (*values)[0] + "/",
+						Hint: "Edit",
+					},
+					{
+						Icon: assets.SysSvgIconRemove,
+						Href: "javascript:fave.ActionDataTableDelete(this,'index-delete','" +
+							(*values)[0] + "','Are you sure want to delete page?');",
+						Hint: "Delete",
+					},
+				})
 			}, "/cp/"+wrap.CurrModule+"/")
 		} else if wrap.CurrSubModule == "add" || wrap.CurrSubModule == "modify" {
 			if wrap.CurrSubModule == "add" {

+ 13 - 4
modules/module_users.go

@@ -70,10 +70,19 @@ func (this *Modules) RegisterModule_Users() *Module {
 					},
 				},
 			}, func(values *[]string) string {
-				return `<a class="ico" title="Edit" href="/cp/` + wrap.CurrModule + `/modify/` +
-					(*values)[0] + `/">` + assets.SysSvgIconEdit + `</a>` +
-					`<a class="ico" title="Delete" href="javascript:fave.ActionDataTableDelete(this,'users-delete','` +
-					(*values)[0] + `','Are you sure want to delete user?');">` + assets.SysSvgIconRemove + `</a>`
+				return builder.DataTableAction(&[]builder.DataTableActionRow{
+					{
+						Icon: assets.SysSvgIconEdit,
+						Href: "/cp/" + wrap.CurrModule + "/modify/" + (*values)[0] + "/",
+						Hint: "Edit",
+					},
+					{
+						Icon: assets.SysSvgIconRemove,
+						Href: "javascript:fave.ActionDataTableDelete(this,'users-delete','" +
+							(*values)[0] + "','Are you sure want to delete user?');",
+						Hint: "Delete",
+					},
+				})
 			}, "/cp/"+wrap.CurrModule+"/")
 		} else if wrap.CurrSubModule == "add" || wrap.CurrSubModule == "modify" {
 			if wrap.CurrSubModule == "add" {