forked from x/icebergs
add some
This commit is contained in:
parent
fbb1fe4413
commit
72bbad483a
@ -16,7 +16,7 @@ type apply struct {
|
||||
email string `data:"admin"`
|
||||
checkbox string `data:"true"`
|
||||
online string `data:"true"`
|
||||
field string `data:"time,hash,status,email,usernick,username,userrole,icons,agent,system,ip,ua"`
|
||||
field string `data:"time,hash,status,email,userrole,username,usernick,icons,agent,system,ip,ua"`
|
||||
apply string `name:"apply" help:"申请" role:"void"`
|
||||
agree string `name:"agree userrole=tech,void" help:"同意" icon:"bi bi-check2-square"`
|
||||
login string `name:"login" help:"登录" role:"void"`
|
||||
@ -34,9 +34,11 @@ func (s apply) Apply(m *ice.Message, arg ...string) {
|
||||
m.DisplayForm(m, "email*", aaa.USERNICK, s.Apply)
|
||||
}
|
||||
} else if !m.WarnAlreadyExists(m.Options(arg).Cmd(aaa.USER, m.Option(aaa.EMAIL)).Length() > 0, m.Option(aaa.EMAIL)) {
|
||||
m.Option(ice.MSG_USERNAME, m.Option(aaa.EMAIL), ice.MSG_USERNICK, kit.Split(m.Option(aaa.EMAIL), "@")[0])
|
||||
m.ProcessCookie(_cookie_key(m), s.Hash.Create(m, kit.Simple(arg, mdb.STATUS, kit.FuncName(s.Apply), web.ParseUA(m.Message))...))
|
||||
m.Options(ice.MSG_USERNAME, m.Option(aaa.EMAIL), ice.MSG_USERNICK, kit.Split(m.Option(aaa.EMAIL), "@")[0])
|
||||
h := s.Hash.Create(m, kit.Simple(arg, mdb.STATUS, kit.FuncName(s.Apply), web.ParseUA(m.Message))...)
|
||||
m.ProcessCookie(_cookie_key(m), h)
|
||||
m.StreamPushRefreshConfirm()
|
||||
m.ChatMessageInsertPlug(aaa.APPLY, "apply.signup", m.PrefixKey(), h)
|
||||
}
|
||||
}
|
||||
func (s apply) Agree(m *ice.Message, arg ...string) {
|
||||
@ -48,7 +50,7 @@ func (s apply) Agree(m *ice.Message, arg ...string) {
|
||||
return
|
||||
}
|
||||
s.Hash.Modify(m, kit.Simple(m.OptionSimple(mdb.HASH, aaa.USERROLE), mdb.STATUS, s.Agree)...)
|
||||
m.Cmd(aaa.USER, mdb.CREATE, msg.AppendSimple(aaa.USERNICK, aaa.USERNAME), m.OptionSimple(aaa.USERROLE))
|
||||
m.UserCreate(m.Option(aaa.USERROLE), msg.Append(aaa.USERNAME), msg.Append(aaa.USERNICK))
|
||||
m.PushRefresh(msg.Append(cli.DAEMON))
|
||||
}
|
||||
func (s apply) Login(m *ice.Message, arg ...string) {
|
||||
@ -65,9 +67,12 @@ func (s apply) Login(m *ice.Message, arg ...string) {
|
||||
m.ProcessCookie(_cookie_key(m), "")
|
||||
return
|
||||
}
|
||||
s.Hash.Modify(m, kit.Simple(m.OptionSimple(mdb.HASH), mdb.STATUS, s.Login)...)
|
||||
m.UserCreate(m.Option(aaa.USERROLE), msg.Append(aaa.USERNAME), msg.Append(aaa.USERNICK))
|
||||
web.RenderCookie(m.Message, m.Cmdx(aaa.SESS, mdb.CREATE, msg.Append(aaa.USERNAME)))
|
||||
s.Hash.Modify(m, kit.Simple(m.OptionSimple(mdb.HASH), mdb.STATUS, s.Login)...)
|
||||
m.ProcessLocation(nfs.PS)
|
||||
m.StreamPushRefreshConfirm()
|
||||
m.ChatMessageInsertPlug(aaa.APPLY, "user.create", aaa.USER, msg.Append(aaa.USERNAME))
|
||||
} else {
|
||||
if m.WarnNotFound(m.Cmd(aaa.USER, m.Option(aaa.EMAIL)).Length() == 0, m.Option(aaa.EMAIL)) {
|
||||
return
|
||||
@ -81,19 +86,19 @@ func (s apply) Login(m *ice.Message, arg ...string) {
|
||||
}
|
||||
func (s apply) List(m *ice.Message, arg ...string) *ice.Message {
|
||||
kit.If(m.Option(_cookie_key(m)), func(p string) { arg = []string{p} })
|
||||
s.Hash.List(m, arg...).Table(func(value ice.Maps) {
|
||||
switch value[mdb.STATUS] {
|
||||
case kit.FuncName(s.Apply):
|
||||
m.PushButton(s.Agree, s.Remove)
|
||||
case kit.FuncName(s.Agree):
|
||||
m.PushButton(s.Login, s.Remove)
|
||||
default:
|
||||
m.PushButton(s.Remove)
|
||||
}
|
||||
})
|
||||
if len(arg) == 0 {
|
||||
m.EchoQRCode(m.MergePodCmd("", "", ctx.ACTION, s.Apply))
|
||||
} else if m.Option(_cookie_key(m)) != "" || m.ActionKey() != "" {
|
||||
if m.IsTech() || (len(arg) > 0 && arg[0] != "") {
|
||||
s.Hash.List(m, arg...).Table(func(value ice.Maps) {
|
||||
switch value[mdb.STATUS] {
|
||||
case kit.FuncName(s.Apply):
|
||||
m.PushButton(s.Agree, s.Remove)
|
||||
case kit.FuncName(s.Agree):
|
||||
m.PushButton(s.Login, s.Remove)
|
||||
default:
|
||||
m.PushButton(s.Remove)
|
||||
}
|
||||
})
|
||||
}
|
||||
if m.Option(_cookie_key(m)) != "" || m.ActionKey() != "" {
|
||||
switch m.Append(mdb.STATUS) {
|
||||
case kit.FuncName(s.Login):
|
||||
if m.ActionKey() == kit.FuncName(s.Apply) {
|
||||
@ -106,6 +111,8 @@ func (s apply) List(m *ice.Message, arg ...string) *ice.Message {
|
||||
case kit.FuncName(s.Apply):
|
||||
m.SetAppend().EchoInfoButton(m.Trans("please wait admin agree", "请等待管理员同意"), nil)
|
||||
}
|
||||
} else if len(arg) == 0 {
|
||||
m.EchoQRCode(m.MergePodCmd("", "", ctx.ACTION, s.Apply))
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
@ -12,6 +12,10 @@ func _user_create(m *ice.Message, name string, arg ...string) {
|
||||
mdb.HashCreate(m, USERNAME, name, arg)
|
||||
gdb.Event(m, USER_CREATE, USER, name)
|
||||
}
|
||||
func _user_remove(m *ice.Message, name string, arg ...string) {
|
||||
gdb.Event(m, USER_REMOVE, m.OptionSimple(USERNAME, USERNICK))
|
||||
mdb.HashRemove(m, m.OptionSimple(USERNAME))
|
||||
}
|
||||
|
||||
const (
|
||||
BACKGROUND = "background"
|
||||
@ -38,6 +42,7 @@ const (
|
||||
USERZONE = "userzone"
|
||||
|
||||
USER_CREATE = "user.create"
|
||||
USER_REMOVE = "user.remove"
|
||||
)
|
||||
const USER = "user"
|
||||
|
||||
@ -52,10 +57,11 @@ func init() {
|
||||
m.Push(arg[0], m.Option(ice.MSG_USERNAME))
|
||||
}
|
||||
}},
|
||||
mdb.CREATE: {Name: "create usernick username* userrole=void,tech userzone language", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERNAME), m.OptionSimple(USERNICK, USERROLE, USERZONE, LANGUAGE, EMAIL, BACKGROUND, AVATAR)...)
|
||||
mdb.CREATE: {Name: "create userrole=void,tech username* usernick language userzone", Hand: func(m *ice.Message, arg ...string) {
|
||||
_user_create(m, m.Option(USERNAME), m.OptionSimple(USERROLE, USERNICK, LANGUAGE, AVATAR, BACKGROUND, USERZONE, EMAIL)...)
|
||||
}},
|
||||
}, mdb.ImportantHashAction(mdb.SHORT, USERNAME, mdb.FIELD, "time,userrole,username,usernick,avatar,language,userzone", html.CHECKBOX, ice.TRUE))},
|
||||
mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { _user_remove(m, m.Option(USERNAME)) }},
|
||||
}, mdb.ImportantHashAction(mdb.SHORT, USERNAME, mdb.FIELD, "time,userrole,username,usernick,language,avatar,background,userzone", html.CHECKBOX, ice.TRUE))},
|
||||
})
|
||||
}
|
||||
|
||||
@ -65,12 +71,6 @@ func UserInfo(m *ice.Message, name ice.Any, key, meta string) (value string) {
|
||||
}
|
||||
return
|
||||
}
|
||||
func UserEmail(m *ice.Message, username ice.Any) (nick string) {
|
||||
return UserInfo(m, username, EMAIL, EMAIL)
|
||||
}
|
||||
func UserNick(m *ice.Message, username ice.Any) (nick string) {
|
||||
return UserInfo(m, username, USERNICK, ice.MSG_USERNICK)
|
||||
}
|
||||
func UserRole(m *ice.Message, username ice.Any) (role string) {
|
||||
if username == "" {
|
||||
return VOID
|
||||
@ -80,18 +80,24 @@ func UserRole(m *ice.Message, username ice.Any) (role string) {
|
||||
return UserInfo(m, username, USERROLE, ice.MSG_USERROLE)
|
||||
}
|
||||
}
|
||||
func UserNick(m *ice.Message, username ice.Any) (nick string) {
|
||||
return UserInfo(m, username, USERNICK, ice.MSG_USERNICK)
|
||||
}
|
||||
func UserZone(m *ice.Message, username ice.Any) (zone string) {
|
||||
return UserInfo(m, username, USERZONE, ice.MSG_USERZONE)
|
||||
}
|
||||
func UserEmail(m *ice.Message, username ice.Any) (nick string) {
|
||||
return UserInfo(m, username, EMAIL, EMAIL)
|
||||
}
|
||||
func UserRoot(m *ice.Message, arg ...string) *ice.Message {
|
||||
language := kit.Select("", arg, 4)
|
||||
userzone := kit.Select("", arg, 3)
|
||||
userrole := kit.Select(ROOT, arg, 2)
|
||||
userrole := kit.Select(TECH, arg, 0)
|
||||
username := kit.Select(ice.Info.Username, arg, 1)
|
||||
usernick := kit.Select(UserNick(m, username), arg, 0)
|
||||
usernick := kit.Select(UserNick(m, username), arg, 2)
|
||||
language := kit.Select("", arg, 3)
|
||||
userzone := kit.Select(ice.DEV, arg, 4)
|
||||
if len(arg) > 0 {
|
||||
ice.Info.Username = username
|
||||
m.Cmd(USER, mdb.CREATE, usernick, username, userrole, userzone, language)
|
||||
m.Cmd(USER, mdb.CREATE, userrole, username, usernick, language, userzone)
|
||||
}
|
||||
return SessAuth(m, kit.Dict(USERNICK, usernick, USERNAME, username, USERROLE, userrole))
|
||||
return SessAuth(m, kit.Dict(USERROLE, userrole, USERNAME, username, USERNICK, usernick))
|
||||
}
|
||||
|
@ -47,8 +47,8 @@ func _runtime_init(m *ice.Message) {
|
||||
kit.HashSeed = append(kit.HashSeed, ice.Info.Username)
|
||||
kit.HashSeed = append(kit.HashSeed, ice.Info.Hostname)
|
||||
kit.HashSeed = append(kit.HashSeed, ice.Info.Pathname)
|
||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username, aaa.TECH, ice.DEV)
|
||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Username, aaa.ROOT, ice.OPS)
|
||||
aaa.UserRoot(ice.Pulse, "", ice.Info.Make.Username)
|
||||
aaa.UserRoot(ice.Pulse, aaa.ROOT, ice.Info.Username, "", "", ice.OPS)
|
||||
ice.Info.Time = m.Time()
|
||||
m.Conf(RUNTIME, kit.Keys(BOOT, mdb.TIME), ice.Info.Time)
|
||||
if runtime.GOARCH != MIPSLE {
|
||||
|
@ -41,9 +41,10 @@ func _client_dial_udp4(m *ice.Message, arg ...string) {
|
||||
}
|
||||
|
||||
const (
|
||||
UDP4 = "udp4"
|
||||
SEND = "send"
|
||||
RECV = "recv"
|
||||
UDP4 = "udp4"
|
||||
SEND = "send"
|
||||
RECV = "recv"
|
||||
DIRECT = "direct"
|
||||
)
|
||||
|
||||
func UDPAddr(m *ice.Message, host, port string) *net.UDPAddr {
|
||||
|
@ -65,11 +65,14 @@ const (
|
||||
DISPLAY = "display"
|
||||
|
||||
TEXT = "text"
|
||||
PLUG = "plug"
|
||||
TEXTAREA = "textarea"
|
||||
PASSWORD = "password"
|
||||
SELECT = "select"
|
||||
BUTTON = "button"
|
||||
|
||||
PLUGIN_STORY_JSON = "/plugin/story/json.js"
|
||||
|
||||
VIEW = "view"
|
||||
INPUT = "input"
|
||||
VALUE = "value"
|
||||
|
@ -26,7 +26,7 @@ import (
|
||||
func _serve_address(m *ice.Message) string { return HostPort(m, tcp.LOCALHOST, m.Option(tcp.PORT)) }
|
||||
func _serve_start(m *ice.Message) {
|
||||
kit.If(m.Option(aaa.USERNAME), func() {
|
||||
aaa.UserRoot(m, m.Option(aaa.USERNICK), m.Option(aaa.USERNAME), "", ice.DEV, m.Option(aaa.LANGUAGE))
|
||||
aaa.UserRoot(m, "", m.Option(aaa.USERNAME), m.Option(aaa.USERNICK), m.Option(aaa.LANGUAGE))
|
||||
})
|
||||
kit.If(m.Option(tcp.PORT) == tcp.RANDOM, func() { m.Option(tcp.PORT, m.Cmdx(tcp.PORT, aaa.RIGHT)) })
|
||||
cli.NodeInfo(m, kit.Select(kit.Split(ice.Info.Hostname, nfs.PT)[0], m.Option(tcp.NODENAME)), SERVER)
|
||||
|
@ -23,6 +23,9 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
STREAM: {Name: "stream hash daemon auto", Help: "推送流", Actions: ice.MergeActions(ice.Actions{
|
||||
ONLINE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(ice.MSG_DAEMON) == "" {
|
||||
return
|
||||
}
|
||||
mdb.HashCreate(m, SPACE, m.Option(ice.MSG_SPACE), ctx.INDEX, m.Option(ice.MSG_INDEX), mdb.SHORT, cli.DAEMON, mdb.FIELD, mdb.Config(m, mdb.FIELDS))
|
||||
mdb.HashCreate(_stream_subkey(m), ParseUA(m))
|
||||
mdb.HashSelect(m)
|
||||
|
@ -31,8 +31,10 @@ fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.send div.container { display:flex; flex-direction:column; align-items:flex-end; }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.text div.content { white-space:pre; padding:var(--input-padding) var(--button-padding); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content div.item.text.path>input { width:var(--input-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.xterm.story>form.option>div.item.hash input { width:var(--input-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.iframe.story>form.option>div.item.hash input { width:var(--input-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.story.xterm>form.option>div.item.hash input { width:var(--input-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.story.iframe>form.option>div.item.hash input { width:var(--input-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.story.user>form.option>div.item.username input { width:var(--form-width); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content fieldset.story>div.action>div.item.chat.icons { display:none; }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content { box-shadow:var(--box-shadow); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item.plug>div.container>div.content:hover { box-shadow:var(--notice-box-shadow); }
|
||||
fieldset.web.chat.message>div.output>div.layout>div.layout>div.content>div.list>div.item>div.container>div.content { display:flex; align-items:center; border-radius:var(--plugin-radius); min-height:var(--header-height); width:fit-content; }
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/tcp"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/icebergs/base/web/html"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
)
|
||||
|
||||
@ -19,36 +20,41 @@ func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
MESSAGE: {Name: "message", Help: "聊天", Icon: "Messages.png", Actions: ice.MergeActions(ice.Actions{
|
||||
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
messageCreate(m, web.DREAM, "usr/icons/Launchpad.png")
|
||||
messageCreate(m, cli.SYSTEM, "usr/icons/System Settings.png")
|
||||
messageInsert(m, cli.SYSTEM, mdb.TYPE, "text", mdb.NAME, cli.RUNTIME, mdb.TEXT, m.Cmdx(cli.RUNTIME), ctx.DISPLAY, "/plugin/story/json.js")
|
||||
MessageCreate(m, aaa.APPLY, "usr/icons/Mail.png")
|
||||
MessageCreate(m, web.DREAM, "usr/icons/Launchpad.png")
|
||||
MessageCreate(m, cli.SYSTEM, "usr/icons/System Settings.png")
|
||||
MessageInsert(m, cli.SYSTEM, mdb.TYPE, html.TEXT, mdb.NAME, cli.RUNTIME, mdb.TEXT, m.Cmdx(cli.RUNTIME), ctx.DISPLAY, html.PLUGIN_STORY_JSON)
|
||||
}},
|
||||
mdb.CREATE: {Name: "create type=tech,void title icons target", Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.CREATE: {Name: "create type*=tech,void title icons target zone", Hand: func(m *ice.Message, arg ...string) {
|
||||
if strings.HasPrefix(m.Option(web.TARGET), "from.") {
|
||||
m.Option(web.TARGET, strings.Replace(m.Option(web.TARGET), "from", m.Option(ice.FROM_SPACE), 1))
|
||||
}
|
||||
mdb.ZoneCreate(m, kit.Simple(arg, web.TARGET, m.Option(web.TARGET), mdb.ZONE, kit.Select(kit.Hashs(mdb.UNIQ), m.Option(web.TARGET))))
|
||||
if m.OptionDefault(mdb.ZONE, m.Option(web.TARGET)) == "" {
|
||||
m.Option(mdb.ZONE, kit.Hashs(mdb.UNIQ))
|
||||
}
|
||||
mdb.ZoneCreate(m, kit.Simple(arg, web.TARGET, m.Option(web.TARGET), mdb.ZONE, m.Option(mdb.ZONE)))
|
||||
}},
|
||||
mdb.INSERT: {Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.ZoneInsert(m, append(arg, "direct", tcp.SEND, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||
kit.If(mdb.HashSelectField(m, arg[0], web.TARGET), func(p string) { m.Cmd(web.SPACE, p, MESSAGE, tcp.RECV, arg[1:]) })
|
||||
mdb.ZoneInsert(m, kit.Simple(arg[0], tcp.DIRECT, tcp.SEND, arg[1:], aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||
mdb.HashSelectUpdate(m, arg[0], func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
||||
web.StreamPushRefreshConfirm(m, m.Trans("refresh for new message ", "刷新列表查看新消息 "))
|
||||
}},
|
||||
tcp.SEND: {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Cmd("", mdb.INSERT, arg, tcp.DIRECT, tcp.SEND)
|
||||
kit.If(mdb.HashSelectField(m, arg[0], web.TARGET), func(p string) { m.Cmd(web.SPACE, p, MESSAGE, tcp.RECV, arg[1:]) })
|
||||
}},
|
||||
tcp.RECV: {Role: aaa.VOID, Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, m.Option(ice.FROM_SPACE), arg, "direct", tcp.RECV, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||
m.Cmd("", mdb.INSERT, m.Option(ice.FROM_SPACE), arg, tcp.DIRECT, tcp.RECV)
|
||||
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, web.TARGET, m.Option(ice.FROM_SPACE)) })
|
||||
mdb.HashSelectUpdate(m, m.Option(ice.FROM_SPACE), func(value ice.Map) { kit.Value(value, mdb.TIME, m.Time()) })
|
||||
web.StreamPushRefreshConfirm(m, m.Trans("refresh for new message ", "刷新列表查看新消息 "))
|
||||
}},
|
||||
web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if ice.Info.Important {
|
||||
messageInsert(m, web.DREAM, mdb.TYPE, "plug", ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME)))
|
||||
MessageInsert(m, web.DREAM, mdb.TYPE, html.PLUG, ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME)))
|
||||
}
|
||||
}},
|
||||
web.OPEN: {Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen(m.MergePod(m.Option(web.TARGET))) }},
|
||||
ctx.COMMAND: {Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option("direct") == "recv" {
|
||||
if m.Option(tcp.DIRECT) == tcp.RECV {
|
||||
m.Cmdy(web.Space(m, m.Option(web.TARGET)), ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, m.Option(web.TARGET), arg[0])
|
||||
} else {
|
||||
m.Cmdy(ctx.COMMAND, arg[0]).ProcessField(ctx.ACTION, ctx.RUN, "", arg[0])
|
||||
@ -61,9 +67,10 @@ func init() {
|
||||
)), Hand: func(m *ice.Message, arg ...string) {
|
||||
if len(arg) == 0 {
|
||||
mdb.ZoneSelect(m.Display("").Spawn(), arg...).Table(func(value ice.Maps) {
|
||||
if kit.IsIn(m.Option(ice.MSG_USERROLE), value[mdb.TYPE], aaa.TECH, aaa.ROOT) {
|
||||
m.PushRecord(value, mdb.Config(m, mdb.FIELD))
|
||||
if !kit.IsIn(m.Option(ice.MSG_USERROLE), value[mdb.TYPE], aaa.TECH, aaa.ROOT) {
|
||||
return
|
||||
}
|
||||
m.PushRecord(value, mdb.Config(m, mdb.FIELD))
|
||||
if value[web.TARGET] == "" {
|
||||
m.PushButton(mdb.REMOVE)
|
||||
} else {
|
||||
@ -77,11 +84,9 @@ func init() {
|
||||
}},
|
||||
})
|
||||
}
|
||||
func messageCreate(m *ice.Message, zone, icons string) {
|
||||
kit.Value(m.Target().Configs[m.CommandKey()].Value, kit.Keys(mdb.HASH, zone, mdb.META), kit.Dict(
|
||||
mdb.TIME, m.Time(), mdb.TYPE, aaa.TECH, mdb.ZONE, zone, mdb.ICONS, icons,
|
||||
))
|
||||
func MessageCreate(m *ice.Message, zone, icons string) {
|
||||
m.Cmd(MESSAGE, mdb.CREATE, mdb.TYPE, aaa.TECH, mdb.ICONS, icons, mdb.ZONE, zone)
|
||||
}
|
||||
func messageInsert(m *ice.Message, zone string, arg ...string) {
|
||||
mdb.ZoneInsert(m, kit.Simple(mdb.ZONE, zone, arg, "direct", tcp.RECV, aaa.USERNAME, m.Option(ice.MSG_USERNAME), aaa.USERNICK, m.Option(ice.MSG_USERNICK), aaa.AVATAR, m.Option(ice.MSG_AVATAR)))
|
||||
func MessageInsert(m *ice.Message, zone string, arg ...string) {
|
||||
m.Cmd(MESSAGE, mdb.INSERT, zone, tcp.DIRECT, tcp.RECV, arg)
|
||||
}
|
||||
|
@ -59,10 +59,12 @@ Volcanos(chat.ONIMPORT, {
|
||||
can.page.Append(can, can.ui.message, [{view: [[html.ITEM, mdb.TIME], "", time]}])
|
||||
}
|
||||
can.page.Append(can, can.ui.message, [{view: [[html.ITEM, value.direct, value.type]], list: [
|
||||
{img: value.direct == "recv"? (
|
||||
can.misc.Resource(can, (can.base.isIn(value.avatar, can.db.zone.zone, mdb.TYPE)? "": value.avatar)||can.db.zone.icons||"usr/icons/Messages.png")
|
||||
): can.user.info.avatar},
|
||||
{view: html.CONTAINER, list: [{text: [value.usernick, "", nfs.FROM]}, can.onfigure[value.type||"text"](can, value)]},
|
||||
{img: can.misc.Resource(can, value.direct == "recv"? (
|
||||
(can.base.isIn(value.avatar, can.db.zone.zone, mdb.TYPE)? "": value.avatar)||can.db.zone.icons||"usr/icons/Messages.png"
|
||||
): (can.user.info.avatar)||"usr/icons/Messages.png")},
|
||||
{view: html.CONTAINER, list: [{text: [
|
||||
value.direct == "recv"? value.usernick||can.db.zone.title||can.db.zone.zone: value.usernick||value.username
|
||||
, "", nfs.FROM]}, can.onfigure[value.type||"text"](can, value)]},
|
||||
]}])
|
||||
}), can.onappend._status(can, msg.Option(ice.MSG_STATUS)), can.onimport.layout(can)
|
||||
if (can.Status(mdb.TOTAL) > can.db.zone.id) { can.onimport._request(can) }
|
||||
@ -74,7 +76,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
})
|
||||
},
|
||||
_insert: function(can, args) {
|
||||
can.runAction(event, mdb.INSERT, [can.db.hash].concat(args), function() {
|
||||
can.runAction(event, tcp.SEND, [can.db.hash].concat(args), function() {
|
||||
can.onimport._request(can)
|
||||
})
|
||||
},
|
||||
@ -137,6 +139,7 @@ Volcanos(chat.ONFIGURE, {
|
||||
can.base.isIn(_list[0], "ops", "dev") && (list.pop(), _list.shift())
|
||||
value._space = list.concat(_list).join(".").replaceAll("..", ".")
|
||||
value._commands = {direct: value.direct, target: can.db.zone.target}
|
||||
value.title = value.name
|
||||
can.onappend.plugin(can, value, function(sub) {
|
||||
sub.onexport.output = function() { sub.onimport.size(sub, height, width)
|
||||
can.page.style(can, target, html.HEIGHT, sub._target.offsetHeight+2, html.WIDTH, sub._target.offsetWidth)
|
||||
|
@ -95,12 +95,11 @@ func (s Client) Auth(m *ice.Message, arg ...string) {
|
||||
func (s Client) User(m *ice.Message, arg ...string) {
|
||||
if res := s.Get(m, m.Option(mdb.HASH), m.Option(USERS_URL), arg...); res != nil {
|
||||
m.Options(res).Cmd(aaa.USER, mdb.CREATE,
|
||||
aaa.USERNICK, m.Option(kit.Select("full_name", m.Option(NICK_KEY))),
|
||||
aaa.USERNAME, m.Option(aaa.USERNAME, m.Option(kit.Select(aaa.USERNAME, m.Option(USER_KEY)))),
|
||||
aaa.AVATAR, m.Option(aaa.AVATAR_URL),
|
||||
aaa.USERROLE, kit.Select(aaa.VOID, aaa.TECH, m.Option("is_admin") == ice.TRUE),
|
||||
aaa.USERZONE, m.Option(web.DOMAIN),
|
||||
m.OptionSimple(aaa.EMAIL, aaa.LANGUAGE))
|
||||
aaa.USERNAME, m.Option(aaa.USERNAME, m.Option(kit.Select(aaa.USERNAME, m.Option(USER_KEY)))),
|
||||
aaa.USERNICK, m.Option(kit.Select("full_name", m.Option(NICK_KEY))),
|
||||
aaa.USERZONE, m.Option(web.DOMAIN), aaa.AVATAR, m.Option(aaa.AVATAR_URL),
|
||||
m.OptionSimple(aaa.LANGUAGE, aaa.EMAIL))
|
||||
}
|
||||
}
|
||||
func (s Client) Orgs(m *ice.Message, arg ...string) {}
|
||||
|
@ -28,7 +28,7 @@ func init() {
|
||||
msg := m.Cmd(web.SPIDE, LARK, "/open-apis/authen/v1/access_token", "grant_type", "authorization_code",
|
||||
cli.CODE, m.Option(cli.CODE), "app_access_token", m.Cmdx(APP, TOKEN, appid))
|
||||
msg = m.Cmd(EMPLOYEE, appid, m.Option(aaa.USERNAME, msg.Append("data.open_id")))
|
||||
m.Cmd(aaa.USER, mdb.CREATE, m.Option(aaa.USERNAME), "", msg.Append(mdb.NAME), LARK, kit.Select(aaa.VOID, aaa.TECH, msg.Append("is_tenant_manager") == ice.TRUE))
|
||||
m.Cmd(aaa.USER, mdb.CREATE, kit.Select(aaa.VOID, aaa.TECH, msg.Append("is_tenant_manager") == ice.TRUE), m.Option(aaa.USERNAME), "", "", LARK)
|
||||
m.Cmd(aaa.USER, mdb.MODIFY, aaa.AVATAR, msg.Append("avatar_url"), aaa.GENDER, kit.Select("女", "男", msg.Append(aaa.GENDER) == "1"),
|
||||
msg.AppendSimple(aaa.MOBILE, aaa.EMAIL, aaa.CITY, aaa.COUNTRY))
|
||||
m.RenderRedirect(m.MergeLink(kit.Select(home, m.Option(cli.BACK)), ice.MSG_SESSID, aaa.SessCreate(m, m.Option(aaa.USERNAME))))
|
||||
|
@ -89,7 +89,7 @@ func init() {
|
||||
}},
|
||||
aaa.USER: {Help: "用户", Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Cmd(aaa.USER, m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))).Length() == 0 {
|
||||
m.Cmd(aaa.USER, mdb.CREATE, aaa.USERNICK, "", m.OptionSimple(aaa.USERNAME))
|
||||
m.Cmd(aaa.USER, mdb.CREATE, aaa.USERROLE, aaa.VOID, m.OptionSimple(aaa.USERNAME))
|
||||
}
|
||||
m.Cmd(aaa.USER, mdb.MODIFY, m.OptionSimple(aaa.USERNAME), aaa.USERNICK, m.Option("nickName"), aaa.USERZONE, WX,
|
||||
aaa.AVATAR, m.Option("avatarUrl"), aaa.GENDER, kit.Select("女", "男", m.Option(aaa.GENDER) == "1"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user