From 9a9c18d362e2e7c9a8b7166126a6d508f35e6b71 Mon Sep 17 00:00:00 2001 From: shaoying Date: Wed, 23 May 2018 09:33:52 +0800 Subject: [PATCH] mac add web.travel --- src/contexts/ctx.go | 2 + src/contexts/web/web.go | 71 ++++++++++++--- usr/travel.html | 197 ++++++++++++++++++++++++++++++++++++---- 3 files changed, 241 insertions(+), 29 deletions(-) diff --git a/src/contexts/ctx.go b/src/contexts/ctx.go index 0fa893dc..9ca24ea3 100644 --- a/src/contexts/ctx.go +++ b/src/contexts/ctx.go @@ -833,6 +833,8 @@ func (m *Message) Find(name string, root ...bool) *Message { // {{{ for _, v := range strings.Split(name, ".") { if x, ok := cs[v]; ok { target, cs = x, x.contexts + } else if target.Name == v { + continue } else { m.Log("find", target, "not find %s", v) return nil diff --git a/src/contexts/web/web.go b/src/contexts/web/web.go index 7d48674c..03d31e32 100644 --- a/src/contexts/web/web.go +++ b/src/contexts/web/web.go @@ -701,19 +701,66 @@ var Index = &ctx.Context{Name: "web", Help: "应用中心", dir = m.Option("dir") } - msg := m.Find(dir, true) + if msg := m.Find(dir, true); msg != nil { + if m.Option("method") == "POST" { + switch m.Option("ccc") { + case "config": + m.Echo(msg.Conf(m.Option("name"), m.Option("value"))) + case "command": + msg = msg.Spawn(msg.Target()) + msg.Cmd(m.Option("name")) + m.Copy(msg, "result").Copy(msg, "append") + } + return + } + + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "head", m.Meta)) + + for k, v := range msg.Target().Caches { + msg.Add("append", "key", k) + msg.Add("append", "name", v.Name) + msg.Add("append", "help", v.Help) + msg.Add("append", "value", v.Value) + } + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "cache", msg.Meta)) + + msg = msg.Spawn(msg.Target()) + for k, v := range msg.Target().Configs { + msg.Add("append", "key", k) + msg.Add("append", "name", v.Name) + msg.Add("append", "help", v.Help) + msg.Add("append", "value", v.Value) + msg.Add("append", "input", "") + } + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "config", msg.Meta)) + + msg = msg.Spawn(msg.Target()) + for k, v := range msg.Target().Commands { + msg.Add("append", "key", k) + msg.Add("append", "name", v.Name) + msg.Add("append", "help", v.Help) + msg.Add("append", "input", "") + } + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "command", msg.Meta)) + + msg = msg.Spawn(msg.Target()) + msg.Travel(msg.Target(), func(m *ctx.Message) bool { + m.Add("append", "name", m.Target().Name) + m.Add("append", "help", m.Target().Help) + m.Add("append", "module", m.Cap("module")) + m.Add("append", "status", m.Cap("status")) + m.Add("append", "stream", m.Cap("stream")) + return true + }) + w.Header().Add("Content-Type", "text/html") + msg.Put("option", "target", msg.Target()) + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "context", msg.Meta)) + + m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).ExecuteTemplate(w, "tail", m.Meta)) + delete(m.Meta, "result") + delete(m.Meta, "append") + } - m.Travel(msg.Target(), func(m *ctx.Message) bool { - m.Add("append", "name", m.Target().Name) - m.Add("append", "help", m.Target().Help) - m.Add("append", "status", m.Cap("status")) - m.Add("append", "stream", m.Cap("stream")) - return true - }) - w.Header().Add("Content-Type", "text/html") - m.Assert(template.Must(template.ParseGlob(m.Conf("travel_tpl"))).Execute(w, m.Meta)) - delete(m.Meta, "result") - delete(m.Meta, "append") return if !m.Options("file") { m.Option("file", m.Cap("directory")) diff --git a/usr/travel.html b/usr/travel.html index 123ee0e8..59339b6f 100644 --- a/usr/travel.html +++ b/usr/travel.html @@ -1,7 +1,12 @@ +{{define "head"}} +{{end}} - -{{range .append}}{{end}} -{{range .append}}{{end}} -{{$meta := .}} {{$first := index .append 0}} -{{range $i, $k := index . $first}} - - {{range $key := index $meta "append"}} - {{if eq $key "name"}} - - {{else}} +{{define "cache"}} +
cache +
{{.}}
- {{index $meta $key $i}} -
+ {{range .append}}{{end}} + {{range .append}}{{end}} + {{$meta := .}} {{$first := index .append 0}} + {{range $i, $k := index . $first}} + + {{range $key := index $meta "append"}} {{end}} + {{end}} - +
{{.}}
{{index $meta $key $i}}
+ {{end}} - +{{define "config"}} +
config + + {{range .append}}{{end}} + {{range .append}}{{end}} + {{$meta := .}} {{$first := index .append 0}} + {{range $i, $k := index . $first}} + {{$config := index $meta "key" $i}} + {{range $key := index $meta "append"}} + {{if eq $key "input"}} + + {{else}} + + {{end}} + {{end}} + + {{end}} +
{{.}}
+ + {{index $meta $key $i}} + + {{index $meta $key $i}} +
+
+{{end}} + +{{define "command"}} +
command + + {{range .append}}{{end}} + {{range .append}}{{end}} + {{$meta := .}} {{$first := index .append 0}} + {{range $i, $k := index . $first}} + {{$command := index $meta "key" $i}} + {{range $key := index $meta "append"}} + + {{end}} + + {{end}} +
{{.}}
+ {{if eq $key "input"}} + + {{else if eq $key "key"}} + {{index $meta $key $i}} + {{else}} + {{index $meta $key $i}} + {{end}} +
+
+
result +

+
+
+{{end}} + +{{define "context"}} +
context + + {{range .append}}{{end}} + {{range .append}}{{end}} + {{$meta := .}} {{$first := index .append 0}} + {{range $i, $k := index . $first}} + + {{range $key := index $meta "append"}} + {{if eq $key "name"}} + + {{else}} + + {{end}} + {{end}} + + {{end}} +
{{.}}
+ {{index $meta $key $i}} + + {{index $meta $key $i}} +
+
+{{end}} + +{{define "tail"}} +{{end}}