mirror of
https://shylinux.com/x/ContextOS
synced 2025-04-25 16:58:06 +08:00
opt feishu
This commit is contained in:
parent
00532de580
commit
a4add25381
@ -2,6 +2,7 @@
|
||||
upgrade plugin context
|
||||
upgrade plugin storage
|
||||
upgrade plugin love
|
||||
upgrade plugin mind
|
||||
|
||||
~aaa
|
||||
role root user shy shaoying
|
||||
|
@ -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")
|
||||
|
@ -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,
|
||||
}
|
||||
|
@ -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
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -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,10 +28,9 @@ 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))
|
||||
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) {
|
||||
@ -50,6 +48,13 @@ func parse(m *ctx.Message) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
}},
|
||||
|
@ -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
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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) {
|
||||
|
@ -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 "执行" \
|
||||
|
@ -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 \
|
||||
|
@ -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:]))
|
||||
}
|
||||
|
@ -1204,9 +1204,9 @@ 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) {
|
||||
(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))
|
||||
}
|
||||
}),
|
||||
|
@ -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, "<")
|
||||
s = s.replace(/>/g, ">")
|
||||
// s = s.replace(/</g, "<")
|
||||
// s = s.replace(/>/g, ">")
|
||||
return s
|
||||
},
|
||||
Value: function() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user