forked from x/icebergs
add chat/favor.go
This commit is contained in:
parent
5db51d4724
commit
8e8470d910
@ -123,17 +123,7 @@ func init() {
|
||||
})
|
||||
}
|
||||
|
||||
func CmdHandler(args ...ice.Any) ice.Handler {
|
||||
return func(m *ice.Message, arg ...string) { m.Cmdy(args...) }
|
||||
}
|
||||
func CmdAction(args ...ice.Any) ice.Actions {
|
||||
return ice.Actions{ice.CTX_INIT: mdb.AutoConfig(args...),
|
||||
COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
if !PodCmd(m, COMMAND, arg) {
|
||||
m.Cmdy(COMMAND, arg)
|
||||
}
|
||||
}},
|
||||
ice.RUN: {Name: "run", Help: "执行", Hand: func(m *ice.Message, arg ...string) {
|
||||
func Run(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 3 && arg[1] == ACTION && arg[2] == CONFIG {
|
||||
switch arg[3] {
|
||||
case "help":
|
||||
@ -158,7 +148,18 @@ func CmdAction(args ...ice.Any) ice.Actions {
|
||||
if !PodCmd(m, arg) && aaa.Right(m, arg) {
|
||||
m.Cmdy(arg)
|
||||
}
|
||||
}
|
||||
func CmdHandler(args ...ice.Any) ice.Handler {
|
||||
return func(m *ice.Message, arg ...string) { m.Cmdy(args...) }
|
||||
}
|
||||
func CmdAction(args ...ice.Any) ice.Actions {
|
||||
return ice.Actions{ice.CTX_INIT: mdb.AutoConfig(args...),
|
||||
COMMAND: {Name: "command", Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
if !PodCmd(m, COMMAND, arg) {
|
||||
m.Cmdy(COMMAND, arg)
|
||||
}
|
||||
}},
|
||||
ice.RUN: {Name: "run", Help: "执行", Hand: Run},
|
||||
}
|
||||
}
|
||||
func PodCmd(m *ice.Message, arg ...ice.Any) bool {
|
||||
|
@ -30,7 +30,8 @@ func Process(m *ice.Message, key string, args []string, arg ...string) {
|
||||
func ProcessField(m *ice.Message, cmd string, args []string, arg ...string) {
|
||||
cmd = kit.Select(m.PrefixKey(), cmd)
|
||||
if len(arg) == 0 || arg[0] != ice.RUN {
|
||||
if m.Cmdy(COMMAND, cmd).ProcessField(m.ActionKey(), ice.RUN); len(args) > 0 {
|
||||
m.Option("_index", m.PrefixKey())
|
||||
if m.Cmdy(COMMAND, cmd).ProcessField(ACTION, m.ActionKey(), ice.RUN); len(args) > 0 {
|
||||
m.Push(ARGS, kit.Format(args))
|
||||
}
|
||||
return
|
||||
@ -48,6 +49,9 @@ func ProcessFloat(m *ice.Message, arg ...string) {
|
||||
func ProcessHold(m *ice.Message, text ...ice.Any) {
|
||||
m.Process(ice.PROCESS_HOLD, text...)
|
||||
}
|
||||
func ProcessOpen(m *ice.Message, url string) {
|
||||
m.Process(ice.PROCESS_OPEN, url)
|
||||
}
|
||||
func ProcessRefresh(m *ice.Message, arg ...string) {
|
||||
m.ProcessRefresh(kit.Select("300ms", arg, 0))
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ func init() {
|
||||
mdb.ZoneInsert(m, m.OptionSimple(EVENT, ice.CMD))
|
||||
}},
|
||||
HAPPEN: {Name: "happen event arg", Help: "触发", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.ZoneSelect(m.Spawn(), m.Option(EVENT)).Tables(func(value ice.Maps) {
|
||||
mdb.ZoneSelect(m.Spawn(ice.OptionFields("")), m.Option(EVENT)).Tables(func(value ice.Maps) {
|
||||
m.Cmdy(kit.Split(value[ice.CMD]), m.Option(EVENT), arg[2:], ice.OptionFields("")).Cost()
|
||||
})
|
||||
}},
|
||||
@ -38,5 +38,5 @@ func Watch(m *ice.Message, key string, arg ...string) *ice.Message {
|
||||
return m.Cmd("gdb.event", LISTEN, EVENT, key, ice.CMD, kit.Join(arg, ice.SP))
|
||||
}
|
||||
func Event(m *ice.Message, key string, arg ...ice.Any) *ice.Message {
|
||||
return m.Cmdy("gdb.event", HAPPEN, EVENT, key, arg)
|
||||
return m.Cmdy("gdb.event", HAPPEN, EVENT, kit.Select(kit.Keys(m.CommandKey(), m.ActionKey()), key), arg)
|
||||
}
|
||||
|
@ -119,6 +119,7 @@ const (
|
||||
WRITE = "write"
|
||||
UPLOAD = "upload"
|
||||
DOWNLOAD = "download"
|
||||
DISPLAY = "display"
|
||||
|
||||
UPLOAD_WATCH = "upload_watch"
|
||||
)
|
||||
|
@ -12,19 +12,16 @@ import (
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/gdb"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/nfs"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
"shylinux.com/x/toolkits/file"
|
||||
)
|
||||
|
||||
func Upload(m *ice.Message) []string { // hash name size
|
||||
up := kit.Simple(m.Optionv(ice.MSG_UPLOAD))
|
||||
if len(up) < 2 {
|
||||
msg := m.Cmdy(CACHE, UPLOAD)
|
||||
up = kit.Simple(msg.Append(mdb.HASH), msg.Append(mdb.NAME), msg.Append(nfs.SIZE))
|
||||
func Upload(m *ice.Message) *ice.Message {
|
||||
if up := kit.Simple(m.Optionv(ice.MSG_UPLOAD)); len(up) < 2 {
|
||||
m.Cmdy(CACHE, UPLOAD)
|
||||
}
|
||||
return up
|
||||
return m
|
||||
}
|
||||
func PushNotice(m *ice.Message, arg ...ice.Any) {
|
||||
if m.Option(ice.MSG_DAEMON) == "" {
|
||||
|
@ -351,6 +351,9 @@ const (
|
||||
CLIENT_URL = "client.url"
|
||||
LOGHEADERS = "logheaders"
|
||||
|
||||
OPEN = "open"
|
||||
FULL = "full"
|
||||
LINK = "link"
|
||||
HTTP = "http"
|
||||
FORM = "form"
|
||||
ADDRESS = "address"
|
||||
|
1
conf.go
1
conf.go
@ -289,6 +289,7 @@ const ( // mdb
|
||||
MDB = "mdb"
|
||||
KEY = "key"
|
||||
VALUE = "value"
|
||||
FIELD = "field"
|
||||
EXTRA = "extra"
|
||||
SCRIPT = "script"
|
||||
META = "meta"
|
||||
|
@ -69,7 +69,7 @@ func _action_share(m *ice.Message, arg ...string) {
|
||||
}
|
||||
}
|
||||
func _action_upload(m *ice.Message) {
|
||||
msg := m.Cmd(web.CACHE, web.UPLOAD)
|
||||
msg := m.Cmdy(web.CACHE, web.UPLOAD)
|
||||
m.Option(ice.MSG_UPLOAD, msg.Append(mdb.HASH), msg.Append(mdb.NAME), msg.Append(nfs.SIZE))
|
||||
}
|
||||
|
||||
|
@ -6,28 +6,24 @@ search.go
|
||||
action.go
|
||||
river.go
|
||||
storm.go
|
||||
template.go
|
||||
|
||||
pod.go
|
||||
cmd.go
|
||||
grant.go
|
||||
sso.go
|
||||
oauth
|
||||
|
||||
scan.go
|
||||
paste.go
|
||||
favor.go
|
||||
iframe.go
|
||||
location.go
|
||||
location.shy
|
||||
|
||||
files.go
|
||||
trans.go
|
||||
media.go
|
||||
topic.go
|
||||
|
||||
div.go
|
||||
topic.go
|
||||
website.go
|
||||
template.go
|
||||
keyboard.go
|
||||
location.go
|
||||
location.shy
|
||||
trans.go
|
||||
room.go
|
||||
meet.go
|
||||
|
||||
oauth
|
||||
|
103
core/chat/favor.go
Normal file
103
core/chat/favor.go
Normal file
@ -0,0 +1,103 @@
|
||||
package chat
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/gdb"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/ssh"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
const (
|
||||
FAVOR_INPUTS = "favor.inputs"
|
||||
FAVOR_TABLES = "favor.tables"
|
||||
FAVOR_ACTION = "favor.action"
|
||||
)
|
||||
const FAVOR = "favor"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
FAVOR: {Name: "favor hash auto create getClipboardData getLocation scanQRCode upload", Help: "收藏夹", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch mdb.HashInputs(m, arg); arg[0] {
|
||||
case mdb.TYPE:
|
||||
m.Push(arg[0], mdb.TEXT, ctx.INDEX)
|
||||
case mdb.NAME:
|
||||
switch m.Option(mdb.TYPE) {
|
||||
case ctx.INDEX:
|
||||
m.Copy(m.Cmd(ctx.COMMAND, mdb.SEARCH, ctx.COMMAND, arg[1:], ice.OptionFields(ctx.INDEX)).RenameAppend(ctx.INDEX, arg[0]))
|
||||
}
|
||||
}
|
||||
gdb.Event(m, "", arg)
|
||||
}},
|
||||
"getClipboardData": {Name: "favor create", Help: "粘贴"},
|
||||
"getLocation": {Name: "favor create", Help: "定位"},
|
||||
"scanQRCode": {Name: "favor create", Help: "扫码"},
|
||||
mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionDefault(mdb.TYPE, mdb.LINK, mdb.NAME, kit.ParseURL(m.Option(mdb.TEXT)).Host)
|
||||
mdb.HashCreate(m, m.OptionSimple())
|
||||
}},
|
||||
web.UPLOAD: {Hand: func(m *ice.Message, arg ...string) {
|
||||
web.Upload(m).Cmd("", mdb.CREATE, m.AppendSimple(mdb.TYPE, mdb.NAME, mdb.TEXT))
|
||||
}},
|
||||
web.DOWNLOAD: {Hand: func(m *ice.Message, arg ...string) {
|
||||
ctx.ProcessOpen(m, web.MergeURL2(m, web.SHARE_LOCAL+m.Option(mdb.TEXT), "filename", m.Option(mdb.NAME)))
|
||||
}},
|
||||
web.DISPLAY: {Help: "预览", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.EchoImages(web.SHARE_LOCAL + m.Option(mdb.TEXT)).ProcessInner()
|
||||
}},
|
||||
ctx.INDEX: {Help: "命令", Hand: func(m *ice.Message, arg ...string) {
|
||||
ctx.ProcessField(m, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.NAME), kit.Simple(kit.UnMarshal(m.Option(mdb.TEXT))), arg...)
|
||||
}},
|
||||
ice.RUN: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Option(mdb.TYPE, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.TYPE))
|
||||
ctx.Run(m, arg...)
|
||||
}},
|
||||
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text"), ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) > 0 && arg[0] == ctx.ACTION {
|
||||
m.Option(mdb.TYPE, m.Cmd("", m.Option(mdb.HASH)).Append(mdb.TYPE))
|
||||
gdb.Event(m, FAVOR_ACTION, arg)
|
||||
return
|
||||
}
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
||||
m.Tables(func(value ice.Maps) {
|
||||
if msg := gdb.Event(m.Spawn(), FAVOR_TABLES, mdb.TYPE, value[mdb.TYPE]); msg.Append(ctx.ACTION) != "" {
|
||||
m.PushButton(msg.Append(ctx.ACTION))
|
||||
return
|
||||
}
|
||||
switch value[mdb.TYPE] {
|
||||
case ctx.INDEX:
|
||||
m.PushButton(ctx.INDEX, mdb.REMOVE)
|
||||
default:
|
||||
if strings.HasPrefix(value[mdb.TEXT], ice.VAR_FILE) {
|
||||
if kit.ExtIsImage(value[mdb.NAME]) {
|
||||
m.PushButton(web.DISPLAY, web.DOWNLOAD, mdb.REMOVE)
|
||||
} else {
|
||||
m.PushButton(web.DOWNLOAD, mdb.REMOVE)
|
||||
}
|
||||
} else {
|
||||
m.PushButton(mdb.REMOVE)
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if strings.HasPrefix(m.Append(mdb.TEXT), ice.VAR_FILE) {
|
||||
link := web.SHARE_LOCAL + m.Append(mdb.TEXT)
|
||||
if m.PushDownload(mdb.LINK, m.Append(mdb.NAME), link); len(arg) > 0 && kit.ExtIsImage(m.Append(mdb.NAME)) {
|
||||
m.PushImages(web.DISPLAY, link)
|
||||
}
|
||||
}
|
||||
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
||||
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}
|
||||
}},
|
||||
})
|
||||
}
|
||||
|
||||
func FavorAction() ice.Actions { return gdb.EventAction(FAVOR_INPUTS, FAVOR_TABLES, FAVOR_ACTION) }
|
@ -1,31 +0,0 @@
|
||||
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"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
const FILES = "files"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
FILES: {Name: "files hash auto upload", Help: "文件夹", Actions: ice.MergeActions(ice.Actions{
|
||||
web.UPLOAD: {Name: "upload", Help: "上传", Hand: func(m *ice.Message, arg ...string) {
|
||||
up := web.Upload(m)
|
||||
mdb.HashCreate(m, mdb.TYPE, kit.Ext(up[1]), mdb.NAME, up[1], nfs.SIZE, up[2], mdb.DATA, up[0])
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.DATA, mdb.FIELD, "time,hash,type,name,size,data")), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, arg...).Tables(func(value ice.Maps) {
|
||||
link := web.SHARE_CACHE + value[mdb.DATA]
|
||||
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)
|
||||
}},
|
||||
})
|
||||
}
|
@ -27,10 +27,7 @@ func init() {
|
||||
})
|
||||
}},
|
||||
CONFIRM: {Help: "授权", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
|
||||
return
|
||||
}
|
||||
if m.Warn(m.Option(web.SPACE) == "", ice.ErrNotValid, web.SPACE) {
|
||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) || m.Warn(m.Option(web.SPACE) == "", ice.ErrNotValid, web.SPACE) {
|
||||
return
|
||||
}
|
||||
if msg := m.Cmd(web.SPACE, m.Option(web.SPACE)); m.Warn(msg.Append(mdb.TYPE) != aaa.LOGIN, ice.ErrNotFound, m.Option(web.SPACE)) {
|
||||
|
@ -2,9 +2,9 @@ package chat
|
||||
|
||||
import (
|
||||
ice "shylinux.com/x/icebergs"
|
||||
"shylinux.com/x/icebergs/base/cli"
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -13,18 +13,51 @@ const IFRAME = "iframe"
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
IFRAME: {Name: "iframe hash auto", Help: "浏览器", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.CREATE: {Name: "create link name type", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.OptionDefault(mdb.NAME, kit.ParseURL(m.Option(mdb.LINK)).Host, mdb.TYPE, mdb.LINK)
|
||||
mdb.HashCreate(m, m.OptionSimple("link,name,type"))
|
||||
FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case mdb.TYPE:
|
||||
m.Push(arg[0], web.LINK)
|
||||
default:
|
||||
if m.Option(mdb.TYPE) != web.LINK {
|
||||
return
|
||||
}
|
||||
switch arg[0] {
|
||||
case mdb.NAME:
|
||||
m.Push(arg[0], web.OptionUserWeb(m).Host)
|
||||
case mdb.TEXT:
|
||||
m.Push(arg[0], m.Option(ice.MSG_USERWEB))
|
||||
}
|
||||
}
|
||||
}},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.LINK, mdb.FIELD, "time,hash,type,name,link")), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" {
|
||||
m.Action(mdb.CREATE, mdb.PRUNES)
|
||||
FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[1] {
|
||||
case web.LINK:
|
||||
m.PushButton(IFRAME, web.OPEN, mdb.REMOVE)
|
||||
}
|
||||
}},
|
||||
FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(mdb.TYPE) != web.LINK {
|
||||
return
|
||||
}
|
||||
switch kit.Select("", arg, 1) {
|
||||
case web.OPEN:
|
||||
ctx.ProcessOpen(m, m.Option(mdb.TEXT))
|
||||
default:
|
||||
ctx.ProcessField(m, "", []string{m.Option(mdb.TEXT)}, arg...)
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashCreate(m, mdb.TYPE, web.LINK, mdb.NAME, kit.ParseURL(m.Option(web.LINK)).Host, m.OptionSimple())
|
||||
}},
|
||||
web.OPEN: {Hand: func(m *ice.Message, arg ...string) { ctx.ProcessOpen(m, m.Option(web.LINK)) }},
|
||||
}, mdb.HashAction(mdb.SHORT, web.LINK, mdb.FIELD, "time,hash,type,name,link"), FavorAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) == 0 {
|
||||
m.PushAction(web.OPEN, mdb.REMOVE).Action(mdb.CREATE, mdb.PRUNES)
|
||||
} else {
|
||||
if m.Length() == 0 {
|
||||
m.Append(mdb.LINK, arg[0])
|
||||
m.Append(web.LINK, arg[0])
|
||||
}
|
||||
m.Action(cli.OPEN).StatusTime(mdb.LINK, m.Append(mdb.LINK))
|
||||
m.Action(web.FULL, web.OPEN).StatusTime(m.AppendSimple(web.LINK))
|
||||
ctx.DisplayLocal(m, "")
|
||||
}
|
||||
}},
|
||||
|
@ -38,6 +38,24 @@ func init() {
|
||||
|
||||
Index.MergeCommands(ice.Commands{
|
||||
LOCATION: {Name: "location hash auto", Help: "地理位置", Actions: ice.MergeActions(ice.Actions{
|
||||
FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[0] {
|
||||
case mdb.TYPE:
|
||||
m.Push(arg[0], LOCATION)
|
||||
}
|
||||
}},
|
||||
FAVOR_ACTION: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(mdb.TYPE) != LOCATION {
|
||||
return
|
||||
}
|
||||
ctx.ProcessField(m, "", []string{m.Option(mdb.TEXT)}, arg...)
|
||||
}},
|
||||
FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||
switch arg[1] {
|
||||
case LOCATION:
|
||||
m.PushButton(LOCATION, mdb.REMOVE)
|
||||
}
|
||||
}},
|
||||
"explore": {Name: "explore", Help: "周边", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(get(m, "place/v1/explore", m.OptionSimple("boundary,page_index")))
|
||||
}},
|
||||
@ -53,7 +71,7 @@ func init() {
|
||||
"district": {Name: "district", Help: "地区", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Echo(get(m, "district/v1/getchildren", m.OptionSimple(mdb.ID)))
|
||||
}},
|
||||
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,latitude,longitude,extra"), ctx.CmdAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
}, mdb.HashAction(mdb.FIELD, "time,hash,type,name,text,latitude,longitude,extra"), ctx.CmdAction(), FavorAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...)
|
||||
ctx.DisplayLocal(m, "", m.ConfigSimple(aaa.TOKEN))
|
||||
m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP)))
|
||||
|
@ -1,27 +0,0 @@
|
||||
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/ssh"
|
||||
)
|
||||
|
||||
const PASTE = "paste"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
PASTE: {Name: "paste hash auto getClipboardData", Help: "粘贴", Actions: ice.MergeActions(ice.Actions{
|
||||
"getClipboardData": {Name: "getClipboardData", Help: "粘贴", Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(PASTE, mdb.CREATE, arg)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加"},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.TEXT, mdb.FIELD, "time,hash,type,name,text")), Hand: func(m *ice.Message, arg ...string) {
|
||||
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)
|
||||
}
|
||||
}},
|
||||
})
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
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/ssh"
|
||||
)
|
||||
|
||||
const SCAN = "scan"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
SCAN: {Name: "scan hash auto scanQRCode scanQRCode0", Help: "扫码", Actions: ice.MergeActions(ice.Actions{
|
||||
"scanQRCode0": {Name: "scan create", Help: "本机扫码"},
|
||||
"scanQRCode": {Name: "scan create", Help: "扫码"},
|
||||
mdb.CREATE: {Name: "create type=text name=hi text:textarea=hi", Help: "添加"},
|
||||
}, mdb.HashAction(mdb.SHORT, mdb.TEXT, mdb.FIELD, "time,hash,type,name,text")), Hand: func(m *ice.Message, arg ...string) {
|
||||
if mdb.HashSelect(m, arg...); len(arg) > 0 {
|
||||
if m.Append(mdb.TYPE) == "image" {
|
||||
m.PushImages("image", m.Append(mdb.TEXT))
|
||||
}
|
||||
m.PushScript(ssh.SCRIPT, m.Append(mdb.TEXT))
|
||||
m.PushQRCode(cli.QRCODE, m.Append(mdb.TEXT))
|
||||
m.PushAction(mdb.REMOVE)
|
||||
}
|
||||
}},
|
||||
})
|
||||
}
|
2
misc.go
2
misc.go
@ -282,7 +282,7 @@ func (m *Message) CmdHand(cmd *Command, key string, arg ...string) *Message {
|
||||
}
|
||||
func (c *Context) _command(m *Message, cmd *Command, key string, arg ...string) *Message {
|
||||
key = kit.Slice(strings.Split(key, PT), -1)[0]
|
||||
if m._key, m._cmd = key, cmd; cmd == nil {
|
||||
if m._key, m._sub, m._cmd = key, "select", cmd; cmd == nil {
|
||||
return m
|
||||
}
|
||||
|
||||
|
@ -57,12 +57,12 @@ func init() {
|
||||
m.OptionSimple(aaa.CITY, aaa.COUNTRY, aaa.LANGUAGE, aaa.PROVINCE),
|
||||
)
|
||||
}},
|
||||
chat.SCAN: {Name: "scan", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||
"scan": {Name: "scan", Help: "扫码", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(chat.GRANT) != "" {
|
||||
m.Cmdy(chat.HEADER, chat.GRANT, web.SPACE, m.Option(chat.GRANT))
|
||||
return
|
||||
}
|
||||
m.Cmdy(chat.SCAN, arg)
|
||||
m.Cmdy("scan", arg)
|
||||
}},
|
||||
}},
|
||||
LOGIN: {Name: "login appid auto qrcode tokens create", Help: "认证", Actions: ice.Actions{
|
||||
|
@ -87,10 +87,10 @@ func init() {
|
||||
"latitude", m.Option("LocationX"), "longitude", m.Option("LocationY"), "scale", m.Option("Scale"),
|
||||
)
|
||||
case mdb.LINK: // 打卡
|
||||
m.Cmdy(chat.SCAN, mdb.CREATE, mdb.TYPE, mdb.LINK, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
||||
m.Cmdy("scan", mdb.CREATE, mdb.TYPE, mdb.LINK, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
||||
|
||||
case "image": // 文本
|
||||
m.Cmdy(chat.SCAN, mdb.CREATE, mdb.TYPE, wiki.IMAGE, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
||||
m.Cmdy("scan", mdb.CREATE, mdb.TYPE, wiki.IMAGE, mdb.NAME, m.Option("Title"), mdb.TEXT, m.Option("URL"))
|
||||
|
||||
case TEXT: // 文本
|
||||
if cmds := kit.Split(m.Option("Content")); aaa.Right(m, cmds) {
|
||||
|
13
option.go
13
option.go
@ -35,6 +35,19 @@ func (m *Message) OptionDefault(arg ...string) string {
|
||||
return m.Option(arg[0])
|
||||
}
|
||||
func (m *Message) OptionSimple(key ...string) (res []string) {
|
||||
if len(key) == 0 {
|
||||
for _, k := range kit.Split(m.Config(FIELD)) {
|
||||
switch k {
|
||||
case "", TIME, HASH:
|
||||
continue
|
||||
}
|
||||
if m.Option(k) == "" {
|
||||
continue
|
||||
}
|
||||
res = append(res, k, m.Option(k))
|
||||
}
|
||||
return
|
||||
}
|
||||
for _, k := range kit.Split(kit.Join(key)) {
|
||||
if k == "" || m.Option(k) == "" {
|
||||
continue
|
||||
|
@ -21,6 +21,9 @@ func Render(m *Message, cmd string, args ...Any) string {
|
||||
return kit.Format(`<a href="%s" target="_blank">%s</a>`, p, arg[0])
|
||||
|
||||
case RENDER_BUTTON: // name...
|
||||
if strings.HasPrefix(kit.Join(arg), "<input") {
|
||||
return kit.Join(arg)
|
||||
}
|
||||
list := []string{}
|
||||
for _, k := range kit.Split(kit.Join(arg)) {
|
||||
list = append(list, kit.Format(`<input type="button" name="%s" value="%s">`, k,
|
||||
@ -29,6 +32,9 @@ func Render(m *Message, cmd string, args ...Any) string {
|
||||
return strings.Join(list, "")
|
||||
|
||||
case RENDER_IMAGES: // src [height]
|
||||
if m.Option("height") != "" && m.Option("width") != "" {
|
||||
return kit.Format(`<img src="%s" style="max-height:%spx; max-width:%spx">`, arg[0], m.Option("height"), m.Option("width"))
|
||||
}
|
||||
if strings.Contains(m.Option(MSG_USERUA), "Mobile") {
|
||||
return kit.Format(`<img src="%s" width=%d>`, arg[0], kit.Int(kit.Select(kit.Select("120", m.Option("width")), arg, 1))-24)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user