diff --git a/base.go b/base.go index 5f87a9ef..cc5b3b62 100644 --- a/base.go +++ b/base.go @@ -62,9 +62,6 @@ var Index = &Context{Name: "ice", Help: "冰山模块", }, Configs: map[string]*Config{ "table": {Name: "数据缓存", Value: map[string]interface{}{ - "space": " ", - "col_sep": " ", - "row_sep": "\n", "compact": "false", }}, "help": {Value: map[string]interface{}{ diff --git a/base/nfs/nfs.go b/base/nfs/nfs.go index 609ac8d4..02e31f68 100644 --- a/base/nfs/nfs.go +++ b/base/nfs/nfs.go @@ -150,7 +150,7 @@ var Index = &ice.Context{Name: "nfs", Help: "存储模块", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { rg, _ := regexp.Compile(m.Option("dir_reg")) - dir(m, kit.Select("./", m.Option("dir_root")), kit.Select("", arg, 0), 0, m.Options("dir_deep"), "both", rg, + dir(m, kit.Select("./", m.Option("dir_root")), kit.Select("", arg, 0), 0, m.Options("dir_deep"), kit.Select("both", m.Option("dir_type")), rg, strings.Split(kit.Select("time size line path", arg, 1), " "), ice.ICE_TIME) }}, "cat": {Name: "cat path", Help: "保存", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/base/web/web.go b/base/web/web.go index 612a0b43..f205ea44 100644 --- a/base/web/web.go +++ b/base/web/web.go @@ -1458,7 +1458,7 @@ var Index = &ice.Context{Name: "web", Help: "网络模块", "/share/": {Name: "/share/", Help: "共享链", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { switch arg[0] { case "local": - http.ServeFile(m.W, m.R, "usr/"+path.Join(arg[1:]...)) + http.ServeFile(m.W, m.R, m.Cmdx(arg[1], path.Join(arg[2:]...))) case "login": Cookie(m, m.Cmdx(ice.AAA_USER, "login", m.Option("username"), m.Option("password"))) diff --git a/core/wiki/wiki.go b/core/wiki/wiki.go index 7f8ccfe3..21430bd8 100644 --- a/core/wiki/wiki.go +++ b/core/wiki/wiki.go @@ -9,6 +9,7 @@ import ( "bytes" "fmt" + "os" "path" "strings" ) @@ -38,17 +39,19 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", "table": {Name: "table", Help: "表格", Value: kit.Data("template", table)}, "chart": {Name: "chart", Help: "绘图", Value: kit.Data("prefix", prefix, "suffix", ``)}, - "mind": {Name: "mind", Help: "思维导图", Value: kit.Data(kit.MDB_SHORT, "name", "prefix", ``, "suffix", ``)}, - "word": {Name: "word", Help: "语言文字", Value: kit.Data(kit.MDB_SHORT, "name")}, - "data": {Name: "data", Help: "数据表格", Value: kit.Data(kit.MDB_SHORT, "name")}, - "feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name")}, + "mind": {Name: "mind", Help: "思维导图", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.svg", "prefix", ``, "suffix", ``)}, + "word": {Name: "word", Help: "语言文字", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.shy")}, + "data": {Name: "data", Help: "数据表格", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.csv")}, + "feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.(JPG|MOV|m4v)")}, + "walk": {Name: "walk", Help: "走遍世界", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.csv")}, }, Commands: map[string]*ice.Command{ ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Cmd(ice.CTX_CONFIG, "load", kit.Keys(m.Cap(ice.CTX_FOLLOW), "json")) + }}, ice.ICE_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Cmd(ice.CTX_CONFIG, "save", kit.Keys(m.Cap(ice.CTX_FOLLOW), "json"), kit.Keys(m.Cap(ice.CTX_FOLLOW), "mind")) + m.Cmd(ice.CTX_CONFIG, "save", kit.Keys(m.Cap(ice.CTX_FOLLOW), "json"), kit.Keys(m.Cap(ice.CTX_FOLLOW), "feel")) }}, "chart": {Name: "chart block|chain|table name text [fg bg fs ls p m]", Help: "绘图", Meta: map[string]interface{}{ "display": "inner", @@ -217,9 +220,9 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", // 生成网页 data := buffer.Bytes() - if strings.HasSuffix(arg[0], ".md") { - data = markdown.ToHTML(buffer.Bytes(), nil, nil) - } + // if strings.HasSuffix(arg[0], ".md") { + data = markdown.ToHTML(buffer.Bytes(), nil, nil) + // } m.Echo(string(data)) }}, "_tree": {Name: "_tree path", Help: "文库", Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { @@ -259,93 +262,150 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", kit.MDB_INPUT, "text", "name", "name", kit.MDB_INPUT, "button", "name", "执行", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "保存": - m.Cmd("nfs.save", path.Join("usr", arg[2]), arg[3:]) + m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), arg[2]), arg[3:]) } return } - m.Option("dir_root", "usr") + // 文件列表 + m.Option("dir_root", m.Conf(cmd, "meta.path")) + m.Option("dir_reg", m.Conf(cmd, "meta.regs")) m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) - if m.Append("path") == "" && m.Result() == "" { - m.Echo(m.Conf("mind", "meta.prefix"), "100%", "100%") - m.Echo(m.Conf("mind", "meta.suffix")) + m.Sort("time", "time_r") + if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + // 目录列表 + m.Option("dir_reg", "") + m.Option("dir_type", "dir") + m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) } }}, "word": {Name: "word", Help: "语言文字", Meta: kit.Dict("display", "wiki/word"), List: kit.List( kit.MDB_INPUT, "text", "name", "name", kit.MDB_INPUT, "button", "name", "执行", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "保存": - m.Cmd("nfs.save", path.Join("usr", arg[2]), arg[3]) + m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), arg[2]), arg[3]) } return } - m.Option("dir_root", "usr") + // 文件列表 + m.Option("dir_root", m.Conf(cmd, "meta.path")) + m.Option("dir_reg", m.Conf(cmd, "meta.regs")) m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + m.Sort("time", "time_r") + if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + // 目录列表 + m.Option("dir_reg", "") + m.Option("dir_type", "dir") + m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + return + } + m.Option("preview", m.Cmdx("_text", path.Join(m.Conf(cmd, "meta.path"), arg[0]))) }}, "data": {Name: "data", Help: "数据表格", Meta: kit.Dict("display", "wiki/data"), List: kit.List( kit.MDB_INPUT, "text", "name", "name", kit.MDB_INPUT, "button", "name", "执行", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "保存": - m.Cmd("nfs.save", path.Join("usr", arg[2]), arg[3]) + m.Cmd("nfs.save", path.Join(m.Conf("mind", "meta.path"), arg[2]), arg[3]) } return } - m.Option("dir_root", "usr") + // 文件列表 + m.Option("dir_root", m.Conf(cmd, "meta.path")) + m.Option("dir_reg", m.Conf(cmd, "meta.regs")) m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) - if len(arg) > 0 && strings.HasSuffix(arg[0], ".csv") { - m.CSV(m.Result()) + m.Sort("time", "time_r") + if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + // 目录列表 + m.Option("dir_reg", "") + m.Option("dir_type", "dir") + m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + return } + m.CSV(m.Result()) }}, "feel": {Name: "feel", Help: "影音媒体", Meta: kit.Dict("display", "wiki/feel"), List: kit.List( kit.MDB_INPUT, "text", "name", "name", kit.MDB_INPUT, "button", "name", "执行", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "保存": - m.Cmd("nfs.save", path.Join("usr", arg[2]), arg[3]) + m.Cmd("nfs.save", path.Join(m.Conf("mind", "meta.path"), arg[2]), arg[3]) + case "标签": + m.Conf("feel", kit.Keys(path.Base(arg[2]), "-2"), arg[3]) + p := path.Join(m.Conf(cmd, "meta.path"), arg[2]) + q := path.Join(m.Conf(cmd, "meta.path"), arg[3]) + os.MkdirAll(q, 0777) + m.Assert(os.Link(p, path.Join(q, path.Base(arg[2])))) } return } - m.Option("dir_root", "usr") - m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) - m.Sort("time", "time_r") + if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + // 文件列表 + m.Option("dir_root", m.Conf(cmd, "meta.path")) + m.Option("dir_reg", m.Conf(cmd, "meta.regs")) + m.Cmdy("nfs.dir", kit.Select("./", arg, 0), "time size path").Table(func(index int, value map[string]string, head []string) { + m.Push("label", m.Conf("feel", path.Base(value["path"]))) + }) + + // 目录列表 + m.Option("dir_reg", "") + m.Option("dir_type", "dir") + m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + + if len(arg) > 0 { + m.Sort("time", "time_r") + } else { + m.Sort("line", "int_r") + } + return + } + // 下载文件 + m.Echo(path.Join(m.Conf(cmd, "meta.path"), arg[0])) }}, "walk": {Name: "walk", Help: "走遍世界", Meta: kit.Dict("display", "wiki/walk"), List: kit.List( kit.MDB_INPUT, "text", "name", "file", kit.MDB_INPUT, "button", "name", "执行", kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, key string, arg ...string) { + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "保存": - m.Cmd("nfs.save", path.Join("usr", arg[2]), arg[3]) + m.Cmd("nfs.save", path.Join(m.Conf("mind", "meta.path"), arg[2]), arg[3]) } return } - m.Option("dir_root", "usr") + // 文件列表 + m.Option("dir_root", m.Conf(cmd, "meta.path")) + m.Option("dir_reg", m.Conf(cmd, "meta.regs")) m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) - if len(arg) > 0 && strings.HasSuffix(arg[0], ".csv") { - m.Option("title", "我走过的世界") - m.CSV(m.Result()) + m.Sort("time", "time_r") + if len(arg) == 0 || strings.HasSuffix(arg[0], "/") { + // 目录列表 + m.Option("dir_reg", "") + m.Option("dir_type", "dir") + m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + return } + m.Option("title", "我走过的世界") + m.CSV(m.Result()) }}, }, } diff --git a/type.go b/type.go index e937cabd..c6e81b6e 100644 --- a/type.go +++ b/type.go @@ -523,7 +523,7 @@ func (m *Message) Table(cbs ...interface{}) *Message { } //计算列宽 - space := kit.Select(m.Conf("table", "space"), m.Option("table.space")) + space := kit.Select(" ", m.Option("table.space")) depth, width := 0, map[string]int{} for _, k := range m.meta[MSG_APPEND] { if len(m.meta[k]) > depth { @@ -538,8 +538,8 @@ func (m *Message) Table(cbs ...interface{}) *Message { } // 回调函数 - rows := kit.Select(m.Conf("table", "row_sep"), m.Option("table.row_sep")) - cols := kit.Select(m.Conf("table", "col_sep"), m.Option("table.col_sep")) + rows := kit.Select(" ", m.Option("table.row_sep")) + cols := kit.Select("\n", m.Option("table.col_sep")) compact := kit.Select(m.Conf("table", "compact"), m.Option("table.compact")) == "true" cb := func(maps map[string]string, lists []string, line int) bool { for i, v := range lists {