package builder import ( "html" "golang-fave/engine/wrapper" ) const ( DFKHidden = iota DFKText DFKEmail DFKPassword DFKTextArea DFKCheckBox DFKSubmit DFKMessage ) type DataFormField struct { Caption string Kind int Name string Value string Placeholder string Hint string Target string Required bool CallBack func(field *DataFormField) string } func DataForm(wrap *wrapper.Wrapper, data []DataFormField) string { result := `
` result += `` for _, field := range data { if field.Kind != DFKHidden && field.Kind != DFKSubmit && field.Kind != DFKMessage { if field.CallBack != nil { result += field.CallBack(&field) } else { required := `` if field.Required { required = ` required` } result += `
` result += `
` result += `
` if field.Kind != DFKCheckBox { result += `` } else { result += `` } result += `
` result += `
` result += `
` if field.Kind == DFKText { result += `` } else if field.Kind == DFKEmail { result += `` } else if field.Kind == DFKPassword { result += `` } else if field.Kind == DFKTextArea { result += `` } else if field.Kind == DFKCheckBox { checked := "" if field.Value != "0" { checked = " checked" } result += `
` } result += `
` if field.Hint != "" { result += `
` + field.Hint + `
` } result += `
` result += `
` result += `
` } } } // TODO: optimize this... for _, field := range data { if field.Kind == DFKMessage { if field.CallBack != nil { result += field.CallBack(&field) } else { result += `
` result += `
` result += `
` result += `
` result += `
` result += `
` result += `
` } } } for _, field := range data { if field.Kind == DFKSubmit { if field.CallBack != nil { result += field.CallBack(&field) } else { result += `` } } } result += `
` return result }