1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-03-16 12:38:41 +08:00
parent 0a98abcc5f
commit 5aff286771
5 changed files with 57 additions and 24 deletions

View File

@ -230,7 +230,7 @@ const DREAM = "dream"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
DREAM: {Name: "dream refresh", Help: "梦想家", Icon: "Launchpad.png", Role: aaa.VOID, Meta: kit.Dict( DREAM: {Name: "dream refresh", Help: "梦想家", Icon: "Launchpad.png", Role: aaa.VOID, Meta: kit.Dict(
ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict(WORKER, "空间", SERVER, "机器", ORIGIN, "主机")), ice.CTX_TRANS, kit.Dict(html.INPUT, kit.Dict(WORKER, "空间", SERVER, "门户", ORIGIN, "主机")),
), Actions: ice.MergeActions(ice.Actions{ ), Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
m = m.Spawn() m = m.Spawn()
@ -487,6 +487,16 @@ func init() {
} }
if !m.IsCliUA() && aaa.IsTechOrRoot(m) { if !m.IsCliUA() && aaa.IsTechOrRoot(m) {
_dream_list_more(m, simple) _dream_list_more(m, simple)
} else {
msg := m.Spawn(kit.Dict(ice.MSG_USERROLE, aaa.TECH))
m.Cmds(SPACE).Table(func(value ice.Maps) {
if value[mdb.TYPE] == SERVER {
if p := ProxyDomain(msg, value[mdb.NAME]); p != "" {
value[mdb.TEXT] = p
m.PushRecord(value, mdb.TIME, mdb.TYPE, mdb.NAME, mdb.ICONS, nfs.MODULE, nfs.VERSION, mdb.TEXT)
}
}
})
} }
if ice.Info.NodeType == WORKER || !aaa.IsTechOrRoot(m) || m.IsCliUA() { if ice.Info.NodeType == WORKER || !aaa.IsTechOrRoot(m) || m.IsCliUA() {
m.Action() m.Action()
@ -503,7 +513,7 @@ func init() {
} }
if !aaa.IsTechOrRoot(m) { if !aaa.IsTechOrRoot(m) {
m.Options(ice.MSG_TOOLKIT, "") m.Options(ice.MSG_TOOLKIT, "")
m.Option(ice.MSG_ONLINE, ice.FALSE) m.Options(ice.MSG_ONLINE, ice.FALSE)
} }
} else if arg[0] == ctx.ACTION { } else if arg[0] == ctx.ACTION {
gdb.Event(m, DREAM_ACTION, arg) gdb.Event(m, DREAM_ACTION, arg)

View File

@ -56,9 +56,12 @@ func Render(m *ice.Message, cmd string, args ...ice.Any) bool {
case COOKIE: // value [name [path [expire]]] case COOKIE: // value [name [path [expire]]]
RenderCookie(m, arg[0], arg[1:]...) RenderCookie(m, arg[0], arg[1:]...)
case STATUS, ice.RENDER_STATUS: // [code [text]] case STATUS, ice.RENDER_STATUS: // [code [text]]
// RenderStatus(m.W, kit.Int(kit.Select("200", arg, 0)), kit.Select(m.Result(), strings.Join(kit.Slice(arg, 1), " "))) if m.IsCliUA() {
RenderStatus(m.W, kit.Int(kit.Select("200", arg, 0)), kit.Select(m.Result(), strings.Join(kit.Slice(arg, 1), " ")))
} else {
m.W.WriteHeader(kit.Int(kit.Select("200", arg, 0))) m.W.WriteHeader(kit.Int(kit.Select("200", arg, 0)))
renderMsg(m) renderMsg(m)
}
case ice.RENDER_REDIRECT: // url [arg...] case ice.RENDER_REDIRECT: // url [arg...]
http.Redirect(m.W, m.R, m.MergeLink(arg[0], arg[1:]), http.StatusTemporaryRedirect) http.Redirect(m.W, m.R, m.MergeLink(arg[0], arg[1:]), http.StatusTemporaryRedirect)
case ice.RENDER_DOWNLOAD: // file [type [name]] case ice.RENDER_DOWNLOAD: // file [type [name]]

View File

@ -53,8 +53,12 @@ func init() {
return return
} }
if m.Display(""); len(arg) == 0 { if m.Display(""); len(arg) == 0 {
list := []string{}
m.Cmd(SPIDE, arg, kit.Dict(ice.MSG_FIELDS, "time,icons,client.type,client.name,client.origin")).Table(func(value ice.Maps) { m.Cmd(SPIDE, arg, kit.Dict(ice.MSG_FIELDS, "time,icons,client.type,client.name,client.origin")).Table(func(value ice.Maps) {
kit.If(value[CLIENT_TYPE] == nfs.REPOS, func() { m.Push(mdb.NAME, value[CLIENT_NAME]).Push(mdb.ICONS, value[mdb.ICONS]) }) kit.If(value[CLIENT_TYPE] == nfs.REPOS, func() {
list = append(list, value[CLIENT_NAME])
m.Push(mdb.NAME, value[CLIENT_NAME]).Push(mdb.ICONS, value[mdb.ICONS]).Push(ORIGIN, value[CLIENT_ORIGIN])
})
}) })
if ice.Info.NodeType == WORKER || !aaa.IsTechOrRoot(m) { if ice.Info.NodeType == WORKER || !aaa.IsTechOrRoot(m) {
m.Action() m.Action()
@ -67,20 +71,24 @@ func init() {
m.Cmdy(DREAM) m.Cmdy(DREAM)
return return
} }
dream := C(DREAM)
origin := SpideOrigin(m, arg[0]) origin := SpideOrigin(m, arg[0])
kit.If(kit.IsIn(arg[0], ice.OPS, ice.DEV), func() { kit.If(origin == "", func() { arg[0], origin, dream = ice.DEV, arg[0], arg[0]+dream })
if kit.IsIn(kit.ParseURL(origin).Hostname(), m.Cmds(tcp.HOST).Appendv(aaa.IP)...) { if kit.IsIn(kit.ParseURL(origin).Hostname(), append(m.Cmds(tcp.HOST).Appendv(aaa.IP), tcp.LOCALHOST)...) {
origin = m.Option(ice.MSG_USERHOST) origin = m.Option(ice.MSG_USERHOST)
} else { } else {
origin = tcp.PublishLocalhost(m, origin) origin = tcp.PublishLocalhost(m, origin)
} }
})
list := m.Spawn(ice.Maps{ice.MSG_FIELDS: ""}).CmdMap(DREAM, mdb.NAME) list := m.Spawn(ice.Maps{ice.MSG_FIELDS: ""}).CmdMap(DREAM, mdb.NAME)
m.SetAppend().Spawn().SplitIndex(m.Cmdx(SPIDE, arg[0], C(DREAM), kit.Dict(mdb.ConfigSimple(m, CLIENT_TIMEOUT)))).Table(func(value ice.Maps) { stat := map[string]int{}
if value[mdb.TYPE] != WORKER { m.SetAppend().Spawn().SplitIndex(m.Cmdx(SPIDE, arg[0], dream, kit.Dict(mdb.ConfigSimple(m, CLIENT_TIMEOUT)))).Table(func(value ice.Maps) {
stat[value[mdb.TYPE]]++
m.Push("", value, kit.Split("time,type,name,icons,repos,binary,module,version"))
if value[mdb.TYPE] == SERVER {
m.Push(mdb.TEXT, value[mdb.TEXT]).Push(ORIGIN, value[mdb.TEXT])
m.PushButton()
return return
} }
m.Push("", value, kit.Split("time,name,icons,repos,binary,module,version"))
m.Push(mdb.TEXT, value[nfs.REPOS]).Push(ORIGIN, origin) m.Push(mdb.TEXT, value[nfs.REPOS]).Push(ORIGIN, origin)
if _, ok := list[value[mdb.NAME]]; ok || arg[0] == ice.OPS { if _, ok := list[value[mdb.NAME]]; ok || arg[0] == ice.OPS {
m.PushButton(PORTAL, DESKTOP, ADMIN, OPEN) m.PushButton(PORTAL, DESKTOP, ADMIN, OPEN)
@ -90,7 +98,7 @@ func init() {
m.PushButton(PORTAL, INSTALL) m.PushButton(PORTAL, INSTALL)
} }
}) })
m.StatusTimeCount(ORIGIN, origin) m.StatusTimeCount(ORIGIN, origin, stat)
} }
}}, }},
}) })

