From c2c18610de042c7b05481e8775b1e9902a94665a Mon Sep 17 00:00:00 2001 From: shy Date: Sat, 7 Jun 2025 14:27:20 +0800 Subject: [PATCH] add some --- base/web/html/html.go | 1 + base/web/render.go | 3 +- base/web/store.css | 2 +- core/chat/pod.go | 4 +- core/code/go.go | 32 ++++----- core/code/js.go | 14 ++-- core/wiki/portal.css | 148 +++++++++++++++++++++--------------------- core/wiki/portal.go | 2 +- core/wiki/portal.js | 2 +- info.go | 4 +- misc/wx/access.go | 2 +- misc/wx/agent.js | 15 +++-- misc/wx/menu.go | 19 +++--- misc/wx/template.go | 4 +- misc/wx/wx.shy | 1 + 15 files changed, 134 insertions(+), 119 deletions(-) diff --git a/base/web/html/html.go b/base/web/html/html.go index cd8a8d7a..dae72278 100644 --- a/base/web/html/html.go +++ b/base/web/html/html.go @@ -85,6 +85,7 @@ const ( CONTENT = "content" PROFILE = "profile" DISPLAY = "display" + PORTAL = "portal" VIEW = "view" VALUE = "value" diff --git a/base/web/render.go b/base/web/render.go index b63d9bb5..ece71876 100644 --- a/base/web/render.go +++ b/base/web/render.go @@ -84,9 +84,10 @@ func Render(m *ice.Message, cmd string, args ...ice.Any) bool { "$output", fieldset+">div.output", "$status", fieldset+">div.status", "$fieldset", fieldset, + "$field", fieldset, + "$input", "body>div.input.float."+m.Option(ctx.INDEX), "$body", "body.cmd."+m.Option(ctx.INDEX), "$index", m.Option(ctx.INDEX), - "$input", "body>div.input.float."+m.Option(ctx.INDEX), ))) break } diff --git a/base/web/store.css b/base/web/store.css index 1a23314f..e315593c 100644 --- a/base/web/store.css +++ b/base/web/store.css @@ -1,6 +1,6 @@ $project div.list { margin-left:25px; } $project div.item span.exists { color:var(--notice-bg-color); padding:0 var(--input-padding); } -$content>div.item { box-shadow:var(--th-box-shadow); border:var(--plugin-border); border-radius:var(--plugin-radius); } +$content>div.item { border:var(--plugin-border); border-radius:var(--plugin-radius); } $content>div.item:hover { box-shadow:var(--notice-box-shadow); } $content>div.item div.title div.label { font-size:var(--status-font-size); font-weight:normal; margin-top:var(--input-margin); } $content>div.item div.title div.label span { padding:var(--input-padding); padding-right:var(--input-margin); } diff --git a/core/chat/pod.go b/core/chat/pod.go index d424434c..f7101e1f 100644 --- a/core/chat/pod.go +++ b/core/chat/pod.go @@ -22,8 +22,8 @@ func init() { template := func(script string) string { return kit.Format(``, script) } if m.Option("code") == "" && m.Option("state") == "" { if msg := m.Cmd(web.SPACE, "20240724-community", "web.chat.wx.agent"); msg.Option("oauth") != "" { - m.RenderResult(kit.Format(template(`document.cookie = "goback=%s;path=/"; location.href = "%s"`), - m.R.URL.String(), msg.Option("oauth"))) + m.RenderResult(kit.Format(template(`document.cookie = "goback="+location.href+";path=/"; location.href = "%s"`), + msg.Option("oauth"))) return } } else { diff --git a/core/code/go.go b/core/code/go.go index 18aa5626..cc547c51 100644 --- a/core/code/go.go +++ b/core/code/go.go @@ -70,27 +70,27 @@ func _go_show(m *ice.Message, arg ...string) { ctx.ProcessField(m, nfs.PACK, kit.Simple()) } else if path.Base(arg[1]) == "model.go" { ctx.ProcessField(m, "web.code.mysql.query", kit.Simple("mysql", kit.Split(arg[1], "/", "/")[0])) - } else if path.Base(arg[1]) == "common.go" { - // ctx.ProcessField(m, "web.code.xterm", kit.Simple()) - ctx.ProcessField(m, "log.debug", kit.Simple("bench")) } else if cmd := ctx.GetFileCmd(path.Join(arg[2], arg[1])); cmd != "" { - if p := path.Join(arg[2], strings.Split(arg[1], "/")[0], "portal.go"); path.Base(arg[1]) != "portal.go" && - !kit.IsIn(arg[1], - "gonganxitong/user.go", - "gonganxitong/sess.go", - "gonganxitong/grant.go", - "gonganxitong/domain.go", - "gonganxitong/command.go", - "gonganxitong/quotalist.go", - ) && nfs.Exists(m, p) && !kit.IsIn(path.Base(arg[1]), "studio.go") { - if cmd := ctx.GetFileCmd(p); cmd != "" { + if p := path.Join(arg[2], strings.Split(arg[1], "/")[0], "portal.go"); path.Base(arg[1]) != "portal.go" && nfs.Exists(m, p) { + if _cmd := ctx.GetFileCmd(p); _cmd != "" { if m.ActionKey() == mdb.RENDER { - ctx.ProcessField(m, cmd, kit.Simple()) + if path.Base(arg[1]) == "common.go" { + ctx.ProcessField(m, strings.ReplaceAll(_cmd, ".portal", ".clean"), kit.Simple()) + return + } + if msg := m.Cmd(_cmd, "commandSelect", cmd); msg.Length() > 0 { + ctx.ProcessField(m, _cmd, kit.Simple()) + return + } } else { ls := kit.Split(strings.TrimSuffix(arg[1], ".go"), "/") - ctx.ProcessField(m, "web.code.mysql.query", kit.Simple("mysql", ls[0], TableName(kit.Select("", ls, -1)))) + if path.Base(arg[1]) == "common.go" { + ctx.ProcessField(m, "web.code.mysql.query", kit.Simple("mysql", ls[0])) + } else { + ctx.ProcessField(m, "web.code.mysql.query", kit.Simple("mysql", ls[0], TableName(kit.Select("", ls, -1)))) + } + return } - return } } ctx.ProcessField(m, cmd, kit.Simple()) diff --git a/core/code/js.go b/core/code/js.go index 17059cb8..3164b0df 100644 --- a/core/code/js.go +++ b/core/code/js.go @@ -21,13 +21,13 @@ func _js_show(m *ice.Message, arg ...string) { } else if strings.HasPrefix(arg[1], "plugin/local/") { ctx.ProcessField(m, kit.Select(ice.CAN_PLUGIN, "web."+strings.Replace(strings.TrimSuffix(strings.TrimPrefix(arg[1], "plugin/local/"), nfs.PT+JS), nfs.PS, nfs.PT, -1)), nil) } - } else { - if p := path.Join(arg[2], strings.Split(arg[1], "/")[0], "portal.go"); !kit.IsIn(arg[1], - "operation/studio.js", - ) && nfs.Exists(m, p) { - if cmd := ctx.GetFileCmd(p); cmd != "" { - ctx.ProcessField(m, cmd, kit.Simple()) - return + } else if cmd := ctx.GetFileCmd(path.Join(arg[2], arg[1])); cmd != "" { + if p := path.Join(arg[2], strings.Split(arg[1], "/")[0], "portal.go"); nfs.Exists(m, p) { + if _cmd := ctx.GetFileCmd(p); _cmd != "" { + if msg := m.Cmd(_cmd, "commandSelect", cmd); msg.Length() > 0 { + ctx.ProcessField(m, _cmd, kit.Simple()) + return + } } } ctx.DisplayBase(m, require(arg[2], arg[1])) diff --git a/core/wiki/portal.css b/core/wiki/portal.css index 0f965ea1..b3c84085 100644 --- a/core/wiki/portal.css +++ b/core/wiki/portal.css @@ -1,74 +1,76 @@ -fieldset.web.wiki.portal { --portal-max-width:1200px; --portal-header-height:64px; --portal-main-padding:40px; --plugin-radius:10px; } -fieldset.web.wiki.portal.home { --portal-max-width:1500px; } -fieldset.web.wiki.portal>div.header { display:none; } -fieldset.web.wiki.portal>div.output { padding:0; } -fieldset.web.wiki.portal>div.output>div.header { background-color:var(--panel-bg-color); height:var(--portal-header-height); --hover-bg-color:var(--plugin-bg-color); } -fieldset.web.wiki.portal>div.output>div.header div.list { display:flex; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] { --hover-fg-color:white; } -fieldset.web.wiki.portal>div.output>div.header div.story div.item span { white-space:pre; overflow:hidden; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] { display:flex; justify-content:center; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item { text-align:center; padding:var(--legend-padding); height:var(--portal-header-height); } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item { display:flex; align-items:center; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:first-child { padding:var(--input-padding); } -body.mobile fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:first-child span { display:none; font-size:18px; max-width:160px; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:first-child { line-height:calc(var(--portal-header-height) - 2 * var(--legend-padding)); font-size:24px; font-weight:bold; } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:first-child img { margin-right:var(--button-margin); } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item.select { background-color:var(--output-bg-color); } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:hover { background-color:var(--output-bg-color); } -fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item.space { padding:0px; margin:0 var(--portal-main-padding); } -fieldset.web.wiki.portal>div.output>div.layout { display:flex; justify-content:center; } -fieldset.web.wiki.portal>div.output>div.layout table.story.content { background-color:var(--output-bg-color); } -fieldset.web.wiki.portal>div.output>div.layout table.story.content th { text-align:left; padding:var(--table-padding); } -fieldset.web.wiki.portal>div.output>div.layout>div.nav { border-right:var(--box-border); padding:var(--portal-main-padding); padding-right:var(--button-padding); min-width:var(--project-width); overflow:auto; } -fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.item { padding:var(--input-padding); } -fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.item.select { border-right:var(--box-notice); } -fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu]>div.item { border-bottom:var(--box-border); margin-top:var(--button-margin); } -fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.list { padding-left:var(--legend-padding); } -fieldset.web.wiki.portal>div.output>div.layout>div.aside { padding:var(--portal-main-padding); padding-left:var(--button-padding); min-width:var(--project-width); overflow:auto; } -fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item { padding:var(--input-padding); } -fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item.select { border-left:var(--box-notice); } -fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item.section { padding-left:var(--legend-padding); } -fieldset.web.wiki.portal>div.output>div.layout>div.main { padding:var(--portal-main-padding); height:600px; min-width:390px; max-width:var(--portal-max-width); overflow:auto; overflow-x:hidden; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column { display:flex; flex-direction:column; justify-content:center; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column fieldset.inner>div.output>div.layout>div.layout div.content div.tips { top:5px; right:10px; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column h1 { font-size:24px; font-style:italic; margin-top:0; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column h2 { font-size:18px; } -body:not(.mobile) fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column h1 { font-size:32px; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column h2 { margin:0 !important; } -fieldset.web.wiki.portal>div.output>div.layout>div.main img[data-name="qrcode"] { margin-top:20px; width:240px !important; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column li { margin:10px 0; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column ul { margin:10px; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column b { font-size:22px; } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column input[type=button] { box-shadow:var(--th-box-shadow); border:0; background-color:var(--notice-bg-color); color:var(--notice-fg-color); } -fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column input[type=button]:hover { box-shadow:var(--notice-box-shadow); } -fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.desktop>legend { display:none; } -fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { padding:var(--input-padding) 0; } -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]: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] { 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; } +$fieldset { --portal-max-width:1200px; --portal-header-height:64px; --portal-main-padding:40px; --plugin-radius:10px; } +$fieldset.home { --portal-max-width:1500px; } +$fieldset>div.header { display:none; } +$output { padding:0; } +$output>div.header { background-color:var(--panel-bg-color); height:var(--portal-header-height); --hover-bg-color:var(--plugin-bg-color); } +$output>div.header div.list { display:flex; } +$output>div.header div.story[data-name=navmenu] { --hover-fg-color:white; } +$output>div.header div.story div.item span { white-space:pre; overflow:hidden; } +$output>div.header div.story[data-name=navmenu] { display:flex; justify-content:center; } +$output>div.header div.story[data-name=navmenu] div.item { text-align:center; padding:var(--legend-padding); height:var(--portal-header-height); } +$output>div.header div.story[data-name=navmenu] div.item { display:flex; align-items:center; } +$output>div.header div.story[data-name=navmenu] div.item:first-child { padding:var(--input-padding); } +$output>div.header div.story[data-name=navmenu] div.item:first-child { line-height:calc(var(--portal-header-height) - 2 * var(--legend-padding)); font-size:24px; font-weight:bold; } +$output>div.header div.story[data-name=navmenu] div.item:first-child img { margin-right:var(--button-margin); } +$output>div.header div.story[data-name=navmenu] div.item.select { background-color:var(--output-bg-color); } +$output>div.header div.story[data-name=navmenu] div.item:hover { background-color:var(--output-bg-color); } +// $output>div.header div.story[data-name=navmenu] div.item.space { padding:0px; margin:0 var(--portal-main-padding); } +$output>div.header div.story[data-name=navmenu] div.item.space { padding:0px; width:20px; } +$output>div.layout { display:flex; justify-content:center; } +$output>div.layout table.story.content { background-color:var(--output-bg-color); } +$output>div.layout table.story.content th { text-align:left; padding:var(--table-padding); } +$output>div.layout>div.nav { border-right:var(--box-border); padding:var(--portal-main-padding); padding-right:var(--button-padding); min-width:var(--project-width); overflow:auto; } +$output>div.layout>div.nav div.story[data-name=navmenu] div.item { padding:var(--input-padding); } +$output>div.layout>div.nav div.story[data-name=navmenu] div.item.select { border-right:var(--box-notice); } +$output>div.layout>div.nav div.story[data-name=navmenu]>div.item { border-bottom:var(--box-border); margin-top:var(--button-margin); } +$output>div.layout>div.nav div.story[data-name=navmenu] div.list { padding-left:var(--legend-padding); } +$output>div.layout>div.aside { padding:var(--portal-main-padding); padding-left:var(--button-padding); min-width:var(--project-width); overflow:auto; } +$output>div.layout>div.aside div.item { padding:var(--input-padding); } +$output>div.layout>div.aside div.item.select { border-left:var(--box-notice); } +$output>div.layout>div.aside div.item.section { padding-left:var(--legend-padding); } +$output>div.layout>div.main { padding:var(--portal-main-padding); height:600px; min-width:390px; max-width:var(--portal-max-width); overflow:auto; overflow-x:hidden; } +$output>div.layout>div.main div.story.column { display:flex; flex-direction:column; justify-content:center; } +$output>div.layout>div.main div.story.column fieldset.inner>div.output>div.layout>div.layout div.content div.tips { top:5px; right:10px; } +$output>div.layout>div.main div.story.column fieldset.inner { box-shadow:none; border:var(--box-border); border-radius:0; } +$output>div.layout>div.main div.story.column h1 { font-size:24px; font-style:italic; margin-top:0; } +$output>div.layout>div.main div.story.column h2 { margin:0 !important; } +$output>div.layout>div.main img[data-name="qrcode"] { margin-top:20px; width:240px !important; } +$output>div.layout>div.main div.story.column li { margin:10px 0; } +$output>div.layout>div.main div.story.column ul { margin:10px; } +$output>div.layout>div.main div.story.column b { font-size:22px; } +$output>div.layout>div.main div.story.column input[type=button] { box-shadow:var(--th-box-shadow); border:0; background-color:var(--notice-bg-color); color:var(--notice-fg-color); } +$output>div.layout>div.main div.story.column input[type=button]:hover { box-shadow:var(--notice-box-shadow); } +$output>div.layout>div.main fieldset.desktop>legend { display:none; } +$output>div.layout>div.main fieldset.inner.output div.content { padding:var(--input-padding) 0; } +$output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border:var(--box-border); border-left:var(--box-notice3); } +$output>div.layout>div.main div.story[data-type=spark][data-name=shell]:hover { box-shadow:var(--notice-box-shadow); } +$output>div.layout>div.main div.story[data-type=spark][data-name=shell] { padding:var(--button-padding); margin-top:var(--button-margin); } +$output>div.layout>div.main table.content div.story[data-type=spark][data-name=shell] { margin-top:unset; } +$fieldset.home>div.output>div.layout>div.main p { white-space:pre-wrap; } +$fieldset.home>div.output>div.layout>div.main p:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } div.story[data-type=qrcode] { text-align:center; } -fieldset.web.wiki.portal.home>div.output>div.layout>div.main p:hover { background-color:var(--hover-bg-color); color:var(--hover-fg-color); } -body.dark fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item:hover { background-color:var(--output-bg-color); } -body.dark fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item.select { background-color:var(--output-bg-color); } -body.dark fieldset.web.wiki.portal>div.output>div.layout { background-color:var(--plugin-bg-color); --code-bg-color:var(--output-bg-color); } -body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset:not(.macos) { border:var(--plugin-border); } -body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset { border-radius:0; } -body.dark fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border-left:var(--box-notice3); } -body.white fieldset.web.wiki.portal>div.output>div.header { color:silver; } -body.light fieldset.web.wiki.portal>div.output>div.header { color:white; } -body.light fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] { --hover-fg-color:black; } -body.mobile fieldset.web.wiki.portal { --portal-main-padding:5px; --legend-padding:10px; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout { display:block; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.nav { height:400px; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main { height:unset; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.column { padding:10px 0 !important; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset { width:fit-content; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset>div.action { display:none; } -body.mobile fieldset.web.wiki.portal.cmd>div.output>div.header div.story[data-name=navmenu] div.item { line-height:calc(var(--portal-header-height) - 2 * var(--legend-padding)); } -body.mobile fieldset.web.wiki.portal.home>div.output>div.layout>div.main p { white-space:normal; text-align:center; padding:var(--button-padding); } -body.mobile fieldset.web.wiki.portal.home>div.output>div.layout>div.main h2 { margin-top:40px; margin-bottom:0; } -body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main p { padding:var(--input-padding); margin:0; } -body.width2 fieldset.web.wiki.portal>div.output>div.layout>div.main>div.flex { flex-direction:column; } -body.web.wiki.portal fieldset.Action.home>div.toast { display:none; } +body:not(.mobile) $output>div.layout>div.main div.story.column h1 { font-size:32px; } +body.dark $output>div.header div.story[data-name=navmenu] div.item:hover { background-color:var(--output-bg-color); } +body.dark $output>div.header div.story[data-name=navmenu] div.item.select { background-color:var(--output-bg-color); } +body.dark $output>div.layout { background-color:var(--plugin-bg-color); --code-bg-color:var(--output-bg-color); } +body.dark $output>div.layout>div.main fieldset:not(.macos) { border:var(--plugin-border); } +body.dark $output>div.layout>div.main fieldset { border-radius:0; } +body.dark $output>div.layout>div.main div.story[data-type=spark][data-name=shell] { border-left:var(--box-notice3); } +body.white $output>div.header { color:silver; } +body.light $output>div.header { color:white; } +body.light $output>div.header div.story[data-name=navmenu] { --hover-fg-color:black; } +body.width1 $output>div.header div.story[data-name=navmenu] div.item:first-child span { display:none; font-size:18px; max-width:160px; } +body.width1 $output>div.layout { display:block; } +body.width1 $output>div.layout>div.nav { height:400px; } +body.width1 $output>div.layout>div.main { height:unset; } +body.width1 $output>div.layout>div.main div.story.column { padding:10px 0 !important; } +body.width1 $output>div.layout>div.main fieldset { width:fit-content; } +body.width1 $output>div.layout>div.main fieldset>div.action { display:none; } +body.width1 $output>div.layout>div.main div.story.column h2 { font-size:18px; } +body.width1 $fieldset { --portal-main-padding:5px; --legend-padding:10px; } +body.width1 $fieldset.cmd>div.output>div.header div.story[data-name=navmenu] div.item { line-height:calc(var(--portal-header-height) - 2 * var(--legend-padding)); } +body.width1 $fieldset.home>div.output>div.layout>div.main p { white-space:normal; text-align:center; padding:var(--button-padding); } +body.width1 $fieldset.home>div.output>div.layout>div.main h2 { margin-top:40px; margin-bottom:0; } +body.width1 $fieldset>div.output>div.layout>div.main p { padding:var(--input-padding); margin:0; } +body.width2 $fieldset>div.output>div.layout>div.main>div.flex { flex-direction:column; } +$body fieldset.Action.home>div.toast { display:none; } diff --git a/core/wiki/portal.go b/core/wiki/portal.go index b6b3eafc..2e6a555f 100644 --- a/core/wiki/portal.go +++ b/core/wiki/portal.go @@ -38,7 +38,7 @@ func init() { if m.Push(HEADER, m.Cmdx(WORD, _portal_path(m, INDEX_SHY))); len(arg) > 0 { m.Push(NAV, m.Cmdx(WORD, _portal_path(m, path.Join(arg...), INDEX_SHY))) } - m.Display("") + m.Display("").DisplayCSS("") }}, }) } diff --git a/core/wiki/portal.js b/core/wiki/portal.js index 244dde06..d416e16a 100644 --- a/core/wiki/portal.js +++ b/core/wiki/portal.js @@ -69,7 +69,7 @@ Volcanos(chat.ONIMPORT, { sub.onimport.size(sub, can.base.Min(html.FLOAT_HEIGHT, can.ConfHeight()/2, can.ConfHeight()), (can.ConfWidth()-2*padding), true) }) }, -}, [""]) +}) Volcanos(chat.ONACTION, { route: function(event, can, route, internal) { var link = can.base.trimPrefix(route||"", nfs.USR_LEARNING_PORTAL, nfs.SRC_DOCUMENT); if (!link || link == can.db.current) { return } diff --git a/info.go b/info.go index e9a21b81..6150f9b3 100644 --- a/info.go +++ b/info.go @@ -329,7 +329,9 @@ func (m *Message) FileURI(dir string) string { dir = strings.TrimPrefix(dir, ISH_PLUGED) } if strings.HasPrefix(dir, PS) { - + if !strings.Contains(dir, "pod=") { + dir = kit.MergeURL(dir, POD, m.Option(MSG_USERPOD)) + } } else if strings.HasPrefix(dir, USR_VOLCANOS) { dir = strings.TrimPrefix(dir, USR) } else { diff --git a/misc/wx/access.go b/misc/wx/access.go index d9571073..02b36fd3 100644 --- a/misc/wx/access.go +++ b/misc/wx/access.go @@ -159,7 +159,7 @@ func spideToken(m *ice.Message, api string, token, expire string, arg ...string) return } m.Info("res: %v", res.FormatMeta()) - mdb.HashModify(m, m.OptionSimple(ACCESS), expire, m.Time(kit.Format("%vs", res.Append(oauth.EXPIRES_IN))), token, res.Append(kit.Select(oauth.ACCESS_TOKEN, TICKET, api == TICKET_GETTICKET))) + mdb.HashModify(m, m.OptionSimple(ACCESS), expire, m.Time(kit.Format("%vs", kit.Int(res.Append(oauth.EXPIRES_IN))-1000)), token, res.Append(kit.Select(oauth.ACCESS_TOKEN, TICKET, api == TICKET_GETTICKET))) msg = mdb.HashSelect(m.Spawn(), m.Option(ACCESS)) } m.Echo(msg.Append(token)).Status(msg.AppendSimple(expire)) diff --git a/misc/wx/agent.js b/misc/wx/agent.js index dbb1ba96..d91e5653 100644 --- a/misc/wx/agent.js +++ b/misc/wx/agent.js @@ -28,13 +28,20 @@ Volcanos(chat.ONIMPORT, { can.base.isFunc(cb) && cb(can.base.ParseJSON(res.resultStr)) } }) }, }, function(key, value) { return can.user.agent[key] = value, key }).concat([ - "updateAppMessageShareData", "updateTimelineShareData", - ]), openTagList: ["wx-open-subscribe"], + "updateAppMessageShareData", + ], can.user.isMobile? ["updateTimelineShareData"]: []), openTagList: ["wx-open-subscribe"], + }) + wx.error(function (res) { + can.user.toastFailure(can, JSON.stringify(res)) }) wx.ready(function () { function share(title, icons, content, link) { - wx.updateAppMessageShareData({title: title, desc: content||can.user.info.titles, link: link||location.href, imgUrl: icons}) - wx.updateTimelineShareData({title: title, link: link||location.href, imgUrl: icons}) + wx.updateAppMessageShareData({title: title, desc: content||can.user.info.titles, link: link||location.href, imgUrl: icons, fail: function(res) { + can.user.toastFailure(can, JSON.stringify(res)) + }}) + can.user.isMobile && wx.updateTimelineShareData({title: title, link: link||location.href, imgUrl: icons, fail: function(res) { + can.user.toastFailure(can, JSON.stringify(res)) + }}) } var p = can.misc.Resource(can, can.user.info.favicon); can.base.beginWith(p, "/") && (p = location.origin + p) can.user.agent.init = function(can, content, icons, link) { if (!can) { return } diff --git a/misc/wx/menu.go b/misc/wx/menu.go index 98179e23..e49d4f87 100644 --- a/misc/wx/menu.go +++ b/misc/wx/menu.go @@ -1,6 +1,8 @@ package wx import ( + "strings" + ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" @@ -39,22 +41,23 @@ func init() { value[mdb.TEXT] = web.C(value[ctx.INDEX]) } } - value[mdb.TEXT] = m.MergeLink(value[mdb.TEXT]) + value[mdb.TEXT] = m.MergeLink(value[mdb.TEXT] + value[ctx.ARGS]) }) kit.Value(list, key, kit.Dict(mdb.TYPE, value[mdb.TYPE], mdb.NAME, value[mdb.NAME], mdb.KEY, value[mdb.HASH], web.URL, value[mdb.TEXT])) } }) - m.Echo(kit.Formats(SpidePost(m, MENU_CREATE, web.SPIDE_DATA, kit.Formats(list)))) + m.Echo(kit.Formats(SpidePost(m, MENU_CREATE, web.SPIDE_DATA, strings.ReplaceAll(kit.Format(list), "\\u0026", "&")))) m.ProcessHold() }}, + web.PREVIEW: {Hand: func(m *ice.Message, arg ...string) { + m.ProcessOpen(m.MergeLink(kit.Select(web.S(m.Option(web.SPACE))+web.C(m.Option(ctx.INDEX)), m.Option(mdb.TEXT)) + m.Option(ctx.ARGS))) + }}, }, mdb.ExportHashAction(mdb.SHORT, "scene,river,storm", mdb.FIELD, "time,hash,scene,river,storm,type,name,text,icons,space,index,args")), Hand: func(m *ice.Message, arg ...string) { - m.Option("cache.limit", "-1") if len(arg) == 0 { - m.Cmdy(ACCESS).PushAction("").Option(ice.MSG_ACTION, "") - if m.Length() == 0 { - m.SetResult() - } - } else if mdb.HashSelect(m, arg[1:]...).Sort(mdb.Config(m, mdb.SHORT), ice.STR, ice.INT, ice.INT); len(arg) == 1 { + m.Cmdy(ACCESS).PushAction("").Action() + kit.If(m.Length() == 0, func() { m.SetResult() }) + } else if mdb.HashSelect(m.Options("cache.limit", "-1"), arg[1:]...).Sort(mdb.Config(m, mdb.SHORT), ice.STR, ice.INT, ice.INT); len(arg) == 1 { + m.PushAction(web.PREVIEW, mdb.REMOVE) m.Action(mdb.CREATE, mdb.UPDATE) } }}, diff --git a/misc/wx/template.go b/misc/wx/template.go index 4985c25d..124ba581 100644 --- a/misc/wx/template.go +++ b/misc/wx/template.go @@ -14,9 +14,7 @@ func init() { m.Cmdy(ACCESS) } else if m.Option(ACCESS, arg[0]); len(arg) == 1 { res := SpideGet(m, "template/get_all_private_template") - kit.For(kit.Value(res, "template_list"), func(value ice.Map) { - m.Push("", value) - }) + kit.For(kit.Value(res, "template_list"), func(value ice.Map) { m.Push("", value) }) m.Cut("template_id,title,content,example") } else if len(arg) > 4 { args := []ice.Any{"template_id", arg[1], "touser", arg[2], "url", arg[3]} diff --git a/misc/wx/wx.shy b/misc/wx/wx.shy index 536dccde..9eb23127 100644 --- a/misc/wx/wx.shy +++ b/misc/wx/wx.shy @@ -12,3 +12,4 @@ field web.chat.wx.menu field web.chat.wx.scan field web.chat.wx.tags field web.chat.wx.users +field web.chat.wx.template