From 3534665b88505024206792255e5e94dec076f0cd Mon Sep 17 00:00:00 2001 From: shy Date: Mon, 21 Aug 2023 19:05:44 +0800 Subject: [PATCH] add some --- base/aaa/email.go | 22 ++++++++++++++-------- base/mdb/mdb.go | 8 +++++++- core/chat/header.go | 7 ++++++- core/chat/macos/desktop.css | 3 --- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/base/aaa/email.go b/base/aaa/email.go index 550abd1c..c5266cc5 100644 --- a/base/aaa/email.go +++ b/base/aaa/email.go @@ -10,6 +10,9 @@ import ( const ( SEND = "send" + FROM = "from" + TO = "to" + CC = "cc" SUBJECT = "subject" CONTENT = "content" ) @@ -17,25 +20,28 @@ const EMAIL = "email" func init() { const ( - TO = "to" ADMIN = "admin" SERVICE = "service" + MAILBOX = "mailbox" NL = "\r\n" DF = ": " ) Index.MergeCommands(ice.Commands{ - EMAIL: {Name: "email name auto create website", Help: "邮件", Actions: ice.MergeActions(ice.Actions{ - "website": {Help: "邮箱", Hand: func(m *ice.Message, arg ...string) { - // m.ProcessOpen(m.Cmdv("web.spide", EMAIL, "client.url")) - // m.EchoIFrame(m.Cmdv("web.spide", EMAIL, "client.url")).ProcessInner() - m.EchoIFrame("/chat/pod/20230511-golang-story/cmd/web.chat.email.client").ProcessInner() + EMAIL: {Name: "email name auto create mailbox", Help: "邮件", Actions: ice.MergeActions(ice.Actions{ + MAILBOX: {Help: "邮箱", Hand: func(m *ice.Message, arg ...string) { m.EchoIFrame(mdb.Config(m, MAILBOX)).ProcessInner() }}, + mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { + mdb.HashInputs(m, arg) + switch arg[0] { + case CONTENT: + m.Push(arg[0], m.Option(ice.MSG_USERWEB)) + } }}, - SEND: {Name: "send to*='shylinux@163.com' subject*=hi content*:textarea=hello", Help: "发送", Hand: func(m *ice.Message, arg ...string) { + SEND: {Name: "send to*='shylinux@163.com' cc subject*=hi content*:textarea=hello", Help: "发送", Hand: func(m *ice.Message, arg ...string) { msg := m.Cmd("", m.OptionDefault(mdb.NAME, ADMIN)) if m.Warn(msg.Append(SERVICE) == "", ice.ErrNotValid, SERVICE) { return } - content := []byte(kit.JoinKV(DF, NL, "From", msg.Append(USERNAME), "To", m.Option(TO), "Subject", m.Option(SUBJECT), "Content-Type", "text/html; charset=UTF-8") + NL + NL + m.Option(CONTENT)) + content := []byte(kit.JoinKV(DF, NL, kit.Simple(FROM, msg.Append(USERNAME), m.OptionSimple(TO, CC, SUBJECT), "Content-Type", "text/html; charset=UTF-8")...) + NL + NL + m.Option(CONTENT)) auth := smtp.PlainAuth("", msg.Append(USERNAME), msg.Append(PASSWORD), kit.Split(msg.Append(SERVICE), ice.DF)[0]) m.Logs(EMAIL, SEND, string(content)).Warn(smtp.SendMail(msg.Append(SERVICE), auth, msg.Append(USERNAME), kit.Split(m.Option(TO)), content)) }}, diff --git a/base/mdb/mdb.go b/base/mdb/mdb.go index bf910992..860e9138 100644 --- a/base/mdb/mdb.go +++ b/base/mdb/mdb.go @@ -264,7 +264,13 @@ func AutoConfig(arg ...Any) *ice.Action { } } else if cmd.Actions[CREATE] != nil { if inputs := []Any{}; cmd.Meta[CREATE] == nil { - kit.For(kit.Filters(kit.Split(HashField(m)), TIME, HASH), func(k string) { inputs = append(inputs, k) }) + kit.For(kit.Filters(kit.Split(HashField(m)), TIME, HASH), func(k string) { + if kit.IsIn(k, kit.Split(Config(m, SHORT))...) { + inputs = append(inputs, k+"*") + } else { + inputs = append(inputs, k) + } + }) m.Design(CREATE, "创建", inputs...) } } diff --git a/core/chat/header.go b/core/chat/header.go index ae0ae937..5f23db76 100644 --- a/core/chat/header.go +++ b/core/chat/header.go @@ -81,6 +81,11 @@ func init() { aaa.AVATAR: {Hand: _header_users}, web.SHARE: {Hand: _header_share}, "webpack": {Hand: ctx.CmdHandler("webpack", "build")}, + "email": {Name: "email to subject content", Hand: func(m *ice.Message, arg ...string) { + m.Options("volcano", web.UserHost(m), "version", web.RenderVersion(m)) + m.Option(ice.MSG_USERWEB, kit.MergeURL(m.Option(ice.MSG_USERWEB), web.SHARE, m.Cmdx(web.SHARE, mdb.CREATE, mdb.TYPE, web.LOGIN))) + m.Cmdy(aaa.EMAIL, aaa.SEND, arg, aaa.CONTENT, nfs.Template(m, "email.html")) + }}, "theme": {Hand: func(m *ice.Message, arg ...string) { if !tcp.IsLocalHost(m, m.Option(ice.MSG_USERIP)) { return @@ -96,7 +101,7 @@ func init() { return } msg := m.Cmd(aaa.USER, m.Option(ice.MSG_USERNAME)) - kit.For([]string{aaa.USERNICK, aaa.LANGUAGE}, func(k string) { m.Option(k, msg.Append(k)) }) + kit.For([]string{aaa.USERNICK, aaa.LANGUAGE, aaa.EMAIL}, func(k string) { m.Option(k, msg.Append(k)) }) kit.For([]string{aaa.AVATAR, aaa.BACKGROUND}, func(k string) { m.Option(k, web.RequireFile(m, msg.Append(k))) }) kit.If(m.Option(aaa.LANGUAGE) == "", func() { m.Option(aaa.LANGUAGE, kit.Split(m.R.Header.Get(web.AcceptLanguage), ",;")[0]) }) m.Echo(mdb.Config(m, TITLE)).Option(MENUS, mdb.Config(m, MENUS)) diff --git a/core/chat/macos/desktop.css b/core/chat/macos/desktop.css index 77e233a6..aa31b4d9 100644 --- a/core/chat/macos/desktop.css +++ b/core/chat/macos/desktop.css @@ -5,7 +5,6 @@ fieldset.macos.desktop>div.output>fieldset.macos { background-color:transparent; fieldset.macos.desktop>div.output>fieldset.macos>div.output { background-color:transparent; } fieldset.macos.desktop>div.output>fieldset.macos.menu { line-height:25px; border-radius:0; height:25px; width:100%; position:absolute; top:0; overflow:hidden; } fieldset.macos.desktop>div.output>fieldset.macos.searchs { position:absolute; z-index:100; } -// fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.icon.delete { display:none; } fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword input { width:320px; background-color:transparent; border:#404141 solid 1px; } fieldset.macos.desktop>div.output>fieldset.macos.searchs>form.option>div.item.keyword:hover { background-color:transparent; } fieldset.macos.desktop>div.output>fieldset.macos.notifications { border-radius:0; height:calc(100% - 125px); width:250px; overflow:auto; position:absolute; top:25px; right:0; } @@ -40,7 +39,6 @@ fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item.icon fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:20px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>form.option>div.item:last-child { margin-right:80px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>* { margin:10px 0px 10px 10px; } -// fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.item.icons>span.icon { margin-top:10px; } fieldset.macos.desktop>div.output>div.desktop>fieldset>div.action>div.item:last-child { margin-right:120px; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.wiki.feel>div.status { display:none; } fieldset.macos.desktop>div.output>div.desktop>fieldset.web.code.vimer>div.status { display:none; } @@ -75,7 +73,6 @@ body.light fieldset.macos.desktop>div.output>fieldset.macos.notifications { back body.light fieldset.macos.desktop>div.output>fieldset.macos.notifications div.item { background-color:#daefff99; } body.light fieldset.macos.desktop>div.output>div.desktop>fieldset { background-color:#dee1e6; } body.light fieldset.macos.desktop>div.output>div.desktop fieldset input:not(:hover) { background-color:white; } -// body.light fieldset.macos.desktop>div.output>div.desktop fieldset input:not(:hover) { background-color:white; border:#e4e5e5 solid 1px; } body.light fieldset.macos.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(odd) { background-color:#f4f5f5; } body.light fieldset.macos.desktop>div.output>div.desktop fieldset table.content tbody tr:nth-child(even) { background-color:white; } body.light fieldset.macos.desktop>div.output>div.desktop fieldset>div.output.card>div.item { border:#d3d4d4 solid 1px; }