View File

@ -2,13 +2,22 @@ Volcanos(chat.ONIMPORT, {
_init: function(can, msg) { can.ui = can.onappend.layout(can), can.onimport.__project(can, msg) }, _init: function(can, msg) { can.ui = can.onappend.layout(can), can.onimport.__project(can, msg) },
__project: function(can, msg) { var select, current = can.sup.db._zone||can.db.hash[0]||(can.user.info.nodetype == web.WORKER? ice.OPS: ice.DEV) __project: function(can, msg) { var select, current = can.sup.db._zone||can.db.hash[0]||(can.user.info.nodetype == web.WORKER? ice.OPS: ice.DEV)
msg.Table(function(value) { msg.Table(function(value) {
var _target = can.onimport.item(can, value, function(event) { can.isCmdMode()? can.misc.SearchHash(can, value.name): can.sup.db._zone = value.name var _target = can.onimport.item(can, value, function(event) {
if (can.onmotion.cache(can, function() { return value.name }, can.ui.content, can._status)) { return can.onimport.layout(can) } can.onimport.dream(event, can, value, _target)
can.run(can.request(event, {_toast: ice.PROCESS}), [value.name], function(msg) {
can.onimport.__content(can, msg), can.onappend._status(can, msg), can.onimport.layout(can)
})
}, null, can.ui.project); select = (value.name == current? _target: select)||_target }, null, can.ui.project); select = (value.name == current? _target: select)||_target
}), select && select.click(), can.onmotion.orderShow(can, can.ui.project) }), select && select.click(), can.onmotion.orderShow(can, can.ui.project)
can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) }) can.onappend.style(can, "output card", can.ui.content), can.onmotion.delay(can, function() { can.onimport.layout(can) })
}, __content: function(can, msg) { can.onimport.card(can, msg) }, }, __content: function(can, msg, dev, target) { var list = []
can.onimport.card(can, msg, null, function(value) { if (value.type == web.SERVER) { list.push(value); return true } })
can.onimport.itemlist(can, list, function(event, value) { can.onimport.dream(event, can, value, event.currentTarget) }, null, target)
},
dream: function(event, can, value, target) { can.isCmdMode()? can.misc.SearchHash(can, value.name): can.sup.db._zone = value.name
can.page.Select(can, can.ui.project, html.DIV_ITEM, function(_target) {
can.page.ClassList.set(can, _target, html.SELECT, _target == target)
})
if (can.onmotion.cache(can, function() { return value.name }, can.ui.content, can._status)) { return can.onimport.layout(can) }
can.run(can.request(event, {_toast: ice.PROCESS}), [value.origin], function(msg) {
can.onimport.__content(can, msg, value.name, target), can.onappend._status(can, msg), can.onimport.layout(can)
})
},
}, [""]) }, [""])

View File

@ -2,6 +2,7 @@ package chat
import ( import (
ice "shylinux.com/x/icebergs" ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/aaa"
"shylinux.com/x/icebergs/base/web" "shylinux.com/x/icebergs/base/web"
kit "shylinux.com/x/toolkits" kit "shylinux.com/x/toolkits"
) )
@ -16,7 +17,9 @@ func init() {
web.RenderMain(m) web.RenderMain(m)
default: default:
if m.IsCliUA() { if m.IsCliUA() {
if aaa.Right(m, arg) {
m.Cmdy(arg, m.Optionv(ice.ARG)).RenderResult() m.Cmdy(arg, m.Optionv(ice.ARG)).RenderResult()
}
} else { } else {
web.RenderCmd(m, cmd, kit.Slice(arg, 1)) web.RenderCmd(m, cmd, kit.Slice(arg, 1))
} }