1
0
mirror of https://shylinux.com/x/volcanos synced 2025-07-01 12:04:43 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2025-06-27 17:35:21 +08:00
parent ac5a9f1597
commit c907a95149
3 changed files with 50 additions and 20 deletions

View File

@ -154,6 +154,22 @@ table.content.detail tr.action input.danger { color:var(--danger-bg-color); }
table.content.detail tr.action input.notice:not(:hover) { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
table.content.detail tr.action i { display:unset; color:var(--notice-bg-color); }
table.content.detail tr.action i.bi-trash { color:var(--danger-bg-color); }
body.width1 div.output div.video.width.bilibili iframe { height:200px; }
div.output div.code.qrcode { position:relative; }
div.output div.code.qrcode { text-align:center; display:inline-block; }
div.output div.code.qrcode>img.qrcode:hover {
box-shadow:var(--notice-box-shadow);
}
div.output div.code.qrcode>img.qrcode {
box-shadow:var(--box-shadow); border-radius:10px;
margin:10px 10px; height:200px; width:200px;
}
div.output div.code>img.avatar {
box-shadow:var(--box-shadow); border-radius:10px; border:solid 2px white; object-fit:cover; --qrcode-icon-height:32px;
height:var(--qrcode-icon-height) !important; width:var(--qrcode-icon-height) !important;
position:absolute; top:calc(50% - var(--qrcode-icon-height) / 2 - 12px); left:calc(50% - var(--qrcode-icon-height) / 2);
}
fieldset.plugin.cmd.output>div.output { top:0; }
div.output._unload { position:absolute; }
fieldset._process input { background-color:transparent !important; color:var(--disable-fg-color) !important; }
@ -460,7 +476,7 @@ fieldset.input.key>div.action {
}
body div.input.float div.action>div.item { margin-left:var(--button-margin); float:right; flex-grow:1; }
body div.input.float div.action>div.item>input[type=button] { min-width:112px; width:100%; }
body>div.input.login { flex-direction:column; }
body>div.input.login { flex-direction:column; border-radius:20px; }
body>div.input.login>div.action { border-bottom:var(--box-border); padding:0; flex-direction:row; }
body>div.input.login>div.action>div.tabs { padding:var(--button-padding); }
body>div.input.login>div.action>div.tabs.select { color:unset; }

View File

@ -419,11 +419,12 @@ Volcanos("page", {
return _list
},
button: function(can, name, cb) {
var icon = can.Conf("_icons."+name)
if (icon) { return {icon: icon, onclick: cb||function(event) { can.Update(event, [ctx.ACTION, name]) }} }
return {view: [["item.button"]], list: [
{type: html.INPUT, data: {type: html.BUTTON, name: name, value: can.user.trans(can, name)}, onclick: cb||function(event) { can.Update(event, [ctx.ACTION, name]) }},
{text: name},
var data = typeof name == "string"? {name: name}: name
var icon = can.Conf("_icons."+data.name)
if (icon) { return {icon: icon, onclick: cb||function(event) { can.Update(event, [ctx.ACTION, data.name]) }} }
return {view: [["item.button", data.className]], list: [
{type: html.INPUT, data: {type: html.BUTTON, name: data.name, value: data.value||can.user.trans(can, data.name)}, onclick: cb||function(event) { can.Update(event, [ctx.ACTION, name]) }},
{text: data.name},
]}
},
input: function(can, item, value) { var input = {type: html.INPUT, name: item.name, data: item, style: item.style||{}, dataset: {}, _init: item._init}

View File

@ -301,14 +301,18 @@ Volcanos(chat.ONIMPORT, {
},
myOption: function(can) { var sub = can.sub; if (!sub) { return }
var PLACE_UID = can.core.Item(can.Option())[0]
var current = can.current||{}, msg = can._msg, plugin = can
if (sub._stacks_current) { var plugin = sub._stacks_current[0], current = plugin.current||{}
can.core.List(sub._stacks_current, function(p) { current = p.current||current, p.current && (plugin = p) })
if (plugin == sub._stacks_root) { var PLACE_UID = can.core.Item(can.Option())[0]
if (plugin == sub._stacks_root) { var place_uid = can.Option(PLACE_UID)
// var place_uid = can.Option(PLACE_UID) == can.misc.Search(can, PLACE_UID)? "": can.Option(PLACE_UID)
var place_uid = can.Option(PLACE_UID)
if (sub._stacks_current.length == 1) {
if (can.misc.Search(can, PLACE_UID) == place_uid) {
can.misc.SearchHash(can, "")
} else {
plugin.sub.onexport.hash(plugin.sub, place_uid)
}
} else {
plugin.sub.onexport.hash(plugin.sub, place_uid, can.ConfIndex(), can.Option(UID))
}
@ -316,6 +320,14 @@ Volcanos(chat.ONIMPORT, {
sub._stacks_root.onexport.title(sub._stacks_root, current._name, can.ConfHelp(),
msg.Option("_share_title")||(msg.IsDetail()? msg.Append(html.TITLE)||msg.Append(mdb.NAME)||(msg.Append(UID)||"").slice(0, 6): "")
)
} else {
if (can.isCmdMode() && can.current) { var place_uid = can.current._uid
if (can.misc.Search(can, PLACE_UID) == place_uid) {
can.misc.SearchHash(can, "")
} else {
can.onexport.hash(can, place_uid)
}
}
}
var icons = ""; can.core.List([current.icons, can.ConfIcons(), plugin.ConfIcons()], function(p) {
if (p && p.indexOf("bi ") == -1) { icons = icons||can.misc.Resource(can, p, plugin.ConfSpace()) }
@ -414,7 +426,7 @@ Volcanos(chat.ONIMPORT, {
if (!can.user.isMobile || msg.IsDetail() && msg.Append("user_uid") && msg.Append("user_uid") != msg.Option("user.uid")) { can.page.Append(can, _action, [{view: [[html.ITEM, html.SPACE]]}])
var value = {user_uid: msg.Option("user.uid"), user_name: msg.Option(ice.MSG_USERNICK), user_avatar: can.misc.Resource(can, msg.Option("user.avatar"))}
can.page.Append(can, _action, [{view: [[html.ITEM, "user_info"]], list: [
{view: html.NAME, list: [{text: value.user_name}, can.onimport.timeView(can, value)]}, can.onimport.textView(can, value, USER_PLACE_ROLE), {img: value.user_avatar},
{view: html.NAME, list: [{text: value.user_name.split("@")[0]}, can.onimport.timeView(can, value)]}, can.onimport.textView(can, value, USER_PLACE_ROLE), {img: value.user_avatar},
], onclick: function(event) {
sub.sub.run(sub.sub.request(event, {uid: value.user_uid}), [ctx.ACTION, "userInfo"])
}}])
@ -423,15 +435,14 @@ Volcanos(chat.ONIMPORT, {
sub._select = function() { can.onimport.myOption(sub), can.user.trans(can, {goback: "返回"})
can.page.SelectChild(can, _output, "*", function(target) { can.onmotion.toggle(can, target, target == sub._target) })
var list = [
can.page.button(can, can.user.isMobile? "主页": plugin.current._name, function(event) {
can.page.button(can, {name: can.user.isMobile? "主页": plugin.current._name, className: "place"}, function(event) {
var last = can._stacks_current[can._stacks_current.length-1]; can.onmotion.slideOut(last, function() {
while (!last.current || last != plugin) { last = can._stacks_current.pop() }
can._stacks_current.push(last), last._select()
if (can.page.SelectChild(can, last._output, "div.header").length == 0) { last.Update(event) }
})
}),
can.user.isMobile || can.page.button(can, can.user.trans(can, sub.ConfIndex().split(".").pop(), sub.ConfHelp()), function(event) {
return
can.user.isMobile || can.page.button(can, {name: can.user.trans(can, sub.ConfIndex().split(".").pop(), sub.ConfHelp()), className: "index"}, function(event) {
can._msg.IsTech() && sub._legend.onclick(event)
}),
can.page.button(can, "goback", function(event) { goback(event) }),
@ -459,9 +470,7 @@ Volcanos(chat.ONIMPORT, {
}))
},
_myTabs: function(can, status, msg, target) { var trans = can.Conf("feature._trans.value."+status)
var stat = {}; msg.Table(function(value) {
var key = value[status]; stat[key] = (stat[key]||0)+1
})
var stat = {}; msg.Table(function(value) { var key = value[status]; stat[key] = (stat[key]||0)+1 })
var list = can.core.Item(trans, function(key, value) { if (key == "style") { return }
if (stat[key]) { return {name: key.split("@")[0], value: value+"("+stat[key]+")", style: can.core.Value(trans, "style."+key) } }
})
@ -469,15 +478,16 @@ Volcanos(chat.ONIMPORT, {
msg.Table(function(value) { can.base.AddUniq(_list, value[status]), stat[value[status]] = (stat[value[status]]||0)+1 })
can.core.List(_list, function(status) { list.push({name: status, value: status+"("+stat[status]+")"}) })
}
var last = can.sup.Conf("option."+status)
if (list.length < 3) { return }
var last = can.sup.Conf("tabs."+status)
can.page.Append(can, target, [{view: [["tabs", status]], list: can.core.List([
{name: "all", value: "全部"+"("+msg.Length()+")", style: last == undefined? "select": ""},
].concat(list), function(value) {
return {view: [[html.ITEM].concat([value.name, value.style, value.name == last? "select": ""]), "", can.user.trans(can, value.name, value.value)], onclick: function(event) { var target = event.currentTarget
can.onmotion.select(can, target.parentNode, html.DIV_ITEM, target)
can.sup.Conf("option."+status, value.name == "all"? "": value.name)
can.sup.Conf("tabs."+status, value.name == "all"? "": value.name)
can.page.Select(can, can._output, "div.item.card", function(target) {
var hide = can.core.Item(can.sup.Conf("option"), function(key, value) {
var hide = can.core.Item(can.sup.Conf("tabs"), function(key, value) {
if (!can.page.ClassList.has(can, target, value)) { return key }
}).length > 0;
if (can.onmotion.hidden(can, target, !hide)) { return target }
@ -487,7 +497,7 @@ Volcanos(chat.ONIMPORT, {
},
myViewTabs: function(can, status, msg, cb, cbs, target) { typeof status == "string" && (status = [status])
if (!msg.IsDetail() && msg.Length() > 3) {
can.ui.tabs = can.page.Append(can, can._output, [{view: html.TABS}])._target
can.ui.tabs = can.page.Append(can, can._output, [{view: [[html.TABS, "multi"]]}])._target
can.core.List(status, function(status) { can.onimport._myTabs(can, status, msg, can.ui.tabs) })
can.page.Append(can, can.ui.tabs.lastChild, [{view: [[html.ITEM, "wrap"], "", can.user.trans(can, "expand", "展开")], onclick: function(event) {
event.target.innerHTML = can.page.ClassList.neg(can, can.ui.tabs, "wrap")? can.user.trans(can, "collapse", "折叠"): can.user.trans(can, "expand", "展开")
@ -556,6 +566,9 @@ Volcanos(chat.ONIMPORT, {
cb = cb|| function(event) { var done = false
if (can.onaction.carddetail && can.onaction.carddetail(event, can, value)) { return }
if (value.uid) {
if (can.page.tagis(can._fields, "fieldset.input.key.float")) {
return can.Option(UID, value.uid), can.Update(can.request(event, value))
}
can.onimport.myStory(can, {space: can.ConfSpace(), index: can.ConfIndex(), args: can.core.Item(can.Option(), function(key, value) {
return value
}).slice(0, 1).concat([value.uid]) })