[#370] added rich text editor field
This commit is contained in:
@@ -86,6 +86,7 @@ const (
|
||||
FieldTypeBool string = "bool"
|
||||
FieldTypeEmail string = "email"
|
||||
FieldTypeUrl string = "url"
|
||||
FieldTypeEditor string = "editor"
|
||||
FieldTypeDate string = "date"
|
||||
FieldTypeSelect string = "select"
|
||||
FieldTypeJson string = "json"
|
||||
@@ -104,6 +105,7 @@ func FieldTypes() []string {
|
||||
FieldTypeBool,
|
||||
FieldTypeEmail,
|
||||
FieldTypeUrl,
|
||||
FieldTypeEditor,
|
||||
FieldTypeDate,
|
||||
FieldTypeSelect,
|
||||
FieldTypeJson,
|
||||
@@ -238,6 +240,8 @@ func (f *SchemaField) InitOptions() error {
|
||||
options = &EmailOptions{}
|
||||
case FieldTypeUrl:
|
||||
options = &UrlOptions{}
|
||||
case FieldTypeEditor:
|
||||
options = &EditorOptions{}
|
||||
case FieldTypeDate:
|
||||
options = &DateOptions{}
|
||||
case FieldTypeSelect:
|
||||
@@ -272,7 +276,7 @@ func (f *SchemaField) PrepareValue(value any) any {
|
||||
f.InitOptions()
|
||||
|
||||
switch f.Type {
|
||||
case FieldTypeText, FieldTypeEmail, FieldTypeUrl:
|
||||
case FieldTypeText, FieldTypeEmail, FieldTypeUrl, FieldTypeEditor:
|
||||
return cast.ToString(value)
|
||||
case FieldTypeJson:
|
||||
val, _ := types.ParseJsonRaw(value)
|
||||
@@ -473,6 +477,15 @@ func (o UrlOptions) Validate() error {
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
type EditorOptions struct {
|
||||
}
|
||||
|
||||
func (o EditorOptions) Validate() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
type DateOptions struct {
|
||||
Min types.DateTime `form:"min" json:"min"`
|
||||
Max types.DateTime `form:"max" json:"max"`
|
||||
|
||||
@@ -40,7 +40,7 @@ func TestAuthFieldNames(t *testing.T) {
|
||||
|
||||
func TestFieldTypes(t *testing.T) {
|
||||
result := schema.FieldTypes()
|
||||
expected := 10
|
||||
expected := 11
|
||||
|
||||
if len(result) != expected {
|
||||
t.Fatalf("Expected %d types, got %d (%v)", expected, len(result), result)
|
||||
@@ -81,6 +81,10 @@ func TestSchemaFieldColDefinition(t *testing.T) {
|
||||
schema.SchemaField{Type: schema.FieldTypeUrl, Name: "test"},
|
||||
"TEXT DEFAULT ''",
|
||||
},
|
||||
{
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor, Name: "test"},
|
||||
"TEXT DEFAULT ''",
|
||||
},
|
||||
{
|
||||
schema.SchemaField{Type: schema.FieldTypeDate, Name: "test"},
|
||||
"TEXT DEFAULT ''",
|
||||
@@ -477,6 +481,11 @@ func TestSchemaFieldInitOptions(t *testing.T) {
|
||||
false,
|
||||
`{"system":false,"id":"","name":"","type":"url","required":false,"unique":false,"options":{"exceptDomains":null,"onlyDomains":null}}`,
|
||||
},
|
||||
{
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor},
|
||||
false,
|
||||
`{"system":false,"id":"","name":"","type":"editor","required":false,"unique":false,"options":{}}`,
|
||||
},
|
||||
{
|
||||
schema.SchemaField{Type: schema.FieldTypeDate},
|
||||
false,
|
||||
@@ -562,6 +571,13 @@ func TestSchemaFieldPrepareValue(t *testing.T) {
|
||||
{schema.SchemaField{Type: schema.FieldTypeUrl}, "test", `"test"`},
|
||||
{schema.SchemaField{Type: schema.FieldTypeUrl}, 123, `"123"`},
|
||||
|
||||
// text
|
||||
{schema.SchemaField{Type: schema.FieldTypeEditor}, nil, `""`},
|
||||
{schema.SchemaField{Type: schema.FieldTypeEditor}, "", `""`},
|
||||
{schema.SchemaField{Type: schema.FieldTypeEditor}, []int{1, 2}, `""`},
|
||||
{schema.SchemaField{Type: schema.FieldTypeEditor}, "test", `"test"`},
|
||||
{schema.SchemaField{Type: schema.FieldTypeEditor}, 123, `"123"`},
|
||||
|
||||
// json
|
||||
{schema.SchemaField{Type: schema.FieldTypeJson}, nil, "null"},
|
||||
{schema.SchemaField{Type: schema.FieldTypeJson}, 123, "123"},
|
||||
@@ -1042,6 +1058,40 @@ func TestSchemaFieldPrepareValueWithModifier(t *testing.T) {
|
||||
`"123"`,
|
||||
},
|
||||
|
||||
// editor
|
||||
{
|
||||
"editor with '+' modifier",
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor},
|
||||
"base",
|
||||
"+",
|
||||
"new",
|
||||
`"base"`,
|
||||
},
|
||||
{
|
||||
"editor with '-' modifier",
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor},
|
||||
"base",
|
||||
"-",
|
||||
"new",
|
||||
`"base"`,
|
||||
},
|
||||
{
|
||||
"editor with unknown modifier",
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor},
|
||||
"base",
|
||||
"?",
|
||||
"new",
|
||||
`"base"`,
|
||||
},
|
||||
{
|
||||
"editor cast check",
|
||||
schema.SchemaField{Type: schema.FieldTypeEditor},
|
||||
123,
|
||||
"-",
|
||||
"new",
|
||||
`"123"`,
|
||||
},
|
||||
|
||||
// date
|
||||
{
|
||||
"date with '+' modifier",
|
||||
@@ -1797,6 +1847,18 @@ func TestUrlOptionsValidate(t *testing.T) {
|
||||
checkFieldOptionsScenarios(t, scenarios)
|
||||
}
|
||||
|
||||
func TestEditorOptionsValidate(t *testing.T) {
|
||||
scenarios := []fieldOptionsScenario{
|
||||
{
|
||||
"empty",
|
||||
schema.EditorOptions{},
|
||||
[]string{},
|
||||
},
|
||||
}
|
||||
|
||||
checkFieldOptionsScenarios(t, scenarios)
|
||||
}
|
||||
|
||||
func TestDateOptionsValidate(t *testing.T) {
|
||||
date1 := types.NowDateTime()
|
||||
date2, _ := types.ParseDateTime(date1.Time().AddDate(1, 0, 0))
|
||||
|
||||
Reference in New Issue
Block a user