mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add tutor
This commit is contained in:
parent
12de0b692a
commit
54a7872244
1
const.js
1
const.js
@ -269,6 +269,7 @@ var chat = {
|
|||||||
OUTPUT: "output", SIMPLE: "simple", FLOAT: "float", FULL: "full", CMD: "cmd",
|
OUTPUT: "output", SIMPLE: "simple", FLOAT: "float", FULL: "full", CMD: "cmd",
|
||||||
MESSAGE: "message",
|
MESSAGE: "message",
|
||||||
MATRIX: "matrix",
|
MATRIX: "matrix",
|
||||||
|
TUTOR: "tutor",
|
||||||
|
|
||||||
HEADER: "Header", ACTION: "Action", FOOTER: "Footer",
|
HEADER: "Header", ACTION: "Action", FOOTER: "Footer",
|
||||||
libs: ["base.js", "core.js", "date.js", "misc.js", "page.js", "user.js"].map(function(p) { return "/lib/"+p }),
|
libs: ["base.js", "core.js", "date.js", "misc.js", "page.js", "user.js"].map(function(p) { return "/lib/"+p }),
|
||||||
|
7
frame.js
7
frame.js
@ -162,6 +162,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
},
|
},
|
||||||
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] },
|
Option: function(key, value) { value && (value = can.user.trans(sub, value, null, html.INPUT)); return can.page.SelectArgs(can, option, key, value)[0] },
|
||||||
Update: function(event, cmds, cb, silent) { event = event||{}
|
Update: function(event, cmds, cb, silent) { event = event||{}
|
||||||
|
if (event.isTrusted) {
|
||||||
|
can.onengine.signal(can, "onevent", can.request(event, {query: can.page.getquery(can, event.target)}))
|
||||||
|
}
|
||||||
event.metaKey && sub.request(event, {metaKey: ice.TRUE})
|
event.metaKey && sub.request(event, {metaKey: ice.TRUE})
|
||||||
sub.request(event)._caller()
|
sub.request(event)._caller()
|
||||||
var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox")
|
var msg = sub.request(event), list = can.core.Value(sub, "sub.db._checkbox")
|
||||||
@ -187,6 +190,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
sub.onappend._output(sub, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display)
|
sub.onappend._output(sub, msg, meta.display||msg.Option(ice.MSG_DISPLAY)||meta.feature.display)
|
||||||
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg)
|
}), meta.inputs && sub.onappend._option(sub, meta, sub._option, meta.msg)
|
||||||
sub._legend && (sub._legend.onclick = function(event) {
|
sub._legend && (sub._legend.onclick = function(event) {
|
||||||
|
can.onengine.signal(can, "onevent", can.request(event, {query: `fieldset.${sub.ConfIndex()}>legend`}))
|
||||||
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["操作"].concat(can.core.Item(meta.feature._trans))]), function(event, button) { can.misc.Event(event, sub, function(msg) {
|
can.user.carte(event, sub, sub.onaction, sub.onaction.list.concat([["操作"].concat(can.core.Item(meta.feature._trans))]), function(event, button) { can.misc.Event(event, sub, function(msg) {
|
||||||
can.misc.Inputs(sub, msg, [ctx.ACTION, button], null, meta) || msg.RunAction(event, sub.sub, [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button, [], function(msg) { can.onappend._output(sub, msg) })
|
can.misc.Inputs(sub, msg, [ctx.ACTION, button], null, meta) || msg.RunAction(event, sub.sub, [ctx.ACTION, button]) || msg.RunAction(event, sub, [ctx.ACTION, button]) || sub.runAction(event, button, [], function(msg) { can.onappend._output(sub, msg) })
|
||||||
}) })
|
}) })
|
||||||
@ -608,6 +612,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
|
|||||||
}, onmouseover: function(event) {
|
}, onmouseover: function(event) {
|
||||||
can.page.SelectChild(can, can._option, html.DIV_ITEM_TEXT, function(target) { can.page.ClassList.set(can, target, "will", can.page.ClassList.has(can, target, key)) })
|
can.page.SelectChild(can, can._option, html.DIV_ITEM_TEXT, function(target) { can.page.ClassList.set(can, target, "will", can.page.ClassList.has(can, target, key)) })
|
||||||
}, _init: function(target) {
|
}, _init: function(target) {
|
||||||
|
if (can.Option(key) === "") {
|
||||||
|
can.onappend.style(can, value, target.parentNode)
|
||||||
|
}
|
||||||
if (key == mdb.TYPE) { can.onappend.style(can, value, target.parentNode) }
|
if (key == mdb.TYPE) { can.onappend.style(can, value, target.parentNode) }
|
||||||
if (key == mdb.STATUS) { can.onappend.style(can, value, target.parentNode) }
|
if (key == mdb.STATUS) { can.onappend.style(can, value, target.parentNode) }
|
||||||
if (key == mdb.ENABLE) { can.onappend.style(can, value == ice.TRUE? mdb.ENABLE: mdb.DISABLE, target.parentNode) }
|
if (key == mdb.ENABLE) { can.onappend.style(can, value == ice.TRUE? mdb.ENABLE: mdb.DISABLE, target.parentNode) }
|
||||||
|
10
index.css
10
index.css
@ -252,8 +252,8 @@ div.item>i.bi-chevron-down { float:right; transition:all .5s; }
|
|||||||
div.item.open>i.bi-chevron-down { rotate:-180deg; transition:all .3s; }
|
div.item.open>i.bi-chevron-down { rotate:-180deg; transition:all .3s; }
|
||||||
div.item.text.trans input:not([type=button]) { transition:all 1s; }
|
div.item.text.trans input:not([type=button]) { transition:all 1s; }
|
||||||
div.item.text.trans input:not([type=button]):focus { width:var(--river-width); transition:all .5s; }
|
div.item.text.trans input:not([type=button]):focus { width:var(--river-width); transition:all .5s; }
|
||||||
div.toggle { background-color:#4a566e6e; color:var(--panel-fg-color); font-size:var(--action-height); padding-top:38px; height:120px; position:absolute; }
|
div.toggle { background-color:var(--hover-bg-color); color:var(--hover-fg-color); font-size:var(--action-height); padding-top:38px; height:120px; position:absolute; }
|
||||||
div.toggle:hover { background-color:var(--hover-bg-color); color:var(--panel-hover-fg-color); }
|
// div.toggle:hover { background-color:var(--hover-bg-color); color:var(--panel-hover-fg-color); }
|
||||||
div.toggle.project { top:20%; left:0; border-top-right-radius:var(--plugin-radius); border-bottom-right-radius:var(--plugin-radius); }
|
div.toggle.project { top:20%; left:0; border-top-right-radius:var(--plugin-radius); border-bottom-right-radius:var(--plugin-radius); }
|
||||||
div.content>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
|
div.content>div.toggle.profile { top:20%; right:0; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
|
||||||
div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
|
div.content>div.toggle.display { left:20%; bottom:-52px; rotate:90deg; border-top-left-radius:var(--plugin-radius); border-bottom-left-radius:var(--plugin-radius); }
|
||||||
@ -735,9 +735,9 @@ fieldset>form.option>div.text>span.value {
|
|||||||
fieldset>form.option>div.text._icon>span.value { padding-left:24px; border:var(--box-border); }
|
fieldset>form.option>div.text._icon>span.value { padding-left:24px; border:var(--box-border); }
|
||||||
fieldset.plug>form.option>div.text>span.value { display:none; }
|
fieldset.plug>form.option>div.text>span.value { display:none; }
|
||||||
fieldset:not(.float)>form.option>div.text>span.value { display:none; }
|
fieldset:not(.float)>form.option>div.text>span.value { display:none; }
|
||||||
fieldset.float:not(.plug)>form.option>div.text:not(.filter)>input { display:none; }
|
fieldset.story.float:not(.plug)>form.option>div.text:not(.filter)>input { display:none; }
|
||||||
fieldset.float:not(.plug)>form.option>div.text.filter>span.value { display:none; }
|
fieldset.story.float:not(.plug)>form.option>div.text.filter>span.value { display:none; }
|
||||||
fieldset.float:not(.plug)>form.option>div.text>span.icon { display:none; }
|
fieldset.story.float:not(.plug)>form.option>div.text>span.icon { display:none; }
|
||||||
fieldset.float>div.action>div.item.button._space.icons { margin-left:0; }
|
fieldset.float>div.action>div.item.button._space.icons { margin-left:0; }
|
||||||
/* svg */
|
/* svg */
|
||||||
svg text { font-size:var(--svg-font-size); font-family:var(--svg-font-family); stroke:var(--body-fg-color); fill:var(--body-fg-color); cursor:pointer; }
|
svg text { font-size:var(--svg-font-size); font-family:var(--svg-font-family); stroke:var(--body-fg-color); fill:var(--body-fg-color); cursor:pointer; }
|
||||||
|
13
lib/misc.js
13
lib/misc.js
@ -81,9 +81,16 @@ Volcanos("misc", {
|
|||||||
msg.append = can.base.AddUniq(msg.append, key), msg[key] = msg[key]||[]
|
msg.append = can.base.AddUniq(msg.append, key), msg[key] = msg[key]||[]
|
||||||
msg[key].push(can.base.isString(value)||can.base.isFunc(value)? value: JSON.stringify(value)); return msg
|
msg[key].push(can.base.isString(value)||can.base.isFunc(value)? value: JSON.stringify(value)); return msg
|
||||||
},
|
},
|
||||||
PushAction: function(button) { can.core.List(msg.Length(), function() {
|
PushAction: function(button) {
|
||||||
msg.Push(ctx.ACTION, can.page.Format(html.INPUT, "", mdb.TYPE, html.BUTTON, mdb.NAME, button, mdb.VALUE, can.user.trans(can, button)))
|
var args = can.core.List(arguments)
|
||||||
}); return msg },
|
can.core.List(msg.Length(), function() {
|
||||||
|
msg.Push(ctx.ACTION,
|
||||||
|
can.core.List(args, function(button) {
|
||||||
|
return can.page.Format(html.INPUT, "", mdb.TYPE, html.BUTTON, mdb.NAME, button, mdb.VALUE, can.user.trans(can, button))
|
||||||
|
}).join("")
|
||||||
|
)
|
||||||
|
}); return msg
|
||||||
|
},
|
||||||
Echo: function(res) { msg.result = (msg.result||[]).concat(can.core.List(arguments)); return msg._hand = true, msg },
|
Echo: function(res) { msg.result = (msg.result||[]).concat(can.core.List(arguments)); return msg._hand = true, msg },
|
||||||
Dump: function(can) { can = can||msg._can; if (can.user.isNodejs) { return }
|
Dump: function(can) { can = can||msg._can; if (can.user.isNodejs) { return }
|
||||||
can.onmotion.clear(can), can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.story.auto(can)
|
can.onmotion.clear(can), can.onappend.table(can, msg), can.onappend.board(can, msg), can.onmotion.story.auto(can)
|
||||||
|
12
lib/page.js
12
lib/page.js
@ -412,6 +412,18 @@ Volcanos("page", {
|
|||||||
return canvas.toDataURL(html.IMAGE_PNG, 1)
|
return canvas.toDataURL(html.IMAGE_PNG, 1)
|
||||||
},
|
},
|
||||||
position: function(event, target) { var p = target.getBoundingClientRect(); return {x: event.clientX - p.x, y: event.clientY - p.y} },
|
position: function(event, target) { var p = target.getBoundingClientRect(); return {x: event.clientX - p.x, y: event.clientY - p.y} },
|
||||||
|
getquery: function(can, target) {
|
||||||
|
var list = []; for (var p = target; p; p = p.parentNode) {
|
||||||
|
if (can.page.tagis(p, "body")) { list.pop(); break }
|
||||||
|
list.push(can.core.Keys(p.tagName, can.core.List(p.classList).join(".")))
|
||||||
|
if (can.page.tagis(p, html.FIELDSET)) {
|
||||||
|
if (can.page.tagis(p, "fieldset.story.web.chat.tutor.float")) { return "" }
|
||||||
|
break
|
||||||
|
}
|
||||||
|
list.push(">")
|
||||||
|
}
|
||||||
|
return list.reverse().join("").toLowerCase()
|
||||||
|
},
|
||||||
theme: function(cb) { var themeMedia = window.matchMedia("(prefers-color-scheme: dark)")
|
theme: function(cb) { var themeMedia = window.matchMedia("(prefers-color-scheme: dark)")
|
||||||
cb && themeMedia.addListener(function(event) { cb(event.matches? html.DARK: html.LIGHT) })
|
cb && themeMedia.addListener(function(event) { cb(event.matches? html.DARK: html.LIGHT) })
|
||||||
cb && cb(themeMedia.matches? html.DARK: html.LIGHT)
|
cb && cb(themeMedia.matches? html.DARK: html.LIGHT)
|
||||||
|
@ -169,7 +169,7 @@ Volcanos("user", {
|
|||||||
}
|
}
|
||||||
if (can.base.isArray(item)) {
|
if (can.base.isArray(item)) {
|
||||||
function subs(event) { var sub = can.user.carte(event, can, meta, item.slice(1), cb||function(event, button) {
|
function subs(event) { var sub = can.user.carte(event, can, meta, item.slice(1), cb||function(event, button) {
|
||||||
can.onimport && can.onimport[item[0]]? can.onimport[item[0]](can, button): click(event, button, index)
|
can.onimport && can.onimport[item[0]]? can.onimport[item[0]](can, button, event): click(event, button, index)
|
||||||
}, carte, trans); carte._sub = sub }
|
}, carte, trans); carte._sub = sub }
|
||||||
return {view: html.ITEM, list: [
|
return {view: html.ITEM, list: [
|
||||||
{text: can.user.trans(can, item[0], trans)},
|
{text: can.user.trans(can, item[0], trans)},
|
||||||
@ -214,7 +214,9 @@ Volcanos("user", {
|
|||||||
var action = can.onappend._action(can, button||[html.SUBMIT, html.CANCEL], ui.action, {
|
var action = can.onappend._action(can, button||[html.SUBMIT, html.CANCEL], ui.action, {
|
||||||
_trans: {submit: msg.Option(web.SUBMIT)},
|
_trans: {submit: msg.Option(web.SUBMIT)},
|
||||||
focus: function() { can.onmotion.focus(can, can.page.Select(can, ui._target, html.INPUT_ARGS)[0]) },
|
focus: function() { can.onmotion.focus(can, can.page.Select(can, ui._target, html.INPUT_ARGS)[0]) },
|
||||||
cancel: function() { can.page.Remove(can, ui._target) },
|
cancel: function(event) {
|
||||||
|
can.onengine.signal(can, "onremove", can.request(event, {query: can.page.getquery(can, ui._target)}))
|
||||||
|
can.page.Remove(can, ui._target) },
|
||||||
submit: function(event, can, button) { var args = [], data = {}, err = false
|
submit: function(event, can, button) { var args = [], data = {}, err = false
|
||||||
var list = can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) {
|
var list = can.page.Select(can, ui.table, html.OPTION_ARGS, function(item) {
|
||||||
if (item.value == "" && need[item.name] == "must") { err = true, item.focus(), can.user.toast(can, item.name+" 是必选字段, 请重新输入") }
|
if (item.value == "" && need[item.name] == "must") { err = true, item.focus(), can.user.toast(can, item.name+" 是必选字段, 请重新输入") }
|
||||||
@ -226,8 +228,7 @@ Volcanos("user", {
|
|||||||
}, _target: ui._target, _engine: function(event, can, button) { action.submit(event, can, button) },
|
}, _target: ui._target, _engine: function(event, can, button) { action.submit(event, can, button) },
|
||||||
});
|
});
|
||||||
title && can.page.Select(can, action._target, "input[name=submit]", function(target) { target.value = can.user.trans(can, title) })
|
title && can.page.Select(can, action._target, "input[name=submit]", function(target) { target.value = can.user.trans(can, title) })
|
||||||
if (event && event.target) {
|
if (event && event.target) { can.onlayout.figure(event, can, ui._target)
|
||||||
can.onlayout.figure(event, can, ui._target)
|
|
||||||
can.user.isMobile && can.page.style(can, ui._target, html.LEFT, (can.page.width()-ui._target.offsetWidth)/2, html.TOP, can.getHeaderHeight(can))
|
can.user.isMobile && can.page.style(can, ui._target, html.LEFT, (can.page.width()-ui._target.offsetWidth)/2, html.TOP, can.getHeaderHeight(can))
|
||||||
} else {
|
} else {
|
||||||
can.getActionSize(function(left, top, height) { can.page.style(can, ui._target, html.LEFT, left||0, html.TOP, (height/4||0)) })
|
can.getActionSize(function(left, top, height) { can.page.style(can, ui._target, html.LEFT, left||0, html.TOP, (height/4||0)) })
|
||||||
|
@ -17,7 +17,7 @@ body.mobile fieldset.Footer>div.output { font-style:italic; height:var(--footer-
|
|||||||
body.mobile fieldset.Footer>div.output div.toast { display:none; }
|
body.mobile fieldset.Footer>div.output div.toast { display:none; }
|
||||||
body.mobile fieldset.Footer>div.output div.cmd { display:none; }
|
body.mobile fieldset.Footer>div.output div.cmd { display:none; }
|
||||||
|
|
||||||
.picker { box-shadow:#626bd0 0px 2px 10px 5px !important; }
|
.picker { box-shadow:#626bd0 0px 2px 10px 5px !important; position:relative; top: -5px; transition:all 0.5s; }
|
||||||
div.view span.string { color:#f29766; }
|
div.view span.string { color:#f29766; }
|
||||||
div.view span.keyword { color:#5cadd4; }
|
div.view span.keyword { color:#5cadd4; }
|
||||||
div.item:not(.string):not(.number):not(.boolean)>span.value { color:var(--disable-fg-color); font-style:italic; }
|
div.item:not(.string):not(.number):not(.boolean)>span.value { color:var(--disable-fg-color); font-style:italic; }
|
||||||
|
@ -8,9 +8,15 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can._wss = can.onda
|
|||||||
can.onimport._title(can, msg, target), can.onimport._command(can, msg, target), can.onimport._storm(can, msg, target)
|
can.onimport._title(can, msg, target), can.onimport._command(can, msg, target), can.onimport._storm(can, msg, target)
|
||||||
can.misc.isDebug(can) && can.onimport._state(can, msg, target), can.onimport._toast(can, msg, target)
|
can.misc.isDebug(can) && can.onimport._state(can, msg, target), can.onimport._toast(can, msg, target)
|
||||||
if (!can.user.isTechOrRoot(can)) { return }
|
if (!can.user.isTechOrRoot(can)) { return }
|
||||||
can.onappend.input(can, {type: html.BUTTON, name: code.XTERM, onclick: function(event) { can.onappend._float(can, code.XTERM, cli.SH) }}, "", can._output)
|
can.core.List([
|
||||||
can.onappend.input(can, {type: html.BUTTON, name: cli.RUNTIME, onclick: function(event) { can.onappend._float(can, cli.RUNTIME) }}, "", can._output)
|
{index: code.XTERM, args: [cli.SH]},
|
||||||
can.onappend.input(can, {type: html.BUTTON, name: chat.MESSAGE, onclick: function(event) { can.onappend._float(can, chat.MESSAGE) }}, "", can._output)
|
{index: cli.RUNTIME},
|
||||||
|
{index: chat.MESSAGE},
|
||||||
|
{index: chat.TUTOR},
|
||||||
|
], function(value) { value.type = html.BUTTON, value.name = value.index
|
||||||
|
value.onclick = function() { can.onappend._float(can, value.index, value.args) }
|
||||||
|
can.onappend.input(can, value, "", can._output)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
_title: function(can, msg, target) { can.user.isMobile || can.core.List(can.Conf(chat.TITLE)||msg.result, function(item) {
|
_title: function(can, msg, target) { can.user.isMobile || can.core.List(can.Conf(chat.TITLE)||msg.result, function(item) {
|
||||||
if (can.base.contains(item, ice.AT)) { item = '<a href="mailto:'+item+'">'+item+'</a>' }
|
if (can.base.contains(item, ice.AT)) { item = '<a href="mailto:'+item+'">'+item+'</a>' }
|
||||||
@ -59,11 +65,22 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
|
|||||||
ontoast: function(can, msg) { can.core.CallFunc(can.onimport.ntip, {can: can, msg: msg}) },
|
ontoast: function(can, msg) { can.core.CallFunc(can.onimport.ntip, {can: can, msg: msg}) },
|
||||||
onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) },
|
onremote: function(can, msg) { can.core.CallFunc(can.onimport.ncmd, {can: can, msg: msg}) },
|
||||||
onunload: function(can) { can._wss && can._wss.close() },
|
onunload: function(can) { can._wss && can._wss.close() },
|
||||||
onrecord: function(can, msg) {
|
onrecord: function(can, msg) { var zone = can.misc.sessionStorage(can, "web.chat.script:zone")
|
||||||
var zone = can.misc.sessionStorage(can, "web.chat.script:zone")
|
|
||||||
zone && can.runAction(can.request(), nfs.SCRIPT, [zone].concat(msg.cmds[0]))
|
zone && can.runAction(can.request(), nfs.SCRIPT, [zone].concat(msg.cmds[0]))
|
||||||
},
|
},
|
||||||
onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) },
|
onaction_cmd: function(can) { can.onappend.style(can, html.HIDE) },
|
||||||
|
onstorm_select: function(event, can, river, storm) {
|
||||||
|
event.isTrusted != undefined && can.onimport._data(can, chat.TUTOR, {type: chat.STORM, text: [river, storm].join(",")})
|
||||||
|
},
|
||||||
|
onremove: function(event, can, query) {
|
||||||
|
event.isTrusted != undefined && query && can.onimport._data(can, chat.TUTOR, {type: "remove", text: query})
|
||||||
|
},
|
||||||
|
onevent: function(event, can, query) {
|
||||||
|
event.isTrusted != undefined && query && can.onimport._data(can, chat.TUTOR, {type: event.type, text: query})
|
||||||
|
},
|
||||||
|
ontheme: function(event, can, theme) {
|
||||||
|
event.isTrusted != undefined && can.onimport._data(can, chat.TUTOR, {type: chat.THEME, text: theme})
|
||||||
|
},
|
||||||
oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) },
|
oncommand_focus: function(can) { can.page.Select(can, can._output, ["div.cmd", html.INPUT], function(target) { can.onmotion.focus(can, target) }) },
|
||||||
onlayout: function(can, layout, before) { if (can.user.isMobile) { return }
|
onlayout: function(can, layout, before) { if (can.user.isMobile) { return }
|
||||||
can.page.ClassList.del(can, can._target, before), can.page.ClassList.add(can, can._target, layout)
|
can.page.ClassList.del(can, can._target, before), can.page.ClassList.add(can, can._target, layout)
|
||||||
|
@ -49,7 +49,8 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) {
|
|||||||
background: function(event, can, background) { can.user.isExtension || can.user.isLocalFile || can.runAction(event, aaa.BACKGROUND, [background], function(msg) {
|
background: function(event, can, background) { can.user.isExtension || can.user.isLocalFile || can.runAction(event, aaa.BACKGROUND, [background], function(msg) {
|
||||||
can.user.info.background = background, can.onimport._background(can, msg), can.user.toastSuccess(can)
|
can.user.info.background = background, can.onimport._background(can, msg), can.user.toastSuccess(can)
|
||||||
}) },
|
}) },
|
||||||
theme: function(can, theme) { theme && theme != ice.AUTO && can.runAction({}, chat.THEME, [theme])
|
theme: function(can, theme, event) { theme && theme != ice.AUTO && can.runAction({}, chat.THEME, [theme])
|
||||||
|
if (theme) { can.onengine.signal(can, "ontheme", can.request(event, {theme: theme})) }
|
||||||
theme && can.require(["/chat/theme/"+theme+".css"])
|
theme && can.require(["/chat/theme/"+theme+".css"])
|
||||||
theme && can.misc.localStorage(can, "can.theme", can._theme = theme == ice.AUTO? "": theme) && can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: theme}))
|
theme && can.misc.localStorage(can, "can.theme", can._theme = theme == ice.AUTO? "": theme) && can.onengine.signal(can, chat.ONTHEMECHANGE, can.request(event, {theme: theme}))
|
||||||
theme = can.onexport.theme(can); var list = [html.LIGHT, html.WHITE]
|
theme = can.onexport.theme(can); var list = [html.LIGHT, html.WHITE]
|
||||||
@ -135,7 +136,7 @@ Volcanos(chat.ONACTION, {_init: function(can) {},
|
|||||||
usernick: function(event, can) { can.onaction.carte(can.request(event, {_style: "header usernick"}), can, can.onaction._menus) },
|
usernick: function(event, can) { can.onaction.carte(can.request(event, {_style: "header usernick"}), can, can.onaction._menus) },
|
||||||
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN, mdb.NAME, can.user.title()]) },
|
shareuser: function(event, can) { can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, mdb.TYPE, aaa.LOGIN, mdb.NAME, can.user.title()]) },
|
||||||
theme: function(event, can) { can.page.Select(can, can._output, "div.item.theme>i:first-child", function(target) {
|
theme: function(event, can) { can.page.Select(can, can._output, "div.item.theme>i:first-child", function(target) {
|
||||||
can.onimport.theme(can, can.onimport._theme(can, target.className == icon.SUN? html.DARK: html.LIGHT))
|
can.onimport.theme(can, can.onimport._theme(can, target.className == icon.SUN? html.DARK: html.LIGHT), event)
|
||||||
}) },
|
}) },
|
||||||
qrcode: function(event, can) { can.user.share(can, can.request(event, {_handle: ice.TRUE}), [ctx.ACTION, cli.QRCODE]) },
|
qrcode: function(event, can) { can.user.share(can, can.request(event, {_handle: ice.TRUE}), [ctx.ACTION, cli.QRCODE]) },
|
||||||
language: function(event, can) { can.onimport.language(can, can.user.info.language.indexOf("zh") == 0? "en-us": "zh-cn") },
|
language: function(event, can) { can.onimport.language(can, can.user.info.language.indexOf("zh") == 0? "en-us": "zh-cn") },
|
||||||
|
@ -20,7 +20,7 @@ fieldset.River>div.toggle.next { bottom:-52px; }
|
|||||||
fieldset.River:not(:hover)>div.toggle { visibility:hidden; }
|
fieldset.River:not(:hover)>div.toggle { visibility:hidden; }
|
||||||
fieldset.River.page { display:none; }
|
fieldset.River.page { display:none; }
|
||||||
fieldset.River:not(.all):not(.tabs):not(.page) { width:var(--header-height); }
|
fieldset.River:not(.all):not(.tabs):not(.page) { width:var(--header-height); }
|
||||||
fieldset.River:not(.all):not(.tabs):not(.page)>div.action { flex-direction:column; overflow:hidden; }
|
fieldset.River:not(.all):not(.tabs):not(.page)>div.action { flex-direction:column; overflow:hidden; visibility:hidden; }
|
||||||
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item { margin-right:0; }
|
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item { margin-right:0; }
|
||||||
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item.share { display:none; }
|
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item.share { display:none; }
|
||||||
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item.refresh { display:none; }
|
fieldset.River:not(.all):not(.tabs):not(.page)>div.action div.item.refresh { display:none; }
|
||||||
|
@ -74,6 +74,7 @@ Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: func
|
|||||||
action: function(event, can, river, storm) {
|
action: function(event, can, river, storm) {
|
||||||
can._scrollTop = can._output.scrollTop
|
can._scrollTop = can._output.scrollTop
|
||||||
can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) })
|
can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_ITEM], function(target) { can.page.ClassList.del(can, target, html.SELECT) })
|
||||||
|
can.onmotion.toggle(can, can.ui.sublist[river], true)
|
||||||
can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)])
|
can.onmotion.select(can, can.ui.sublist[river], html.DIV_ITEM, can.ui.storm_list[can.core.Keys(river, storm)])
|
||||||
can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
|
can.onmotion.select(can, can._output, html.DIV_ITEM, can.ui.river_list[river])
|
||||||
var list = can.db.storm_list[river];
|
var list = can.db.storm_list[river];
|
||||||
|
@ -426,7 +426,6 @@ Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { if (!msg) { return }
|
|||||||
}
|
}
|
||||||
can.onengine.signal(can, VIEW_CREATE, msg), can.base.isFunc(cb) && cb(msg._content = content._root? content._root: content)
|
can.onengine.signal(can, VIEW_CREATE, msg), can.base.isFunc(cb) && cb(msg._content = content._root? content._root: content)
|
||||||
can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) })
|
can.onmotion.delay(can, function() { can.onappend.scroll(can, can.ui.content) })
|
||||||
// can.onmotion.orderShow(can, can.ui.content, "tr")
|
|
||||||
} can.require([chat.PLUGIN_LOCAL+"code/inner/syntax.js"], function() { var parse = can.onexport.parse(can); can.Conf(chat.PLUG) && (can.onsyntax[parse] = can.Conf(chat.PLUG))
|
} can.require([chat.PLUGIN_LOCAL+"code/inner/syntax.js"], function() { var parse = can.onexport.parse(can); can.Conf(chat.PLUG) && (can.onsyntax[parse] = can.Conf(chat.PLUG))
|
||||||
var p = can.onsyntax[parse]; !p? can.runAction({}, mdb.PLUGIN, [parse, file, path], function(msg) {
|
var p = can.onsyntax[parse]; !p? can.runAction({}, mdb.PLUGIN, [parse, file, path], function(msg) {
|
||||||
p = can.base.Obj(msg.Result())
|
p = can.base.Obj(msg.Result())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user