diff --git a/frame.js b/frame.js index 3a27805a..08885a3c 100644 --- a/frame.js +++ b/frame.js @@ -67,8 +67,9 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { return can.core.List(can.onengine.listen.meta[name], function(cb) { can.core.CallFunc(cb, {event: msg._event, msg: msg}) }).length, msg }, }) -Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return } - return can.misc.WSS(can, {type: web.PORTAL, name: can.misc.Search(can, cli.DAEMON)||name||""}, function(event, msg, cmd, arg, cb) { +Volcanos(chat.ONDAEMON, {_init: function(can, name, type, cbs) { if (can.user.isLocalFile) { return } + return can.misc.WSS(can, {type: type||web.PORTAL, name: can.misc.Search(can, cli.DAEMON)||name||""}, function(event, msg, cmd, arg, cb) { + if (cbs && can.core.CallFunc(cbs, {event: event, msg: msg, cmd: cmd, arg: arg, cb: cb})) { return } var sub = can.ondaemon._list[msg.Option(ice.MSG_TARGET)]||can; can.base.isFunc(sub.ondaemon[cmd])? can.core.CallFunc(sub.ondaemon[cmd], {can: can, msg: msg, sub: sub, cmd: cmd, arg: arg, cb: cb}): can.onengine._search({}, can, msg, can, [chat._SEARCH, cmd].concat(arg), cb) diff --git a/index.css b/index.css index 5951a43b..17becb6a 100644 --- a/index.css +++ b/index.css @@ -49,7 +49,7 @@ body { } input { font-family:var(--input-font-family); } body { font-family:var(--body-font-family); } -body { background-color:var(--body-bg-color); color:var(--body-fg-color); } +body { background-color:var(--body-bg-color); color:var(--body-fg-color); background-position: center; background-image: url(/require/usr/icons/background.jpg); } body.windows { --code-font-family:"Courier New"; } body.cmd { background-color:var(--plugin-bg-color); diff --git a/lib/user.js b/lib/user.js index 0ca602bf..ee31d336 100644 --- a/lib/user.js +++ b/lib/user.js @@ -252,16 +252,16 @@ Volcanos("user", { can.user.input(event, can, [{name: mdb.NAME, value: name}], function(list) { can.user.download(can, url, list[0], nfs.PNG) }) }), resize: html.IMG, }) }, - login: function(can, cb, msg) { can.misc.CookieSessid(can, ""); var socket = can.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) { + login: function(can, _cb, _msg) { can.misc.CookieSessid(can, ""); var socket = can.ondaemon._init(can, "", aaa.LOGIN, function(event, msg, cmd, arg, cb) { can.page.ClassList.add(can, document.body.parentNode, aaa.LOGIN) function check() { if (can.misc.CookieSessid(can)) { can.page.ClassList.del(can, document.body.parentNode, aaa.LOGIN) can.onmotion.clearFloat(can), can.onmotion.delay(can, function() { socket._close = true, socket.close() }) - return can.base.isFunc(cb) && cb(), cb = null, true + return can.base.isFunc(_cb) && _cb(), _cb = null, true } can.core.Timer(1000, function() { check() }), can.onimport.theme(can) } if (cmd == cli.PWD) { if (check()) { return } can.page.ClassList.add(can, document.body, aaa.LOGIN), can.ondaemon._list[0] = arg[0] - var _list = [], list = {}; msg.Table(function(value) { if (value.order == "") {} else if (value.type == mdb.PLUGIN) { _list.push(value.name), list[value.name] = function(target) { + var _list = [], list = {}; _msg.Table(function(value) { if (value.order == "") {} else if (value.type == mdb.PLUGIN) { _list.push(value.name), list[value.name] = function(target) { can.onappend.plugin(can, {space: value.space, index: value.index, args: can.core.Split(value.args), style: html.OUTPUT}, function(sub) { var run = sub.run; sub.run = function(event, cmds, cb) { var msg = can.request(event, {space: arg[0]}); can.page.exportValue(can, msg), run(event, cmds, cb) } sub.onexport.output = function() { can.page.style(can, sub._output, html.MAX_HEIGHT, ""), can.page.style(can, sub._output, html.MAX_WIDTH, "") } @@ -271,10 +271,14 @@ Volcanos("user", { can.page.style(can, ui._target, {left: (window.innerWidth-ui._target.offsetWidth)/2, top: can.user.isMobile? can.user.isLandscape()? 0 :48 :window.innerHeight/8}) var _cmd = "space login "+arg[0]; ui.display = can.page.Append(can, ui._target, [html.DISPLAY])._target, can.onappend.style(can, html.FLEX, ui.display) can.page.Appends(can, ui.display, [{text: ["或命令行授权: ", html.LABEL]}, {text: ["$ "+_cmd, "", html.ITEM], title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }}]) - can.page.Append(can, ui.display, [{text: ["或第三方授权: ", html.LABEL]}, {view: [["sso", html.FLEX]], list: msg.Table(function(value) { + can.page.Append(can, ui.display, [{text: ["或第三方授权: ", html.LABEL]}, {view: [["sso", html.FLEX]], list: _msg.Table(function(value) { return value.type == "oauth" && {view: [[html.ITEM, html.FLEX]], title: "点击跳转,授权登录", list: [{img: can.misc.Resource(can, value.icons)}, {text: value.name}], onclick: function() { can.user.jumps(value.link) }} }) }]) - } else if (cmd == ice.MSG_SESSID) { if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } check() } + return true + } else if (cmd == ice.MSG_SESSID) { + if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } check(), cb && cb() + return true + } }) }, logout: function(can) { can.user.toastConfirm(can, aaa.LOGOUT, "", function() { can.runAction({}, aaa.LOGOUT, [], function(msg) { can.misc.CookieSessid(can, ""), can.misc.Search(can, chat.SHARE)? can.misc.Search(can, chat.SHARE, ""): can.user.reload(true) diff --git a/plugin/story/form.js b/plugin/story/form.js index 3892d4dd..ff19262d 100644 --- a/plugin/story/form.js +++ b/plugin/story/form.js @@ -1,5 +1,6 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { can.onappend.style(can, html.FORM, can._output) + if (can.isCmdMode()) { can.onappend.style(can, html.OUTPUT) } can.page.Append(can, can._output, msg.Table(function(item) { return {view: [[html.ITEM, item.type]], list: [item.type != html.BUTTON && {text: [can.user.trans(can, item.name, item._trans), "", mdb.NAME]}, item.need == "must" && {text: ["*", "", "need"]}], _init: function(target) { item.type == html.BUTTON && (item.onclick = function(event) { var args = [] @@ -7,6 +8,6 @@ Volcanos(chat.ONIMPORT, { can.Update(can.request(event, {_handle: ice.TRUE}), [ctx.ACTION, item.name].concat(args)) }), can.onappend.input(can, item, "", target) }, onclick: function(event) { can.page.Select(can, event.currentTarget, html.INPUT, function(target) { target.focus() }) }} - })) + })), can.onappend.board(can, msg) }, })