diff --git a/base/aaa/user.go b/base/aaa/user.go index 5f694e9b..fc9a8934 100644 --- a/base/aaa/user.go +++ b/base/aaa/user.go @@ -48,7 +48,7 @@ const USER = "user" func init() { Index.MergeCommands(ice.Commands{ - USER: {Help: "用户", Actions: ice.MergeActions(ice.Actions{ + USER: {Help: "用户", Icon: "Contacts.png", Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { switch mdb.HashInputs(m, arg); arg[0] { case USERNICK: diff --git a/base/web/dream.go b/base/web/dream.go index c540ed1a..eb8edfc9 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -449,7 +449,7 @@ func init() { }, StatsAction(), DreamAction(), DreamTablesAction(), mdb.ImportantHashAction( mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,icons,repos,binary,template,restart,access", html.BUTTON, kit.JoinWord(PORTAL, DESKTOP, ADMIN, MESSAGE, WORD, STATUS, VIMER, COMPILE, XTERM, DREAM), - ctx.TOOLS, kit.Simple(SPIDE, ROUTE, STORE, MATRIX), + ctx.TOOLS, kit.Simple(ROUTE, SPIDE, STORE, MATRIX), )), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 { simple := m.Option("dream.simple") == ice.TRUE diff --git a/base/web/html/html.go b/base/web/html/html.go index 56023315..346742ff 100644 --- a/base/web/html/html.go +++ b/base/web/html/html.go @@ -37,15 +37,24 @@ const ( ApplicationForm = "application/x-www-form-urlencoded" ApplicationOctet = "application/octet-stream" ApplicationJSON = "application/json" + TEXT_PLAIN = "text/plain" ) const ( H1 = "h1" H2 = "h2" H3 = "h3" SPAN = "span" + TEXT = "text" + PLUG = "plug" + TEXTAREA = "textarea" + PASSWORD = "password" CHECKBOX = "checkbox" + SELECT = "select" + BUTTON = "button" + CHROME = "chrome" STYLE = "style" + FLOAT = "float" WIDTH = "width" HEIGHT = "height" @@ -58,39 +67,34 @@ const ( WHITE = "white" BLACK = "black" SILVER = "silver" + DANGER = "danger" PROJECT = "project" CONTENT = "content" PROFILE = "profile" 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" + INPUT = "input" OUTPUT = "output" LAYOUT = "layout" RESIZE = "resize" + FILTER = "filter" REFRESH = "refresh" CONFIRM = "confirm" - FILTER = "filter" - DANGER = "danger" -) - -const ( - FLOAT = "float" - CHROME = "chrome" - - TEXT_PLAIN = "text/plain" + PLUGIN_STORY_JSON = "/plugin/story/json.js" + ICONS_MAIL = "usr/icons/Mail.png" + ICONS_DREAM = "usr/icons/Launchpad.png" + ICONS_SETTINGS = "usr/icons/System Settings.png" + GetLocation = "getLocation" + ConnectWifi = "ConnectWifi" + GetClipboardData = "getClipboardData" + ScanQRCode = "scanQRCode" + ChooseImage = "chooseImage" + Record1 = "record1" + Record2 = "record2" ) func IsImage(name, mime string) bool { @@ -103,16 +107,6 @@ func IsAudio(name, mime string) bool { return strings.HasPrefix(mime, "audio/") } -const ( - GetLocation = "getLocation" - ConnectWifi = "ConnectWifi" - GetClipboardData = "getClipboardData" - ScanQRCode = "scanQRCode" - ChooseImage = "chooseImage" - Record1 = "record1" - Record2 = "record2" -) - func Format(tag string, inner string, arg ...string) string { return kit.Format("<%s %s>%s", tag, kit.JoinProperty(arg...), inner, tag) } @@ -123,13 +117,6 @@ func FormatDanger(value string) string { return Format(SPAN, value, STYLE, kit.JoinCSS(BG_COLOR, "var(--danger-bg-color)", FG_COLOR, "var(--danger-fg-color)")) } -var SystemList = []string{ - Android, - IPhone, - Mac, - Linux, - Windows, -} var AgentList = []string{ MicroMessenger, Alipay, @@ -139,3 +126,10 @@ var AgentList = []string{ Firefox, "Go-http-client", } +var SystemList = []string{ + Android, + IPhone, + Mac, + Linux, + Windows, +} diff --git a/core/chat/group.go b/core/chat/group.go index 9abbef32..1b3e0e8a 100644 --- a/core/chat/group.go +++ b/core/chat/group.go @@ -12,7 +12,7 @@ const GROUP = "group" func init() { Index.MergeCommands(ice.Commands{ - GROUP: {Help: "群组", Icon: "Contacts.png", Actions: ice.MergeActions(ice.Actions{ + GROUP: {Help: "群组", Actions: ice.MergeActions(ice.Actions{ mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { switch arg[0] { case mdb.NAME: diff --git a/core/chat/message.go b/core/chat/message.go index 27c15661..dfc31743 100644 --- a/core/chat/message.go +++ b/core/chat/message.go @@ -21,10 +21,10 @@ 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, 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) + MessageCreate(m, aaa.APPLY, html.ICONS_MAIL) + MessageCreate(m, web.DREAM, html.ICONS_DREAM) + MessageCreate(m, cli.SYSTEM, html.ICONS_SETTINGS) + MessageInsert(m, cli.SYSTEM, mdb.TYPE, html.TEXT, mdb.NAME, cli.BOOTINFO, mdb.TEXT, m.Cmdx(cli.RUNTIME), ctx.DISPLAY, html.PLUGIN_STORY_JSON) }}, 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.") { @@ -38,7 +38,7 @@ func init() { mdb.INSERT: {Hand: func(m *ice.Message, arg ...string) { 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 ", "刷新列表查看新消息 ")) + 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) @@ -48,6 +48,12 @@ func init() { 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)) }) }}, + web.OPEN: {Hand: func(m *ice.Message, arg ...string) { m.ProcessOpen(m.MergePod(m.Option(web.TARGET))) }}, + web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) { + if ice.Info.Important { + MessageInsert(m, web.DREAM, mdb.TYPE, html.PLUG, ctx.INDEX, IFRAME, ctx.ARGS, web.S(m.Option(mdb.NAME))) + } + }}, aaa.USER_CREATE: {Hand: func(m *ice.Message, arg ...string) { if ice.Info.Important { MessageInsert(m, aaa.APPLY, mdb.TYPE, html.PLUG, mdb.NAME, m.ActionKey(), ctx.INDEX, aaa.USER, ctx.ARGS, m.Option(aaa.USERNAME)) @@ -56,12 +62,6 @@ func init() { aaa.USER_REMOVE: {Hand: func(m *ice.Message, arg ...string) { MessageInsert(m, aaa.APPLY, mdb.TYPE, html.PLUG, mdb.NAME, m.ActionKey(), ctx.INDEX, aaa.USER, ctx.ARGS, m.Option(aaa.USERNAME)) }}, - web.DREAM_CREATE: {Hand: func(m *ice.Message, arg ...string) { - if ice.Info.Important { - 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(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]) @@ -88,13 +88,18 @@ func init() { }) m.Sort(mdb.TIME, ice.STR_R) } else { + if msg := mdb.ZoneSelects(m.Spawn(), arg[0]); !kit.IsIn(m.Option(ice.MSG_USERROLE), msg.Append(mdb.TYPE), aaa.TECH, aaa.ROOT) { + return + } mdb.ZoneSelect(m, arg...).Sort(mdb.ID, ice.INT) } }}, }) } func MessageCreate(m *ice.Message, zone, icons string) { - m.Cmd(MESSAGE, mdb.CREATE, mdb.TYPE, aaa.TECH, mdb.ICONS, icons, mdb.ZONE, zone) + if _, ok := m.CmdMap(MESSAGE, mdb.ZONE)[zone]; !ok { + m.Cmd(MESSAGE, mdb.CREATE, mdb.TYPE, aaa.TECH, mdb.ICONS, icons, mdb.ZONE, zone) + } } func MessageInsert(m *ice.Message, zone string, arg ...string) { m.Cmd(MESSAGE, mdb.INSERT, zone, tcp.DIRECT, tcp.RECV, arg)