mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add some
This commit is contained in:
parent
7d4ce180dd
commit
1cb6f755e9
5
frame.js
5
frame.js
@ -79,7 +79,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
|
||||
},
|
||||
})
|
||||
Volcanos(chat.ONDAEMON, {_init: function(can, name) { if (can.user.isLocalFile) { return }
|
||||
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||"", text: location.pathname, module: "shylinux.com/x/volcanos", version: can.base.trimPrefix(window._version, "?_v=")}, function(event, msg, cmd, arg, cb) {
|
||||
can.misc.WSS(can, {type: html.CHROME, name: can.misc.Search(can, cli.DAEMON)||name||""}, function(event, msg, cmd, arg, cb) {
|
||||
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)
|
||||
@ -267,7 +267,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) && (name = (item.index||"").split(".").slice(-2).join(".")), name = can.core.Keys(item.space, name)
|
||||
var name = can.core.Split(item.nick||item.name||"").pop()||""; can.base.isIn(name, tcp.SERVER, tcp.CLIENT, web.STUDIO, mdb.SEARCH) && (name = (item.index||"").split(".").slice(-2).join(".")), name = can.core.Keys(item.space, name)
|
||||
var 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]}])
|
||||
@ -509,6 +509,7 @@ Volcanos(chat.ONLAYOUT, {_init: function(can, target) { target = target||can._ro
|
||||
can.user.isMobile && can.user.isLandscape() || can.page.style(can, document.body, kit.Dict(html.OVERFLOW, html.HIDDEN))
|
||||
},
|
||||
expand: function(can, target, width) { var n = parseInt(target.offsetWidth/(width+20)); width = target.offsetWidth/n - 20
|
||||
if (width+20 >= target.offsetWidth) { n = 1, width = target.offsetWidth - 20 }
|
||||
can.page.SelectChild(can, target, html.DIV_ITEM, function(target) { can.page.styleWidth(can, target, width) })
|
||||
},
|
||||
background: function(can, url, target) { can.page.style(can, target||can._root._target, "background-image", url == "" || url == "void"? "": 'url("'+url+'")') },
|
||||
|
40
index.css
40
index.css
@ -363,6 +363,46 @@ div.carte div.item { background-color:var(--carte-bg-color); }
|
||||
div.carte div.item:hover { background-color:var(--hover-bg-color); }
|
||||
div.carte div.item.danger:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||
div.carte div.item.notice:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||
/* mobile */
|
||||
body.mobile table.content { width:100%; }
|
||||
body.mobile form.option>div.item { margin:0; }
|
||||
body.mobile form.option>div.item.button>input { display:none; }
|
||||
body.mobile fieldset>div.status { max-height:32px; overflow:hidden; }
|
||||
body.mobile fieldset:not(.panel):not(.input):not(.play)>div.action>div:not(.icons) { display:none; }
|
||||
body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.icon:not(.delete) { display:block; }
|
||||
body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd)>form.option>div.button>span.icon { display:block; }
|
||||
body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd)>div.action>div.button>span.icon { display:inline-block; }
|
||||
body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd)>div.action>div.button>input { display:none; }
|
||||
body.mobile fieldset.plugin:not(.float):not(.full):not(.cmd) { margin:10px 0; }
|
||||
body.mobile { --header-height:48px; }
|
||||
body.mobile fieldset.Header { padding:0; width:100%; position:fixed; top:0; }
|
||||
body.mobile fieldset.Header>div.output { font-size:1.4rem; line-height:var(--header-height); height:var(--header-height); }
|
||||
body.mobile fieldset.Header div.output div.item.text.title.search { display:none; }
|
||||
body.mobile fieldset.Header div.output div.item:not(.avatar) { padding:0px 10px; }
|
||||
body.mobile fieldset.Search>div.action>div.item.filter>input { width:100%; }
|
||||
body.mobile fieldset.Search>div.action>div.item.filter>span { position:absolute; }
|
||||
body.mobile fieldset.Search>div.action>div.item.filter { width:100%; position:relative; }
|
||||
body.mobile fieldset.Search>div.output>div.content { height:400px; }
|
||||
body.mobile fieldset.River { position:fixed; top:var(--header-height); z-index:100; }
|
||||
body.mobile fieldset.River>div.output { font-size:1.4rem; min-width:240px; }
|
||||
body.mobile fieldset.Action { margin-top:var(--header-height); }
|
||||
body.mobile fieldset.Action.cmd { margin-top:0; }
|
||||
body.mobile fieldset.Action>div.output { overflow-x:hidden; }
|
||||
body.mobile fieldset.Action>div.output>fieldset.plugin:not(.float):not(.full):not(.cmd)>legend { margin:10px; }
|
||||
body.mobile fieldset.Action>div.output>fieldset.plugin:not(.output):not(.float):not(.full):not(.cmd) { padding:0px; }
|
||||
body.mobile fieldset.Footer { display:none; }
|
||||
body.mobile.landscape fieldset.Header { position:unset; }
|
||||
body.mobile.landscape fieldset.Action { margin-top:0; }
|
||||
body.mobile fieldset.word.float>div.output>div.project { top:32px; }
|
||||
body.mobile fieldset.word>div.output>fieldset.story>form.option>div.text { display:none; }
|
||||
body.mobile fieldset.word>div.output { overflow-x:hidden; }
|
||||
body.mobile fieldset.web.code.inner.cmd>div.output { overflow:hidden; }
|
||||
body.mobile fieldset.web.wiki.portal>div.output>div.layout { display:block; }
|
||||
body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.nav { padding:10px; height:unset; }
|
||||
body.mobile fieldset.web.wiki.portal>div.output>div.layout>div.main { padding:10px; height:unset; min-width:unset; }
|
||||
body.mobile fieldset.web.wiki.portal>div.output>div.header div.story[data-name=navmenu] div.item { padding:10px; }
|
||||
body.mobile fieldset.word>div.output div.story.flex { display:block; }
|
||||
body.mobile fieldset.word>div.output div.story.flex>* { padding:unset; }
|
||||
/* print */
|
||||
body.print { -webkit-filter: grayscale(100%); }
|
||||
body.print { background-color:white; color:black; }
|
||||
|
@ -102,10 +102,11 @@ Volcanos("misc", {
|
||||
} try { xhr.send(data) } catch(e) { can.misc.Warn(e), cbs && cbs(e) }
|
||||
},
|
||||
WSS: function(can, args, cb, onopen, onclose, onerror, _msg) { if (can.user.isIE) { return }
|
||||
var msg = can.request(); can.page.exportValue(can, msg)
|
||||
var msg = can.request(); can.page.exportValue(can, msg), args[ice.MSG_THEME] = can.getHeaderTheme()
|
||||
can.core.List(msg.Option(), function(value) { args[value] = msg.Option(value) })
|
||||
var url = location.protocol.replace(ice.HTTP, "ws")+"//"+location.host+"/space/"
|
||||
if (url.indexOf(html.CHROME) == 0) { url = "ws://localhost:9020/space/" }
|
||||
args.text = location.pathname+location.search, args.module = "shylinux.com/x/volcanos", args.version = can.base.trimPrefix(window._version, "?_v=")
|
||||
try { var socket = new WebSocket(can.base.MergeURL(url, args)); _msg = _msg || can.request()._caller() } catch {}
|
||||
can._socket = socket, socket.onclose = function() { can.misc.Log(html.WSS, cli.CLOSE, args)
|
||||
can.base.isFunc(onclose)? onclose(socket): can.core.Timer(can.base.random(3000, 100), function() {
|
||||
@ -127,6 +128,7 @@ Volcanos("misc", {
|
||||
can.core.CallFunc(cb, {event: event, msg: msg, cmd: msg.detail[0], arg: msg.detail.slice(1), cb: function() { msg.Reply() }})
|
||||
} catch (e) { can.misc.Warn(e), msg.Reply() }
|
||||
}) }
|
||||
return socket
|
||||
},
|
||||
Resource(can, path, pod) {
|
||||
if (path.indexOf(nfs.PS) == 0 || path.indexOf(ice.HTTP) == 0) { return path }
|
||||
|
@ -246,13 +246,13 @@ Volcanos("user", {
|
||||
})
|
||||
can.misc.CookieSessid(can, "")
|
||||
var ui = can.onappend.tabview(can, {
|
||||
"扫码授权": function(target) { can.misc.WSS(can, {type: aaa.LOGIN, name: "", "sess.theme": can.getHeaderTheme()}, function(cmd, arg) {
|
||||
"扫码授权": function(target) { var socket = can.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) {
|
||||
if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [
|
||||
{text: "<br/>或命令授权: "+_cmd, title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }},
|
||||
].concat(_sso)), can.onmotion.delay(can, function() { layout() }, 10) }
|
||||
if (cmd == ice.MSG_SESSID) {
|
||||
if (cmd == ice.MSG_SESSID) { can.onmotion.delay(can, function() { socket.close() })
|
||||
if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] }
|
||||
return can.page.Remove(can, ui._target), can.base.isFunc(cb) && cb()
|
||||
return can.page.Remove(can, ui._target), can.base.isFunc(cb) && cb(), cb = null
|
||||
}
|
||||
}) },
|
||||
"密码登录": function(target) {
|
||||
|
@ -15,8 +15,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
||||
}) },
|
||||
_avatar: function(can, msg) { can.user.isExtension || can.user.isLocalFile || can.page.Modify(can, "div.state.avatar>img", {src: can.onexport.avatar(can)}) },
|
||||
_background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return }
|
||||
// can.onlayout.background(can, can.onexport.background(can))
|
||||
// window.parent == window? can.onlayout.background(can, can.onexport.background(can)): can.page.style(can, document.body, html.BACKGROUND_COLOR, "transparent")
|
||||
window.parent == window? can.onlayout.background(can, can.onexport.background(can)): can.page.style(can, document.body, html.BACKGROUND_COLOR, "transparent")
|
||||
},
|
||||
_search: function(can, msg, target) {
|
||||
can._search = can.onappend.input(can, {type: html.TEXT, icon: icon.SEARCH, name: mdb.SEARCH, value: can.misc.Search(can, "_search"), onkeydown: function(event) { can.onkeymap.input(event, can)
|
||||
@ -58,14 +57,13 @@ Volcanos(chat.ONACTION, {_init: function(can) {
|
||||
function show(msg) { var p = can.misc.Search(can, "redirect_uri")
|
||||
if (location.pathname == "/login" && p) { return location.replace(can.base.MergeURL(p, ice.MSG_SESSID, can.misc.CookieSessid(can))) }
|
||||
can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.userrole = msg.Option(ice.MSG_USERROLE), can.user.info.avatar = msg.Option(aaa.AVATAR), can.user.info.background = msg.Option(aaa.BACKGROUND)
|
||||
can.user.info.repos = msg.Option("spide.hub")
|
||||
can.user.info.email = msg.Option("email")
|
||||
can.user.info.email = msg.Option(aaa.EMAIL), can.user.info.repos = msg.Option(nfs.REPOS)
|
||||
msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) })
|
||||
lang(msg, function() { can.onmotion.clear(can), can.onimport._init(can, can.request(), can._output), can.onengine.signal(can, chat.ONLOGIN) })
|
||||
}
|
||||
can.run(can.request({}, {_method: web.GET}), [], function(msg) { lang(msg)
|
||||
can.require(can.core.List(msg["theme.list"], function(item) { return "src/template/web.chat.header/theme/"+item }))
|
||||
can.onaction._menus[1] = [chat.THEME, ice.AUTO].concat(can.core.List(msg["theme.list"], function(item) { if (item == "mobile.css") { return } return can.base.trimSuffix(item, ".css") }))
|
||||
can.onaction._menus[1] = [chat.THEME, ice.AUTO].concat(can.core.List(msg["theme.list"], function(item) { return can.base.trimSuffix(item, ".css") }))
|
||||
can.onaction._menus[2] = [aaa.LANGUAGE, ice.AUTO].concat(can.core.List(msg["language.list"], function(item) { return can.base.trimSuffix(item, ".js") }))
|
||||
if (can.base.beginWith(location.pathname, "/wiki/portal/", "/chat/cmd/web.wiki.portal/", "/chat/cmd/web.chat.oauth.client", "/chat/pod/20230511-golang-story/cmd/web.code.gitea.client")) { return show(msg) }
|
||||
if (location.pathname == "/" && can.base.beginWith(msg.Option(ice.MAIN)||"", "/wiki/portal/", "/chat/cmd/web.wiki.portal/")) { return show(msg) }
|
||||
@ -98,7 +96,7 @@ Volcanos(chat.ONACTION, {_init: function(can) {
|
||||
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN, mdb.NAME, can.user.title(), mdb.TEXT, location.href]) },
|
||||
toimage: function(event, can) { can.onmotion.clearCarte(can), can.user.toimage(can, can.user.title(), can._target.parentNode) },
|
||||
webpack: function(event, can) { can.onengine.signal(can, chat.ONWEBPACK, can.request(event)) },
|
||||
setnick: function(event, can) { can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(list) { can.runAction(event, aaa.USERNICK, [list[0]], function(msg) {
|
||||
usernick: function(event, can) { can.user.input(event, can, [{name: aaa.USERNICK, value: can.Conf(aaa.USERNICK)}], function(list) { can.runAction(event, aaa.USERNICK, [list[0]], function(msg) {
|
||||
can.page.Select(can, can._output, can.core.Keys(html.DIV, aaa.USERNICK), function(item) { can.page.Modify(can, item, can.Conf(aaa.USERNICK, list[0])) }), can.user.toastSuccess(can)
|
||||
}) }) },
|
||||
password: function(event, can) { var ui = can.user.input(event, can, [{name: html.PASSWORD, type: html.PASSWORD, action: ice.AUTO}, {name: html.PASSWORD, type: html.PASSWORD, action: ice.AUTO}], function(list) {
|
||||
@ -111,20 +109,18 @@ Volcanos(chat.ONACTION, {_init: function(can) {
|
||||
can.runAction(event, aaa.EMAIL, args, function() { can.user.toastSuccess(can) })
|
||||
})
|
||||
},
|
||||
fullscreen: function(event, can) { document.body.requestFullscreen() },
|
||||
|
||||
_params: [log.DEBUG, chat.TITLE],
|
||||
_menus: ["shareuser",
|
||||
[chat.THEME, ice.AUTO],
|
||||
[aaa.LANGUAGE, ice.AUTO],
|
||||
[nfs.SAVE, aaa.EMAIL, web.TOIMAGE, code.WEBPACK],
|
||||
[aaa.USER, "setnick", aaa.PASSWORD, cli.CLEAR, aaa.LOGOUT],
|
||||
"fullscreen",
|
||||
[aaa.USER, aaa.USERNICK, aaa.PASSWORD, cli.CLEAR, aaa.LOGOUT],
|
||||
],
|
||||
_trans: kit.Dict(
|
||||
"shareuser", "共享用户", chat.THEME, "界面主题", aaa.LANGUAGE, "语言地区", nfs.SAVE, "保存网页", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面",
|
||||
aaa.USER, "用户信息", "setnick", "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录",
|
||||
aaa.EMAIL, "发送邮件",
|
||||
"shareuser", "共享用户", chat.THEME, "界面主题", aaa.LANGUAGE, "语言地区",
|
||||
nfs.SAVE, "保存网页", aaa.EMAIL, "发送邮件", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面",
|
||||
aaa.USER, "用户信息", aaa.USERNICK, "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录",
|
||||
|
||||
),
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user