mirror of
https://shylinux.com/x/volcanos
synced 2025-04-25 16:58:06 +08:00
add language
This commit is contained in:
parent
10d9e7cf7f
commit
d5fe74945c
11
frame.js
11
frame.js
@ -298,7 +298,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
},
|
||||
field: function(can, type, item, target) { type = type || html.INPUT, item = item || {}
|
||||
var name = (item.nick||item.name||"").split(" ")[0]
|
||||
var title = item.help? name+"("+item.help.split(" ")[0]+")": name
|
||||
var title = !item.help || can.user.language(can) == "en"? name: name+"("+item.help.split(" ")[0]+")"
|
||||
return can.page.Append(can, target||can._output, [{view: [(type||"")+" "+(item.name||"")+" "+(item.pos||""), html.FIELDSET], list: [
|
||||
name && {text: [title, html.LEGEND]},
|
||||
can.user.mod.isCmd && type == "plugin" && {view: [html.LEGEND, html.DIV, title]},
|
||||
@ -343,7 +343,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
return {type: html.OPTION, value: value, inner: value}
|
||||
}), item.className || can.page.ClassList.add(can, item, "args")
|
||||
break
|
||||
case "button": item.value = item.value||item.name||"查看"; break
|
||||
case "button": item.value = item.value||item.name||"list"; break
|
||||
case "upfile": item.type = html.FILE; break
|
||||
case "upload": item.type = html.FILE, input.name = "upload"; break
|
||||
}
|
||||
@ -475,7 +475,7 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
})
|
||||
|
||||
|
||||
can.onappend._action(can, ["关闭", "刷新", {input: "text", placeholder: "filter", style: {position: ""}, _init: function(input) {
|
||||
can.onappend._action(can, ["close", "refresh", {input: "text", placeholder: "filter", style: {position: ""}, _init: function(input) {
|
||||
can.onengine.signal(can, "keymap.focus", can.request({}, {cb: function(event) {
|
||||
if (event.target.tagName == "INPUT") { return }
|
||||
if (event.key == "Escape") { ui.close(); return }
|
||||
@ -495,8 +495,8 @@ Volcanos("onappend", {help: "渲染引擎", list: [], _init: function(can, meta,
|
||||
}
|
||||
})
|
||||
})
|
||||
}}], ui.action, { "关闭": ui.close,
|
||||
"刷新": function(event) { ui.close(), can.toast.click() },
|
||||
}}], ui.action, { "close": ui.close,
|
||||
"refresh": function(event) { ui.close(), can.toast.click() },
|
||||
})
|
||||
can.onappend.table(can, msg, function(value, key, index, line, list) {
|
||||
return {text: [value, "td"], onclick: function(event) {
|
||||
@ -543,6 +543,7 @@ Volcanos("onlayout", {help: "页面布局", list: [], _init: function(can, targe
|
||||
},
|
||||
topic: function(can, topic) { topic && (can._topic = topic)
|
||||
can.user.topic(can, can._topic || can.user.Search(can, "topic") || ((can.user.Search(can, cli.POD)||can.base.isNight())? "black": "white"))
|
||||
can.page.ClassList.add(can, document.body, can.user.language(can))
|
||||
},
|
||||
figure: function(event, can, target, right) { target = target||can._target; if (!event || !event.target) { return }
|
||||
var left = event.clientX-event.offsetX, top = event.clientY-event.offsetY+event.target.offsetHeight; if (right) {
|
||||
|
@ -143,6 +143,7 @@ Volcanos("base", {help: "数据类型",
|
||||
},
|
||||
Time: function(time, fmt) { var now = this.Date(time)
|
||||
var list = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
||||
var list = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
|
||||
fmt = fmt || "%y-%m-%d %H:%M:%S"
|
||||
fmt = fmt.replace("%y", now.getFullYear())
|
||||
fmt = fmt.replace("%m", this.Number(now.getMonth()+1, 2))
|
||||
|
11
lib/user.js
11
lib/user.js
@ -37,13 +37,21 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
reload: function(force) { (force || confirm("重新加载页面?")) && location.reload() },
|
||||
jumps: function(url) { location.href = url },
|
||||
open: function(url) { window.open(url) },
|
||||
time: function(can, time, fmt) { var now = can.base.Date(time)
|
||||
var list = can.user.language(can) == "en"? ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"]
|
||||
return can.base.Time(time, (fmt||"%y-%m-%d %H:%M:%S").replace("%w", list[now.getDay()]))
|
||||
},
|
||||
|
||||
title: function(text) { return text && (document.title = text), document.title },
|
||||
topic: function(can, name) {
|
||||
can.user.isMobile && (name += " mobile") && can.user.isLandscape && (name += " landscape")
|
||||
can.page.Modify(can, document.body, {className: name})
|
||||
},
|
||||
language: function(can) {
|
||||
return can.user.Search(can, "language")
|
||||
},
|
||||
trans: function(can, text) {
|
||||
if (can.user.language(can) == "en") { return text }
|
||||
if (typeof text == "object") {
|
||||
return can.core.Item(text, function(k, v) { can.core.Value(can._trans, k, v) })
|
||||
}
|
||||
@ -53,6 +61,9 @@ Volcanos("user", {help: "用户操作", agent: {
|
||||
"submit": "提交", "cancel": "取消",
|
||||
"open": "打开", "close": "关闭",
|
||||
"begin": "启动", "end": "结束",
|
||||
"list": "查看", "back": "返回",
|
||||
"run": "执行", "refresh": "刷新",
|
||||
"share": "共享",
|
||||
}[text] || text
|
||||
},
|
||||
toast: function(can, content, title, duration, progress) {
|
||||
|
@ -58,6 +58,10 @@ input[type=button] {
|
||||
letter-spacing:4px;
|
||||
padding-left:10px;
|
||||
cursor:pointer;
|
||||
font-family:monospace;
|
||||
}
|
||||
body.en input[type=button] {
|
||||
letter-spacing:2px;
|
||||
}
|
||||
input[type=button]:hover {
|
||||
background-color:gray; color:cyan;
|
||||
|
@ -2,7 +2,7 @@ Volcanos({name: "chat", iceberg: "/chat/", volcano: "/frame.js",
|
||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [
|
||||
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username", "avatar"]},
|
||||
{name: "Search", help: "搜索框", pos: "auto"},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
|
||||
{name: "Action", help: "工作台", pos: "main"},
|
||||
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
|
||||
], main: {name: "Header"}, river: {
|
||||
|
@ -44,7 +44,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
_state: function(can, msg, target) { const STATE = "state"
|
||||
can.core.List(can.base.Obj(can.Conf(STATE)||msg.Option(STATE), [kit.MDB_TIME, aaa.USERNAME]), function(item) {
|
||||
if (item == aaa.AVATAR) {
|
||||
can.page.Append(can, target, [{view: [STATE+" "+item], list: [{img: can.Conf(item)}], onmouseenter: function(event) {
|
||||
can.page.Append(can, target, [{view: [STATE+" "+item], list: [{img: can.Conf(item)||" "}], onmouseenter: function(event) {
|
||||
can.onaction.carte(event, can, [can.page.Format(html.IMG, can.Conf(item), 160)])
|
||||
}}])
|
||||
return
|
||||
@ -119,7 +119,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
},
|
||||
|
||||
time: function(can, target) { can.onlayout.topic(can)
|
||||
target.innerHTML = can.base.Time(null, "%w %H:%M:%S")
|
||||
target.innerHTML = can.user.time(can, null, "%w %H:%M:%S")
|
||||
},
|
||||
menu: function(can, cmds, cb) {
|
||||
return can.page.Append(can, can._output, [{type: cmds[0], list: can.core.List(cmds.slice(1), function(item) {
|
||||
@ -158,6 +158,9 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
"river": "菜单",
|
||||
"search": "搜索",
|
||||
|
||||
"create": "创建",
|
||||
"share": "共享",
|
||||
|
||||
"help": "帮助",
|
||||
"tutor": "入门简介",
|
||||
"manual": "使用手册",
|
||||
@ -235,7 +238,13 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
},
|
||||
|
||||
username: function(event, can) {
|
||||
can.onaction.carte(event, can, ["shareuser", aaa.USERNICK, "clear", aaa.LOGOUT])
|
||||
can.onaction.carte(event, can, ["shareuser", aaa.USERNICK, "clear", aaa.LOGOUT, "english", "chinese"])
|
||||
},
|
||||
english: function(event, can) {
|
||||
can.user.Search(can, "language", "en")
|
||||
},
|
||||
chinese: function(event, can) {
|
||||
can.user.Search(can, "language", "zh")
|
||||
},
|
||||
shareuser: function(event, can) {
|
||||
can.user.share(can, can.request(event), [ctx.ACTION, chat.SHARE, kit.MDB_TYPE, aaa.LOGIN])
|
||||
@ -252,7 +261,10 @@ Volcanos("onaction", {help: "交互数据", list: [], _init: function(can, meta,
|
||||
}, true)
|
||||
})
|
||||
},
|
||||
clear: function(event, can, button) { can.onimport.background(event, can, "") },
|
||||
clear: function(event, can, button) {
|
||||
can.onimport.background(event, can, "")
|
||||
can.onimport.avatar(event, can, "")
|
||||
},
|
||||
logout: function(event, can) { can.user.logout(can) },
|
||||
|
||||
River: function(can) { can.search({}, ["River.onmotion.toggle"]) },
|
||||
|
@ -54,12 +54,12 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
Volcanos("onengine", {help: "解析引擎", list: [], _engine: function(event, can, msg, panel, cmds, cb) {
|
||||
var list = can.onengine._river||can.onengine.river
|
||||
cmds.length == 0 && can.core.Item(list, function(key, value) {
|
||||
msg.Push({hash: key, name: value.name}) // 群组列表
|
||||
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 群组列表
|
||||
}); if (cmds.length != 1 && cmds[1] != chat.TOOL) { return false }
|
||||
|
||||
var river = list[cmds[0]]; if (!river) { return false }
|
||||
can.core.Item(river.storm, function(key, value) {
|
||||
msg.Push({hash: key, name: value.name}) // 应用列表
|
||||
msg.Push({hash: key, name: can.user.language(can) == "en"? key: value.name}) // 应用列表
|
||||
}), can.base.isFunc(cb) && cb(msg); return true
|
||||
},
|
||||
})
|
||||
@ -135,8 +135,8 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, msg,
|
||||
Volcanos("ondetail", {help: "菜单交互", list: ["共享群组", "添加应用", "添加设备", "重命名群组", "删除群组"],
|
||||
sublist: ["共享应用", "添加工具", "保存参数", "重命名应用", "删除应用"],
|
||||
menus: [chat.RIVER,
|
||||
["添加", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
|
||||
["共享", "共享群组", "共享应用", "共享工具", "共享主机", "访问空间"],
|
||||
["create", "创建群组", "添加应用", "添加工具", "添加用户", "添加设备", "创建空间"],
|
||||
["share", "共享群组", "共享应用", "共享工具", "共享主机", "访问空间"],
|
||||
],
|
||||
|
||||
"创建群组": function(event, can) { can.onaction.create(event, can) },
|
||||
|
@ -9,14 +9,14 @@ Volcanos("onaction", {help: "控件交互", list: [], _init: function(can, meta,
|
||||
}
|
||||
},
|
||||
|
||||
"执行": function(event, can) {
|
||||
"run": function(event, can) {
|
||||
var title = can.sup._name+" "+can.sup.Input([], true)
|
||||
var toast = can.user.toast(can, "执行中...", title, -1)
|
||||
can.run(event, [], function() { toast.close(), can.user.toast(can, "执行成功...", title) })
|
||||
},
|
||||
"刷新": function(event, can) { can.run(event) },
|
||||
"查看": function(event, can) { can.run(event) },
|
||||
"返回": function(event, can) { can.sup.onimport._back(can.sup) },
|
||||
"refresh": function(event, can) { can.run(event) },
|
||||
"list": function(event, can) { can.run(event) },
|
||||
"back": function(event, can) { can.sup.onimport._back(can.sup) },
|
||||
|
||||
onchange: function(event, can) {
|
||||
if (can.Conf("type") == "select") { can.run(event) }
|
||||
|
@ -38,7 +38,7 @@ Volcanos("onimport", {help: "导入数据", _init: function(can, msg, list, cb,
|
||||
event.key == "Enter" && can.onaction.searchLine(event, can, ui.word.value)
|
||||
}], value: "main", onfocus: function(event) { event.target.setSelectionRange(0, -1) }},
|
||||
{button: ["搜索", function(event) { can.onaction.searchLine(event, can, ui.word.value) }]},
|
||||
{button: ["返回", function(event) { can.onaction["返回"](event, can) }]},
|
||||
{button: ["back", function(event) { can.onaction["back"](event, can) }]},
|
||||
{button: ["关闭", function(event) { can.onaction["搜索"](event, can) }]},
|
||||
]},
|
||||
{view: "tags", style: {"max-height": 160}},
|
||||
@ -170,7 +170,7 @@ Volcanos("onsyntax", {help: "语法高亮", list: ["keyword", "prefix", "line"],
|
||||
},
|
||||
})
|
||||
Volcanos("onaction", {help: "控件交互", list: ["项目", "收藏"],
|
||||
"返回": function(event, can) {
|
||||
"back": function(event, can) {
|
||||
var last = can.history.pop(); last = can.history.pop()
|
||||
last && can.onimport.tabview(can, last.path, last.file, last.line)
|
||||
can.Status("跳转数", can.history.length)
|
||||
|
@ -43,7 +43,7 @@ Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg,
|
||||
event.target.setSelectionRange(0, -1)
|
||||
can.onkeymap._command(can)
|
||||
}},
|
||||
{button: ["执行", function(event) {
|
||||
{button: ["run", function(event) {
|
||||
can.onkeymap.command.Enter(event, can, can.ui.cmd.value)
|
||||
}]},
|
||||
{button: ["清空", function(event) {
|
||||
|
@ -134,7 +134,7 @@ Volcanos("onaction", {help: "控件交互", list: [],
|
||||
location.href = "/"
|
||||
},
|
||||
|
||||
"演示": function(event, can) { var list = [], current = []
|
||||
"play": function(event, can) { var list = [], current = []
|
||||
can.page.Select(can, can._output, ".story", function(item) {
|
||||
switch (item.tagName) {
|
||||
case "H1":
|
||||
|
@ -2,7 +2,7 @@ Volcanos({name: "demo", iceberg: "http://localhost:9020/chat/", volcano: "/frame
|
||||
libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panels: [
|
||||
{name: "Header", help: "标题栏", pos: "head", state: ["time", "username"]},
|
||||
{name: "Search", help: "搜索框", pos: "auto"},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["创建", "刷新"]},
|
||||
{name: "River", help: "群聊组", pos: "left", action: ["create", "refresh"]},
|
||||
{name: "Action", help: "工作台", pos: "main"},
|
||||
{name: "Footer", help: "状态条", pos: "foot", state: ["ncmd"]},
|
||||
], main: {name: "Header", list: ["/publish/order.js"]}, plugin: [
|
||||
|
@ -97,14 +97,14 @@ Page({
|
||||
}
|
||||
|
||||
switch (input.name) {
|
||||
case "返回": // 恢复命令
|
||||
case "back": // 恢复命令
|
||||
page.data.back[data.order].pop(); var line = page.data.back[data.order].pop()
|
||||
kit.List(field.inputs, function(input, index) {
|
||||
if (input._input != "button") { input.value = line&&line[index] || "" }
|
||||
})
|
||||
case "执行": // 执行命令
|
||||
case "run": // 执行命令
|
||||
case "刷新": // 执行命令
|
||||
case "查看": page.run(event, data.order); break
|
||||
case "list": page.run(event, data.order); break
|
||||
default:
|
||||
var cb = page.plugin[input.name]; can.base.isFunc(cb)? cb(event, page, data.order, input.name):
|
||||
page.run(event, data.order, ["action", input.name].concat(kit.List(field.inputs, function(input) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user