From a404a7cb08c77e26971640012aeb42cd3275ae3a Mon Sep 17 00:00:00 2001 From: shy Date: Sat, 20 Apr 2024 19:26:26 +0800 Subject: [PATCH] add some --- base/nfs/dir.go | 8 ++++++++ base/web/render.go | 2 +- base/web/serve.go | 4 +++- base/web/space.go | 1 + base/web/toast.go | 4 ++-- core/chat/message.css | 2 +- core/code/inner.go | 10 +++++++++- core/code/vimer.go | 2 ++ core/code/webpack.go | 8 ++++---- core/wiki/portal.css | 1 + info.go | 2 +- render.go | 2 +- 12 files changed, 34 insertions(+), 12 deletions(-) diff --git a/base/nfs/dir.go b/base/nfs/dir.go index e158ceaa..208410b8 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -170,6 +170,12 @@ const ( USR_ICONS_VOLCANOS = "usr/icons/volcanos.png" USR_ICONS = "usr/icons/" + V = "/v/" + M = "/m/" + P = "/p/" + X = "/x/" + S = "/s/" + C = "/c/" INTSHELL = "/intshell/" VOLCANOS = "/volcanos/" VOLCANOS_PLUGIN = "/volcanos/plugin/" @@ -259,6 +265,8 @@ func SplitPath(m *ice.Message, p string) []string { } else if kit.HasPrefix(p, REQUIRE) { ls := kit.Split(p, PS) return []string{ice.USR_REQUIRE + path.Join(ls[1:4]...) + PS, path.Join(ls[4:]...)} + } else if kit.HasPrefix(p, P) { + p = strings.TrimPrefix(p, P) } line := kit.Select("1", strings.Split(p, DF), 1) p = strings.TrimPrefix(p, kit.Path("")+PS) diff --git a/base/web/render.go b/base/web/render.go index 01048cb6..0782c4a6 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -135,7 +135,7 @@ func RenderMain(m *ice.Message) *ice.Message { } m.Options(TITLE, kit.Select("localhost:9020", UserWeb(m).Host, m.Option(ice.MSG_USERPOD))) m.Options(nfs.SCRIPT, ice.SRC_MAIN_JS, nfs.VERSION, RenderVersion(m)) - m.OptionDefault(mdb.ICONS, "/require/"+ice.Info.NodeIcon) + m.OptionDefault(mdb.ICONS, nfs.P+ice.Info.NodeIcon+m.Option(nfs.VERSION)) return m.RenderResult(kit.Renders(m.Cmdx(nfs.CAT, ice.SRC_MAIN_HTML), m)) } func RenderCmds(m *ice.Message, cmds ...ice.Any) { diff --git a/base/web/serve.go b/base/web/serve.go index 5bdd7dd9..d885d43f 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -89,7 +89,9 @@ func _serve_main(m *ice.Message, w http.ResponseWriter, r *http.Request) bool { return true } func _serve_static(msg *ice.Message, w http.ResponseWriter, r *http.Request) bool { - if p := path.Join(kit.Select(ice.USR_VOLCANOS, ice.USR_INTSHELL, msg.IsCliUA()), r.URL.Path); nfs.Exists(msg, p) { + if strings.HasPrefix(r.URL.Path, nfs.V) { + return Render(msg, ice.RENDER_DOWNLOAD, path.Join(ice.USR_VOLCANOS, strings.TrimPrefix(r.URL.Path, nfs.V))) + } else if p := path.Join(kit.Select(ice.USR_VOLCANOS, ice.USR_INTSHELL, msg.IsCliUA()), r.URL.Path); nfs.Exists(msg, p) { return Render(msg, ice.RENDER_DOWNLOAD, p) } else if p = path.Join(nfs.USR, r.URL.Path); kit.HasPrefix(r.URL.Path, nfs.VOLCANOS, nfs.INTSHELL) && nfs.Exists(msg, p) { return Render(msg, ice.RENDER_DOWNLOAD, p) diff --git a/base/web/space.go b/base/web/space.go index 0348e889..6ba812f4 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -295,6 +295,7 @@ const SPACE = "space" func init() { Index.MergeCommands(ice.Commands{ + "p": {Help: "资源", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { ShareLocalFile(m, arg...) }}, "s": {Help: "空间", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_POD, arg) }}, "c": {Help: "命令", Actions: ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(CHAT_CMD, arg) }}, SPACE: {Name: "space name cmds auto", Help: "空间站", Actions: ice.MergeActions(ice.Actions{ diff --git a/base/web/toast.go b/base/web/toast.go index 63a20b0d..164d84d3 100644 --- a/base/web/toast.go +++ b/base/web/toast.go @@ -61,7 +61,7 @@ func toastContent(m *ice.Message, state string, arg ...ice.Any) string { } } func ToastSuccess(m *ice.Message, arg ...ice.Any) { - Toast(m, toastContent(m, ice.SUCCESS, arg...), "", cli.TIME_3s) + Toast(m, toastContent(m, ice.SUCCESS, arg...), "", cli.TIME_1s) } func ToastFailure(m *ice.Message, arg ...ice.Any) { Toast(m, toastContent(m, ice.FAILURE, arg...), "", m.Option(ice.TOAST_DURATION, "-1")).Sleep(cli.TIME_3s) @@ -104,7 +104,7 @@ func GoToast(m *ice.Message, cb func(toast func(name string, count, total int)) m.Sleep(m.Option(ice.TOAST_DURATION)) } else { icon = Icons[ice.SUCCESS] - m.Option(ice.TOAST_DURATION, cli.TIME_3s) + m.Option(ice.TOAST_DURATION, cli.TIME_1s) toast(ice.SUCCESS, _total, _total) } Count(m, kit.FuncName(1), toastTitle(m), kit.FmtDuration(time.Now().Sub(begin))) diff --git a/core/chat/message.css b/core/chat/message.css index a1ecf06c..15dd3aba 100644 --- a/core/chat/message.css +++ b/core/chat/message.css @@ -1,5 +1,5 @@ body.light fieldset.web.chat.message>div.output { background-color:white; } -body.light fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list { background-color:#e3e3e2; } +body.light fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list { background-color:#e3e3e2; overflow-x:hidden; } body.light fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item:not(.plug).send div.content { background-color:#94ec69; } fieldset.web.chat.message>div.output>div.project>div.title { background-color:var(--plugin-bg-color); padding:var(--button-padding); display:flex; justify-content:space-between; position:sticky; top:0; z-index:2; } fieldset.web.chat.message>div.output>div.project>div.title i:hover { background-color:var(--hover-bg-color); cursor:pointer; } diff --git a/core/code/inner.go b/core/code/inner.go index 44bd4513..5692b1ba 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -103,7 +103,7 @@ func init() { m.Cmdy(NAVIGATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) }}, }), Hand: func(m *ice.Message, arg ...string) { - if kit.HasPrefix(arg[0], nfs.VOLCANOS, nfs.REQUIRE, ice.HTTP) { + if kit.HasPrefix(arg[0], nfs.VOLCANOS, nfs.REQUIRE, nfs.P, ice.HTTP) { if kit.HasPrefix(arg[0], ice.HTTP) && strings.Contains(arg[0], nfs.PLUGIN) && !strings.Contains(arg[0], nfs.VOLCANOS_PLUGIN) { arg[0] = strings.Replace(arg[0], nfs.PLUGIN, nfs.VOLCANOS_PLUGIN, 1) } else if kit.HasPrefix(arg[0], nfs.REQUIRE_SRC) { @@ -114,6 +114,14 @@ func init() { } else if kit.HasPrefix(arg[0], nfs.REQUIRE) { ls := strings.Split(strings.Split(strings.TrimPrefix(arg[0], nfs.REQUIRE), "?")[0], nfs.SRC) m.Options(nfs.PATH, kit.Join(kit.Slice(ls, 0, -1), nfs.PS)+nfs.SRC, nfs.FILE, kit.Select("", ls, -1)) + } else if kit.HasPrefix(arg[0], nfs.P) { + ls := kit.Split(arg[0], nfs.PS) + m.Debug("what %v", ls) + if ls[1] == ice.SRC { + m.Options(nfs.PATH, nfs.SRC, nfs.FILE, kit.Join(kit.Slice(ls, 2, -1), nfs.PS)) + } else { + m.Options(nfs.PATH, kit.Join(kit.Slice(ls, 1, 3), nfs.PS)+nfs.PS, nfs.FILE, kit.Join(kit.Slice(ls, 3, -1), nfs.PS)) + } } m.Echo(m.Cmdx(web.SPIDE, ice.OPS, web.SPIDE_RAW, http.MethodGet, arg[0])) m.Options("mode", "simple", lex.PARSE, kit.Ext(kit.ParseURL(arg[0]).Path)) diff --git a/core/code/vimer.go b/core/code/vimer.go index 70c2bc19..9d43f4e2 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -60,6 +60,8 @@ func init() { web.Index.MergeCommands(ice.Commands{ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { aaa.White(m, nfs.REQUIRE) }}, nfs.REQUIRE_SRC: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.SRC, path.Join(arg...)) }}, nfs.REQUIRE_USR: {Hand: func(m *ice.Message, arg ...string) { web.ShareLocalFile(m, ice.USR, path.Join(arg...)) }}, + "m": {Actions: web.ApiWhiteAction(), Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.REQUIRE_MODULES, arg) }}, + "/p/modules/": {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.REQUIRE_MODULES, arg) }}, nfs.REQUIRE_MODULES: {Hand: func(m *ice.Message, arg ...string) { p := path.Join(nfs.USR_MODULES, path.Join(arg...)) kit.If(!nfs.Exists(m, p), func() { diff --git a/core/code/webpack.go b/core/code/webpack.go index 9f83dce1..47e564ae 100644 --- a/core/code/webpack.go +++ b/core/code/webpack.go @@ -20,13 +20,13 @@ func _volcanos(m *ice.Message, p ...string) string { return ice.USR_VOLCANOS + p func _publish(m *ice.Message, p ...string) string { return ice.USR_PUBLISH + path.Join(p...) } func _require(m *ice.Message, p string) string { if kit.HasPrefix(p, nfs.USR_MODULES) { - return path.Join("/require/modules/", strings.TrimPrefix(p, nfs.USR_MODULES)) + return path.Join(nfs.M, strings.TrimPrefix(p, nfs.USR_MODULES)) } else if kit.HasPrefix(p, ice.USR_VOLCANOS) { - return path.Join("/volcanos/", strings.TrimPrefix(p, ice.USR_VOLCANOS)) + return path.Join(nfs.V, strings.TrimPrefix(p, ice.USR_VOLCANOS)) } else if kit.HasPrefix(p, nfs.SRC, nfs.USR) { - return path.Join("/require/", p) + return path.Join(nfs.P, p) } else { - return path.Join("/volcanos/", p) + return path.Join(nfs.V, p) } } func _webpack_css(m *ice.Message, css, js io.Writer, p string) { diff --git a/core/wiki/portal.css b/core/wiki/portal.css index 148e8059..bf724be7 100644 --- a/core/wiki/portal.css +++ b/core/wiki/portal.css @@ -38,6 +38,7 @@ fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output di } body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border:var(--box-border); border-left:var(--box-notice3); } fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { box-shadow:var(--th-box-shadow); border:0; border-left:var(--box-notice3); } +fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell]:hover { box-shadow:var(--notice-box-shadow); } fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { background-color:var(--code-bg-color); color:var(--code-fg-color); padding:var(--button-padding); margin-top:var(--button-margin); } fieldset.web.wiki.portal>div.output>div.layout>div.main table.content div.story[data-type=spark][data-name=shell] { margin-top:unset; } fieldset.web.wiki.portal.home>div.output>div.layout>div.main p { white-space:pre-wrap; text-align:center; } diff --git a/info.go b/info.go index 8941034a..cfead0a6 100644 --- a/info.go +++ b/info.go @@ -317,7 +317,7 @@ func (m *Message) FileURI(dir string) string { } else if strings.HasPrefix(dir, USR_VOLCANOS) { dir = strings.TrimPrefix(dir, USR) } else { - dir = kit.MergeURL(path.Join(PS, REQUIRE, dir), POD, m.Option(MSG_USERPOD)) + dir = kit.MergeURL(path.Join(PS, "p", dir), POD, m.Option(MSG_USERPOD)) } if m.Option(MSG_USERWEB0) != "" { dir = kit.MergeURL2(m.Option(MSG_USERWEB), dir) diff --git a/render.go b/render.go index efb5b220..d1b0f2a9 100644 --- a/render.go +++ b/render.go @@ -264,7 +264,7 @@ func (m *Message) Resource(file string, arg ...string) string { } else if strings.HasPrefix(file, PS) { return arg[0] + file } else if kit.HasPrefix(file, "src", "usr") { - return arg[0] + "/require/" + file + return arg[0] + "/p/" + file } } return m.resource(file)