forked from x/icebergs
add domain
This commit is contained in:
parent
9acdabb179
commit
a478e17d3c
@ -13,7 +13,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func _file_name(m *ice.Message, arg ...string) string {
|
func _file_name(m *ice.Message, arg ...string) string {
|
||||||
return kit.Select(path.Join("usr/export", path.Join(arg[:2]...)), arg, 3)
|
return kit.Select(path.Join(m.Option(ice.MSG_LOCAL), "usr/export", path.Join(arg[:2]...), arg[2]), arg, 3)
|
||||||
|
}
|
||||||
|
func _domain_chain(m *ice.Message, chain string) string {
|
||||||
|
return kit.Keys(m.Option(ice.MSG_DOMAIN), chain)
|
||||||
}
|
}
|
||||||
|
|
||||||
func _hash_fields(m *ice.Message) []string {
|
func _hash_fields(m *ice.Message) []string {
|
||||||
@ -415,71 +418,71 @@ var Index = &ice.Context{Name: MDB, Help: "数据模块", Commands: map[string]*
|
|||||||
INSERT: {Name: "insert conf key type arg...", Help: "添加", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
INSERT: {Name: "insert conf key type arg...", Help: "添加", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_insert(m, arg[0], arg[1], arg[3:]...)
|
_hash_insert(m, arg[0], _domain_chain(m, arg[1]), arg[3:]...)
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_insert(m, arg[0], arg[1], arg[3:]...)
|
_list_insert(m, arg[0], _domain_chain(m, arg[1]), arg[3:]...)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
DELETE: {Name: "delete conf key type field value", Help: "删除", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
DELETE: {Name: "delete conf key type field value", Help: "删除", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_delete(m, arg[0], arg[1], arg[3], arg[4])
|
_hash_delete(m, arg[0], _domain_chain(m, arg[1]), arg[3], arg[4])
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_delete(m, arg[0], arg[1], arg[3], arg[4])
|
_list_delete(m, arg[0], _domain_chain(m, arg[1]), arg[3], arg[4])
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
MODIFY: {Name: "modify conf key type field value arg...", Help: "编辑", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
MODIFY: {Name: "modify conf key type field value arg...", Help: "编辑", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_modify(m, arg[0], arg[1], arg[3], arg[4], arg[5:]...)
|
_hash_modify(m, arg[0], _domain_chain(m, arg[1]), arg[3], arg[4], arg[5:]...)
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_modify(m, arg[0], arg[1], arg[3], arg[4], arg[5:]...)
|
_list_modify(m, arg[0], _domain_chain(m, arg[1]), arg[3], arg[4], arg[5:]...)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
SELECT: {Name: "select conf key type field value", Help: "查询", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
SELECT: {Name: "select conf key type field value", Help: "查询", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_select(m, arg[0], arg[1], kit.Select("", arg, 3), kit.Select(kit.MDB_FOREACH, arg, 4))
|
_hash_select(m, arg[0], _domain_chain(m, arg[1]), kit.Select("", arg, 3), kit.Select(kit.MDB_FOREACH, arg, 4))
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_select(m, arg[0], arg[1], kit.Select("", arg, 3), kit.Select("", arg, 4))
|
_list_select(m, arg[0], _domain_chain(m, arg[1]), kit.Select("", arg, 3), kit.Select("", arg, 4))
|
||||||
case ZONE:
|
case ZONE:
|
||||||
_zone_select(m, arg[0], arg[1], kit.Select("", arg, 3), kit.Select("", arg, 4))
|
_zone_select(m, arg[0], _domain_chain(m, arg[1]), kit.Select("", arg, 3), kit.Select("", arg, 4))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
EXPORT: {Name: "export conf key type file", Help: "导出", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
EXPORT: {Name: "export conf key type file", Help: "导出", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch file := _file_name(m, arg...); arg[2] {
|
switch file := _file_name(m, arg...); arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_export(m, arg[0], arg[1], file)
|
_hash_export(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_export(m, arg[0], arg[1], file)
|
_list_export(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
case ZONE:
|
case ZONE:
|
||||||
_zone_export(m, arg[0], arg[1], file)
|
_zone_export(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
IMPORT: {Name: "import conf key type file", Help: "导入", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
IMPORT: {Name: "import conf key type file", Help: "导入", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch file := _file_name(m, arg...); arg[2] {
|
switch file := _file_name(m, arg...); arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_import(m, arg[0], arg[1], file)
|
_hash_import(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_import(m, arg[0], arg[1], file)
|
_list_import(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
case ZONE:
|
case ZONE:
|
||||||
_zone_import(m, arg[0], arg[1], file)
|
_zone_import(m, arg[0], _domain_chain(m, arg[1]), file)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
PRUNES: {Name: "prunes conf key type [field value]...", Help: "清理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
PRUNES: {Name: "prunes conf key type [field value]...", Help: "清理", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_prunes(m, arg[0], arg[1], arg[3:]...)
|
_hash_prunes(m, arg[0], _domain_chain(m, arg[1]), arg[3:]...)
|
||||||
case LIST:
|
case LIST:
|
||||||
_list_prunes(m, arg[0], arg[1], arg[3:]...)
|
_list_prunes(m, arg[0], _domain_chain(m, arg[1]), arg[3:]...)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
INPUTS: {Name: "inputs conf key type field value", Help: "补全", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
INPUTS: {Name: "inputs conf key type field value", Help: "补全", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
switch arg[2] {
|
switch arg[2] {
|
||||||
case HASH:
|
case HASH:
|
||||||
_hash_inputs(m, arg[0], arg[1], kit.Select("name", arg, 3), kit.Select("", arg, 4))
|
_hash_inputs(m, arg[0], _domain_chain(m, arg[1]), kit.Select("name", arg, 3), kit.Select("", arg, 4))
|
||||||
case LIST:
|
case LIST:
|
||||||
_hash_inputs(m, arg[0], arg[1], kit.Select("name", arg, 3), kit.Select("", arg, 4))
|
_hash_inputs(m, arg[0], _domain_chain(m, arg[1]), kit.Select("name", arg, 3), kit.Select("", arg, 4))
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
}}
|
}}
|
||||||
|
1
conf.go
1
conf.go
@ -43,6 +43,7 @@ const ( // MSG
|
|||||||
MSG_USERDATA = "user.data"
|
MSG_USERDATA = "user.data"
|
||||||
MSG_USERADDR = "user.addr"
|
MSG_USERADDR = "user.addr"
|
||||||
|
|
||||||
|
MSG_LOCAL = "sess.path"
|
||||||
MSG_RIVER = "sess.river"
|
MSG_RIVER = "sess.river"
|
||||||
MSG_STORM = "sess.storm"
|
MSG_STORM = "sess.storm"
|
||||||
MSG_ACTIVE = "sess.active"
|
MSG_ACTIVE = "sess.active"
|
||||||
|
@ -6,10 +6,48 @@ import (
|
|||||||
"github.com/shylinux/icebergs/base/ctx"
|
"github.com/shylinux/icebergs/base/ctx"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
"github.com/shylinux/icebergs/base/web"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
|
"path"
|
||||||
)
|
)
|
||||||
|
|
||||||
func _action_domain(m *ice.Message, arg ...string) string {
|
const (
|
||||||
return m.Option(ice.MSG_DOMAIN, kit.Keys("R"+kit.Select(m.Option(ice.MSG_RIVER), arg, 1), "S"+kit.Select(m.Option(ice.MSG_STORM), arg, 0)))
|
DOMAIN = "domain"
|
||||||
|
PUBLIC = "public"
|
||||||
|
PROTECTED = "protected"
|
||||||
|
PRIVATE = "private"
|
||||||
|
)
|
||||||
|
|
||||||
|
func _action_domain(m *ice.Message, cmd string, arg ...string) (domain string) {
|
||||||
|
m.Option(ice.MSG_LOCAL, "")
|
||||||
|
m.Option(ice.MSG_DOMAIN, "")
|
||||||
|
if m.Conf(ACTION, kit.Keys(kit.MDB_META, DOMAIN, cmd)) != "true" {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
storm := kit.Select(m.Option(ice.MSG_STORM), arg, 0)
|
||||||
|
river := kit.Select(m.Option(ice.MSG_RIVER), arg, 1)
|
||||||
|
m.Richs(RIVER, "", river, func(key string, value map[string]interface{}) {
|
||||||
|
switch kit.Value(kit.GetMeta(value), kit.MDB_TYPE) {
|
||||||
|
case PUBLIC:
|
||||||
|
return
|
||||||
|
case PROTECTED:
|
||||||
|
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, river, TOOL), storm, func(key string, value map[string]interface{}) {
|
||||||
|
switch kit.Value(kit.GetMeta(value), kit.MDB_TYPE) {
|
||||||
|
case PUBLIC:
|
||||||
|
domain = m.Option(ice.MSG_DOMAIN, kit.Keys("R"+river))
|
||||||
|
case PROTECTED:
|
||||||
|
domain = m.Option(ice.MSG_DOMAIN, kit.Keys("R"+river, "S"+storm))
|
||||||
|
case PRIVATE:
|
||||||
|
domain = m.Option(ice.MSG_DOMAIN, kit.Keys("R"+river, "U"+m.Option(ice.MSG_USERNAME)))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
case PRIVATE:
|
||||||
|
domain = m.Option(ice.MSG_DOMAIN, kit.Keys("U"+m.Option(ice.MSG_USERNAME)))
|
||||||
|
}
|
||||||
|
m.Option(ice.MSG_LOCAL, path.Join(m.Conf(RIVER, kit.META_PATH), domain))
|
||||||
|
})
|
||||||
|
m.Log_AUTH(RIVER, river, STORM, storm, DOMAIN, domain)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
||||||
if ok = true; m.Option(ice.MSG_USERROLE) == aaa.VOID {
|
if ok = true; m.Option(ice.MSG_USERROLE) == aaa.VOID {
|
||||||
@ -24,7 +62,7 @@ func _action_right(m *ice.Message, river string, storm string) (ok bool) {
|
|||||||
func _action_list(m *ice.Message, river, storm string) {
|
func _action_list(m *ice.Message, river, storm string) {
|
||||||
m.Option(ice.MSG_RIVER, river)
|
m.Option(ice.MSG_RIVER, river)
|
||||||
m.Cmdy(TOOL, storm).Table(func(index int, value map[string]string, head []string) {
|
m.Cmdy(TOOL, storm).Table(func(index int, value map[string]string, head []string) {
|
||||||
m.Cmdy(m.Space(value[POD]), ctx.COMMAND, kit.Keys(value[CTX], value[CMD]))
|
m.Cmdy(m.Space(kit.Select(m.Option(POD), value[POD])), ctx.COMMAND, kit.Keys(value[CTX], value[CMD]))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
||||||
@ -37,6 +75,10 @@ func _action_show(m *ice.Message, river, storm, index string, arg ...string) {
|
|||||||
}) == nil && m.Warn(!m.Right(cmds), ice.ErrNotAuth) {
|
}) == nil && m.Warn(!m.Right(cmds), ice.ErrNotAuth) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _action_domain(m, cmds[0]); m.Option(ice.MSG_UPLOAD) != "" {
|
||||||
|
_action_upload(m) // 上传文件
|
||||||
|
}
|
||||||
m.Cmdy(_action_proxy(m), cmds, arg)
|
m.Cmdy(_action_proxy(m), cmds, arg)
|
||||||
}
|
}
|
||||||
func _action_proxy(m *ice.Message) (proxy []string) {
|
func _action_proxy(m *ice.Message) (proxy []string) {
|
||||||
@ -54,7 +96,13 @@ func _action_upload(m *ice.Message, arg ...string) {
|
|||||||
const ACTION = "action"
|
const ACTION = "action"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{Commands: map[string]*ice.Command{
|
Index.Merge(&ice.Context{
|
||||||
|
Configs: map[string]*ice.Config{
|
||||||
|
ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(
|
||||||
|
DOMAIN, kit.Dict(),
|
||||||
|
)},
|
||||||
|
},
|
||||||
|
Commands: map[string]*ice.Command{
|
||||||
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{
|
||||||
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||||
for _, k := range arg {
|
for _, k := range arg {
|
||||||
@ -74,10 +122,6 @@ func init() {
|
|||||||
return //命令列表
|
return //命令列表
|
||||||
}
|
}
|
||||||
|
|
||||||
_action_domain(m)
|
|
||||||
if m.Option(ice.MSG_UPLOAD) != "" {
|
|
||||||
_action_upload(m) // 上传文件
|
|
||||||
}
|
|
||||||
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
|
||||||
}},
|
}},
|
||||||
}}, nil)
|
}}, nil)
|
||||||
|
@ -15,6 +15,11 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
|||||||
m.Load()
|
m.Load()
|
||||||
m.Cmd(web.SERVE, aaa.WHITE, "header", "river", "action", "footer")
|
m.Cmd(web.SERVE, aaa.WHITE, "header", "river", "action", "footer")
|
||||||
|
|
||||||
|
m.Conf(ACTION, "meta.domain.web.chat.location", "true")
|
||||||
|
m.Conf(ACTION, "meta.domain.web.chat.paste", "true")
|
||||||
|
m.Conf(ACTION, "meta.domain.web.chat.scan", "true")
|
||||||
|
m.Conf(ACTION, "meta.domain.web.wiki.feel", "true")
|
||||||
|
|
||||||
m.Conf(RIVER, "meta.template", kit.Dict(
|
m.Conf(RIVER, "meta.template", kit.Dict(
|
||||||
"base", kit.Dict(
|
"base", kit.Dict(
|
||||||
"info", []interface{}{
|
"info", []interface{}{
|
||||||
@ -32,12 +37,13 @@ var Index = &ice.Context{Name: CHAT, Help: "聊天中心",
|
|||||||
"miss", []interface{}{
|
"miss", []interface{}{
|
||||||
"web.team.task",
|
"web.team.task",
|
||||||
"web.team.plan",
|
"web.team.plan",
|
||||||
"web.wiki.word",
|
|
||||||
},
|
|
||||||
"wiki", []interface{}{
|
|
||||||
"web.wiki.draw",
|
"web.wiki.draw",
|
||||||
"web.wiki.data",
|
"web.wiki.data",
|
||||||
|
"web.wiki.word",
|
||||||
|
},
|
||||||
|
"meet", []interface{}{
|
||||||
"web.wiki.feel",
|
"web.wiki.feel",
|
||||||
|
"web.chat.meet.miss",
|
||||||
"web.wiki.word",
|
"web.wiki.word",
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -39,32 +39,26 @@ func init() {
|
|||||||
mdb.CREATE: {Name: "insert type=text name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "insert type=text name address latitude longitude", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_trans(arg, map[string]string{"address": "text"})
|
_trans(arg, map[string]string{"address": "text"})
|
||||||
m.Conf(LOCATION, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(LOCATION, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, LOCATION, "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
mdb.MODIFY: {Name: "modify", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.MODIFY, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
m.Cmdy(mdb.MODIFY, LOCATION, "", mdb.HASH, kit.MDB_HASH, m.Option(kit.MDB_HASH), arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
m.Cmdy(mdb.DELETE, LOCATION, "", mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(LOCATION), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.EXPORT, m.Prefix(LOCATION), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(LOCATION), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(LOCATION), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INPUTS, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INPUTS, LOCATION, "", mdb.HASH, arg)
|
||||||
}},
|
|
||||||
|
|
||||||
mdb.RENDER: {Name: "render type name text", Help: "渲染", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
// m.Cmdy(mdb.RENDER, web.RENDER.Frame, kit.Format(
|
|
||||||
// "https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s",
|
|
||||||
// arg[2], arg[2]))
|
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option(mdb.FIELDS, "time,type,name,text,longitude,latitude")
|
m.Option(mdb.FIELDS, kit.Select("time,type,name,text,longitude,latitude", mdb.DETAIL, len(arg) > 0))
|
||||||
m.Cmdy(mdb.SELECT, LOCATION, m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg)
|
m.Cmdy(mdb.SELECT, LOCATION, "", mdb.HASH, kit.MDB_TEXT, arg)
|
||||||
m.Table(func(index int, value map[string]string, head []string) {
|
m.Table(func(index int, value map[string]string, head []string) {
|
||||||
m.PushRender(kit.MDB_LINK, "a", "百度地图", kit.Format(
|
m.PushRender(kit.MDB_LINK, "a", "百度地图", kit.Format(
|
||||||
"https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s",
|
"https://map.baidu.com/search/%s/@12958750.085,4825785.55,16z?querytype=s&da_src=shareurl&wd=%s",
|
||||||
|
@ -6,137 +6,46 @@ import (
|
|||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
const MEET = "meet"
|
var _miss_select = "time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境"
|
||||||
|
|
||||||
const (
|
const (
|
||||||
MISS = "miss"
|
MISS = "miss"
|
||||||
DATE = "date"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var _miss_select = "time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境"
|
const MEET = "meet"
|
||||||
var _miss_insert = kit.List(
|
|
||||||
"_input", "text", "name", "name",
|
|
||||||
"_input", "text", "name", "性别",
|
|
||||||
"_input", "text", "name", "年龄",
|
|
||||||
"_input", "text", "name", "身高",
|
|
||||||
"_input", "text", "name", "体重",
|
|
||||||
|
|
||||||
"_input", "text", "name", "星座",
|
|
||||||
"_input", "text", "name", "生日",
|
|
||||||
"_input", "text", "name", "性格",
|
|
||||||
"_input", "text", "name", "爱好",
|
|
||||||
|
|
||||||
"_input", "text", "name", "籍贯",
|
|
||||||
"_input", "text", "name", "户口",
|
|
||||||
"_input", "text", "name", "学历",
|
|
||||||
"_input", "text", "name", "学校",
|
|
||||||
"_input", "text", "name", "职业",
|
|
||||||
"_input", "text", "name", "公司",
|
|
||||||
|
|
||||||
"_input", "text", "name", "年薪",
|
|
||||||
"_input", "text", "name", "资产",
|
|
||||||
"_input", "text", "name", "家境",
|
|
||||||
"_input", "text", "name", "照片",
|
|
||||||
)
|
|
||||||
|
|
||||||
var _date_select = "time,id,name,地点,主题"
|
|
||||||
var _date_insert = kit.List(
|
|
||||||
"_input", "text", "name", "name",
|
|
||||||
"_input", "text", "name", "地点",
|
|
||||||
"_input", "text", "name", "主题",
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
Index.Register(&ice.Context{Name: MEET, Help: "遇见",
|
Index.Register(&ice.Context{Name: MEET, Help: "遇见",
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
MISS: {Name: MISS, Help: "miss", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
MISS: {Name: MISS, Help: "miss", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
||||||
DATE: {Name: DATE, Help: "date", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)},
|
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }},
|
||||||
m.Load(MISS, DATE)
|
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }},
|
||||||
}},
|
|
||||||
ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
||||||
m.Save(MISS, DATE)
|
|
||||||
}},
|
|
||||||
|
|
||||||
MISS: {Name: "miss name=auto auto 添加:button 导出:button 导入:button", Help: "信息", Meta: kit.Dict(
|
MISS: {Name: "miss name auto create", Help: "资料", Action: map[string]*ice.Action{
|
||||||
"display", "", "添加", _miss_insert,
|
mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
), Action: map[string]*ice.Action{
|
|
||||||
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.MODIFY, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option("name"), arg[0], arg[1])
|
m.Cmdy(mdb.MODIFY, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME), arg[0], arg[1])
|
||||||
}},
|
}},
|
||||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option("name"))
|
m.Cmdy(mdb.DELETE, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export file", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.EXPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import file", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option("fields", _miss_select)
|
m.Option(mdb.FIELDS, kit.Select("time,name,照片,性别,年龄,身高,籍贯,户口,学历,职业,公司,年薪,资产,家境", mdb.DETAIL, len(arg) > 0))
|
||||||
if msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, kit.Select(kit.MDB_FOREACH, arg, 0)); len(arg) == 0 {
|
msg := m.Cmd(mdb.SELECT, m.Prefix(MISS), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_NAME, arg)
|
||||||
msg.Table(func(index int, value map[string]string, head []string) {
|
msg.Table(func(index int, value map[string]string, head []string) {
|
||||||
for _, k := range head {
|
value["照片"] = kit.Format(`<img src="%s" height=%s>`, value["照片"], kit.Select("100", "400", m.Option(mdb.FIELDS) == mdb.DETAIL))
|
||||||
if k == "照片" {
|
m.Push("", value, kit.Split(m.Option(mdb.FIELDS)))
|
||||||
if m.Option(ice.MSG_USERUA) == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if value["照片"] == "" {
|
|
||||||
m.Push("照片", "")
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// m.Push("照片", m.Cmdx(mdb.RENDER, web.RENDER.IMG, path.Join("/share/local/usr/image/local/", m.Option(ice.MSG_DOMAIN), value["照片"])))
|
|
||||||
} else {
|
|
||||||
m.Push(k, value[k])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
if m.Option(ice.MSG_USERUA) == "" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
m.PushAction("喜欢", "约会")
|
|
||||||
m.Sort("time", "time_r")
|
|
||||||
} else {
|
|
||||||
msg.Table(func(index int, value map[string]string, head []string) {
|
|
||||||
if value["key"] == "照片" {
|
|
||||||
// value["value"] = m.Cmdx(mdb.RENDER, web.RENDER.IMG, path.Join("/share/local/usr/image/local/", m.Option(ice.MSG_DOMAIN), value["value"]), "640")
|
|
||||||
}
|
|
||||||
m.Push("key", value["key"])
|
|
||||||
m.Push("value", value["value"])
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}},
|
|
||||||
|
|
||||||
DATE: {Name: "date id=auto auto 添加:button 导出:button 导入:button", Help: "约会", Meta: kit.Dict(
|
|
||||||
"display", "", "添加", _date_insert,
|
|
||||||
), Action: map[string]*ice.Action{
|
|
||||||
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, arg)
|
|
||||||
}},
|
|
||||||
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Cmdy(mdb.MODIFY, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_ID, m.Option("id"), arg[0], arg[1])
|
|
||||||
}},
|
|
||||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
// m.Cmdy(mdb.DELETE, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_NAME, m.Option("name"))
|
|
||||||
}},
|
|
||||||
mdb.EXPORT: {Name: "export file", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
|
|
||||||
}},
|
|
||||||
mdb.IMPORT: {Name: "import file", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
|
|
||||||
}},
|
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
|
||||||
if len(arg) == 0 {
|
|
||||||
m.Option("fields", _date_select)
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(DATE), m.Option(ice.MSG_DOMAIN), mdb.LIST, kit.MDB_ID, arg[0])
|
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}, nil)
|
}, nil)
|
||||||
|
@ -19,30 +19,30 @@ func init() {
|
|||||||
mdb.CREATE: {Name: "create type=text name=hi data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=text name=hi data:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
_trans(arg, map[string]string{"data": "text"})
|
_trans(arg, map[string]string{"data": "text"})
|
||||||
m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(PASTE, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
m.Cmdy(mdb.DELETE, m.Prefix(PASTE), "", mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.EXPORT, m.Prefix(PASTE), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(PASTE), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INPUTS, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INPUTS, m.Prefix(PASTE), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
text := m.Cmd(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
text := m.Cmd(mdb.SELECT, m.Prefix(PASTE), "", mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||||
m.Cmdy(wiki.SPARK, "inner", text)
|
m.Cmdy(wiki.SPARK, "inner", text)
|
||||||
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
||||||
m.Render("")
|
m.Render("")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(PASTE), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.SELECT, m.Prefix(PASTE), "", mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Sort(kit.MDB_TIME, "time_r")
|
||||||
m.PushAction(mdb.REMOVE)
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
|
@ -25,12 +25,6 @@ func _river_list(m *ice.Message) {
|
|||||||
m.Set(ice.MSG_OPTION, kit.MDB_HASH)
|
m.Set(ice.MSG_OPTION, kit.MDB_HASH)
|
||||||
m.Set(ice.MSG_OPTION, kit.MDB_NAME)
|
m.Set(ice.MSG_OPTION, kit.MDB_NAME)
|
||||||
|
|
||||||
if p := m.Option(POD); p != "" {
|
|
||||||
m.Option(POD, "")
|
|
||||||
m.Cmdy(web.SPACE, p, "web.chat./river")
|
|
||||||
// 代理列表
|
|
||||||
}
|
|
||||||
|
|
||||||
m.Richs(RIVER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
m.Richs(RIVER, nil, kit.MDB_FOREACH, func(key string, value map[string]interface{}) {
|
||||||
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
m.Richs(RIVER, kit.Keys(kit.MDB_HASH, key, USER), m.Option(ice.MSG_USERNAME), func(k string, val map[string]interface{}) {
|
||||||
m.Push(key, kit.GetMeta(value), []string{kit.MDB_HASH, kit.MDB_NAME}, kit.GetMeta(val))
|
m.Push(key, kit.GetMeta(value), []string{kit.MDB_HASH, kit.MDB_NAME}, kit.GetMeta(val))
|
||||||
@ -63,7 +57,9 @@ const RIVER = "river"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.Merge(&ice.Context{
|
Index.Merge(&ice.Context{
|
||||||
Configs: map[string]*ice.Config{
|
Configs: map[string]*ice.Config{
|
||||||
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data()},
|
RIVER: {Name: RIVER, Help: "群组", Value: kit.Data(
|
||||||
|
kit.MDB_PATH, "usr/local/river",
|
||||||
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
INFO: {Name: "info auto", Help: "信息", Action: map[string]*ice.Action{
|
INFO: {Name: "info auto", Help: "信息", Action: map[string]*ice.Action{
|
||||||
@ -161,18 +157,22 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option(kit.MDB_ID) != "" {
|
if m.Option(kit.MDB_ID) != "" {
|
||||||
_action_domain(m, m.Option(kit.MDB_HASH))
|
|
||||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
||||||
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
||||||
m.Cmdy(_river_proxy(msg, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), mdb.EXPORT)
|
|
||||||
|
cmd := kit.Keys(msg.Append(CTX), msg.Append(CMD))
|
||||||
|
_action_domain(m, cmd, m.Option(kit.MDB_HASH))
|
||||||
|
m.Cmdy(_river_proxy(msg, msg.Append(POD)), cmd, mdb.EXPORT)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Option(kit.MDB_ID) != "" {
|
if m.Option(kit.MDB_ID) != "" {
|
||||||
_action_domain(m, m.Option(kit.MDB_HASH))
|
|
||||||
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
m.Option(mdb.FIELDS, "time,id,pod,ctx,cmd,arg")
|
||||||
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
msg := m.Cmd(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL, kit.MDB_HASH, m.Option(kit.MDB_HASH)), mdb.LIST, kit.MDB_ID, m.Option(kit.MDB_ID))
|
||||||
m.Cmdy(_river_proxy(msg, msg.Append(POD)), kit.Keys(msg.Append(CTX), msg.Append(CMD)), mdb.IMPORT)
|
|
||||||
|
cmd := kit.Keys(msg.Append(CTX), msg.Append(CMD))
|
||||||
|
_action_domain(m, cmd, m.Option(kit.MDB_HASH))
|
||||||
|
m.Cmdy(_river_proxy(msg, msg.Append(POD)), cmd, mdb.IMPORT)
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
@ -199,7 +199,7 @@ func init() {
|
|||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
m.Option(mdb.FIELDS, "time,hash,name,count")
|
m.Option(mdb.FIELDS, "time,hash,type,name,count")
|
||||||
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH)
|
m.Cmdy(mdb.SELECT, RIVER, kit.Keys(kit.MDB_HASH, m.Option(ice.MSG_RIVER), TOOL), mdb.HASH)
|
||||||
m.PushAction(mdb.REMOVE)
|
m.PushAction(mdb.REMOVE)
|
||||||
return // 应用列表
|
return // 应用列表
|
||||||
|
@ -18,30 +18,30 @@ func init() {
|
|||||||
SCAN: {Name: "scan hash auto create@scan", Help: "扫码", Action: map[string]*ice.Action{
|
SCAN: {Name: "scan hash auto create@scan", Help: "扫码", Action: map[string]*ice.Action{
|
||||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Conf(SCAN, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
m.Conf(SCAN, kit.Keys(m.Option(ice.MSG_DOMAIN), kit.MDB_META, kit.MDB_SHORT), kit.MDB_TEXT)
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.REMOVE: {Name: "remove", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
m.Cmdy(mdb.DELETE, m.Prefix(SCAN), "", mdb.HASH, kit.MDB_TEXT, m.Option(kit.MDB_TEXT))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.EXPORT, m.Prefix(SCAN), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(SCAN), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INPUTS, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INPUTS, m.Prefix(SCAN), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
if len(arg) > 0 {
|
if len(arg) > 0 {
|
||||||
text := m.Cmd(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
text := m.Cmd(mdb.SELECT, m.Prefix(SCAN), "", mdb.HASH, kit.MDB_HASH, arg[0]).Append(kit.MDB_TEXT)
|
||||||
m.Cmdy(wiki.SPARK, "inner", text)
|
m.Cmdy(wiki.SPARK, "inner", text)
|
||||||
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
m.Cmdy(wiki.IMAGE, "qrcode", text)
|
||||||
m.Render("")
|
m.Render("")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(SCAN), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.SELECT, m.Prefix(SCAN), "", mdb.HASH)
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Sort(kit.MDB_TIME, "time_r")
|
||||||
m.PushAction(mdb.REMOVE)
|
m.PushAction(mdb.REMOVE)
|
||||||
}},
|
}},
|
||||||
|
@ -34,27 +34,27 @@ func init() {
|
|||||||
"添加", _target_insert,
|
"添加", _target_insert,
|
||||||
), Action: map[string]*ice.Action{
|
), Action: map[string]*ice.Action{
|
||||||
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INSERT: {Name: "insert [key value]...", Help: "添加", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INSERT, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INSERT, m.Prefix(TARGET), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
mdb.MODIFY: {Name: "modify key value", Help: "编辑", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.MODIFY, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH, "", m.Option("hash"), arg[0], arg[1])
|
m.Cmdy(mdb.MODIFY, m.Prefix(TARGET), "", mdb.HASH, "", m.Option("hash"), arg[0], arg[1])
|
||||||
}},
|
}},
|
||||||
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
mdb.DELETE: {Name: "delete", Help: "删除", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.DELETE, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH, "", m.Option("hash"))
|
m.Cmdy(mdb.DELETE, m.Prefix(TARGET), "", mdb.HASH, "", m.Option("hash"))
|
||||||
}},
|
}},
|
||||||
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
mdb.EXPORT: {Name: "export", Help: "导出", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.EXPORT, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.EXPORT, m.Prefix(TARGET), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
mdb.IMPORT: {Name: "import", Help: "导入", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.IMPORT, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH)
|
m.Cmdy(mdb.IMPORT, m.Prefix(TARGET), "", mdb.HASH)
|
||||||
}},
|
}},
|
||||||
|
|
||||||
mdb.INPUTS: {Name: "inputs key value", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
mdb.INPUTS: {Name: "inputs key value", Help: "补全", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(mdb.INPUTS, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH, arg)
|
m.Cmdy(mdb.INPUTS, m.Prefix(TARGET), "", mdb.HASH, arg)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option("fields", "time,hash,type,name,text")
|
m.Option("fields", "time,hash,type,name,text")
|
||||||
m.Cmdy(mdb.SELECT, m.Prefix(TARGET), m.Option(ice.MSG_DOMAIN), mdb.HASH, "", kit.Select(kit.MDB_FOREACH, arg, 0))
|
m.Cmdy(mdb.SELECT, m.Prefix(TARGET), "", mdb.HASH, "", kit.Select(kit.MDB_FOREACH, arg, 0))
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
m.PushAction("备课", "学习", "测试", "删除")
|
m.PushAction("备课", "学习", "测试", "删除")
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package code
|
package code
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
@ -25,7 +26,7 @@ func init() {
|
|||||||
"GOPROXY", "https://goproxy.cn,direct",
|
"GOPROXY", "https://goproxy.cn,direct",
|
||||||
"GOPRIVATE", "github.com",
|
"GOPRIVATE", "github.com",
|
||||||
"CGO_ENABLED", "0",
|
"CGO_ENABLED", "0",
|
||||||
), "go", []interface{}{"go", "build", "-o"},
|
), "go", []interface{}{"go", "build"},
|
||||||
)},
|
)},
|
||||||
},
|
},
|
||||||
Commands: map[string]*ice.Command{
|
Commands: map[string]*ice.Command{
|
||||||
@ -52,10 +53,17 @@ func init() {
|
|||||||
|
|
||||||
// 编译目标
|
// 编译目标
|
||||||
file := path.Join(m.Conf(cmd, "meta.path"), kit.Keys(kit.Select("ice", path.Base(strings.TrimSuffix(main, ".go")), main != "src/main.go"), goos, arch))
|
file := path.Join(m.Conf(cmd, "meta.path"), kit.Keys(kit.Select("ice", path.Base(strings.TrimSuffix(main, ".go")), main != "src/main.go"), goos, arch))
|
||||||
|
args := []string{"-ldflags"}
|
||||||
|
list := []string{
|
||||||
|
fmt.Sprintf(`-X main.Time="%s"`, m.Time()),
|
||||||
|
fmt.Sprintf(`-X main.Version="%s"`, m.Cmdx(cli.SYSTEM, "git", "describe", "--tags")),
|
||||||
|
fmt.Sprintf(`-X main.HostName="%s"`, m.Conf(cli.RUNTIME, "boot.hostname")),
|
||||||
|
fmt.Sprintf(`-X main.UserName="%s"`, m.Conf(cli.RUNTIME, "boot.username")),
|
||||||
|
}
|
||||||
|
|
||||||
// 编译参数
|
// 编译参数
|
||||||
m.Optionv(cli.CMD_ENV, kit.Simple(m.Confv(COMPILE, "meta.env"), "GOARCH", arch, "GOOS", goos))
|
m.Optionv(cli.CMD_ENV, kit.Simple(m.Confv(COMPILE, "meta.env"), "GOARCH", arch, "GOOS", goos))
|
||||||
if msg := m.Cmd(cli.SYSTEM, m.Confv(COMPILE, "meta.go"), file, main); msg.Append(cli.CMD_CODE) != "0" {
|
if msg := m.Cmd(cli.SYSTEM, m.Confv(COMPILE, "meta.go"), args, "'"+strings.Join(list, " ")+"'", "-o", file, main); msg.Append(cli.CMD_CODE) != "0" {
|
||||||
m.Copy(msg)
|
m.Copy(msg)
|
||||||
} else {
|
} else {
|
||||||
m.Log_EXPORT("source", main, "target", file)
|
m.Log_EXPORT("source", main, "target", file)
|
||||||
|
@ -4,8 +4,6 @@ import (
|
|||||||
ice "github.com/shylinux/icebergs"
|
ice "github.com/shylinux/icebergs"
|
||||||
"github.com/shylinux/icebergs/base/web"
|
"github.com/shylinux/icebergs/base/web"
|
||||||
kit "github.com/shylinux/toolkits"
|
kit "github.com/shylinux/toolkits"
|
||||||
|
|
||||||
"path"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const FEEL = "feel"
|
const FEEL = "feel"
|
||||||
@ -25,12 +23,7 @@ func init() {
|
|||||||
_wiki_upload(m, FEEL)
|
_wiki_upload(m, FEEL)
|
||||||
}},
|
}},
|
||||||
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
|
||||||
m.Option("prefix", m.Conf(FEEL, "meta.path"))
|
|
||||||
if m.Option(ice.MSG_DOMAIN) == "" {
|
|
||||||
_wiki_list(m, FEEL, kit.Select("./", arg, 0))
|
_wiki_list(m, FEEL, kit.Select("./", arg, 0))
|
||||||
} else {
|
|
||||||
_wiki_list(m, FEEL, path.Join("local", m.Option(ice.MSG_DOMAIN), kit.Select(".", arg, 0))+"/")
|
|
||||||
}
|
|
||||||
m.Sort(kit.MDB_TIME, "time_r")
|
m.Sort(kit.MDB_TIME, "time_r")
|
||||||
m.Option("_display", "")
|
m.Option("_display", "")
|
||||||
}},
|
}},
|
||||||
|
@ -11,7 +11,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func _wiki_list(m *ice.Message, cmd string, arg ...string) bool {
|
func _wiki_list(m *ice.Message, cmd string, arg ...string) bool {
|
||||||
m.Option(nfs.DIR_ROOT, m.Conf(cmd, "meta.path"))
|
m.Option("prefix", path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH)))
|
||||||
|
m.Option(nfs.DIR_ROOT, path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH)))
|
||||||
if len(arg) == 0 || strings.HasSuffix(arg[0], "/") {
|
if len(arg) == 0 || strings.HasSuffix(arg[0], "/") {
|
||||||
m.Option("_display", "table")
|
m.Option("_display", "table")
|
||||||
if m.Option(nfs.DIR_DEEP) != "true" {
|
if m.Option(nfs.DIR_DEEP) != "true" {
|
||||||
@ -36,10 +37,11 @@ func _wiki_save(m *ice.Message, cmd, name, text string, arg ...string) {
|
|||||||
m.Cmd(nfs.SAVE, path.Join(m.Conf(cmd, "meta.path"), name), text)
|
m.Cmd(nfs.SAVE, path.Join(m.Conf(cmd, "meta.path"), name), text)
|
||||||
}
|
}
|
||||||
func _wiki_upload(m *ice.Message, cmd string) {
|
func _wiki_upload(m *ice.Message, cmd string) {
|
||||||
if up := kit.Simple(m.Optionv("_upload")); m.Option(ice.MSG_USERPOD) == "" {
|
up := kit.Simple(m.Optionv(ice.MSG_UPLOAD))
|
||||||
m.Cmdy(web.CACHE, web.WATCH, up[0], path.Join(m.Conf(cmd, "meta.path"), m.Option("path"), up[1]))
|
if p := path.Join(m.Option(ice.MSG_LOCAL), m.Conf(cmd, kit.META_PATH), m.Option(kit.MDB_PATH), up[1]); m.Option(ice.MSG_USERPOD) == "" {
|
||||||
|
m.Cmdy(web.CACHE, web.WATCH, up[0], p)
|
||||||
} else {
|
} else {
|
||||||
m.Cmdy(web.SPIDE, web.SPIDE_DEV, web.SPIDE_SAVE, path.Join(m.Conf(cmd, "meta.path"), m.Option("path"), up[1]), web.SPIDE_GET, kit.MergeURL2(m.Option(ice.MSG_USERWEB), "/share/cache/"+up[0]))
|
m.Cmdy(web.SPIDE, web.SPIDE_DEV, web.SPIDE_SAVE, p, web.SPIDE_GET, kit.MergeURL2(m.Option(ice.MSG_USERWEB), "/share/cache/"+up[0]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
19
meta.go
19
meta.go
@ -54,7 +54,8 @@ func (m *Message) Push(key string, value interface{}, arg ...interface{}) *Messa
|
|||||||
switch value := value.(type) {
|
switch value := value.(type) {
|
||||||
case map[string]string:
|
case map[string]string:
|
||||||
head := kit.Simple(arg)
|
head := kit.Simple(arg)
|
||||||
if len(head) == 0 {
|
if len(head) == 0 || (len(head) == 1 && head[0] == "detail") {
|
||||||
|
head = head[:0]
|
||||||
for k := range value {
|
for k := range value {
|
||||||
head = append(head, k)
|
head = append(head, k)
|
||||||
}
|
}
|
||||||
@ -113,6 +114,13 @@ func (m *Message) Push(key string, value interface{}, arg ...interface{}) *Messa
|
|||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
if m.Option("fields") == "detail" || (len(m.meta[MSG_APPEND]) == 2 && m.meta[MSG_APPEND][0] == kit.MDB_KEY && m.meta[MSG_APPEND][1] == kit.MDB_VALUE) {
|
||||||
|
if key != kit.MDB_KEY || key != kit.MDB_VALUE {
|
||||||
|
m.Add(MSG_APPEND, kit.MDB_KEY, key)
|
||||||
|
m.Add(MSG_APPEND, kit.MDB_VALUE, kit.Format(value))
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
for _, v := range kit.Simple(value) {
|
for _, v := range kit.Simple(value) {
|
||||||
m.Add(MSG_APPEND, key, v)
|
m.Add(MSG_APPEND, key, v)
|
||||||
}
|
}
|
||||||
@ -245,6 +253,15 @@ func (m *Message) Sort(key string, arg ...string) *Message {
|
|||||||
}
|
}
|
||||||
func (m *Message) Table(cbs ...func(index int, value map[string]string, head []string)) *Message {
|
func (m *Message) Table(cbs ...func(index int, value map[string]string, head []string)) *Message {
|
||||||
if len(cbs) > 0 && cbs[0] != nil {
|
if len(cbs) > 0 && cbs[0] != nil {
|
||||||
|
if len(m.meta[MSG_APPEND]) == 2 && m.meta[MSG_APPEND][0] == kit.MDB_KEY {
|
||||||
|
line := map[string]string{}
|
||||||
|
for i, k := range m.meta[kit.MDB_KEY] {
|
||||||
|
line[k] = kit.Select("", m.meta[kit.MDB_VALUE], i)
|
||||||
|
}
|
||||||
|
cbs[0](0, line, m.meta[kit.MDB_KEY])
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
nrow := 0
|
nrow := 0
|
||||||
for _, k := range m.meta[MSG_APPEND] {
|
for _, k := range m.meta[MSG_APPEND] {
|
||||||
if len(m.meta[k]) > nrow {
|
if len(m.meta[k]) > nrow {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user