diff --git a/base/nfs/trash.go b/base/nfs/trash.go index 08b535b8..91984bc3 100644 --- a/base/nfs/trash.go +++ b/base/nfs/trash.go @@ -38,11 +38,14 @@ func init() { mdb.REVERT: {Name: "revert", Help: "恢复", Hand: func(m *ice.Message, arg ...string) { Rename(m, m.Option(FILE), m.Option(FROM)) mdb.HashRemove(m, m.OptionSimple(mdb.HASH)) + m.ProcessRefresh() }}, mdb.CREATE: {Name: "create path", Help: "删除", Hand: func(m *ice.Message, arg ...string) { p := path.Join(ice.VAR_TRASH, path.Base(m.Option(PATH))) RemoveAll(m, p) if MkdirAll(m, path.Dir(p)); !m.Warn(Rename(m, m.Option(PATH), p)) { + mdb.HashCreate(m, FROM, m.Option(PATH), FILE, p) + m.ProcessRefresh() m.Echo(p) } }}, diff --git a/base/web/render.go b/base/web/render.go index 33cb1f6a..aaa16680 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -149,6 +149,9 @@ func RenderWebsite(m *ice.Message, pod string, dir string, arg ...string) *ice.M return m.Echo(m.Cmdx(Space(m, pod), "web.chat.website", lex.PARSE, dir, arg)).RenderResult() } func RenderCmd(m *ice.Message, index string, args ...ice.Any) { + if index == "" { + return + } list := index if index != "" { msg := m.Cmd(ctx.COMMAND, index) diff --git a/base/web/share.go b/base/web/share.go index c1fd1e9b..1644c2df 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -60,7 +60,7 @@ func _share_local(m *ice.Message, arg ...string) { return // 没有权限 } default: - if !aaa.Right(m, ls) { + if !aaa.Right(m, ls) && m.Option(ice.POD) == "" { m.Render(STATUS, http.StatusUnauthorized, ice.ErrNotRight) return // 没有权限 } diff --git a/core/chat/chat.shy b/core/chat/chat.shy index 07800f8b..2b401695 100644 --- a/core/chat/chat.shy +++ b/core/chat/chat.shy @@ -12,25 +12,23 @@ footer.go template.go section "集群" +sso.go pod.go cmd.go website.go div.go -sso.go oauth section "应用" -keyboard.go iframe.go paste.go -media.go files.go trans.go +media.go scan.go -scan.js -location.go -location.shy -topic.go meet.go room.go - +topic.go +keyboard.go +location.go +location.shy diff --git a/core/chat/cmd.go b/core/chat/cmd.go index a0c2d31b..654864ba 100644 --- a/core/chat/cmd.go +++ b/core/chat/cmd.go @@ -26,13 +26,7 @@ func _cmd_file(m *ice.Message, arg ...string) bool { web.RenderCmd(m, "web.wiki.word", p) case nfs.IML: - if m.Option(ice.MSG_USERPOD) == "" { - m.RenderRedirect(path.Join(CHAT_WEBSITE, strings.TrimPrefix(p, SRC_WEBSITE))) - m.Option(ice.MSG_ARGS, m.Option(ice.MSG_ARGS)) - } else { - m.RenderRedirect(path.Join("/chat/pod", m.Option(ice.MSG_USERPOD), "website", strings.TrimPrefix(p, SRC_WEBSITE))) - m.Option(ice.MSG_ARGS, m.Option(ice.MSG_ARGS)) - } + m.RenderRedirect(web.MergePodWebSite(m, "", strings.TrimPrefix(p, SRC_WEBSITE))) case nfs.ZML: web.RenderCmd(m, "can.parse", m.Cmdx(nfs.CAT, p)) @@ -56,7 +50,6 @@ func init() { CMD: {Name: "cmd path auto upload up home", Help: "命令", Actions: ice.MergeActions(ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, CMD) - m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SHY, mdb.NAME, "web.wiki.word") m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.SVG, mdb.NAME, "web.wiki.draw") m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.CSV, mdb.NAME, "web.wiki.data") m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, nfs.JSON, mdb.NAME, "web.wiki.json") @@ -64,14 +57,15 @@ func init() { m.Cmdy(CMD, mdb.CREATE, mdb.TYPE, k, mdb.NAME, "web.code.inner") } }}, - }, mdb.HashAction(mdb.SHORT, "type", nfs.PATH, nfs.PWD), ctx.CmdAction(), web.ApiAction()), Hand: func(m *ice.Message, arg ...string) { + }, mdb.HashAction(mdb.SHORT, mdb.TYPE, nfs.PATH, nfs.PWD), ctx.CmdAction(), web.ApiAction()), Hand: func(m *ice.Message, arg ...string) { if _cmd_file(m, arg...) { return } - if ctx.PodCmd(m, ctx.COMMAND, arg[0]) && !m.IsErr() { - web.RenderCmd(m, arg[0], arg[1:]) // 远程命令 - } else if m.Cmdy(ctx.COMMAND, arg[0]); m.Length() > 0 { - web.RenderCmd(m, arg[0], arg[1:]) // 本地命令 + if len(arg[0]) == 0 || arg[0] == "" { + return + } + if m.Cmdy(ctx.COMMAND, arg[0]); m.Length() > 0 { + web.RenderCmd(m, arg[0], arg[1:]) } }}, }) diff --git a/core/chat/files.go b/core/chat/files.go index 49a480b3..46172217 100644 --- a/core/chat/files.go +++ b/core/chat/files.go @@ -2,6 +2,7 @@ package chat import ( ice "shylinux.com/x/icebergs" + "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/web" @@ -23,7 +24,8 @@ func init() { if m.PushDownload(mdb.LINK, value[mdb.NAME], link); len(arg) > 0 && kit.ExtIsImage(value[mdb.NAME]) { m.PushImages("image", link) } - }) + m.PushQRCode(cli.QRCODE, web.MergeURL2(m, link)) + }).PushAction(mdb.REMOVE) }}, }) } diff --git a/core/chat/iframe.go b/core/chat/iframe.go index 3cb6ff7a..3a5d0f20 100644 --- a/core/chat/iframe.go +++ b/core/chat/iframe.go @@ -22,8 +22,7 @@ func init() { if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" { m.Action(mdb.CREATE, mdb.PRUNES) } else { - m.StatusTime(mdb.LINK, m.Append(mdb.LINK)) - m.Action(cli.OPEN) + m.Action(cli.OPEN).StatusTime(mdb.LINK, m.Append(mdb.LINK)) ctx.DisplayLocal(m, "") } }}, diff --git a/core/chat/media.go b/core/chat/media.go index 03468570..b6896bdd 100644 --- a/core/chat/media.go +++ b/core/chat/media.go @@ -11,8 +11,9 @@ import ( kit "shylinux.com/x/toolkits" ) +const MEDIA = "media" + func init() { - const MEDIA = "media" Index.MergeCommands(ice.Commands{ MEDIA: {Name: "media path auto", Help: "媒体", Actions: ice.MergeActions(ice.Actions{ web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) { diff --git a/core/chat/paste.go b/core/chat/paste.go index f58ef179..b811753f 100644 --- a/core/chat/paste.go +++ b/core/chat/paste.go @@ -20,6 +20,7 @@ func init() { if mdb.HashSelect(m, arg...); len(arg) > 0 { m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT)) m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT)) + m.PushAction(mdb.REMOVE) } }}, }) diff --git a/core/chat/pod.go b/core/chat/pod.go index 7f891212..2bf38582 100644 --- a/core/chat/pod.go +++ b/core/chat/pod.go @@ -39,15 +39,11 @@ func init() { web.RenderIndex(m, ice.VOLCANOS) // 节点首页 } + } else if arg[1] == CMD { + m.Cmdy(web.SPACE, arg[0], m.Prefix(CMD), path.Join(arg[2:]...)) // 节点命令 + } else if arg[1] == WEBSITE { web.RenderWebsite(m, arg[0], path.Join(arg[2:]...)) // 节点网页 - - } else if arg[1] == CMD { - m.Option(ice.POD, "") - m.Cmdy(web.SPACE, arg[0], m.Prefix(CMD), path.Join(arg[2:]...)) // 节点命令 - } else { - m.Cmdy(web.SPACE, m.Option(ice.MSG_USERPOD), "web.chat."+strings.TrimPrefix(path.Join(arg[1:]...), "chat/")) - // m.Cmdy(web.SPACE, m.Option(ice.MSG_USERPOD), "web.chat."+ice.PS+path.Join(arg[1:]...)) } }}, }) diff --git a/core/chat/scan.go b/core/chat/scan.go index c7bd5deb..142d0000 100644 --- a/core/chat/scan.go +++ b/core/chat/scan.go @@ -22,6 +22,7 @@ func init() { } m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT)) m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT)) + m.PushAction(mdb.REMOVE) } }}, }) diff --git a/core/chat/scan.js b/core/chat/scan.js deleted file mode 100644 index 0ed92dc5..00000000 --- a/core/chat/scan.js +++ /dev/null @@ -1,15 +0,0 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { - can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) - can.onappend.table(can, msg) - can.onappend.board(can, msg) - }, -}) -Volcanos(chat.ONACTION, {help: "控件交互", - scanQRCode0: function(event, can) { can.user.agent.scanQRCode() }, - scanQRCode: function(event, can, button) { can.user.agent.scanQRCode(function(text, data) { - can.runAction(can.request(event, data), data.action||button, [], function(msg) { - can.user.toastSuccess(can, text), can.Update() - }, true) - }, can) }, -}) - diff --git a/core/chat/sso.go b/core/chat/sso.go index 93f26485..e70864ce 100644 --- a/core/chat/sso.go +++ b/core/chat/sso.go @@ -13,7 +13,7 @@ const SSO = "sso" func init() { Index.MergeCommands(ice.Commands{ - "/sso": {Name: "/sso", Help: "登录", Actions: ice.Actions{ + web.P(SSO): {Name: "/sso", Help: "登录", Actions: ice.Actions{ ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { m.Cmd(aaa.ROLE, aaa.WHITE, aaa.VOID, SSO) }}, }, Hand: func(m *ice.Message, arg ...string) { if m.Option(ice.MSG_USERNAME) == "" { @@ -23,8 +23,8 @@ func init() { if m.Warn(m.Option(cli.BACK) == "") { return } - args := []string{aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK)} - sessid := aaa.UserRoot(m).Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, args) + sessid := aaa.UserRoot(m).Cmdx(web.SPACE, m.Option(web.SPACE), aaa.SESS, mdb.CREATE, aaa.USERNAME, m.Option(ice.MSG_USERNAME), + aaa.USERROLE, m.Option(ice.MSG_USERROLE), aaa.USERNICK, m.Option(ice.MSG_USERNICK)) m.RenderRedirect(kit.MergeURL(m.Option(cli.BACK), ice.MSG_SESSID, sessid)) }}, }) diff --git a/option.go b/option.go index a53e015e..4ffae62d 100644 --- a/option.go +++ b/option.go @@ -115,8 +115,8 @@ func (m *Message) ProcessHistory(arg ...Any) { func (m *Message) ProcessConfirm(arg ...Any) { m.Process(PROCESS_CONFIRM, arg...) } -func (m *Message) ProcessRefresh(delay string) { - if d, e := time.ParseDuration(delay); e == nil { +func (m *Message) ProcessRefresh(arg ...string) { // delay + if d, e := time.ParseDuration(kit.Select("300ms", arg, 0)); e == nil { m.Option("_delay", int(d/time.Millisecond)) } m.Process(PROCESS_REFRESH)