From a4add25381d7f8b02aabacea33617d4569384839 Mon Sep 17 00:00:00 2001 From: shylinux Date: Mon, 28 Oct 2019 08:54:57 +0800 Subject: [PATCH] opt feishu --- etc/common.shy | 1 + src/contexts/cli/cli.go | 12 +++++- src/contexts/cli/version.go | 2 +- src/contexts/nfs/nfs.go | 49 ----------------------- src/examples/chat/feishu/chat.go | 67 +++++++++++++++++++++++--------- src/examples/wiki/wiki.go | 51 ++++++++++++++++++++++++ src/plugin/love/index.js | 1 + src/plugin/mind/index.js | 5 ++- src/plugin/mind/index.shy | 2 +- src/plugin/storage/index.shy | 4 +- src/plugin/weixin/index.go | 2 + usr/librarys/example.js | 4 +- usr/librarys/toolkit.js | 4 +- 13 files changed, 125 insertions(+), 79 deletions(-) diff --git a/etc/common.shy b/etc/common.shy index 5825dd4e..d4bbb9a5 100644 --- a/etc/common.shy +++ b/etc/common.shy @@ -2,6 +2,7 @@ upgrade plugin context upgrade plugin storage upgrade plugin love + upgrade plugin mind ~aaa role root user shy shaoying diff --git a/src/contexts/cli/cli.go b/src/contexts/cli/cli.go index b6a50b96..86b3ac5f 100644 --- a/src/contexts/cli/cli.go +++ b/src/contexts/cli/cli.go @@ -1051,14 +1051,22 @@ var Index = &ctx.Context{Name: "cli", Help: "管理中心", } // 加载模块 + msg := m.Find(arg[0], false) if p, e := plugin.Open(path.Join(m.Conf("publish", "path"), arg[0], "index.so")); e == nil { if s, e := p.Lookup("Index"); m.Assert(e) { - m.Spawn(c.Register(*(s.(**ctx.Context)), nil, arg[0]).Begin(m, arg[1:]...)).Cmd("_init", arg[1:]) + t, _ := p.Lookup("Target") + tt, _ := t.(ctx.Server) + if len(arg) > 1 { + c = m.Find(arg[1], true).Target() + } + msg = m.Spawn(c.Register(*(s.(**ctx.Context)), tt, arg[0]).Begin(m, arg[1:]...)).Cmd("_init", arg[1:]) + m.Log("info", "plugin %v", msg.Cap("module")) } + } else { + m.Log("warn", "plugin %v %v", arg[0], e) } // 查找模块 - msg := m.Find(arg[0], false) if msg == nil { m.Log("info", "not find %s", arg[0]) m.Start(arg[0], "shy") diff --git a/src/contexts/cli/version.go b/src/contexts/cli/version.go index a8768bf1..df30ea5f 100644 --- a/src/contexts/cli/version.go +++ b/src/contexts/cli/version.go @@ -7,5 +7,5 @@ var version = struct { self int }{ []string{"2017-11-01 01:02:03", "2019-07-13 18:02:21"}, - `2019-10-27 12:33:23`, `mac`, 663, + `2019-10-28 07:31:43`, `com`, 703, } diff --git a/src/contexts/nfs/nfs.go b/src/contexts/nfs/nfs.go index ebb87dc8..a0164ca6 100644 --- a/src/contexts/nfs/nfs.go +++ b/src/contexts/nfs/nfs.go @@ -1286,55 +1286,6 @@ var Index = &ctx.Context{Name: "nfs", Help: "存储中心", } return }}, - - "xls": {Name: "xls", Help: "表格", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { - switch len(arg) { - case 0: - m.Cmdy("ssh.data", "show", "xls") - m.Meta["append"] = []string{"id", "title"} - - case 1: - var data map[int]map[int]string - what := m.Cmd("ssh.data", "show", "xls", arg[0], "format", "object").Append("content") - json.Unmarshal([]byte(what), &data) - - max, n := 0, 0 - for i, v := range data { - if i > n { - n = i - } - for i := range v { - if i > max { - max = i - } - } - } - m.Log("info", "m: %d n: %d", m, n) - - for k := 0; k < n+2; k++ { - for i := 0; i < max+2; i++ { - m.Push(kit.Format(k), kit.Format(data[k][i])) - } - } - - case 2: - m.Cmdy("ssh.data", "insert", "xls", "title", arg[0], "content", arg[1]) - - default: - data := map[int]map[int]string{} - what := m.Cmd("ssh.data", "show", "xls", arg[0], "format", "object").Append("content") - json.Unmarshal([]byte(what), &data) - - for i := 1; i < len(arg)-2; i += 3 { - if _, ok := data[kit.Int(arg[i])]; !ok { - data[kit.Int(arg[i])] = make(map[int]string) - } - data[kit.Int(arg[i])][kit.Int(arg[i+1])] = arg[i+2] - } - m.Cmdy("ssh.data", "update", "xls", arg[0], "content", kit.Format(data)) - } - return - }}, }, } diff --git a/src/examples/chat/feishu/chat.go b/src/examples/chat/feishu/chat.go index b89d2297..4d49337c 100644 --- a/src/examples/chat/feishu/chat.go +++ b/src/examples/chat/feishu/chat.go @@ -15,8 +15,7 @@ import ( func get(m *ctx.Message, arg ...string) *ctx.Message { m.Option("temp_expire", -1) m.Option("format", "object") - m.Cmdy("web.get", "feishu", arg, - "temp", "data") + m.Cmdy("web.get", "feishu", arg, "temp", "data") return m } func post(m *ctx.Message, arg ...string) *ctx.Message { @@ -29,27 +28,33 @@ func post(m *ctx.Message, arg ...string) *ctx.Message { return m } func parse(m *ctx.Message) { - var data interface{} - r := m.Optionv("request").(*http.Request) - json.NewDecoder(r.Body).Decode(&data) - m.Log("info", "msg: %v", kit.Formats(data)) - m.Optionv("content_data", data) + data := m.Optionv("content_data") + if data == nil { + json.NewDecoder(m.Optionv("request").(*http.Request).Body).Decode(&data) + m.Optionv("content_data", data) - switch d := data.(type) { - case map[string]interface{}: - for k, v := range d { - switch d := v.(type) { - case map[string]interface{}: - for k, v := range d { - m.Add("option", k, v) - } - default: - for _, v := range kit.Trans(v) { - m.Add("option", "msg."+k, v) + switch d := data.(type) { + case map[string]interface{}: + for k, v := range d { + switch d := v.(type) { + case map[string]interface{}: + for k, v := range d { + m.Add("option", k, v) + } + default: + for _, v := range kit.Trans(v) { + m.Add("option", "msg."+k, v) + } } } } } + if kit.Map(kit.Chain(data, "action.value"), "", func(key string, value string) { + m.Add("option", key, value) + }) != nil { + m.Option("msg.type", "event_click") + } + m.Log("info", "msg: %v", kit.Formats(data)) } var Index = &ctx.Context{Name: "feishu", Help: "飞书", @@ -291,6 +296,32 @@ var Index = &ctx.Context{Name: "feishu", Help: "飞书", }) } } + case "event_click": + m.Echo(kit.Format(map[string]interface{}{ + "header": map[string]interface{}{ + "title": map[string]interface{}{ + "tag": "lark_md", "content": "haha", + }, + }, + "elements": []interface{}{ + map[string]interface{}{ + "tag": "action", + "actions": []interface{}{ + map[string]interface{}{ + "tag": "button", + "type": "default", + "text": map[string]interface{}{ + "tag": "plain_text", + "content": m.Time(), + }, + "value": map[string]interface{}{ + "hi": "hello", + }, + }, + }, + }, + }, + })) } return }}, diff --git a/src/examples/wiki/wiki.go b/src/examples/wiki/wiki.go index d2c112b1..5aaaf5b1 100644 --- a/src/examples/wiki/wiki.go +++ b/src/examples/wiki/wiki.go @@ -5,8 +5,10 @@ import ( "contexts/ctx" "contexts/web" + "toolkit" "bytes" + "encoding/json" "html/template" "path" ) @@ -63,6 +65,55 @@ var Index = &ctx.Context{Name: "wiki", Help: "文档中心", m.Echo(string(markdown.ToHTML(buffer.Bytes(), nil, nil))) return }}, + + "xls": {Name: "xls", Help: "表格", Hand: func(m *ctx.Message, c *ctx.Context, key string, arg ...string) (e error) { + switch len(arg) { + case 0: + m.Cmdy("ssh.data", "show", "xls") + m.Meta["append"] = []string{"id", "title"} + + case 1: + var data map[int]map[int]string + what := m.Cmd("ssh.data", "show", "xls", arg[0], "format", "object").Append("content") + json.Unmarshal([]byte(what), &data) + + max, n := 0, 0 + for i, v := range data { + if i > n { + n = i + } + for i := range v { + if i > max { + max = i + } + } + } + m.Log("info", "m: %d n: %d", max, n) + + for k := 0; k < n+2; k++ { + for i := 0; i < max+2; i++ { + m.Push(kit.Format(k), kit.Format(data[k][i])) + } + } + + case 2: + m.Cmdy("ssh.data", "insert", "xls", "title", arg[0], "content", arg[1]) + + default: + data := map[int]map[int]string{} + what := m.Cmd("ssh.data", "show", "xls", arg[0], "format", "object").Append("content") + json.Unmarshal([]byte(what), &data) + + for i := 1; i < len(arg)-2; i += 3 { + if _, ok := data[kit.Int(arg[i])]; !ok { + data[kit.Int(arg[i])] = make(map[int]string) + } + data[kit.Int(arg[i])][kit.Int(arg[i+1])] = arg[i+2] + } + m.Cmdy("ssh.data", "update", "xls", arg[0], "content", kit.Format(data)) + } + return + }}, }, } diff --git a/src/plugin/love/index.js b/src/plugin/love/index.js index b24bf41b..2297aa8a 100644 --- a/src/plugin/love/index.js +++ b/src/plugin/love/index.js @@ -11,6 +11,7 @@ Plugin["love/index.js"] = function(field, option, output) {return { kit.Selector(output, ".s"+line.when.split(" ")[0].split("-").join(""), function(item) { kit.classList.add(item.parentNode, "select") item.parentNode.title = line.what + plugin.ontoast(line.what, line.where) }) }, 200) }, true) diff --git a/src/plugin/mind/index.js b/src/plugin/mind/index.js index 4e901949..61adfa50 100644 --- a/src/plugin/mind/index.js +++ b/src/plugin/mind/index.js @@ -3,7 +3,7 @@ Plugin["mind/index.js"] = function(field, option, output) {return { var plugin = field.Plugin output.innerHTML = "", msg.append && kit.OrderTable(kit.AppendTable(kit.AppendChild(output, "table"), msg.Table(), msg.append), "", function(event, value, name, line, index) { if (name == "id") { - page.Sync("plugin_"+plugin.exports[0]).set(plugin.onexport[plugin.exports[2]||""](value, name, line)) + plugin.onexport(event, value, name, line) } else { var td = event.target @@ -25,7 +25,8 @@ Plugin["mind/index.js"] = function(field, option, output) {return { }, onkeydown: function(event) { switch (event.key) { case "Enter": - td.parentNode[event.shiftKey?"previousSibling":"nextSibling"].querySelector("td").click() + var s = td.parentNode[event.shiftKey?"previousSibling":"nextSibling"] + s? s.querySelector("td").click(): plugin.Runs(event) break case "Tab": if (event.shiftKey) { diff --git a/src/plugin/mind/index.shy b/src/plugin/mind/index.shy index b207def3..ec3a5f5e 100644 --- a/src/plugin/mind/index.shy +++ b/src/plugin/mind/index.shy @@ -1,4 +1,4 @@ -kit xls "表格" "index.js" "index.css" private "nfs.xls" \ +kit xls "表格" "index.js" "index.css" private context find "web.wiki" xls \ text "" name title imports plugin_xls_id action auto \ text "" name content \ button "执行" \ diff --git a/src/plugin/storage/index.shy b/src/plugin/storage/index.shy index 5cd16ab8..4e2012ba 100644 --- a/src/plugin/storage/index.shy +++ b/src/plugin/storage/index.shy @@ -28,10 +28,10 @@ end kit data "数据库" public "ssh.data" show \ text "" name table imports plugin_table action auto view long \ - text "" name index action auto \ + text "" name index imports plugin_index action auto \ button "查看" action auto \ button "返回" cb Last \ - exports table table + exports table table "" index id "" kit save "导出" private "ssh.data" export \ text "love" name table imports plugin_table \ diff --git a/src/plugin/weixin/index.go b/src/plugin/weixin/index.go index e0deb030..2c87ce46 100644 --- a/src/plugin/weixin/index.go +++ b/src/plugin/weixin/index.go @@ -231,6 +231,8 @@ var Index = &ctx.Context{Name: "weixin", Help: "微信后台", }, } +var Target = &web.WEB{Context: Index} + func main() { fmt.Print(cli.Index.Plugin(Index, os.Args[1:])) } diff --git a/usr/librarys/example.js b/usr/librarys/example.js index 0815f35a..b6f3bcd6 100644 --- a/usr/librarys/example.js +++ b/usr/librarys/example.js @@ -1204,10 +1204,10 @@ function Plugin(page, pane, field, inits, runs) { }, JSON.parse(meta.exports||'["",""]'), function(event, value, name, line) { var meta = arguments.callee.meta var list = arguments.callee.list - if (list[1] && list[1] != name) {return} for (var i = 0; i < list.length; i += 3) { - page.Sync("plugin_"+list[i]).set(meta[list[i+2]||""](list[i+1]? line[list[i+1]]: value, list[i+1]||name, line, list)) + (list[1] && line[list[1]] || list[i+1] && line[list[i+1]]) && + page.Sync("plugin_"+list[i]).set(meta[list[i+2]||""](list[i+1]? line[list[i+1]]: value, list[i+1]||name, line, list)) } }), onchoice: shy("菜单列表", { diff --git a/usr/librarys/toolkit.js b/usr/librarys/toolkit.js index f3a98114..49ff909d 100644 --- a/usr/librarys/toolkit.js +++ b/usr/librarys/toolkit.js @@ -539,8 +539,8 @@ kit = toolkit = (function() {var kit = {__proto__: document, s = s.replace(/\033\[31m/g, "") s = s.replace(/\033\[0m/g, "") s = s.replace(/\033\[m/g, "") - s = s.replace(//g, ">") + // s = s.replace(//g, ">") return s }, Value: function() {