diff --git a/const.js b/const.js index 9fab90a4..64163ef2 100644 --- a/const.js +++ b/const.js @@ -358,18 +358,19 @@ var icon = { admin: "bi bi-window-sidebar", login: "bi bi-person-check", configs: "bi bi-gear", conf: "bi bi-gear", logs: "bi bi-calendar4-week", help: "bi bi-question-square", doc: "bi bi-question-square", - play: "bi bi-play-circle", full: "bi bi-arrows-fullscreen", app: "bi bi-box-arrow-up-right", + play: "bi bi-play-circle", full: "bi bi-arrows-fullscreen", app: "bi bi-box-arrow-down-right", open: "bi bi-box-arrow-up-right", main: "bi bi-box-arrow-up-right", portal: "bi bi-box-arrow-up-right", push: "bi bi-cloud-upload", pull: "bi bi-cloud-download", start: "bi bi-play-circle", stop: "bi bi-stop-circle", trash: "bi bi-trash", remove: "bi bi-trash", record1: "bi bi-images", record2: "bi bi-record-circle", - upload: "bi bi-cloud-upload", download: "bi bi-cloud-download", + upload: "bi bi-box-arrow-in-up", download: "bi bi-box-arrow-down", + "export": "bi bi-box-arrow-up", "import": "bi bi-box-arrow-in-down", more: "bi bi-three-dots-vertical", actions: "bi bi-three-dots", preview: "bi bi-window-stack", show: "bi bi-window-stack", display: "bi bi-window-desktop", exec: "bi bi-window-desktop", compile: "bi bi-tools", publish: "bi bi-send-check", version: "bi bi-tags", upgrade: "bi bi-rocket-takeoff", - vimer: "bi bi-keyboard", repos: "bi bi-git", build: "bi bi-tools", tag: "bi bi-tags", + vimer: "bi bi-code-slash", repos: "bi bi-git", build: "bi bi-tools", tag: "bi bi-tags", xterm: "bi bi-terminal", cmds: "bi bi-terminal", } var svg = { diff --git a/frame.js b/frame.js index bf1f3774..831dd742 100644 --- a/frame.js +++ b/frame.js @@ -314,7 +314,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { field: function(can, type, item, target) { type = type||html.STORY, item = item||{} var name = can.core.Split(item.nick||item.name||"").pop()||""; can.base.isIn(name, tcp.SERVER, tcp.CLIENT, web.STUDIO, web.SERVICE, mdb.SEARCH, - ) && (name = (item.index||"").split(".").slice(-2).join(".")), type != html.PLUG && (name = can.core.Keys(item._space||item.space, name)) + ) && (name = (item.index||"").split(".").slice(-2).join(".")), (type != html.PLUG) && (name = can.core.Keys(item._space||item.space, name)) var title = item.title || (item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name) target = can.base.isFunc(target)? target(): target return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}]) @@ -580,7 +580,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) { value.meta && value.meta._init && value.meta._init(sub, meta), _cb(sub, meta, skip) }, target, field); return res } can.runAction(can.request({}, {_method: http.GET, pod: meta.space})._caller(), ctx.COMMAND, [meta.index], function(msg) { - if (msg.Length() == 0) { can.onappend._plugin(can, {index: "can._plugin", style: html.HIDE}, meta, _cb, target, field) } + if (msg.Length() == 0) { return can.misc.Warn("not found", meta.index), can.onappend._plugin(can, {index: "can._plugin", style: html.HIDE}, meta, _cb, target, field) } msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) }) }); return res }, diff --git a/lib/misc.js b/lib/misc.js index 3ae05b9d..f7c291bc 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -192,21 +192,24 @@ Volcanos("misc", { if (can.base.beginWith(obj.pod, nfs.PS, web.HTTP)) { if (location.search.indexOf("debug=true") > 0 && obj.pod.indexOf("debug=true") == -1) { var ls = obj.pod.split("#"); ls[0] += (ls[0].indexOf("?") > 0? "&": "?") + "debug=true", obj.pod = ls.join("#") - } - return obj.pod + } return obj.pod } obj.pod = obj.pod||can.misc.Search(can, ice.POD); return can.misc.MergeURL(can, obj, true) // obj.pod = can.core.Keys(can.misc.Search(can, ice.POD), obj.pod); return can.misc.MergeURL(can, obj, true) }, MergeURL: function(can, obj, clear) { var path = location.pathname; obj._path && (path = obj._path), delete(obj._path) can.misc.Search(can, log.DEBUG) && (obj.debug = ice.TRUE); var hash = obj._hash||""; delete(obj._hash) - var args = [web.CHAT]; can.core.List([ice.POD, ice.CMD], function(key) { obj[key] && args.push(key, obj[key]), delete(obj[key]) }) + // var args = [web.CHAT]; can.core.List([ice.POD, ice.CMD], function(key) { obj[key] && args.push(key, obj[key]), delete(obj[key]) }) + var args = []; can.core.List([ice.POD, ice.CMD], function(key) { obj[key] && args.push(key == ice.POD? "s": "c", obj[key]), delete(obj[key]) }) var _location = location; if (can.user.isExtension) { var _location = new URL(Volcanos.meta.iceberg) } return can.base.MergeURL(_location.origin+(args.length == 1? path: nfs.PS+args.join(nfs.PS))+(clear? "": _location.search), obj)+(hash? "#"+hash: "") }, ParseURL: function(can, url) { url = url||location.href; var args = can.base.ParseURL(url), _location = new URL(url) delete(args.link), delete(args.origin), delete(args._origin) - var ls = can.core.Split(_location.pathname, nfs.PS); if (ls[0] == chat.SHARE) { args[chat.SHARE] = ls[1] } + var ls = can.core.Split(_location.pathname, nfs.PS); + if (ls[0] == chat.SHARE) { args[chat.SHARE] = ls[1] } + if (ls[0] == "s") { args[ice.POD] = ls[1]; if (ls[2] == "c") { args[ice.CMD] = ls[3] } } + if (ls[0] == "c") { args[ice.CMD] = ls[1] } for (var i = 1; i < ls.length; i += 2) { if (can.base.isIn(ls[i], [ice.POD, ice.CMD])) { args[ls[i]] = ls[i+1] } } return args }, diff --git a/plugin/state.js b/plugin/state.js index 1b096117..f626bae8 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -9,7 +9,7 @@ Volcanos(chat.ONIMPORT, { _display: function(can, msg) { can.onappend._output(can, msg, msg.Option(ice.MSG_DISPLAY)) }, _clear: function(can, msg) { can.onmotion.clear(can) }, _inner: function(can, sub, msg) { can.onappend.table(sub, msg), can.onappend.board(sub, msg), can.onmotion.story.auto(sub) }, - _field: function(can, msg, cb) { var height = can.base.Max(html.STORY_HEIGHT, can.ConfHeight(), can.onexport.outputHeight(can)), width = can.ConfWidth() + _field: function(can, msg, cb) { var height = can.base.Max(html.STORY_HEIGHT, can.ConfHeight()), width = can.ConfWidth() msg.Table(function(item) { can.onappend._plugin(can, item, {_space: can.ConfSpace(), index: item.index, args: can.base.Obj(item.args||item.arg, []), height: height, width: width}, function(sub) { can.onmotion.delay(can, function() { can.onmotion.scrollIntoView(can, sub._target) }, 300) sub.run = function(event, cmds, cb) { var index = msg.Option(ice.MSG_INDEX) @@ -50,7 +50,7 @@ Volcanos(chat.ONIMPORT, { can.page.Append(can, div, [{text: arg}]), can._output.scrollTop = div.offsetTop, div.scrollBy(0, 10000), true })) { can.onappend.board(can, arg) } }, - _open: function(can, msg, arg) { can.user.opens(arg) }, + _open: function(can, msg, arg) { can.user.opens(arg); if (can.ConfIndex() == "web.dream") { can.Update() } }, _close: function(can, msg) { can.user.close() || history.back() }, change: function(event, can, name, value, cb, data) { return can.page.SelectArgs(can, can._option, "", function(input) { if (input.name != name || value == input.value) { return } can.page.Select(can, input.parentNode, "span.value", function(target) { target.innerText = value }) @@ -81,6 +81,7 @@ Volcanos(chat.ONACTION, {list: ["刷新数据", "刷新界面", "切换浮动", function(can) { if (!can.isCmdMode()) { return "打开链接" } }, function(can) { if (can.isCmdMode()) { return "打开首页" } }, function(can) { if (can.ConfSpace() || can.isCmdMode() && can.misc.Search(can, ice.POD)) { return "打开空间" } }, function(can) { if (can.misc.Search(can, log.MSG_DEBUG)) { return "查看源码" } }, + function(can) { if (can.misc.Search(can, log.MSG_DEBUG)) { return "查看镜像" } }, ["视图", "参数", function(can) { if (can._action.innerHTML) { return "操作" } }, function(can) { if (can._status.innerHTML) { return "状态" } }, @@ -93,7 +94,7 @@ Volcanos(chat.ONACTION, {list: ["刷新数据", "刷新界面", "切换浮动", // ["数据", "保存参数", "清空参数", "复制数据", "下载数据", "清空数据"], ["调试", function(can) { if (can.Conf("_help")) { return "查看文档" } }, - "查看脚本", "查看源码", + "查看脚本", "查看源码", "查看镜像", "查看通知", "查看视图", "查看数据", "会话存储", "本地存储", "查看报文", "查看配置", "查看日志", "删除工具", ], @@ -161,6 +162,7 @@ Volcanos(chat.ONACTION, {list: ["刷新数据", "刷新界面", "切换浮动", "查看文档": function(event, can) { can.requests(event, {action: ice.HELP}), can.onengine.signal(can, chat.ONDEBUGS, can.requestPodCmd(event)) }, "查看脚本": function(event, can) { can.onappend._float(can, web.CODE_VIMER, can.misc.SplitPath(can, can.sub._path)) }, "查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, chat.ONDEBUGS, can.requestPodCmd(event)) }, + "查看镜像": function(event, can) { can.onappend._float(can, {index: "web.code.compile"}) }, "查看通知": function(event, can) { can.onappend._float(can, {index: "can.toast"}, [can.ConfIndex()]) }, "查看视图": function(event, can) { can.onappend._float(can, {index: "can.view", _target: can._fields||can._target}) }, "查看数据": function(event, can) { can.onappend._float(can, {index: "can.data", _target: can}) },