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 {
|
func Run(m *ice.Message, arg ...string) {
|
||||||
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) {
|
|
||||||
if len(arg) > 3 && arg[1] == ACTION && arg[2] == CONFIG {
|
if len(arg) > 3 && arg[1] == ACTION && arg[2] == CONFIG {
|
||||||
switch arg[3] {
|
switch arg[3] {
|
||||||
case "help":
|
case "help":
|
||||||
@ -158,7 +148,18 @@ func CmdAction(args ...ice.Any) ice.Actions {
|
|||||||
if !PodCmd(m, arg) && aaa.Right(m, arg) {
|
if !PodCmd(m, arg) && aaa.Right(m, arg) {
|
||||||
m.Cmdy(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 {
|
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) {
|
func ProcessField(m *ice.Message, cmd string, args []string, arg ...string) {
|
||||||
cmd = kit.Select(m.PrefixKey(), cmd)
|
cmd = kit.Select(m.PrefixKey(), cmd)
|
||||||
if len(arg) == 0 || arg[0] != ice.RUN {
|
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))
|
m.Push(ARGS, kit.Format(args))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -48,6 +49,9 @@ func ProcessFloat(m *ice.Message, arg ...string) {
|
|||||||
func ProcessHold(m *ice.Message, text ...ice.Any) {
|
func ProcessHold(m *ice.Message, text ...ice.Any) {
|
||||||
m.Process(ice.PROCESS_HOLD, text...)
|
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) {
|
func ProcessRefresh(m *ice.Message, arg ...string) {
|
||||||
m.ProcessRefresh(kit.Select("300ms", arg, 0))
|
m.ProcessRefresh(kit.Select("300ms", arg, 0))
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ func init() {
|
|||||||
mdb.ZoneInsert(m, m.OptionSimple(EVENT, ice.CMD))
|
mdb.ZoneInsert(m, m.OptionSimple(EVENT, ice.CMD))
|
||||||
}},
|
}},
|
||||||
HAPPEN: {Name: "happen event arg", Help: "触发", Hand: func(m *ice.Message, arg ...string) {
|
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()
|
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))
|
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 {
|
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"
|
WRITE = "write"
|
||||||
UPLOAD = "upload"
|
UPLOAD = "upload"
|
||||||
DOWNLOAD = "download"
|
DOWNLOAD = "download"
|
||||||
|
DISPLAY = "display"
|
||||||
|
|
||||||
UPLOAD_WATCH = "upload_watch"
|
UPLOAD_WATCH = "upload_watch"
|
||||||
)
|
)
|
||||||
|
@ -12,19 +12,16 @@ import (
|
|||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
"shylinux.com/x/icebergs/base/gdb"
|
"shylinux.com/x/icebergs/base/gdb"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
"shylinux.com/x/icebergs/base/nfs"
|
|
||||||
"shylinux.com/x/icebergs/base/tcp"
|
"shylinux.com/x/icebergs/base/tcp"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
"shylinux.com/x/toolkits/file"
|
"shylinux.com/x/toolkits/file"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Upload(m *ice.Message) []string { // hash name size
|
func Upload(m *ice.Message) *ice.Message {
|
||||||
up := kit.Simple(m.Optionv(ice.MSG_UPLOAD))
|
if up := kit.Simple(m.Optionv(ice.MSG_UPLOAD)); len(up) < 2 {
|
||||||
if len(up) < 2 {
|
m.Cmdy(CACHE, UPLOAD)
|
||||||
msg := m.Cmdy(CACHE, UPLOAD)
|
|
||||||
up = kit.Simple(msg.Append(mdb.HASH), msg.Append(mdb.NAME), msg.Append(nfs.SIZE))
|
|
||||||
}
|
}
|
||||||
return up
|
return m
|
||||||
}
|
}
|
||||||
func PushNotice(m *ice.Message, arg ...ice.Any) {
|
func PushNotice(m *ice.Message, arg ...ice.Any) {
|
||||||
if m.Option(ice.MSG_DAEMON) == "" {
|
if m.Option(ice.MSG_DAEMON) == "" {
|
||||||
|
@ -351,6 +351,9 @@ const (
|
|||||||
CLIENT_URL = "client.url"
|
CLIENT_URL = "client.url"
|
||||||
LOGHEADERS = "logheaders"
|
LOGHEADERS = "logheaders"
|
||||||
|
|
||||||
|
OPEN = "open"
|
||||||
|
FULL = "full"
|
||||||
|
LINK = "link"
|
||||||
HTTP = "http"
|
HTTP = "http"
|
||||||
FORM = "form"
|
FORM = "form"
|
||||||
ADDRESS = "address"
|
ADDRESS = "address"
|
||||||
|
1
conf.go
1
conf.go
@ -289,6 +289,7 @@ const ( // mdb
|
|||||||
MDB = "mdb"
|
MDB = "mdb"
|
||||||
KEY = "key"
|
KEY = "key"
|
||||||
VALUE = "value"
|
VALUE = "value"
|
||||||
|
FIELD = "field"
|
||||||
EXTRA = "extra"
|
EXTRA = "extra"
|
||||||
SCRIPT = "script"
|
SCRIPT = "script"
|
||||||
META = "meta"
|
META = "meta"
|
||||||
|
@ -69,7 +69,7 @@ func _action_share(m *ice.Message, arg ...string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
func _action_upload(m *ice.Message) {
|
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))
|
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
|
action.go
|
||||||
river.go
|
river.go
|
||||||
storm.go
|
storm.go
|
||||||
template.go
|
|
||||||
|
|
||||||
pod.go
|
pod.go
|
||||||
cmd.go
|
cmd.go
|
||||||
grant.go
|
grant.go
|
||||||
sso.go
|
sso.go
|
||||||
oauth
|
|
||||||
|
|
||||||
scan.go
|
favor.go
|
||||||
paste.go
|
|
||||||
iframe.go
|
iframe.go
|
||||||
location.go
|
|
||||||
location.shy
|
|
||||||
|
|
||||||
files.go
|
|
||||||
trans.go
|
|
||||||
media.go
|
media.go
|
||||||
topic.go
|
|
||||||
|
|
||||||
div.go
|
div.go
|
||||||
|
topic.go
|
||||||
website.go
|
website.go
|
||||||
|
template.go
|
||||||
keyboard.go
|
keyboard.go
|
||||||
|
location.go
|
||||||
|
location.shy
|
||||||
|
trans.go
|
||||||
room.go
|
room.go
|
||||||
meet.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) {
|
CONFIRM: {Help: "授权", Hand: func(m *ice.Message, arg ...string) {
|
||||||
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) {
|
if m.Warn(m.Option(ice.MSG_USERNAME) == "", ice.ErrNotLogin) || m.Warn(m.Option(web.SPACE) == "", ice.ErrNotValid, web.SPACE) {
|
||||||
return
|
|
||||||
}
|
|
||||||
if m.Warn(m.Option(web.SPACE) == "", ice.ErrNotValid, web.SPACE) {
|
|
||||||
return
|
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)) {
|
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 (
|
import (
|
||||||
ice "shylinux.com/x/icebergs"
|
ice "shylinux.com/x/icebergs"
|
||||||
"shylinux.com/x/icebergs/base/cli"
|
|
||||||
"shylinux.com/x/icebergs/base/ctx"
|
"shylinux.com/x/icebergs/base/ctx"
|
||||||
"shylinux.com/x/icebergs/base/mdb"
|
"shylinux.com/x/icebergs/base/mdb"
|
||||||
|
"shylinux.com/x/icebergs/base/web"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -13,18 +13,51 @@ const IFRAME = "iframe"
|
|||||||
func init() {
|
func init() {
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
IFRAME: {Name: "iframe hash auto", Help: "浏览器", Actions: ice.MergeActions(ice.Actions{
|
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) {
|
FAVOR_INPUTS: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.OptionDefault(mdb.NAME, kit.ParseURL(m.Option(mdb.LINK)).Host, mdb.TYPE, mdb.LINK)
|
switch arg[0] {
|
||||||
mdb.HashCreate(m, m.OptionSimple("link,name,type"))
|
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) {
|
FAVOR_TABLES: {Hand: func(m *ice.Message, arg ...string) {
|
||||||
if mdb.HashSelect(m, arg...); len(arg) == 0 || arg[0] == "" {
|
switch arg[1] {
|
||||||
m.Action(mdb.CREATE, mdb.PRUNES)
|
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 {
|
} else {
|
||||||
if m.Length() == 0 {
|
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, "")
|
ctx.DisplayLocal(m, "")
|
||||||
}
|
}
|
||||||
}},
|
}},
|
||||||
|
@ -38,6 +38,24 @@ func init() {
|
|||||||
|
|
||||||
Index.MergeCommands(ice.Commands{
|
Index.MergeCommands(ice.Commands{
|
||||||
LOCATION: {Name: "location hash auto", Help: "地理位置", Actions: ice.MergeActions(ice.Actions{
|
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) {
|
"explore": {Name: "explore", Help: "周边", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Echo(get(m, "place/v1/explore", m.OptionSimple("boundary,page_index")))
|
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) {
|
"district": {Name: "district", Help: "地区", Hand: func(m *ice.Message, arg ...string) {
|
||||||
m.Echo(get(m, "district/v1/getchildren", m.OptionSimple(mdb.ID)))
|
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)...)
|
mdb.HashSelect(m, kit.Slice(arg, 0, 1)...)
|
||||||
ctx.DisplayLocal(m, "", m.ConfigSimple(aaa.TOKEN))
|
ctx.DisplayLocal(m, "", m.ConfigSimple(aaa.TOKEN))
|
||||||
m.Option(LOCATION, get(m, "location/v1/ip", aaa.IP, m.Option(ice.MSG_USERIP)))
|
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 {
|
func (c *Context) _command(m *Message, cmd *Command, key string, arg ...string) *Message {
|
||||||
key = kit.Slice(strings.Split(key, PT), -1)[0]
|
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
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,12 +57,12 @@ func init() {
|
|||||||
m.OptionSimple(aaa.CITY, aaa.COUNTRY, aaa.LANGUAGE, aaa.PROVINCE),
|
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) != "" {
|
if m.Option(chat.GRANT) != "" {
|
||||||
m.Cmdy(chat.HEADER, chat.GRANT, web.SPACE, m.Option(chat.GRANT))
|
m.Cmdy(chat.HEADER, chat.GRANT, web.SPACE, m.Option(chat.GRANT))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
m.Cmdy(chat.SCAN, arg)
|
m.Cmdy("scan", arg)
|
||||||
}},
|
}},
|
||||||
}},
|
}},
|
||||||
LOGIN: {Name: "login appid auto qrcode tokens create", Help: "认证", Actions: ice.Actions{
|
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"),
|
"latitude", m.Option("LocationX"), "longitude", m.Option("LocationY"), "scale", m.Option("Scale"),
|
||||||
)
|
)
|
||||||
case mdb.LINK: // 打卡
|
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": // 文本
|
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: // 文本
|
case TEXT: // 文本
|
||||||
if cmds := kit.Split(m.Option("Content")); aaa.Right(m, cmds) {
|
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])
|
return m.Option(arg[0])
|
||||||
}
|
}
|
||||||
func (m *Message) OptionSimple(key ...string) (res []string) {
|
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)) {
|
for _, k := range kit.Split(kit.Join(key)) {
|
||||||
if k == "" || m.Option(k) == "" {
|
if k == "" || m.Option(k) == "" {
|
||||||
continue
|
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])
|
return kit.Format(`<a href="%s" target="_blank">%s</a>`, p, arg[0])
|
||||||
|
|
||||||
case RENDER_BUTTON: // name...
|
case RENDER_BUTTON: // name...
|
||||||
|
if strings.HasPrefix(kit.Join(arg), "<input") {
|
||||||
|
return kit.Join(arg)
|
||||||
|
}
|
||||||
list := []string{}
|
list := []string{}
|
||||||
for _, k := range kit.Split(kit.Join(arg)) {
|
for _, k := range kit.Split(kit.Join(arg)) {
|
||||||
list = append(list, kit.Format(`<input type="button" name="%s" value="%s">`, k,
|
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, "")
|
return strings.Join(list, "")
|
||||||
|
|
||||||
case RENDER_IMAGES: // src [height]
|
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") {
|
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)
|
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