func (t *Top) route() (err error) { defer func() { if r := recover(); r != nil { err = fmt.Errorf(fmt.Sprint(r) + string(debug.Stack())) } }() ctx := t.ctx odoc := ctx.Options().Document() nouns := scut.GetNouns(odoc) np := ctx.NonPortable() hl, err := highlev.New(ctx.Conducting().Hooks(), np.Resource(), nouns, np.Params()) if err != nil { display.New(ctx).Do(nil) return nil } deflev_i, _ := odoc.Get("default_level") deflev, _ := numcon.Int(deflev_i) ret, err := hl.Run(ctx.Db(), ctx.User(), deflev) if err != nil { return err } if ctx.NonPortable().View() { ctx.ViewContext().Publish("main_noun", hl.Noun()) files := []string{ hl.Noun() + "/" + hl.Verb(), hl.VerbLocation() + "/" + hl.Verb(), } return t.Get(ret, files) } else { return t.Post(ret, hl.Verb()) } return nil }
func form(ctx iface.Context, action_name string) *Form { nouns := scut.GetNouns(ctx.Options().Document()) np := ctx.NonPortable() hl, err := highlev.New(ctx.Conducting().Hooks(), np.Resource(), nouns, np.Params()) if err != nil { panic(err) } f := hl.URLE().Form(action_name) return &Form{ f, } }
func _url(ctx iface.Context, action_name string, i ...interface{}) string { if len(i)%2 == 1 { panic("Must be even.") } nouns := scut.GetNouns(ctx.Options().Document()) np := ctx.NonPortable() hl, err := highlev.New(ctx.Conducting().Hooks(), np.Resource(), nouns, np.Params()) if err != nil { panic(err) } f := hl.URLE() inp := convert.ListToMap(i...) return f.UrlString(action_name, inp) }
func (c *C) Init(ctx iface.Context) { c.ctx = ctx c.nouns = scut.GetNouns(ctx.Options().Document()) }