github.com/kotovmak/go-admin@v1.1.1/examples/datamodel/posts.go (about)

     1  package datamodel
     2  
     3  import (
     4  	template2 "html/template"
     5  
     6  	"github.com/kotovmak/go-admin/context"
     7  	"github.com/kotovmak/go-admin/modules/db"
     8  	"github.com/kotovmak/go-admin/plugins/admin/modules/table"
     9  	"github.com/kotovmak/go-admin/template"
    10  	"github.com/kotovmak/go-admin/template/types"
    11  	"github.com/kotovmak/go-admin/template/types/form"
    12  	editType "github.com/kotovmak/go-admin/template/types/table"
    13  )
    14  
    15  // GetPostsTable return the model of table posts.
    16  func GetPostsTable(ctx *context.Context) (postsTable table.Table) {
    17  
    18  	postsTable = table.NewDefaultTable(table.DefaultConfig().SetExportable(true))
    19  
    20  	info := postsTable.GetInfo()
    21  	info.AddField("ID", "id", db.Int).FieldSortable()
    22  	info.AddField("Title", "title", db.Varchar)
    23  	info.AddField("AuthorID", "author_id", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} {
    24  		return template.Default().
    25  			Link().
    26  			SetURL("/admin/info/authors/detail?__goadmin_detail_pk=" + value.Value).
    27  			SetContent(template2.HTML(value.Value)).
    28  			OpenInNewTab().
    29  			SetTabTitle("Author Detail").
    30  			GetContent()
    31  	})
    32  	info.AddField("AuthorName", "name", db.Varchar).FieldDisplay(func(value types.FieldModel) interface{} {
    33  		first, _ := value.Row["authors_goadmin_join_first_name"].(string)
    34  		last, _ := value.Row["authors_goadmin_join_last_name"].(string)
    35  		return first + " " + last
    36  	})
    37  	info.AddField("AuthorFirstName", "first_name", db.Varchar).FieldJoin(types.Join{
    38  		Field:     "author_id",
    39  		JoinField: "id",
    40  		Table:     "authors",
    41  	}).FieldHide()
    42  	info.AddField("AuthorLastName", "last_name", db.Varchar).FieldJoin(types.Join{
    43  		Field:     "author_id",
    44  		JoinField: "id",
    45  		Table:     "authors",
    46  	}).FieldHide()
    47  	info.AddField("Description", "description", db.Varchar)
    48  	info.AddField("Content", "content", db.Varchar).FieldEditAble(editType.Textarea)
    49  	info.AddField("Date", "date", db.Varchar)
    50  	info.AddField("AuthorCreatedAt", "created_at", db.Varchar).FieldJoin(types.Join{
    51  		Field:     "author_id",
    52  		JoinField: "id",
    53  		Table:     "authors",
    54  	})
    55  	info.AddField("Created_at", "created_at", db.Varchar).FieldFilterable()
    56  
    57  	info.SetTable("posts").SetTitle("Posts").SetDescription("Posts")
    58  
    59  	formList := postsTable.GetForm()
    60  	formList.AddField("ID", "id", db.Int, form.Default).FieldDisplayButCanNotEditWhenUpdate().FieldDisableWhenCreate()
    61  	formList.AddField("Title", "title", db.Varchar, form.Text)
    62  	formList.AddField("Description", "description", db.Varchar, form.Text)
    63  	formList.AddField("Content", "content", db.Varchar, form.RichText).FieldEnableFileUpload()
    64  	formList.AddField("Date", "date", db.Varchar, form.Datetime)
    65  	formList.EnableAjax("Request Success", "Request Failed")
    66  
    67  	formList.SetTable("posts").SetTitle("Posts").SetDescription("Posts")
    68  
    69  	return
    70  }