1
0
mirror of https://shylinux.com/x/icebergs synced 2025-04-26 01:24:05 +08:00

add domain

This commit is contained in:
shaoying 2020-10-12 15:53:10 +08:00
parent 9acdabb179
commit a478e17d3c
14 changed files with 198 additions and 221 deletions

View File

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

View File

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

View File

@ -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,31 +96,33 @@ 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{
"/action": {Name: "/action river storm action arg...", Help: "工作台", Action: map[string]*ice.Action{ Configs: map[string]*ice.Config{
ctx.COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) { ACTION: {Name: ACTION, Help: "应用", Value: kit.Data(
for _, k := range arg { DOMAIN, kit.Dict(),
m.Cmdy(ctx.COMMAND, k) )},
},
Commands: map[string]*ice.Command{
"/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) {
for _, k := range arg {
m.Cmdy(ctx.COMMAND, k)
}
}},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) {
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
return // 没有登录
} }
if m.Warn(!_action_right(m, m.Option(ice.MSG_RIVER, arg[0]), m.Option(ice.MSG_STORM, arg[1])), ice.ErrNotAuth) {
return // 没有授权
}
if len(arg) == 2 {
_action_list(m, arg[0], arg[1])
return //命令列表
}
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
}}, }},
}, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { }}, nil)
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
return // 没有登录
}
if m.Warn(!_action_right(m, m.Option(ice.MSG_RIVER, arg[0]), m.Option(ice.MSG_STORM, arg[1])), ice.ErrNotAuth) {
return // 没有授权
}
if len(arg) == 2 {
_action_list(m, arg[0], arg[1])
return //命令列表
}
_action_domain(m)
if m.Option(ice.MSG_UPLOAD) != "" {
_action_upload(m) // 上传文件
}
_action_show(m, arg[0], arg[1], arg[2], arg[3:]...)
}},
}}, nil)
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -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 // 应用列表

View File

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

View File

@ -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("备课", "学习", "测试", "删除")
} }

View File

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

View 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")) _wiki_list(m, FEEL, kit.Select("./", arg, 0))
if m.Option(ice.MSG_DOMAIN) == "" {
_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", "")
}}, }},

View File

@ -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
View File

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