1
0
mirror of https://shylinux.com/x/ContextOS synced 2025-04-25 08:48:06 +08:00

opt feishu

This commit is contained in:
shylinux 2019-10-28 08:54:57 +08:00
parent 00532de580
commit a4add25381
13 changed files with 125 additions and 79 deletions

View File

@ -2,6 +2,7 @@
upgrade plugin context
upgrade plugin storage
upgrade plugin love
upgrade plugin mind
~aaa
role root user shy shaoying

View File

@ -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")

View File

@ -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,
}

View File

@ -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
}},
},
}

View File

@ -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
}},

View File

@ -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
}},
},
}

View File

@ -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)

View File

@ -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) {

View File

@ -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 "执行" \

View File

@ -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 \

View File

@ -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:]))
}

View File

@ -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("菜单列表", {

View File

@ -539,8 +539,8 @@ kit = toolkit = (function() {var kit = {__proto__: document,
s = s.replace(/\033\[31m/g, "<span style='color:#f00'>")
s = s.replace(/\033\[0m/g, "</span>")
s = s.replace(/\033\[m/g, "</span>")
s = s.replace(/</g, "&lt;")
s = s.replace(/>/g, "&gt;")
// s = s.replace(/</g, "&lt;")
// s = s.replace(/>/g, "&gt;")
return s
},
Value: function() {