package back import ( "html/template" "strconv" ) // Для быстрой вставки меню в шаблон HTML var templateMenu template.HTML var templateMenuTop template.HTML // Для быстрой вставки меню в шаблон HTML (включая неактивные пункты) var templateMenuAll template.HTML var templateMenuAllTop template.HTML // Для быстрой выдачи меню на пост запрос var buildedMenu []menu var buildedMenuTop []menu // Для быстрой выдачи меню на пост запрос (включая неактивные пункты) var buildedMenuAll []menu var buildedMenuAllTop []menu func prepareMenu() { m := menu{} mAll := menu{} m.Categoty = "__main" e := m.Select() if e != nil { logger.Println(e) return } mAll.Categoty = "__main" e = mAll.SelectAll() if e != nil { logger.Println(e) return } buildedMenu = make([]menu, 0) templateMenu = template.HTML("") for i := 0; i < len(m.Rows); i++ { if !m.Rows[i].Parent.Valid { buildMenu(m.Rows, &buildedMenu, m.Rows[i]) } } buildedMenuAll = make([]menu, 0) templateMenuAll = template.HTML("") for i := 0; i < len(mAll.Rows); i++ { if !mAll.Rows[i].Parent.Valid { buildMenuAll(mAll.Rows, &buildedMenuAll, mAll.Rows[i]) } } // TOP MENU BUILD m = menu{} mAll = menu{} m.Categoty = "__top" e = m.Select() if e != nil { logger.Println(e) return } mAll.Categoty = "__top" e = mAll.SelectAll() if e != nil { logger.Println(e) return } buildedMenuTop = make([]menu, 0) templateMenuTop = template.HTML("") for i := 0; i < len(m.Rows); i++ { if !m.Rows[i].Parent.Valid { buildMenuTop(m.Rows, &buildedMenuTop, m.Rows[i]) } } buildedMenuAllTop = make([]menu, 0) templateMenuAllTop = template.HTML("") for i := 0; i < len(mAll.Rows); i++ { if !mAll.Rows[i].Parent.Valid { buildMenuAllTop(mAll.Rows, &buildedMenuAllTop, mAll.Rows[i]) } } } func buildMenu(root []menu, out *[]menu, current menu) { if !current.Parent.Valid { if current.Link.Valid { // if strings.EqualFold(current.Link.String[:4], "http") { templateMenu += template.HTML(`
` + current.Caption + ``) // } else { // templateMenu += template.HTML(`
` + current.Caption + `
`) // } } else { templateMenu += template.HTML(`
` + current.Caption + ``) } *out = append(*out, current) openSub := false for _, r := range root { if r.Parent.Valid { if r.Parent.Int32 == current.ID { if !openSub { templateMenu += template.HTML(`