From adbf04964e885171f862cdcd0c234f7aa72349bc Mon Sep 17 00:00:00 2001 From: shy Date: Fri, 27 Oct 2023 00:19:06 +0800 Subject: [PATCH] add some --- base/mdb/hash.go | 2 +- base/nfs/cat.go | 11 ++++++----- base/nfs/dir.go | 2 +- base/web/cache.go | 22 ++++++++++++++++------ base/web/share.go | 15 ++++++++++++--- core/chat/macos/desktop.js | 2 +- core/chat/macos/notifications.js | 2 +- core/mall/goods.go | 21 ++++++++++++++++++++- 8 files changed, 58 insertions(+), 19 deletions(-) diff --git a/base/mdb/hash.go b/base/mdb/hash.go index 8c098510..6e65d231 100644 --- a/base/mdb/hash.go +++ b/base/mdb/hash.go @@ -248,7 +248,7 @@ func HashSelectValue(m *ice.Message, cb Any) *ice.Message { } func HashSelectUpdate(m *ice.Message, key string, cb Any) *ice.Message { defer Lock(m, m.PrefixKey())() - Richs(m, m.PrefixKey(), nil, key, func(key string, value Map) { _mdb_select(m, cb, key, value, nil, nil) }) + Richs(m, m.PrefixKey(), nil, kit.Select(FOREACH, key), func(key string, value Map) { _mdb_select(m, cb, key, value, nil, nil) }) return m } func HashSelectDetail(m *ice.Message, key string, cb Any) (has bool) { diff --git a/base/nfs/cat.go b/base/nfs/cat.go index 0a4cba1f..8a81f2a9 100644 --- a/base/nfs/cat.go +++ b/base/nfs/cat.go @@ -101,11 +101,12 @@ const ( IMAGE = "image" - PNG = "png" - JPG = "jpg" - MP4 = "mp4" - MOV = "mov" - PDF = "pdf" + PNG = "png" + JPEG = "jpeg" + JPG = "jpg" + MP4 = "mp4" + MOV = "mov" + PDF = "pdf" DF = ice.DF PS = ice.PS diff --git a/base/nfs/dir.go b/base/nfs/dir.go index ba1e5a28..c921c74e 100644 --- a/base/nfs/dir.go +++ b/base/nfs/dir.go @@ -261,7 +261,7 @@ func Show(m *ice.Message, file string) bool { p += "?" + kit.JoinKV("=", "&", ice.POD, pod) }) switch strings.ToLower(kit.Ext(file)) { - case PNG, JPG: + case PNG, JPG, JPEG: m.EchoImages(p) case MP4, MOV: m.EchoVideos(p) diff --git a/base/web/cache.go b/base/web/cache.go index 65ba6ff8..36cc43bd 100644 --- a/base/web/cache.go +++ b/base/web/cache.go @@ -115,13 +115,13 @@ func init() { ice.RENDER_DOWNLOAD: {Hand: func(m *ice.Message, arg ...string) { m.Echo(_share_link(m, kit.Select(arg[0], arg, 1), ice.POD, m.Option(ice.MSG_USERPOD), nfs.FILENAME, kit.Select("", arg[0], len(arg) > 1))) }}, - WATCH: {Name: "watch hash* path*", Hand: func(m *ice.Message, arg ...string) { + WATCH: {Name: "watch hash* path*", Help: "导出", Hand: func(m *ice.Message, arg ...string) { _cache_watch(m, m.Option(mdb.HASH), m.Option(nfs.PATH)) }}, - WRITE: {Name: "write type name* text*", Hand: func(m *ice.Message, arg ...string) { + WRITE: {Name: "write type name* text*", Help: "添加", Hand: func(m *ice.Message, arg ...string) { _cache_save(m, m.Option(mdb.TYPE), m.Option(mdb.NAME), m.Option(mdb.TEXT)) }}, - CATCH: {Name: "catch path* type", Hand: func(m *ice.Message, arg ...string) { + CATCH: {Name: "catch path* type", Help: "导入", Hand: func(m *ice.Message, arg ...string) { file, size := _cache_catch(m, m.Option(nfs.PATH)) _cache_save(m, m.Option(mdb.TYPE), m.Option(nfs.PATH), "", file, size) }}, @@ -131,14 +131,24 @@ func init() { }}, DOWNLOAD: {Name: "download type name*", Hand: func(m *ice.Message, arg ...string) { if res, ok := m.Optionv(RESPONSE).(*http.Response); !m.Warn(!ok, ice.ErrNotValid, RESPONSE) { - file, size := _cache_catch(m, _cache_download(m, res, path.Join(ice.VAR_TMP, kit.Hashs(mdb.UNIQ)), m.OptionCB(""))) + p := path.Join(ice.VAR_TMP, kit.Hashs(mdb.UNIQ)) + defer os.Remove(p) + file, size := _cache_catch(m, _cache_download(m, res, p, m.OptionCB(""))) _cache_save(m, m.Option(mdb.TYPE), m.Option(mdb.NAME), "", file, size) } }}, nfs.PS: {Hand: func(m *ice.Message, arg ...string) { - mdb.HashSelectDetail(m, arg[0], func(value ice.Map) { + if mdb.HashSelectDetail(m, arg[0], func(value ice.Map) { kit.If(kit.Format(value[nfs.FILE]), func() { m.RenderDownload(value[nfs.FILE]) }, func() { m.RenderResult(value[mdb.TEXT]) }) - }) + }) { + return + } + if pod := m.Option(ice.POD); pod != "" { + msg := m.Options(ice.POD, "").Cmd(SPACE, pod, CACHE, arg[0]) + kit.If(kit.Format(msg.Append(nfs.FILE)), func() { + m.RenderDownload(path.Join(ice.USR_LOCAL_WORK, pod, msg.Append(nfs.FILE))) + }, func() { m.RenderResult(msg.Append(mdb.TEXT)) }) + } }}, }, mdb.HashAction(mdb.SHORT, mdb.TEXT, mdb.FIELD, "time,hash,size,type,name,text,file", ctx.ACTION, WATCH), ice.RenderAction(ice.RENDER_DOWNLOAD)), Hand: func(m *ice.Message, arg ...string) { if mdb.HashSelect(m, arg...); len(arg) == 0 || m.R != nil && m.R.Method == http.MethodGet { diff --git a/base/web/share.go b/base/web/share.go index e94f0146..7e48fea1 100644 --- a/base/web/share.go +++ b/base/web/share.go @@ -23,10 +23,19 @@ func _share_link(m *ice.Message, p string, arg ...ice.Any) string { return tcp.PublishLocalhost(m, MergeLink(m, kit.Select("", PP(SHARE, LOCAL), !strings.HasPrefix(p, nfs.PS) && !strings.HasPrefix(p, HTTP))+p, arg...)) } func _share_cache(m *ice.Message, arg ...string) { - if m.Cmdy(CACHE, arg[0]); m.Append(nfs.FILE) == "" { - m.RenderResult(m.Append(mdb.TEXT)) - } else { + if m.Cmdy(CACHE, arg[0]); m.Length() == 0 { + if pod := m.Option(ice.POD); pod != "" { + msg := m.Options(ice.POD, "").Cmd(SPACE, pod, CACHE, arg[0]) + kit.If(kit.Format(msg.Append(nfs.FILE)), func() { + m.RenderDownload(path.Join(ice.USR_LOCAL_WORK, pod, msg.Append(nfs.FILE))) + }, func() { + m.RenderResult(msg.Append(mdb.TEXT)) + }) + } + } else if m.Append(nfs.FILE) != "" { m.RenderDownload(m.Append(nfs.FILE), m.Append(mdb.TYPE), m.Append(mdb.NAME)) + } else { + m.RenderResult(m.Append(mdb.TEXT)) } } func _share_proxy(m *ice.Message) { diff --git a/core/chat/macos/desktop.js b/core/chat/macos/desktop.js index ca91df69..97907a8a 100644 --- a/core/chat/macos/desktop.js +++ b/core/chat/macos/desktop.js @@ -29,7 +29,7 @@ Volcanos(chat.ONIMPORT, { sub.onaction._close = function() { can.onmotion.hidden(can, sub._target) }, can.onmotion.hidden(can, sub._target) sub.onexport.record = function(sub, value, key, item) { can.onimport._window(can, item) } }) }, - _searchs: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.searchs"}, function(sub) { can.ui.searchs = sub + _searchs: function(can) { can.onappend.plugin(can, {index: "web.chat.macos.searchs"}, function(sub) { can.ui.searchs = sub, can.onmotion.hidden(can, sub._target) can.page.style(can, sub._target, html.LEFT, can.ConfWidth()/4, html.TOP, can.ConfHeight()/4), sub.onimport.size(sub, can.ConfHeight()/2, can.ConfWidth()/2, true) sub.onaction._close = function() { can.onmotion.hidden(can, sub._target) }, can.onmotion.hidden(can, sub._target) sub.onexport.record = function(sub, value, key, item, event) { switch (item.type) { diff --git a/core/chat/macos/notifications.js b/core/chat/macos/notifications.js index 2df50f59..035681f5 100644 --- a/core/chat/macos/notifications.js +++ b/core/chat/macos/notifications.js @@ -6,7 +6,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { target.onclick = function(event) { can.sup.onexport.record(can.sup, item.index, ctx.INDEX, item) can.runAction(can.request(event, item), "read", [], function() { can.onappend.style(can, "read", target) }) } - }} })), msg.Length() == 0 && can.onmotion.hidden(can, can._fields), can.onappend._action(can), can.page.style(can, can._action, html.DISPLAY, html.BLOCK) + }} })), can.onmotion.hidden(can, can._fields), can.onappend._action(can), can.page.style(can, can._action, html.DISPLAY, html.BLOCK) }}) Volcanos(chat.ONACTION, { list: [web.REFRESH, mdb.PRUNES, html.TOGGLE], _trans: {refresh: "刷新", toggle: "隐藏"}, diff --git a/core/mall/goods.go b/core/mall/goods.go index 9bd193ad..ba3dde76 100644 --- a/core/mall/goods.go +++ b/core/mall/goods.go @@ -1,6 +1,8 @@ package mall import ( + "path" + ice "shylinux.com/x/icebergs" "shylinux.com/x/icebergs/base/ctx" "shylinux.com/x/icebergs/base/mdb" @@ -17,9 +19,26 @@ const GOODS = "goods" func init() { Index.MergeCommands(ice.Commands{ - GOODS: {Name: "goods list", Icon: "mall.png", Help: "商品", Meta: kit.Dict( + GOODS: {Name: "goods list what", Icon: "mall.png", Help: "商品", Meta: kit.Dict( ctx.TRANS, kit.Dict(html.INPUT, kit.Dict(mdb.TYPE, "单位", PRICE, "价格", AMOUNT, "总价")), ), Actions: ice.MergeActions(ice.Actions{ + ice.CTX_EXIT: {Hand: func(m *ice.Message, arg ...string) { + mdb.HashSelect(m.Spawn(kit.Dict(ice.MSG_FIELDS, nfs.IMAGE))).Table(func(value ice.Maps) { + kit.For(kit.Split(value[nfs.IMAGE]), func(h string) { + msg := m.Cmd(web.CACHE, h) + m.Cmd(nfs.LINK, kit.Keys(path.Join(ice.USR_LOCAL_EXPORT, m.PrefixKey(), nfs.IMAGE, h), kit.Select("", kit.Split(msg.Append(mdb.TYPE), nfs.PS), -1)), msg.Append(nfs.FILE)) + }) + }) + }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { + list := map[string]string{} + m.Cmd(nfs.DIR, path.Join(ice.USR_LOCAL_EXPORT, m.PrefixKey(), nfs.IMAGE), func(value ice.Maps) { + list[kit.TrimExt(value[nfs.PATH])] = m.Cmd(web.CACHE, web.CATCH, value[nfs.PATH]).Append(mdb.HASH) + }) + mdb.HashSelectUpdate(m, "", func(value ice.Map) { + value[nfs.IMAGE] = kit.Join(kit.Simple(kit.For(kit.Split(kit.Format(value[nfs.IMAGE])), func(p string) string { return kit.Select(p, list[p]) }))) + }) + }}, mdb.CREATE: {Name: "create zone* name* text price* count*=1 type*=件,个,份,斤 image*=4@img"}, mdb.MODIFY: {Name: "modify zone* name* text price* count*=1 type*=件,个,份,斤 image*=4@img"}, nfs.IMAGE: {Name: "image image*=4@img", Help: "图片", Hand: func(m *ice.Message, arg ...string) { mdb.HashModify(m, arg) }},