1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00

opt header

This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-11-12 10:53:53 +08:00
parent 1f65b13893
commit a7d3b0daf6
6 changed files with 31 additions and 19 deletions

View File

@ -79,6 +79,11 @@ var web = {CHAT: "chat", PORTAL: "portal", STUDIO: "studio", SERVICE: "service",
DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter",
CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", CONFIRM: "confirm", CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", CONFIRM: "confirm",
CHAT_SSO: "/chat/sso/",
CHAT_POD: "/chat/pod/",
CHAT_CMD: "/chat/cmd/",
BASIC_LOGIN: "/basic/login",
CODE_GIT_SEARCH: "web.code.git.search", CODE_GIT_SEARCH: "web.code.git.search",
CODE_GIT_STATUS: "web.code.git.status", CODE_GIT_STATUS: "web.code.git.status",
CODE_GIT_REPOS: "web.code.git.repos", CODE_GIT_REPOS: "web.code.git.repos",
@ -92,6 +97,7 @@ var web = {CHAT: "chat", PORTAL: "portal", STUDIO: "studio", SERVICE: "service",
CHAT_MACOS_DESKTOP: "web.chat.macos.desktop", CHAT_MACOS_DESKTOP: "web.chat.macos.desktop",
CHAT_MACOS_SESSION: "web.chat.macos.session", CHAT_MACOS_SESSION: "web.chat.macos.session",
CHAT_IFRAME: "web.chat.iframe", CHAT_IFRAME: "web.chat.iframe",
CHAT_HEADER: "web.chat.header",
CHAT_FAVOR: "web.chat.favor", CHAT_FAVOR: "web.chat.favor",
CHAT_FLOWS: "web.chat.flows", CHAT_FLOWS: "web.chat.flows",
TEAM_PLAN: "web.team.plan", TEAM_PLAN: "web.team.plan",
@ -148,6 +154,8 @@ var nfs = {
USR_INTSHELL: "usr/intshell", USR_LEARNING: "usr/learning", USR_INTSHELL: "usr/intshell", USR_LEARNING: "usr/learning",
REQUIRE: "/require/", REQUIRE_MODULES: "/require/modules/", REQUIRE: "/require/", REQUIRE_MODULES: "/require/modules/",
SHARE_LOCAL: "/share/local/", SHARE_LOCAL: "/share/local/",
WIKI_PORTAL: "/wiki/portal/",
CHAT_PORTAL: "/chat/portal/",
DF: ice.DF, PS: ice.PS, PT: ice.PT, DF: ice.DF, PS: ice.PS, PT: ice.PT,
} }
var cli = { var cli = {

View File

@ -1,5 +1,4 @@
Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
if (!can.user.isMailMaster) { if (can.misc.Search(can, ice.MSG_SESSID)) { can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)); return can.misc.Search(can, ice.MSG_SESSID, "") } }
can.Option = function() {}, can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) } can.Option = function() {}, can.run = function(event, cmds, cb) { var msg = can.request(event); cmds = cmds||[]; return (can.onengine[cmds[0]]||can.onengine._remote)(event, can, msg, can, cmds, cb) }
can.user.title(can.misc.SearchOrConf(can, chat.TITLE)||can.misc.Search(can, ice.POD)||location.host) can.user.title(can.misc.SearchOrConf(can, chat.TITLE)||can.misc.Search(can, ice.POD)||location.host)
can.core.Next(list, function(item, next) { item.type = chat.PANEL can.core.Next(list, function(item, next) { item.type = chat.PANEL
@ -382,9 +381,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
}, },
board: function(can, text, target) { text && text.Result && (text = text.Result()); if (!text) { return } board: function(can, text, target) { text && text.Result && (text = text.Result()); if (!text) { return }
var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code var code = can.page.Append(can, target||can._output, [{text: [can.page.Color(text), html.DIV, html.CODE]}]).code
code.ondblclick = function(event) { code.ondblclick = function(event) { can.Option(mdb.KEY, window.getSelection().toString()) && can.Update() }
can.Option(mdb.KEY, window.getSelection().toString()) && can.Update()
}
if (text.indexOf("<fieldset") == 0) { can.page.Select(can, code, html.FIELDSET, function(target) { var data = target.dataset if (text.indexOf("<fieldset") == 0) { can.page.Select(can, code, html.FIELDSET, function(target) { var data = target.dataset
data.index && can.onappend.plugin(can, {index: data.index, args: can.base.Split(data.args)}, function(sub) { data.index && can.onappend.plugin(can, {index: data.index, args: can.base.Split(data.args)}, function(sub) {
can.page.Modify(can, sub._legend, data.index.split(nfs.PT).pop()) can.page.Modify(can, sub._legend, data.index.split(nfs.PT).pop())
@ -749,8 +746,8 @@ Volcanos(chat.ONMOTION, {_init: function(can, target) {
target.focus(), can.user.isMobile || can.onmotion.selectRange(target) target.focus(), can.user.isMobile || can.onmotion.selectRange(target)
}, selectRange: function(target) { target && target.setSelectionRange && target.setSelectionRange(0, target.value.length) }, }, selectRange: function(target) { target && target.setSelectionRange && target.setSelectionRange(0, target.value.length) },
copy: function(can, target, cb) { target.title = "点击复制,或 Command + Click 打开应用", target.onclick = function(event) { copy: function(can, target, cb) { target.title = "点击复制,或 Command + Click 打开应用", target.onclick = function(event) {
can.user.copy(event, can, target.innerText), can.base.isFunc(cb) && cb(event) can.user.copy(event, can, target.innerText), can.base.isFunc(cb) && cb(event), can.onkeymap.prevent(event)
can.onkeymap.prevent(event) if (target.innerText.indexOf(ice.HTTP) == 0) { can.user.opens(target.innerText) }
} }, } },
hide: function(can, time, cb, target) { target = target||can._target, can.page.style(can, target, html.OPACITY, 1) hide: function(can, time, cb, target) { target = target||can._target, can.page.style(can, target, html.OPACITY, 1)
time = can.base.isObject(time)? time: {value: 10, length: time||20} time = can.base.isObject(time)? time: {value: 10, length: time||20}

View File

@ -123,6 +123,7 @@ Volcanos("misc", {
args.text = location.pathname+location.search, args.module = "shylinux.com/x/volcanos", args.version = can.base.trimPrefix(window._version, "?_v=") 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 {} 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._socket = socket, socket.onclose = function() { can.misc.Log(html.WSS, cli.CLOSE, args)
if (socket._close) { return }
can.base.isFunc(onclose)? onclose(socket): can.core.Timer(can.base.random(3000, 100), function() { can.base.isFunc(onclose)? onclose(socket): can.core.Timer(can.base.random(3000, 100), function() {
args.name = args.name||can._wss_name, can.misc.WSS(can, args, cb, onopen, onerror, onclose, _msg) args.name = args.name||can._wss_name, can.misc.WSS(can, args, cb, onopen, onerror, onclose, _msg)
}) })

View File

@ -61,7 +61,7 @@ Volcanos("user", {
}, },
title: function(text) { if (window.webview) { return title(text) } return text && (document.title = text), document.title }, title: function(text) { if (window.webview) { return title(text) } return text && (document.title = text), document.title },
language: function(can) { return (can.misc.SearchOrConf(can, aaa.LANGUAGE)||can.user.info.language||"") }, language: function(can) { return (can.misc.SearchOrConf(can, aaa.LANGUAGE)||can.user.info.language||"") },
isEnglish: function(can) { return can.base.isIn(can.user.language(can).toLowerCase(), "en", "en-us") }, isEnglish: function(can) { return can.base.isIn(can.core.Split(can.user.language(can).toLowerCase()||"en", "_-.")[0], "en", "en-us") },
trans: function(can, text, list, zone) { if (can.base.isNumber(text)) { return text+"" } if (can.user.isEnglish(can)) { return text } trans: function(can, text, list, zone) { if (can.base.isNumber(text)) { return text+"" } if (can.user.isEnglish(can)) { return text }
if (can.base.isObject(text)) { return can.core.Item(text, function(k, v) { can.core.Value(can._trans, can.core.Keys(zone, k), v) }) } if (can.base.isObject(text)) { return can.core.Item(text, function(k, v) { can.core.Value(can._trans, can.core.Keys(zone, k), v) }) }
if (can.base.isFunc(text)) { text = text.name||"" } if (can.base.isString(list)) { return list } if (can.base.isFunc(text)) { text = text.name||"" } if (can.base.isString(list)) { return list }
@ -255,8 +255,14 @@ Volcanos("user", {
}), resize: html.IMG, }), 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.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) {
if (cmd == cli.PWD) { if (can.misc.CookieSessid(can)) { return } function check() {
can.page.ClassList.add(can, document.body, aaa.LOGIN) if (can.misc.CookieSessid(can)) { can.page.ClassList.del(can, document.body, 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
}
can.core.Timer(1000, function() { check() })
}
if (cmd == cli.PWD) { if (check()) { return } can.page.ClassList.add(can, document.body, aaa.LOGIN)
var list = {}; msg.Table(function(value) { if (value.order == "") {} else if (value.type == mdb.PLUGIN) { list[value.name] = function(target) { var list = {}; msg.Table(function(value) { if (value.order == "") {} else if (value.type == mdb.PLUGIN) { list[value.name] = function(target) {
can.onappend.plugin(can, {space: value.space, index: value.index, args: can.core.Split(value.args), style: html.OUTPUT, width: 420}, function(sub) { can.onappend.plugin(can, {space: value.space, index: value.index, args: can.core.Split(value.args), style: html.OUTPUT, width: 420}, 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) } 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) }
@ -271,10 +277,9 @@ Volcanos("user", {
can.page.Append(can, ui.display, [{view: "sso", list: msg.Table(function(value) { can.page.Append(can, ui.display, [{view: "sso", list: msg.Table(function(value) {
return value.type == "oauth" && {view: html.ITEM, title: "点击跳转,授权登录", list: [{img: can.misc.Resource(can, value.icons)}, {text: value.name}], onclick: function() { can.user.jumps(value.link) }} return value.type == "oauth" && {view: html.ITEM, 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) { can.page.ClassList.del(can, document.body, aaa.LOGIN) } else if (cmd == ice.MSG_SESSID) {
if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] }
can.onmotion.clearFloat(can), can.onmotion.delay(can, function() { socket.close() }) check()
return can.base.isFunc(cb) && cb(), cb = null
} }
}) }, }) },
logout: function(can) { can.user.toastConfirm(can, aaa.LOGOUT, "", function() { can.runAction({}, aaa.LOGOUT, [], function(msg) { logout: function(can) { can.user.toastConfirm(can, aaa.LOGOUT, "", function() { can.runAction({}, aaa.LOGOUT, [], function(msg) {

View File

@ -52,10 +52,12 @@ Volcanos(chat.ONACTION, {_init: function(can) {
onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) }, onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) },
onmain: function(can) { onmain: function(can) {
function lang(msg, cb) { can.user.info.language = msg.SearchOrOption(aaa.LANGUAGE) function lang(msg, cb) { can.user.info.language = msg.SearchOrOption(aaa.LANGUAGE)
can.user.info.language? can.require(["src/template/web.chat.header/language/"+can.user.info.language+".js"], cb, function(can, name, sub) { can.base.Copy(can.user._trans, sub._trans) }): cb && cb() can.user.info.language? can.require([nfs.SRC_TEMPLATE+web.CHAT_HEADER+"/language/"+can.user.info.language+".js"], cb, function(can, name, sub) { can.base.Copy(can.user._trans, sub._trans) }): cb && cb()
} }
if (!can.user.isMailMaster) { if (can.misc.Search(can, ice.MSG_SESSID)) { can.misc.CookieSessid(can, can.misc.Search(can, ice.MSG_SESSID)); return can.misc.Search(can, ice.MSG_SESSID, "") } }
function show(msg) { var p = can.misc.Search(can, "redirect_uri") function show(msg) { var p = can.misc.Search(can, "redirect_uri")
if (p && location.pathname == "/basic/login") { return location.replace(can.base.MergeURL(p, ice.MSG_SESSID, can.misc.CookieSessid(can))) } if (p && location.pathname == web.BASIC_LOGIN) { return location.replace(can.base.MergeURL(p, ice.MSG_SESSID, can.misc.CookieSessid(can))) }
var p = can.misc.Search(can, "back"); if (p && location.pathname == web.CHAT_SSO) { return location.reload() }
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.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.email = msg.Option(aaa.EMAIL), can.user.info.repos = msg.Option(nfs.REPOS) 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) }) msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) })
@ -65,10 +67,9 @@ Volcanos(chat.ONACTION, {_init: function(can) {
can.run(can.request({}, {_method: http.GET}), [], function(msg) { lang(msg) can.run(can.request({}, {_method: http.GET}), [], function(msg) { lang(msg)
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[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") })) can.onaction._menus[2] = [aaa.LANGUAGE, ice.AUTO].concat(can.core.List(msg["language.list"], function(item) { return can.base.trimSuffix(item, ".js") }))
can.require(can.core.List(msg["theme.list"], function(item) { return "src/template/web.chat.header/theme/"+item }), function() { can.require(can.core.List(msg["theme.list"], function(item) { return nfs.SRC_TEMPLATE+web.CHAT_HEADER+"/theme/"+item }), function() { can.page.requireModules(can, [msg.Option("icon.lib")])
can.page.requireModules(can, [msg.Option("icon.lib")]) if (can.base.beginWith(location.pathname, nfs.WIKI_PORTAL, web.CHAT_CMD+web.WIKI_PORTAL, web.CHAT_CMD+"web.chat.oauth.client", web.CHAT_POD+"20230511-golang-story/cmd/web.code.gitea.client")) { return show(msg) }
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 == nfs.PS && can.base.beginWith(msg.Option(ice.MAIN)||"", nfs.WIKI_PORTAL, web.CHAT_CMD+web.WIKI_PORTAL)) { return show(msg) }
if (location.pathname == "/" && can.base.beginWith(msg.Option(ice.MAIN)||"", "/wiki/portal/", "/chat/cmd/web.wiki.portal/")) { return show(msg) }
if (!can.Conf(aaa.USERNICK, (msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)).slice(0, 8))) { if (!can.Conf(aaa.USERNICK, (msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME)).slice(0, 8))) {
return can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg) return can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg)
} show(msg) } show(msg)

View File

@ -98,7 +98,7 @@ Volcanos(chat.ONACTION, {list: ["创建", "编译", "源码", "计划", "流程"
"计划": function(event, can) { can.onimport.tabview(can, "", web.TEAM_PLAN, ctx.INDEX) }, "计划": function(event, can) { can.onimport.tabview(can, "", web.TEAM_PLAN, ctx.INDEX) },
"流程": function(event, can) { can.onimport.tabview(can, "", web.CHAT_FLOWS, ctx.INDEX) }, "流程": function(event, can) { can.onimport.tabview(can, "", web.CHAT_FLOWS, ctx.INDEX) },
"文档": function(event, can) { can.onimport.tabview(can, "", web.WIKI_WORD, ctx.INDEX) }, "文档": function(event, can) { can.onimport.tabview(can, "", web.WIKI_WORD, ctx.INDEX) },
"后台": function(event, can) { var pod = can.misc.Search(can, ice.POD); can.onimport.tabview(can, "", location.origin+"/chat/portal/"+(pod? "?pod="+pod: ""), web.SPACE) }, "后台": function(event, can) { var pod = can.misc.Search(can, ice.POD); can.onimport.tabview(can, "", location.origin+nfs.CHAT_PORTAL+(pod? "?pod="+pod: ""), web.SPACE) },
"桌面": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MACOS_DESKTOP, ctx.INDEX) }, "桌面": function(event, can) { can.onimport.tabview(can, "", web.CHAT_MACOS_DESKTOP, ctx.INDEX) },
"官网": function(event, can) { can.onimport.tabview(can, "", can.misc.MergePodCmd(can, {cmd: web.WIKI_PORTAL}), web.SPACE) }, "官网": function(event, can) { can.onimport.tabview(can, "", can.misc.MergePodCmd(can, {cmd: web.WIKI_PORTAL}), web.SPACE) },