func (t *TemplateController) GetBreadcrumb(r *knot.WebContext) interface{} { r.Config.OutputType = knot.OutputJson payload := map[string]string{} err := r.GetForms(&payload) helper.HandleError(err) if payload["href"] == "/" || payload["href"] == "/index" { return []map[string]interface{}{{"title": "Dashboard", "href": "/index"}} } routes := t.GetRoutes(helper.FakeWebContext()).([]interface{}) breadcrumbs := []map[string]interface{}{} for _, level1 := range routes { var level1Each = level1.(map[string]interface{}) var level1Title = level1Each["title"].(string) var level1Href = level1Each["href"].(string) var level1Submenu = level1Each["submenu"].([]interface{}) if level1Title == payload["title"] && level1Href == payload["href"] { breadcrumbs = append(breadcrumbs, level1Each) return breadcrumbs } if len(level1Submenu) > 0 { for _, level2 := range level1Submenu { var level2Each = level2.(map[string]interface{}) var level2Title = level2Each["title"].(string) var level2Href = level2Each["href"].(string) // var level2Submenu = level2Each["submenu"].([]interface{}) if level2Title == payload["title"] && level2Href == payload["href"] { breadcrumbs = append(breadcrumbs, level1Each) breadcrumbs = append(breadcrumbs, level2Each) return breadcrumbs } } } } return breadcrumbs }
func (t *TemplateController) RegisterRoutes() { routes := t.GetRoutes(helper.FakeWebContext()).([]interface{}) helper.Recursiver(routes, func(each interface{}) []interface{} { return each.(map[string]interface{})["submenu"].([]interface{}) }, func(each interface{}) { eachMap := each.(map[string]interface{}) title := eachMap["title"].(string) href := eachMap["href"].(string) pageID := eachMap["_id"].(string) if href != "" && href != "#" && href != "/index" { t.Server.Route(href, func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/designer.html" return toolkit.M{"title": title, "href": href, "pageID": pageID, "production": true} }) } }) // route the / and /index for _, route := range []string{"/", "/index"} { t.Server.Route(route, func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/designer.html" return toolkit.M{"title": "Dashboard", "href": route, "pageID": "-1", "production": true} }) } t.Server.Route("/chart", func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/chart.html" return toolkit.M{"title": "Chart Widget Admin", "href": "/chart"} }) t.Server.Route("/grid", func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/grid.html" return toolkit.M{"title": "Grid Widget Admin", "href": "/grid"} }) t.Server.Route("/selector", func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/selector.html" return toolkit.M{"title": "Selector Widget Admin", "href": "/selector"} }) t.Server.Route("/datasource", func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/datasource.html" return toolkit.M{"title": "Data Source Admin", "href": "/datasource"} }) t.Server.Route("/page", func(r *knot.WebContext) interface{} { r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/page.html" return toolkit.M{"title": "Page Admin", "href": "/page"} }) t.Server.Route("/designer", func(r *knot.WebContext) interface{} { payload := map[string]string{} err := r.GetForms(&payload) helper.HandleError(err) r.Config.LayoutTemplate = t.LayoutFile r.Config.IncludeFiles = t.IncludeFiles r.Config.ViewName = "view/designer.html" return toolkit.M{"title": "Page Desginer", "href": "/designer", "pageID": payload["id"]} }) }