ソースを参照

Merge pull request #184 from qor5/status-setterfunc

fix StatusBar in edit form
Azuma Daisuke 11 ヶ月 前
コミット
9a85aecee5

+ 1 - 1
example/admin/category_config.go

@@ -14,7 +14,7 @@ import (
 func configCategory(b *presets.Builder, db *gorm.DB) *presets.ModelBuilder {
 	p := b.Model(&models.Category{})
 
-	eb := p.Editing("Status", "Schedule", "Name", "Products")
+	eb := p.Editing("StatusBar", "Schedule", "Name", "Products")
 	p.Listing("Name")
 
 	eb.ValidateFunc(func(obj interface{}, ctx *web.EventContext) (err web.ValidationErrors) {

+ 3 - 3
example/admin/config.go

@@ -304,7 +304,7 @@ func NewConfig() Config {
 	defer w.Listen()
 	addJobs(w)
 
-	ed := m.Editing("Status", "Schedule", "Title", "TitleWithSlug", "Seo", "HeroImage", "Body", "BodyImage")
+	ed := m.Editing("StatusBar", "Schedule", "Title", "TitleWithSlug", "Seo", "HeroImage", "Body", "BodyImage")
 	ed.Field("HeroImage").
 		WithContextValue(
 			media_view.MediaBoxConfig,
@@ -434,7 +434,7 @@ func NewConfig() Config {
 	l := b.Model(&models.ListModel{})
 	{
 		l.Listing("ID", "Title", "Status")
-		ed := l.Editing("Status", "Schedule", "Title", "DetailPath", "ListPath")
+		ed := l.Editing("StatusBar", "Schedule", "Title", "DetailPath", "ListPath")
 		ed.Field("DetailPath").ComponentFunc(
 			func(obj interface{}, field *presets.FieldContext, ctx *web.EventContext) (r h.HTMLComponent) {
 				this := obj.(*models.ListModel)
@@ -513,7 +513,7 @@ func NewConfig() Config {
 	mm.Listing("ID", "Name", "PrePath", "Status").
 		SearchColumns("ID::text", "Name").
 		PerPage(10)
-	mm.Editing("Status", "Schedule", "Name", "Description", "PrePath", "FilesList", "Package")
+	mm.Editing("StatusBar", "Schedule", "Name", "Description", "PrePath", "FilesList", "Package")
 	microsite_views.Configure(b, db, ab, PublishStorage, publisher, mm)
 	l10nM, l10nVM := configL10nModel(b)
 	_ = l10nM

+ 1 - 1
example/admin/product_config.go

@@ -21,7 +21,7 @@ import (
 
 func configProduct(b *presets.Builder, db *gorm.DB, wb *worker.Builder) *presets.ModelBuilder {
 	p := b.Model(&models.Product{})
-	eb := p.Editing("Status", "Schedule", "Code", "Name", "Price", "Image")
+	eb := p.Editing("StatusBar", "Schedule", "Code", "Name", "Price", "Image")
 	listing := p.Listing("Code", "Name", "Price", "Image").SearchColumns("Code", "Name").SelectableColumns(true)
 	listing.ActionsAsMenu(true)
 

+ 0 - 1
pagebuilder/builder.go

@@ -481,7 +481,6 @@ function(e){
 	pm.RegisterEventFunc(createNoteEvent, createNote(db, pm))
 	pm.RegisterEventFunc(editSEODialogEvent, editSEODialog(db, pm, seoCollection))
 	pm.RegisterEventFunc(updateSEOEvent, updateSEO(db, pm))
-
 	eb := pm.Editing("TemplateSelection", "Title", "CategoryID", "Slug")
 	eb.ValidateFunc(func(obj interface{}, ctx *web.EventContext) (err web.ValidationErrors) {
 		c := obj.(*Page)

+ 4 - 4
presets/field.go

@@ -439,7 +439,7 @@ func (b *FieldsBuilder) Model(v interface{}) (r *FieldsBuilder) {
 }
 
 func (b *FieldsBuilder) Field(name string) (r *FieldBuilder) {
-	r = b.getField(name)
+	r = b.GetField(name)
 	if r != nil {
 		return
 	}
@@ -484,7 +484,7 @@ func (b *FieldsBuilder) getLabel(field NameLabel) (r string) {
 }
 
 func (b *FieldsBuilder) getFieldOrDefault(name string) (r *FieldBuilder) {
-	r = b.getField(name)
+	r = b.GetField(name)
 	if r.compFunc == nil {
 		if b.defaults == nil {
 			panic("field defaults must be provided")
@@ -502,7 +502,7 @@ func (b *FieldsBuilder) getFieldOrDefault(name string) (r *FieldBuilder) {
 	return
 }
 
-func (b *FieldsBuilder) getField(name string) (r *FieldBuilder) {
+func (b *FieldsBuilder) GetField(name string) (r *FieldBuilder) {
 	for _, f := range b.fields {
 		if f.name == name {
 			return f
@@ -549,7 +549,7 @@ func (b *FieldsBuilder) Only(vs ...interface{}) (r *FieldsBuilder) {
 }
 
 func (b *FieldsBuilder) appendFieldAfterClone(ob *FieldsBuilder, name string) {
-	f := ob.getField(name)
+	f := ob.GetField(name)
 	if f == nil {
 		b.appendNewFieldWithName(name)
 	} else {

+ 3 - 4
publish/views/config.go

@@ -143,6 +143,9 @@ func Configure(b *presets.Builder, db *gorm.DB, ab *activity.ActivityBuilder, pu
 
 			m.Listing().Field("Draft Count").ComponentFunc(draftCountFunc(db))
 			m.Listing().Field("Online").ComponentFunc(onlineFunc(db))
+			if m.Editing().GetField("StatusBar") != nil {
+				m.Editing().Field("StatusBar").ComponentFunc(StatusEditFunc())
+			}
 		} else {
 			if schedulePublishModel, ok := obj.(publish.ScheduleInterface); ok {
 				publish.NonVersionPublishModels[m.Info().URIName()] = reflect.ValueOf(schedulePublishModel).Elem().Interface()
@@ -161,10 +164,6 @@ func Configure(b *presets.Builder, db *gorm.DB, ab *activity.ActivityBuilder, pu
 	b.FieldDefaults(presets.LIST).
 		FieldType(publish.Status{}).
 		ComponentFunc(StatusListFunc())
-	b.FieldDefaults(presets.WRITE).
-		FieldType(publish.Status{}).
-		ComponentFunc(StatusEditFunc()).
-		SetterFunc(StatusEditSetterFunc)
 
 	b.FieldDefaults(presets.WRITE).
 		FieldType(publish.Schedule{}).

+ 0 - 5
publish/views/status.go

@@ -102,11 +102,6 @@ func StatusEditFunc() presets.FieldComponentFunc {
 	}
 }
 
-// need empty setterFunc here to avoid set status to empty when update
-func StatusEditSetterFunc(obj interface{}, field *presets.FieldContext, ctx *web.EventContext) (err error) {
-	return
-}
-
 func GetStatusColor(status string) string {
 	switch status {
 	case publish.StatusDraft: