forked from x/icebergs
opt portal
This commit is contained in:
parent
1590112fba
commit
477c368c78
@ -92,6 +92,7 @@ func _system_exec(m *ice.Message, cmd *exec.Cmd) {
|
||||
m.Push(CMD_OUT, out.String()).Push(CMD_ERR, err.String())
|
||||
// m.Echo(strings.TrimRight(out.String(), lex.NL))
|
||||
m.Echo(out.String())
|
||||
m.Echo(err.String())
|
||||
if m.IsErr() {
|
||||
m.Option(ice.MSG_ARGS, kit.Simple(http.StatusBadRequest, cmd.Args, err.String()))
|
||||
m.Echo(strings.TrimRight(err.String(), lex.NL))
|
||||
|
@ -77,6 +77,14 @@ func init() {
|
||||
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.DIR, arg[1:], nfs.DIR_CLI_FIELDS) }},
|
||||
mdb.CREATE: {Hand: func(m *ice.Message, arg ...string) { _publish_file(m, m.Option(nfs.PATH)) }},
|
||||
nfs.TRASH: {Hand: func(m *ice.Message, arg ...string) { nfs.Trash(m, path.Join(ice.USR_PUBLISH, m.Option(nfs.PATH))) }},
|
||||
"binary": {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Options(web.DOMAIN, web.UserHost(m), "binary", "ice.linux.amd64")
|
||||
m.EchoScript(strings.TrimSpace(nfs.Template(m, kit.Keys("binary", SH))))
|
||||
}},
|
||||
"source": {Hand: func(m *ice.Message, arg ...string) {
|
||||
m.Options(web.DOMAIN, web.UserHost(m), "source", ice.Info.Make.Remote)
|
||||
m.EchoScript(strings.TrimSpace(nfs.Template(m, kit.Keys("source", SH))))
|
||||
}},
|
||||
}, ctx.ConfAction(mdb.FIELD, nfs.PATH), aaa.RoleAction()), Hand: func(m *ice.Message, arg ...string) {
|
||||
if m.Option(nfs.DIR_ROOT, ice.USR_PUBLISH); len(arg) == 0 {
|
||||
_publish_list(m).Cmdy("", ice.CONTEXTS)
|
||||
|
13
core/wiki/iframe.go
Normal file
13
core/wiki/iframe.go
Normal file
@ -0,0 +1,13 @@
|
||||
package wiki
|
||||
|
||||
import ice "shylinux.com/x/icebergs"
|
||||
|
||||
const IFRAME = "iframe"
|
||||
|
||||
func init() {
|
||||
Index.MergeCommands(ice.Commands{
|
||||
IFRAME: {Name: "iframe link auto", Hand: func(m *ice.Message, arg ...string) {
|
||||
_wiki_template(m, "", "", arg[0], arg[1:]...)
|
||||
}},
|
||||
})
|
||||
}
|
@ -1,33 +1,39 @@
|
||||
fieldset.web.wiki.portal>div.output>div.header { background-color: rgb(22 31 49); color:white; text-align:center; display:flex; justify-content:center; height:64px; }
|
||||
fieldset.web.wiki.portal>div.output>div.header { background-color: rgb(22 31 49); color:white; height:64px; }
|
||||
fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] { display:flex; justify-content:center; }
|
||||
fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item { padding:20px; float:left; }
|
||||
fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item { padding:20px; }
|
||||
fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item.space { padding:0px; margin:0 40px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout { display:flex; justify-content:center; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.nav { padding:40px 40px; border-right:lightgray solid 1px; --hover-bg-color:var(--plugin-bg-color); }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.nav { padding:40px 40px; border-right:lightgray solid 1px; width:240px; overflow:auto; --hover-bg-color:var(--plugin-bg-color); }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.item { padding:10px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.list div.item { padding-left:20px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.nav div.story[data-name=navmenu] div.list div.item { padding-left:40px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main { white-space:pre-wrap; padding:40px; height:600px; min-width:200px; max-width:1000px; overflow:auto; --hover-bg-color:var(--plugin-bg-color); }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset:not(.hide) { display:flex; flex-wrap:wrap; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset>div.output { width:100%; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.aside { padding:40px 20px; width:200px; --hover-bg-color:var(--plugin-bg-color); }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset>div.status { width:100%; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.aside { padding:40px 20px; width:200px; overflow:auto; width:200px; --hover-bg-color:var(--plugin-bg-color); }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item { padding:5px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.aside div.item.section { padding-left:20px; }
|
||||
body.dark fieldset.web.wiki.portal>div.output { background-color:black; }
|
||||
body.dark fieldset.web.wiki.portal>div.output>div.header { color:silver; }
|
||||
body.dark fieldset.web.wiki.portal>div.output>div.layout { background-color:black; }
|
||||
body.dark fieldset.web.wiki.portal>div.output>div.layout>div.nav { border-right:gray solid 1px; }
|
||||
body.light fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { background-color:black; color:white; }
|
||||
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main>* { margin:auto; }
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main { padding:0; max-width:100%; }
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main h2 { text-align:center; max-width:1000px; margin:0 auto;}
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main p { text-align:center; max-width:1000px; }
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main div.story.flex { display:flex; justify-content:center; }
|
||||
fieldset.web.wiki.portal.home>div.output>div.layout>div.main>div.story.flex>* { padding:40px 40px; }
|
||||
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main>* { margin:auto; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.flex { display:flex; justify-content:center; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main div.story.flex>* { padding:40px 40px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main h1 { margin:10px 0; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main h2 { text-align:center; max-width:1000px; margin:0 auto;}
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main h2 { margin:0 auto; max-width:1000px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main ul>li { white-space:pre-wrap; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main p { white-space:pre-wrap; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main p { text-align:center; max-width:1000px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main p { max-width:1000px; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main div.story[data-type=spark][data-name=shell] { background-color:black; color:white; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main input.story[type=button] { background-color:blue; color:white; font-family:system-ui; font-weight:bold; padding:20px 40px; margin:10px; height:60px; border-radius:0; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main iframe { height:50%; min-height:400px; width:100%; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { padding:20px; border-radius:10px; }
|
||||
body.light fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output div.content { background-color:black; color:white; }
|
||||
fieldset.web.wiki.portal>div.output>div.layout>div.main fieldset.inner.output {
|
||||
--code-comment:white;
|
||||
--code-keyword:orange;
|
||||
|
@ -19,7 +19,7 @@ func init() {
|
||||
INDEX_SHY = "index.shy"
|
||||
)
|
||||
Index.MergeCommands(ice.Commands{
|
||||
PORTAL: {Name: "portal path auto", Help: "门户", Actions: ice.MergeActions(ice.Actions{
|
||||
PORTAL: {Name: "portal path auto", Help: "网站/门户", Actions: ice.MergeActions(ice.Actions{
|
||||
mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) {
|
||||
mdb.IsSearchForEach(m, arg, func() []string { return []string{web.LINK, PORTAL, m.MergePodCmd("", "") + nfs.PS} })
|
||||
}},
|
||||
|
@ -1,17 +1,17 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { can.db = {nav: {}}, can.require(["/plugin/local/wiki/word.js"]), can.Conf(html.PADDING, 0)
|
||||
_init: function(can, msg) { can.require(["/plugin/local/wiki/word.js"]), can.db = {nav: {}}, can.Conf(html.PADDING, 0)
|
||||
can.onmotion.clear(can), can.sup.onexport.link = function() { return "/wiki/portal/" }
|
||||
can.ui = can.onappend.layout(can, ["header", ["nav", "main", "aside"]], html.FLOW)
|
||||
can.ui.header.innerHTML = msg.Append("header"), can.ui.nav.innerHTML = msg.Append("nav")
|
||||
can.db.prefix = location.pathname.indexOf("/wiki/portal/") == 0? "/wiki/portal/": "/chat/cmd/web.wiki.portal/"
|
||||
can.db.current = can.isCmdMode()? can.base.trimPrefix(location.pathname, can.db.prefix): can.Option(nfs.PATH)
|
||||
if (msg.Append("nav") == "") {
|
||||
can.db.current == "" && can.page.style(can, can.ui.main, "padding", "0px", "max-width", "2000px")
|
||||
can.onmotion.hidden(can, can.ui.nav), can.onmotion.hidden(can, can.ui.aside)
|
||||
can.onimport.content(can, "content.shy")
|
||||
}
|
||||
if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT), can.ConfHeight(can.page.height()), can.ConfWidth(can.page.width()) }
|
||||
can.onappend.style(can, {height: can.ConfHeight()-can.ui.header.offsetHeight, width: can.ConfWidth()-can.ui.nav.offsetWidth-can.ui.aside.offsetWidth}, can.ui.main)
|
||||
can.ConfHeight(can.ui.main.offsetHeight), can.ConfWidth(can.ui.main.offsetWidth)
|
||||
can.page.ClassList.del(can, can._fields, "home")
|
||||
if (msg.Append("nav") == "") {
|
||||
can.onmotion.hidden(can, can.ui.nav), can.onmotion.hidden(can, can.ui.aside)
|
||||
can.db.current == "" && can.onappend.style(can, "home"), can.onimport.content(can, "content.shy")
|
||||
}
|
||||
can.ui.layout(can.ConfHeight(), can.ConfWidth()), can.ConfHeight(can.ui.main.offsetHeight), can.ConfWidth(can.ui.main.offsetWidth)
|
||||
can.page.Select(can, can._output, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}
|
||||
can.core.CallFunc([can.onimport, can.onimport[meta.name]? meta.name: meta.type||target.tagName.toLowerCase()], [can, meta, target, can.ConfWidth()])
|
||||
meta.style && can.page.style(can, target, can.base.Obj(meta.style))
|
||||
@ -22,8 +22,7 @@ Volcanos(chat.ONIMPORT, {
|
||||
navmenu: function(can, meta, target) {
|
||||
can.onimport.list(can, can.base.Obj(meta.data), function(event, item) {
|
||||
can.page.Select(can, target, html.DIV_ITEM, function(target) { target != event.target && can.page.ClassList.del(can, target, html.SELECT) })
|
||||
if (item.list && item.list.length > 0) { return }
|
||||
can.onaction.route(event, can, item.meta.link)
|
||||
item.list && item.list.length > 0 || can.onaction.route(event, can, item.meta.link)
|
||||
}, target, can.page.ClassList.has(can, target.parentNode, "header")? function(target, item) {
|
||||
if (item.meta.name == "_") { target.innerHTML = "", can.onappend.style(can, html.SPACE, target) }
|
||||
}: function(target, item) { can.db.nav[item.meta.link] = target
|
||||
@ -36,12 +35,9 @@ Volcanos(chat.ONIMPORT, {
|
||||
field: function(can, meta, target, width) { var item = can.base.Obj(meta.meta); item.inputs = item.list, item.feature = item.meta
|
||||
can.onappend._init(can, item, [chat.PLUGIN_STATE_JS], function(sub) {
|
||||
sub.run = function(event, cmds, cb, silent) { can.runActionCommand(event, item.index, cmds, cb, true) }
|
||||
sub.onimport.size(sub, parseInt(item.height)||can.base.Min(can.ConfHeight()/2, 300, 600), can.base.Max(parseInt(item.width)||width||can.ConfWidth(), 1000))
|
||||
sub.onimport.size(sub, parseInt(item.height)||can.base.Min(can.ConfHeight()/2, 300, 600), parseInt(item.width)||can.base.Max(width||can.ConfWidth(), 1000))
|
||||
}, can.ui.main, target)
|
||||
},
|
||||
image: function(can, meta, target) {
|
||||
can.page.style(can, target, html.WIDTH, can.ConfWidth())
|
||||
},
|
||||
content: function(can, file) {
|
||||
can.runActionCommand(event, web.WIKI_WORD, [nfs.SRC_DOCUMENT+can.db.current+file], function(msg) { can.ui.main.innerHTML = msg.Result(), can.onmotion.clear(can, can.ui.aside)
|
||||
can.page.Select(can, can.ui.main, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{}
|
||||
@ -57,11 +53,11 @@ Volcanos(chat.ONACTION, {
|
||||
route: function(event, can, route, internal) {
|
||||
var link = can.base.trimPrefix(route||"", nfs.SRC_DOCUMENT); if (!link || link == can.db.current) { return }
|
||||
if (!internal) {
|
||||
if (link == nfs.PS) { return can.user.jumps(can.db.prefix) }
|
||||
if (link == nfs.PS) { return can.isCmdMode()? can.user.jumps(can.db.prefix): (can.Option(nfs.PATH, ""), can.Update()) }
|
||||
if (can.base.beginWith(link, web.HTTP, nfs.PS)) { return can.user.opens(link) }
|
||||
if (link.indexOf(can.db.current) < 0 || link.endsWith(nfs.PS)) { return can.user.jumps(can.db.prefix+link) }
|
||||
if (link.indexOf(can.db.current) < 0 || link.endsWith(nfs.PS)) { return can.isCmdMode()? can.user.jumps(can.db.prefix+link): (can.Option(nfs.PATH, link), can.Update()) }
|
||||
}
|
||||
var file = can.base.trimPrefix(link, can.db.current); can.user.jumps("#"+file)
|
||||
var file = can.base.trimPrefix(link, can.db.current); can.isCmdMode() && can.user.jumps("#"+file)
|
||||
if (can.onmotion.cache(can, function() { return file }, can.ui.main, can.ui.aside)) { return }
|
||||
can.onimport.content(can, file)
|
||||
},
|
||||
|
@ -80,6 +80,9 @@ func init() {
|
||||
meta := kit.Dict()
|
||||
kit.For(arg[2:], func(k, v string) { kit.Value(meta, k, v) })
|
||||
m.Option(mdb.META, kit.Format(meta))
|
||||
if arg[0] == "shell" && meta["with"] == "echo" {
|
||||
m.Option("echo", m.Cmdx(cli.SYSTEM, kit.Split(arg[1])))
|
||||
}
|
||||
_spark_show(m, arg[0], strings.TrimSpace(arg[1]))
|
||||
}
|
||||
}},
|
||||
|
Loading…
x
Reference in New Issue
Block a user