From a2aabed8c0e2dfe644e684a89a97b0d591eca942 Mon Sep 17 00:00:00 2001 From: harveyshao Date: Sat, 12 Nov 2022 00:33:42 +0800 Subject: [PATCH] opt chat --- frame.js | 11 +++++--- lib/core.js | 1 + lib/lunar.js | 1 + lib/page.js | 3 --- lib/user.js | 2 +- panel/action.js | 2 +- panel/footer.js | 6 ++--- panel/header.js | 38 +++++++++++++++------------- panel/search.js | 2 +- plugin/local/chat/div.js | 4 +-- plugin/local/chat/iframe.js | 5 ++-- plugin/local/chat/keyboard.js | 2 +- plugin/local/chat/location.js | 6 ++--- plugin/local/chat/media.js | 4 +-- plugin/local/chat/trans.js | 4 +-- plugin/local/code/inner.js | 26 +++++++++---------- plugin/local/code/inner/favor.js | 2 +- plugin/local/code/inner/sess.js | 2 +- plugin/local/code/inner/syntax.js | 2 +- plugin/local/code/inner/template.js | 2 +- plugin/local/code/vimer.js | 12 ++++----- plugin/local/code/xterm.js | 8 +++--- plugin/local/wiki/draw.js | 2 +- plugin/local/wiki/draw/heart.js | 2 +- plugin/local/wiki/draw/path.js | 2 +- plugin/local/wiki/draw/walk_trash.js | 2 +- plugin/local/wiki/word.js | 8 +++--- plugin/state.js | 2 +- plugin/story/form.js | 2 +- plugin/story/json.js | 4 +-- plugin/story/media.js | 8 +++--- plugin/story/parse.js | 2 +- plugin/story/spide.js | 2 +- plugin/story/video.js | 4 +-- proto.js | 11 +++++--- publish/client/nodejs/proto.js | 2 +- 36 files changed, 102 insertions(+), 96 deletions(-) diff --git a/frame.js b/frame.js index 2ae1e274..307badea 100644 --- a/frame.js +++ b/frame.js @@ -34,7 +34,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { var names = msg.Option(chat._NAMES)||panel._names||((can.Conf("iceberg")||Volcanos.meta.iceberg)+panel._name) can.misc.Run(event, can, {names: names, daemon: msg._daemon}, cmds, function(msg) { toast && toast.close(), toast = true - can.base.isFunc(cb) && cb(msg), Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(ice.FS))] = msg + can.base.isFunc(cb) && cb(msg)//, Volcanos.meta.pack[can.core.Keys(panel._name, cmds.join(ice.FS))] = msg }) }, _static: function(event, can, msg, panel, cmds, cb) { if (!can.user.isLocalFile) { return false } @@ -54,7 +54,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { if (can.base.isUndefined(name) || !can.base.isString(name) || name.indexOf("can.") == -1) { return } if (can.base.isUndefined(command)) { return arguments.callee.meta[can.base.trimPrefix(name, "can.")] } var type = html.TEXT; command.list = can.core.List(command.list, function(item) { return can.base.isString(item) && (item = can.core.SplitInput(item, type)), type = item.type, item }) - command.can = can, command.name = name, arguments.callee.meta[can.base.trimPrefix(name, "can.")] = command + command.can = can, command.meta.name = name, arguments.callee.meta[can.base.trimPrefix(name, "can.")] = command }), listen: shy(function(can, name, cb) { arguments.callee.meta[name] = (arguments.callee.meta[name]||[]).concat(cb) }), signal: function(can, name, msg) { msg = msg||can.request(); var _msg = name == chat.ONREMOTE? msg.Option("_msg"): msg @@ -162,6 +162,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { }, _output0: function(can, meta, event, cmds, cb, silent) { var msg = can.request(event); if (msg.RunAction(event, can, cmds)) { return } if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && meta.feature[cmds[1]]) { var msg = can.request(event, {action: cmds[1]}) + if (can.base.isFunc(meta.feature[cmds[1]])) { return meta.feature[cmds[1]](can, msg, cmds.slice(2)) } return can.user.input(event, can, meta.feature[cmds[1]], function(args) { can.Update(can.request(event, {_handle: ice.TRUE}, can.Option()), cmds.slice(0, 2).concat(args)) }) } return can.onengine._plugin(event, can, msg, can, cmds, cb) || can.run(event, cmds, cb||function(msg) { if (silent) { return } @@ -249,10 +250,10 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { tools: function(can, msg, cb, target) { can.onimport.tool(can, can.base.Obj(msg.Option(ice.MSG_TOOLKIT), []), cb, target) }, _plugin: function(can, value, meta, cb, target, field) { can.base.Copy(meta, value, true) + meta.name = meta.name||value&&value.meta&&value.meta.name||"" meta.type = meta.type||chat.STORY, meta.height = meta.height||can.ConfHeight(), meta.width = meta.width||can.ConfWidth() meta.args = can.base.getValid(can.base.Obj(meta.args), can.base.Obj(meta.arg), can.base.Obj(value.args), can.base.Obj(value.arg))||[] meta.inputs = can.base.getValid(meta.inputs, can.base.Obj(value.list))||[], meta.feature = can.base.getValid(meta.feature, can.base.Obj(value.meta))||{} - if (can.misc.Debug(can, chat.PLUGIN, meta.index, meta.args, meta)) { debugger } can.onappend._init(can, meta, [chat.PLUGIN_STATE_JS], function(sub, skip) { sub.run = function(event, cmds, cb) { can.runActionCommand(event, sub._index, cmds, cb) } sub._index = value.index||meta.index, can.base.isFunc(cb) && cb(sub, meta, skip) @@ -261,7 +262,9 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { plugin: function(can, meta, cb, target, field) { meta = meta||{}, meta.index = meta.index||can.core.Keys(meta.ctx, meta.cmd)||ice.CAN_PLUGIN var res = {}; function _cb(sub, meta, skip) { kit.proto(res, sub), cb && cb(sub, meta, skip) } if (can.misc.Debug(can, chat.PLUGIN, meta.index, meta.args, meta)) { debugger } if (meta.inputs && meta.inputs.length > 0 || meta.meta) { can.onappend._plugin(can, {meta: meta.meta, list: meta.list}, meta, _cb, target, field); return res } - var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, _cb, target, field); return res } + var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) { + _cb(sub, meta, skip), can.onmotion.delay(can, function() { value.meta && value.meta._init && value.meta._init(sub, meta) }) + }, target, field); return res } can.runAction(can.request({}, meta), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res }, _float: function(can, index, args) { diff --git a/lib/core.js b/lib/core.js index 6d068523..59c82f5f 100644 --- a/lib/core.js +++ b/lib/core.js @@ -48,6 +48,7 @@ Volcanos("core", { } return begin >= 0 && (s? push({type: lang.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res }, SplitInput: function(item, type) { if (typeof item == lang.OBJECT) { return item } type = type||html.TEXT; switch (item) { + case ice.RUN: return {type: type = html.BUTTON, name: item} case mdb.LIST: return {type: type = html.BUTTON, name: item, action: ice.AUTO} case ice.BACK: return {type: type = html.BUTTON, name: item} case mdb.NAME: return {type: type = html.TEXT, name: item} diff --git a/lib/lunar.js b/lib/lunar.js index c736d2a5..f8c9083f 100644 --- a/lib/lunar.js +++ b/lib/lunar.js @@ -1,3 +1,4 @@ +Volcanos.meta.cache["/lib/lunar.js"] = [] var calendar = { // @1900-2100区间内的公历转农历 solar2lunar: function(date) { var y = date.getFullYear(), m = date.getMonth()+1, d = date.getDate() var day = (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(1900,0,31))/86400000 diff --git a/lib/page.js b/lib/page.js index a0039a6f..fff8c263 100644 --- a/lib/page.js +++ b/lib/page.js @@ -142,9 +142,6 @@ Volcanos("page", {ClassList: { inputs: function(can, list) { var _list = []; for (var i = 0; i < list.length; i++) { switch (list[i]) { case "": _list.push(""); break - case ice.RUN: - _list.push({type: html.BUTTON, name: ice.RUN}) - break case ice.AUTO: _list.push({type: html.BUTTON, name: ice.LIST}) _list.push({type: html.BUTTON, name: ice.BACK}) diff --git a/lib/user.js b/lib/user.js index 3c52a1e3..de16af47 100644 --- a/lib/user.js +++ b/lib/user.js @@ -45,7 +45,7 @@ Volcanos("user", {info: {}, agent: { can.user.mod.isCmd && name.push(chat.SIMPLE) can.page.styleClass(can, can._root._target, name.join(ice.SP)) }, - language: function(can) { return can.misc.Search(can, "language") }, + language: function(can) { return can.misc.Search(can, "language")||can.user.info.language }, trans: function(can, text, list) { if (can.base.isFunc(text)) { text = text.name||"" } if (can.base.isObject(text)) { return can.core.Item(text, function(k, v) { can.core.Value(can._trans, k, v) }) } if (can.user.language(can) == "en") { return text } if (can.base.isString(list)) { return list } diff --git a/panel/action.js b/panel/action.js index 0270d6bf..06e45b1d 100644 --- a/panel/action.js +++ b/panel/action.js @@ -203,7 +203,7 @@ Volcanos(chat.ONPLUGIN, { "command": shy("插件列表", {}, [], function(can, msg, arg) { var meta = can.onengine.plugin.meta can.core.Item(arg[0] == ""? meta: meta[arg[0]]? kit.Dict(arg[0], meta[arg[0]]): {}, function(name, command) { msg.Push(kit.Dict(ice.CTX, ice.CAN, ice.CMD, ctx.COMMAND, - mdb.TYPE, ice.CAN, mdb.NAME, name, mdb.TEXT, command.help, + mdb.TYPE, ice.CAN, mdb.NAME, name||command.name, mdb.TEXT, command.help, ctx.CONTEXT, ice.CAN, ctx.COMMAND, name, ctx.INDEX, can.core.Keys(ice.CAN, name), ), msg.Option(ice.MSG_FIELDS).split(ice.FS)) }) diff --git a/panel/footer.js b/panel/footer.js index fabca8bb..441f1d03 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -6,7 +6,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { }, _title: function(can, msg, target) { can.user.isMobile || can.core.List(msg.result, function(item) { can.page.Append(can, target, [{view: [chat.TITLE, html.DIV, item], title: "联系站长"}]) }) }, _state: function(can, msg, target) { - can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), ["ncmd", "ntip"]), function(item) { + can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), ["ntip", "ncmd"]).reverse(), function(item) { can.page.Append(can, target, [{view: [can.base.join([chat.STATE, item]), html.DIV, can.Conf(item)], list: [ {text: [item, html.LABEL]}, {text: [": ", html.LABEL]}, {text: [can.Conf(item)||"", html.SPAN, item]}, ], onclick: function(event) { can.onexport[item](can) }}]) @@ -45,14 +45,14 @@ Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight return {text: [value, html.TD], onclick: function(event) { can.base.isFunc(cb) && cb(value, key, index, line, list) }} }, ui.output), can.onappend.board(can, msg.Result(), ui.output); return ui }, - ntip: function(can) { can.onexport.float(can, can._tips, "ntip", function(value, key, index, line) { can.onappend._float(can, "web.code.inner", ["usr/volcanos/"].concat(line.fileline.split(ice.DF))) }) }, + ntip: function(can) { can.onexport.float(can, can._tips, "ntip", function(value, key, index, line) { can.onappend._float(can, web.CODE_INNER, [ice.USR_VOLCANOS].concat(line.fileline.split(ice.DF))) }) }, ncmd: function(can) { can.onexport.float(can, can._cmds, "ncmd", function(value, key, index, line) { var cmds = can.base.Obj(line.cmds); switch (line.follow) { case "can.Action": cmds = cmds.slice(2); break case "can.Footer": cmds = cmds.slice(2); break } switch (cmds[0]) { - case "web.wiki.word": cmds = cmds.slice(5); break + case web.WIKI_WORD: cmds = cmds.slice(5); break } can.onappend._float(can, cmds[0], cmds.slice(1)) }) }, diff --git a/panel/header.js b/panel/header.js index e5d5cfaa..4b202cbf 100644 --- a/panel/header.js +++ b/panel/header.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onimport._title(can, msg, target) can.onimport._state(can, msg, target) can.onimport._avatar(can, msg, target) @@ -12,7 +12,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) }) }, _state: function(can, msg, target) { if (can.user.isMobile) { return } - can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), [aaa.USERNICK, mdb.TIME]).reverse(), function(item) { + can.core.List(can.base.Obj(can.Conf(chat.STATE)||msg.Option(chat.STATE), [aaa.AVATAR, aaa.USERNICK, mdb.TIME]).reverse(), function(item) { if (item == aaa.AVATAR ) { if (can.user.isLocalFile) { return } can.page.Append(can, target, [{view: can.base.join([chat.STATE, item]), list: [{img: ice.SP}], onmouseenter: function(event) { can.onaction.carte(event, can, [can.page.Format(html.IMG, can.onexport.avatar(can), 160)]) @@ -66,8 +66,8 @@ Volcanos(chat.ONACTION, { }, onmain: function(can, msg) { can.onimport.topic(can) can.run({}, [], function(msg) { if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) { - return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN), msg.Option("login.dev")) - } can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.language = can.misc.Search(can, aaa.LANGUAGE)||msg.Option(aaa.LANGUAGE) + return msg.Option(chat.SSO)? can.user.jumps(msg.Option(chat.SSO)): can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN), msg.Option("login.dev")) + } can.user.info.usernick = can.Conf(aaa.USERNICK), can.user.info.language = can.misc.Search(can, aaa.LANGUAGE)||msg.Option(aaa.LANGUAGE) can.user.info.background = msg.Option(aaa.BACKGROUND), can.user.info.avatar = msg.Option(aaa.AVATAR) msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) }) can.onmotion.clear(can), can.onimport._init(can, msg, can._output), can.ondaemon._init(can), can.onengine.signal(can, chat.ONLOGIN, msg) @@ -107,8 +107,8 @@ Volcanos(chat.ONACTION, { 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) { if (list[0] != list[1]) { return can.user.toast(can, "密码不一致"), ui.focus(), true } can.runAction(event, aaa.PASSWORD, [list[0]]) }) }, - chinese: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "zh") }, - english: function(event, can) { can.misc.Search(can, aaa.LANGUAGE, "en") }, + chinese: function(event, can) { can.runAction(event, aaa.LANGUAGE, ["zh"], function(msg) { can.user.reload() }) }, + english: function(event, can) { can.runAction(event, aaa.LANGUAGE, ["en"], function(msg) { can.user.reload() }) }, clear: function(event, can) { can.onimport.background(event, can, ""), can.onimport.avatar(event, can, "") }, logout: function(event, can) { can.user.logout(can) }, }) @@ -118,20 +118,22 @@ Volcanos(chat.ONEXPORT, {height: function(can) { return can._target.offsetHeight avatar: function(can) { return can.user.info.avatar == "void"? "": can.user.info.avatar }, }) Volcanos(chat.ONPLUGIN, { - "title": shy("标题", {}, [chat.TITLE, ice.RUN], function(can, msg, cmds) { can.user.title(cmds[0]) }), - "topic": shy("主题", {}, ["topic:select=white,black", ice.RUN], function(can, msg, cmds) { can.onimport.topic(can, cmds[0]) }), - "cookie": shy("参数", {}, [mdb.NAME, mdb.VALUE, ice.AUTO], function(can, msg, cmds) { - can.core.Item(can.misc.Cookie(can), function(key, value) { if (cmds[0] && key != cmds[0]) { return } - msg.Push(mdb.NAME, key), msg.Push(mdb.VALUE, value) - }) - }), - "alert": shy("提示", {}, [mdb.TEXT, ice.AUTO], function(can, msg, cmds) { cmds && cmds[0] && can.user.alert(cmds[0]) }), - "log": shy("日志", {}, [mdb.TEXT, ice.AUTO], function(can, msg, cmds) { can.misc.Log(cmds) }), - "location": shy("地址", { + title: shy("标题", {}, [chat.TITLE, ice.LIST], function(can, msg, cmds) { msg.Echo(can.user.title(cmds[0])) }), + topic: shy("主题", { + _init: function(can) { can.Option(chat.TOPIC, can.getHeader(chat.TOPIC)) }, + }, ["topic:select=white,black", ice.RUN], function(can, msg, cmds) { msg.Echo(can.onimport.topic(can, cmds[0])) }), + alert: shy("提示", {}, [mdb.TEXT, ice.LIST], function(can, msg, cmds) { cmds && cmds[0] && can.user.alert(cmds[0]) }), + location: shy("地址", { copy: function(can, msg, cmds) { can.user.copy(msg._event, can, location.href) }, - }, [mdb.LINK, ice.AUTO, ice.COPY], function(can, msg, cmds, cb) { + }, [mdb.LINK, ice.LIST, ice.COPY], function(can, msg, cmds, cb) { can.run(can.request({}, mdb.LINK, location.href), [web.SHARE], function(res) { msg.Echo(res.Append(mdb.TEXT)).Echo(ice.NL).Echo(can.page.Format(html.A, res.Append(mdb.NAME))), can.base.isFunc(cb) && cb(msg) }) }), -}) \ No newline at end of file + cookie: shy("参数", {}, [mdb.NAME, mdb.VALUE, ice.LIST, ice.BACK], function(can, msg, cmds) { + can.core.Item(can.misc.Cookie(can), function(key, value) { if (cmds[0] && key != cmds[0]) { return } + msg.Push(mdb.NAME, key), msg.Push(mdb.VALUE, value) + }) + }), + log: shy("日志", {}, [mdb.TEXT, ice.LIST], function(can, msg, cmds) { can.misc.Log(cmds) }), +}) diff --git a/panel/search.js b/panel/search.js index b05a8a4b..6f9b9b58 100644 --- a/panel/search.js +++ b/panel/search.js @@ -52,7 +52,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list plugin: function(event, can, index) { var line = can.list[index]; if (can.base.isFunc(line.text)) { return can.onmotion.hide(can), line.text(event) } var cmd = line.cmd == ctx.COMMAND? can.core.Keys(line.type, line.name.split(ice.SP)[0]): can.core.Keys(line.ctx, line.cmd) - can.onappend.plugin(can, {index: cmd||msg.Option(mdb.INDEX), args: cmd == "web.wiki.word"? [line.name]: []}, function(sub, meta) { can.onmotion.delay(can, function() { sub.Focus() }, 20) + can.onappend.plugin(can, {index: cmd||msg.Option(mdb.INDEX), args: cmd == web.WIKI_WORD? [line.name]: []}, function(sub, meta) { can.onmotion.delay(can, function() { sub.Focus() }, 20) sub.onimport.size(sub, can.base.Min(320, can.ConfHeight()-html.ACTION_HEIGHT-can.ui.content.offsetHeight-can.ui.display.offsetHeight)-2*html.ACTION_HEIGHT-1, can.ConfWidth()-1, true) }, can.ui.profile) }, diff --git a/plugin/local/chat/div.js b/plugin/local/chat/div.js index 556fb87e..2e631252 100644 --- a/plugin/local/chat/div.js +++ b/plugin/local/chat/div.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { var meta = {}; msg.Table(function(value) { meta[value.key] = value.value }) can._list = can.base.Obj(meta.text, {meta: {name: meta.name||html.DIV}, list: []}) can.sup._keys = can.sup._keys||can._list.meta.name @@ -53,7 +53,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar can.onimport._item(can, can._list.meta.name, can._list, can.ui.project, width, height) }, }, [""]) -Volcanos(chat.ONACTION, {help: "操作数据", +Volcanos(chat.ONACTION, { "添加": function(event, can) { can.user.input(event, can, [mdb.NAME, ctx.INDEX, ctx.ARGS, ctx.STYLE, html.HEIGHT, html.WIDTH], function(data) { can.current._add({meta: data, list: []}) diff --git a/plugin/local/chat/iframe.js b/plugin/local/chat/iframe.js index 2d7a3df1..4ac3f245 100644 --- a/plugin/local/chat/iframe.js +++ b/plugin/local/chat/iframe.js @@ -1,11 +1,10 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.current = msg.TableDetail(), can.onimport.layout(can), can.base.isFunc(cb) && cb(msg) }, layout: function(can) { var item = can.current; can.onmotion.clear(can), can.onimport.title(can, item.name||item.link) can.page.Append(can, can._output, [{type: html.IFRAME, src: item.link, height: can.ConfHeight(), width: can.ConfWidth(), style: {border: 0}}]) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", +Volcanos(chat.ONACTION, { open: function(can) { can.user.open(can.current.link) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据"}) diff --git a/plugin/local/chat/keyboard.js b/plugin/local/chat/keyboard.js index b917e962..5a31078e 100644 --- a/plugin/local/chat/keyboard.js +++ b/plugin/local/chat/keyboard.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onappend.table(can, msg), can.onappend.board(can, msg) var meta = {}; msg.Table(function(value, key) { meta[value.key] = value.value }) can.require(["/plugin/input/keyboard.js"], function() { diff --git a/plugin/local/chat/location.js b/plugin/local/chat/location.js index aa294aa9..f91afde7 100644 --- a/plugin/local/chat/location.js +++ b/plugin/local/chat/location.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can), can.onlayout.profile(can), can.base.isFunc(cb) && cb(msg) !can.isCmdMode() && can.ConfHeight(window.innerHeight - 5*html.ACTION_HEIGHT - 5*html.PLUGIN_MARGIN) can.user.isMobile && can.ConfHeight(window.innerHeight-html.ACTION_HEIGHT) @@ -242,7 +242,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar return new myInfoWindow({map: can.map, position: can.onimport.point(can, item), meta: meta}) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", list: [["mode", "select", "insert"], +Volcanos(chat.ONACTION, {list: [["mode", "select", "insert"], {type: html.TEXT, name: "zoom", value: 17, range: [3, 21]}, {type: html.TEXT, name: "pitch", value: 30, range: [0, 80, 5]}, {type: html.TEXT, name: "rotation", value: "0", range: [0, 360, 10]}, @@ -290,7 +290,7 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: [["mode", "select", "insert return can.base.Copy({left: rect.left+event.point.x, bottom: rect.top+event.point.y, latitude: parseInt(event.latLng.lat*100000), longitude: parseInt(event.latLng.lng*100000)}, item, true) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["nation", "province", "city", "latitude", "longitude", "type", "name", "text"], +Volcanos(chat.ONEXPORT, {list: ["nation", "province", "city", "latitude", "longitude", "type", "name", "text"], point: function(can, point, item) { return can.base.Copy({latitude: parseInt(point.lat*100000), longitude: parseInt(point.lng*100000)}, item, true) }, center: function(can) { return can.onexport.point(can, can.map.getCenter()) }, current: function(can) { diff --git a/plugin/local/chat/media.js b/plugin/local/chat/media.js index d2e01dab..92fbf4b5 100644 --- a/plugin/local/chat/media.js +++ b/plugin/local/chat/media.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.ui = can.onlayout.display(can, target) can.ui.canvas = can.page.Append(can, can.ui.display, [{type: "canvas", width: 320, height: 240, style: {display: "none"}}])._target @@ -14,7 +14,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, ta can.base.isFunc(cb) && cb(msg) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONACTION, {_init: function(can, msg, cb, target) { }, open: function(event, can) { diff --git a/plugin/local/chat/trans.js b/plugin/local/chat/trans.js index d2f4ec9d..62a4ce38 100644 --- a/plugin/local/chat/trans.js +++ b/plugin/local/chat/trans.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can) can.from = can.onimport._plugin(can, nfs.DIR, html.LEFT, "from", "to") can.to = can.onimport._plugin(can, nfs.DIR, html.RIGHT, "to", "from") @@ -21,7 +21,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar }) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", +Volcanos(chat.ONACTION, { send: function(can, from, to, event, cmds, cb) { var _from = can[from], _to = can[to] var path = can.request(event).Option(nfs.PATH) var msg = can.request(event, {_handle: ice.TRUE, diff --git a/plugin/local/code/inner.js b/plugin/local/code/inner.js index 922f1ab1..81890a68 100644 --- a/plugin/local/code/inner.js +++ b/plugin/local/code/inner.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", +Volcanos(chat.ONIMPORT, { _tabs: function(can) { can.ui._tabs = can.page.insertBefore(can, ["tabs"], can.ui._content), can.ui._path = can.page.insertBefore(can, ["path"], can.ui._content) can.page.Append(can, can.ui._tabs, [{view: [["time", "select"]], style: {"float": html.RIGHT}, _init: function(target) { @@ -98,7 +98,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", return can.Status("跳转数", can.history.length), record }, }, [""]) -Volcanos(chat.ONFIGURE, {help: "索引导航", +Volcanos(chat.ONFIGURE, { source: function(can, target, zone, path) { var total = 0 function show(target, path) { can.run(can.request({}, {dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { var list = msg.Table() can.onimport.tree(can, list, nfs.PATH, ice.PS, function(event, item) { can.onimport.tabview(can, path, item.path) }, target) @@ -114,7 +114,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航", }, target), zone._total(total) }, }) -Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) { +Volcanos(chat.ONSYNTAX, {_init: function(can, msg, cb) { if (can.onmotion.cache(can, function(cache_data) { can.file && (cache_data[can.file] = {current: can.current, max: can.max, profile_display: can.ui.profile.style.display, display_display: can.ui.display.style.display}) can.file = can.onexport.keys(can, can.Option(nfs.PATH), can.Option(nfs.FILE)) @@ -189,10 +189,10 @@ Volcanos(chat.ONSYNTAX, {help: "语法高亮", _init: function(can, msg, cb) { return line }, }) -Volcanos(chat.ONENGINE, {help: "搜索引擎", +Volcanos(chat.ONENGINE, { listen: shy("监听事件", function(can, key, cb) { arguments.callee.meta[key] = (arguments.callee.meta[key]||[]).concat(cb) }), }) -Volcanos(chat.ONACTION, {help: "控件交互", +Volcanos(chat.ONACTION, { appendLine: function(can, value) { var ui = can.page.Append(can, can.ui._content, [{type: html.TR, list: [ {view: ["line unselectable", html.TD, ++can.max], onclick: function(event) { @@ -246,7 +246,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", }, back: function(can) { can.history.pop(); var last = can.history.pop(); last && can.onimport.tabview(can, last.path, last.file, last.line) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器", "文件名", "当前行", "跳转数"], +Volcanos(chat.ONEXPORT, {list: ["文件数", "解析器", "文件名", "当前行", "跳转数"], hash: function(can) { if (!can.isCmdMode()) { return } var list = []; if (can.Option(nfs.PATH) != can.misc.Search(can, nfs.PATH)) { list.push(can.Option(nfs.PATH)) } if (list.length > 0 || can.Option(nfs.FILE) != can.misc.Search(can, nfs.FILE)) { list.push(can.Option(nfs.FILE)) } @@ -260,7 +260,7 @@ Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "解析器", line: function(can, line) { return parseInt(can.core.Value(can.page.Select(can, line, "td.line")[0], "innerText")) }, }) -Volcanos(chat.ONIMPORT, {help: "导入数据", +Volcanos(chat.ONIMPORT, { _profile: function(can, target) { var ui = can.onimport._panel(can, target, kit.Dict( mdb.LINK, function(event) { @@ -335,7 +335,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", } }, }, [""]) -Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: "宽度", height: "高度"}, +Volcanos(chat.ONACTION, {_trans: {link: "链接", width: "宽度", height: "高度"}, "搜索": function(event, can) { can.user.input(event, can, [mdb.NAME, [ctx.ACTION, nfs.TAGS, cli.MAKE, nfs.GREP]], function(data) { can.ui.search.Update({}, [ctx.ACTION, data.action, data.name]) @@ -369,7 +369,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", _trans: {link: "链接", width: " }, }) -Volcanos(chat.ONIMPORT, {help: "导入数据", +Volcanos(chat.ONIMPORT, { _keydown: function(can) { if (!can.isCmdMode()) { return } can.onkeymap._build(can), can._root.onengine.listen(can, chat.ONKEYDOWN, function(event) { if (event.ctrlKey && event.key >= "0" && event.key <= "9") { @@ -379,7 +379,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", }) }, }) -Volcanos(chat.ONKEYMAP, {help: "导入数据", +Volcanos(chat.ONKEYMAP, { _mode: { plugin: { Escape: shy("切换模式", function(event, can) { can.onaction.clear(event, can) }), @@ -394,7 +394,7 @@ Volcanos(chat.ONKEYMAP, {help: "导入数据", }, _engine: {}, }) -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can), can.page.ClassList.add(can, can._fields, code.INNER), can.onlayout.profile(can) can.onimport._profile(can, can.ui.profile), can.onimport._display(can, can.ui.display) if (msg.Result() == "" && can.Option(nfs.LINE) == "1") { return } @@ -516,7 +516,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar }) }, }, [""]) -Volcanos(chat.ONACTION, {help: "控件交互", list: [], +Volcanos(chat.ONACTION, {list: [], sess: function(event, can) { can.onexport.sess(can), can.user.toastSuccess(can) }, listTags: function(event, can, button) { var list = [] can.core.Item(can.request(event), function(key, value) { if (key.indexOf("_") == 0) { return } @@ -534,7 +534,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", list: [], can.runAction(can.request(event, {text: can.base.Format(list)}), button) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", +Volcanos(chat.ONEXPORT, { sess: function(can) { can.misc.localStorage(can, "web.code.inner.sess", {"plug": can.onexport.plug(can), "exts": can.onexport.exts(can), "tabs": can.onexport.tabs(can)}) }, tabs: function(can) { return can.core.Item(can.tabview, function(key, msg) { return key+ice.DF+can.Option(nfs.LINE) }) }, plug: function(can) { return can.core.Item(can.toolkit) }, diff --git a/plugin/local/code/inner/favor.js b/plugin/local/code/inner/favor.js index aaa0b3c9..ee235409 100644 --- a/plugin/local/code/inner/favor.js +++ b/plugin/local/code/inner/favor.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, cb) { +Volcanos(chat.ONIMPORT, {_init: function(can, cb) { can.onimport.toolkit(can, {index: "web.code.favor"}, function(sub) { sub.run = function(event, cmds, cb) { var msg = can.request(event) if (can.misc.runAction(can, msg, cmds, cb, kit.Dict( diff --git a/plugin/local/code/inner/sess.js b/plugin/local/code/inner/sess.js index 9ebce492..70a700d0 100644 --- a/plugin/local/code/inner/sess.js +++ b/plugin/local/code/inner/sess.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { var SESS = "web.code.sess" +Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) { var SESS = "web.code.sess" can.onimport.toolkit(can, {index: SESS}, function(sub) { sub.run = function(event, cmds, cb) { var msg = can.request(event) if (can.misc.runAction(can, msg, cmds, cb, kit.Dict( diff --git a/plugin/local/code/inner/syntax.js b/plugin/local/code/inner/syntax.js index 3b7ab959..276bed11 100644 --- a/plugin/local/code/inner/syntax.js +++ b/plugin/local/code/inner/syntax.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONSYNTAX, {help: "语法高亮", +Volcanos(chat.ONSYNTAX, { makefile: { prefix: { "#": code.COMMENT, diff --git a/plugin/local/code/inner/template.js b/plugin/local/code/inner/template.js index 19aa6bca..b3921cc6 100644 --- a/plugin/local/code/inner/template.js +++ b/plugin/local/code/inner/template.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, args, cb) { +Volcanos(chat.ONIMPORT, {_init: function(can, args, cb) { can.onimport.toolkit(can, {index: "web.code.template"}, function(sub) { sub.run = function(event, cmds, cb) { var msg = sub.request(event, can.Option()) if (can.misc.runAction(can, msg, cmds, cb, kit.Dict( diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index 91e2c956..94208a44 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.require(["inner.js"], function(can) { can.onimport.inner_init(can, msg, function() { can.undo = [], can.redo = [] can.page.ClassList.add(can, can._fields, code.VIMER) can.onimport._input(can), can.onkeymap._build(can), can.onkeymap._plugin({}, can) @@ -25,7 +25,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar ]); can.ui.current = ui.current, can.ui.complete = ui.complete }, }, [""]) -Volcanos(chat.ONFIGURE, {help: "索引导航", +Volcanos(chat.ONFIGURE, { create: function(can, target, zone, path) { can.isCmdMode()? can.onappend._action(can, can.base.Obj(can._msg.Option(ice.MSG_ACTION)).concat( ["查找", "git", "首页", "官网" , "文档" , "百度"], window.webview? ["浏览器", "录屏", "编辑器", "日志"]: [], @@ -98,7 +98,7 @@ Volcanos(chat.ONFIGURE, {help: "索引导航", }) }, }) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", +Volcanos(chat.ONKEYMAP, { _model: function(can, value) { can.Status("模式", can.mode = value) can.page.styleClass(can, can.ui.current, ["current", can.mode]), value can.page.styleClass(can, can.ui.complete, [code.COMPLETE, can.mode]), value @@ -237,7 +237,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", }, }, _engine: {}, }) -Volcanos(chat.ONACTION, {help: "控件交互", +Volcanos(chat.ONACTION, { _daemon: function(event, can, arg) { switch (arg[0]) { case web.DREAM: @@ -498,8 +498,8 @@ Volcanos(chat.ONACTION, {help: "控件交互", can.onaction.selectLine(can, can.current.next()), can.onkeymap.cursorMove(target, 0, p) }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]}) -Volcanos(chat.ONPLUGIN, {help: "注册插件", +Volcanos(chat.ONEXPORT, {list: ["文件数", "模式", "按键", "解析器", "文件名", "当前行", "跳转数"]}) +Volcanos(chat.ONPLUGIN, { "code.vimer.keymap": shy("按键", {}, ["mode", "key", ice.LIST, ice.BACK], function(can, msg, cmds) { can.core.Item(can.onkeymap._mode, function(mode, value) { (!cmds[0] || cmds[0] == mode) && can.core.Item(value, function(key, func) { diff --git a/plugin/local/code/xterm.js b/plugin/local/code/xterm.js index 8444529a..f84177bf 100644 --- a/plugin/local/code/xterm.js +++ b/plugin/local/code/xterm.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { can.onmotion.clear(can) +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.onmotion.clear(can) can.onlayout._init(can) can.requireModules(["xterm/css/xterm.css", "xterm", "xterm-addon-fit", "xterm-addon-web-links"], function() { var item = {hash: can.Option(mdb.HASH)}; msg.Table(function(value) { can.core.Value(item, value.key, value.value) }) @@ -31,7 +31,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb) { c }, grow: function(can, msg) { can._current.write(msg.Option(mdb.TEXT)) }, }) -Volcanos(chat.ONLAYOUT, {help: "界面布局", +Volcanos(chat.ONLAYOUT, { _init: function(can) { can.page.style(can, can._output, html.HEIGHT, can.ConfHeight()+8, html.WIDTH, can.ConfWidth()+18, html.MAX_WIDTH, "") can._current && can._current._fit.fit(), can.onexport.term(can) @@ -40,12 +40,12 @@ Volcanos(chat.ONLAYOUT, {help: "界面布局", // can.Option(mdb.HASH) && can.Option(mdb.HASH) == can.misc.Search(can, mdb.HASH)? can.sup.onaction.full({}, can.sup): can.onlayout._init(can) }, }) -Volcanos(chat.ONACTION, {help: "操作数据", +Volcanos(chat.ONACTION, { refresh: function(event, can, button) { can.onlayout._init(can), can._current.focus() }, "波浪线": function(event, can, button) { can.onimport._input(can, "~"), can._current.focus() }, "反引号": function(event, can, button) { can.onimport._input(can, "`"), can._current.focus() }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: [mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"], +Volcanos(chat.ONEXPORT, {list: [mdb.TYPE, mdb.NAME, "rows", "cols", "cursorY", "cursorX"], term: function(can) { var term = can._current||{}, item = term._item; if (!item) { return } can.core.List(can.onexport.list, function(key) { can.Status(key, can.base.getValid(item[key], term[key], term.buffer.active[key], "")) diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index 3b0fc4bd..06c6eb8f 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -329,7 +329,7 @@ Volcanos(chat.ONFIGURE, { }, }, }, []) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", +Volcanos(chat.ONKEYMAP, { _mode: { normal: { Escape: function(event, can) { can._undo && can._undo(), can.points = [] }, diff --git a/plugin/local/wiki/draw/heart.js b/plugin/local/wiki/draw/heart.js index 9e16d115..f894c32d 100644 --- a/plugin/local/wiki/draw/heart.js +++ b/plugin/local/wiki/draw/heart.js @@ -1,4 +1,4 @@ -Volcanos("heart", {help: "心形", +Volcanos("heart", { data: {name: "path", size: {}, copy: ["d", "name", "meta", "tt", "xx", "yy"], x: function(event, can, value, cmd, target) { diff --git a/plugin/local/wiki/draw/path.js b/plugin/local/wiki/draw/path.js index 0bd247d6..59a5cdf6 100644 --- a/plugin/local/wiki/draw/path.js +++ b/plugin/local/wiki/draw/path.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONFIGURE, {help: "图形绘制", +Volcanos(chat.ONFIGURE, { path2v: { // data: {name: "path", size: {}, copy: []}, draw: function(event, can, point) { diff --git a/plugin/local/wiki/draw/walk_trash.js b/plugin/local/wiki/draw/walk_trash.js index 23a58a85..14b96bd0 100644 --- a/plugin/local/wiki/draw/walk_trash.js +++ b/plugin/local/wiki/draw/walk_trash.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", +Volcanos(chat.ONIMPORT, { init: function(can, msg, cb, output, action, option) {output.innerHTML = ""; if (!msg.result || msg.result.length == 0) { var table = can.page.AppendTable(can, msg, output, msg.append); diff --git a/plugin/local/wiki/word.js b/plugin/local/wiki/word.js index 42639cb9..fa826206 100644 --- a/plugin/local/wiki/word.js +++ b/plugin/local/wiki/word.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) { can.onmotion.clear(can) +Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(can) can.page.Modify(can, target, msg.Result()) can.page.Select(can, target, wiki.STORY_ITEM, function(target) { var meta = target.dataset||{} can.core.CallFunc([can.onimport, meta.type||target.tagName.toLowerCase()], [can, meta, target]) @@ -117,7 +117,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, target) }) }, }, [""]) -Volcanos(chat.ONKEYMAP, {help: "键盘交互", +Volcanos(chat.ONKEYMAP, { _mode: { normal: { "n": function(event, can) { can.ondetail.next(can.sub) }, @@ -132,7 +132,7 @@ Volcanos(chat.ONKEYMAP, {help: "键盘交互", }, }, _engine: {}, }) -Volcanos(chat.ONACTION, {help: "控件交互", +Volcanos(chat.ONACTION, { _trans: {view: "视图"}, play: function(event, can) { var list = [], current = [] can.page.Select(can, can._output, wiki.STORY_ITEM, function(item) { @@ -186,7 +186,7 @@ Volcanos(chat.ONACTION, {help: "控件交互", } }, }) -Volcanos(chat.ONDETAIL, {help: "交互操作", list: ["删除"], +Volcanos(chat.ONDETAIL, {list: ["删除"], show: function(sub, which) { sub.page.styleClass(sub, sub.ui.content, chat.CONTENT) sub.page.Select(sub, sub.ui.content, html.DIV_PAGE, function(page, index) { if (index == which || page == which) { diff --git a/plugin/state.js b/plugin/state.js index 983378e8..62b5115d 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -215,7 +215,7 @@ Volcanos(chat.ONEXPORT, { actionHeight: function(can) { return can._action.style.display == html.NONE || can._action.innerHTML == ""? 0: html.ACTION_HEIGHT }, record: function(can, line) {}, link: function(can) { var meta = can.Conf(), args = can.Option() - args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == "web.wiki.word" && (args.cmd = args.path) + args.cmd = meta.index||can.core.Keys(meta.ctx, meta.cmd), args.cmd == web.WIKI_WORD && (args.cmd = args.path) return can.misc.MergePodCmd(can, args, true) }, }) diff --git a/plugin/story/form.js b/plugin/story/form.js index 9458357a..c5b21cc8 100644 --- a/plugin/story/form.js +++ b/plugin/story/form.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.page.ClassList.add(can, target, "form") msg.Push("type", "text") msg.Push("name", "name") diff --git a/plugin/story/json.js b/plugin/story/json.js index ddc59fef..94992e5c 100644 --- a/plugin/story/json.js +++ b/plugin/story/json.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.page.ClassList.add(can, target, "json") can.onmotion.clear(can, target) can.onappend.table(can, msg), can.onimport.show(can, can.base.Obj(msg.Result(), {}), target) @@ -43,7 +43,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar }; show(data, can.page.Append(can, target, [{view: html.ITEM}]).item, 0, 0) }, }, [""]) -Volcanos(chat.ONACTION, {help: "组件菜单", list: ["展开", "折叠", "复制"], +Volcanos(chat.ONACTION, {list: ["展开", "折叠", "复制"], "展开": function(event, can) { can.page.Select(can, can._output, [html.DIV_LIST, html.DIV_LIST], function(list) { can.onmotion.toggle(can, list, true) diff --git a/plugin/story/media.js b/plugin/story/media.js index fe213336..37582796 100644 --- a/plugin/story/media.js +++ b/plugin/story/media.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onmotion.clear(can, target), can.base.isFunc(cb) && cb(msg) can.requireModules(["gifshot/dist/gifshot.js"], function() { @@ -27,7 +27,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar return src }, }) -Volcanos(chat.ONACTION, {help: "操作数据", list: ["录屏", "摄像"], +Volcanos(chat.ONACTION, {list: ["录屏", "摄像"], "录屏": function(event, can) { can.onimport._layout(can, function(target) { navigator.mediaDevices.getDisplayMedia({video: {height: can.ConfHeight()*3/4}}).then(function(stream) { can.stream = stream @@ -71,7 +71,7 @@ Volcanos(chat.ONACTION, {help: "操作数据", list: ["录屏", "摄像"], can.onmotion.clear(can, can.ui.output), can.onimport._action(can) }, }) -Volcanos(chat.ONDETAIL, {help: "操作数据", list: ["关闭", "抓拍", "录制"], +Volcanos(chat.ONDETAIL, {list: ["关闭", "抓拍", "录制"], "成图": function(event, can) { gifshot.createGIF({ 'video': [URL.createObjectURL(new Blob(can.ui.blobs, {type : 'video/webm'}))], @@ -89,4 +89,4 @@ Volcanos(chat.ONDETAIL, {help: "操作数据", list: ["关闭", "抓拍", "录 can.user.download(can, URL.createObjectURL(new Blob(can.ui.blobs, {type: "video/webm"})), "record.webm") }, }) -Volcanos(chat.ONEXPORT, {help: "导出数据", list: ["total"]}) +Volcanos(chat.ONEXPORT, {list: ["total"]}) diff --git a/plugin/story/parse.js b/plugin/story/parse.js index 97b75e43..f144012a 100644 --- a/plugin/story/parse.js +++ b/plugin/story/parse.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONAPPEND, {help: "渲染引擎", list: ["{", "}", html.HEAD, html.LEFT, html.MAIN, html.FOOT], +Volcanos(chat.ONAPPEND, {list: ["{", "}", html.HEAD, html.LEFT, html.MAIN, html.FOOT], _parse: function(can, text, name, height) { var stack = [{_deep: -1, list: []}], finish = false can.core.List(can.core.Split(text, ice.NL, ice.NL, ice.NL), function(line) { if (line == "" || finish) { return } var deep = 0; for (var i = 0; i < line.length; i++) { if (line[i] == ice.SP) { deep++ } else if (line[i] == ice.TB) { deep += 4 } else { break } } diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 0115b45b..f1b0e07c 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -68,7 +68,7 @@ Volcanos(chat.ONDETAIL, { } for (var node = tree; node; node = node.last) { can.request(event, node.meta) } can.run(can.request(event, can.Option()), can.base.Obj(can.Conf(lex.PREFIX), []).concat([can.Option("repos")||"", tree.file||"", tree.name]), function(msg) { - if (msg.Length() == 0) { return can.ondetail.plugin(can, "web.code.inner", [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line], code.INNER) } + if (msg.Length() == 0) { return can.ondetail.plugin(can, web.CODE_INNER, [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line], code.INNER) } if (msg.Append(mdb.INDEX)) { msg.Table(function(value) { can.ondetail.plugin(can, value.index, []) }); return } if (msg.Option(lex.SPLIT)) { diff --git a/plugin/story/video.js b/plugin/story/video.js index 8b51b91f..4aed992b 100644 --- a/plugin/story/video.js +++ b/plugin/story/video.js @@ -1,4 +1,4 @@ -Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, target) { +Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.onimport.select(can, msg) can.onmotion.clear(can), can.base.isFunc(cb) && cb(msg) can.onappend.table(can, msg), can.onappend.board(can, msg) @@ -24,7 +24,7 @@ Volcanos(chat.ONIMPORT, {help: "导入数据", _init: function(can, msg, cb, tar ])) }, }) -Volcanos(chat.ONACTION, {help: "控件交互", +Volcanos(chat.ONACTION, { next: function(event, can) { var msg = can._msg msg.Table(function(line, index) { if (line.link == location.href) { diff --git a/proto.js b/proto.js index be47f2dd..6e3d4f90 100644 --- a/proto.js +++ b/proto.js @@ -51,6 +51,8 @@ var ice = { ErrNotRight: "not right: ", ErrNotFound: "not found: ", ErrNotValid: "not valid: ", + + USR_VOLCANOS: "usr/volcanos/", } var ctx = { @@ -78,6 +80,9 @@ var web = { GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded", + + CODE_INNER: "web.code.inner", + WIKI_WORD: "web.wiki.word", } var mdb = { DICT: "dict", META: "meta", HASH: "hash", LIST: "list", @@ -141,9 +146,7 @@ var chat = { HEADER: "Header", ACTION: "Action", libs: ["/lib/base.js", "/lib/core.js", "/lib/misc.js", "/lib/page.js", "/lib/user.js"], panel_list: [ - {name: "Header", pos: "head", state: ["avatar", "usernick", "time"]}, - {name: "River", pos: "left"}, {name: "Action", pos: "main"}, {name: "Search", pos: "auto"}, - {name: "Footer", pos: "foot", state: ["ncmd", "ntip"]}, + {name: "Header", pos: "head"}, {name: "River", pos: "left"}, {name: "Action", pos: "main"}, {name: "Search", pos: "auto"}, {name: "Footer", pos: "foot"}, ], plugin_list: [ "/plugin/state.js", @@ -329,7 +332,7 @@ try { if (typeof(window) == lang.OBJECT) { // chrome Volcanos.meta.target = document.body, Volcanos.meta._height = window.innerHeight, Volcanos.meta._width = window.innerWidth Volcanos.meta._load = function(url, cb) { switch (url.split("?")[0].split(ice.PT).pop().toLowerCase()) { case nfs.CSS: var item = document.createElement(mdb.LINK); item.rel = "stylesheet", item.href = url, item.onload = cb, document.head.appendChild(item); break - default: var item = document.createElement(nfs.SCRIPT); item.src = url, item.onerror = cb, item.onload = cb, document.body.appendChild(item) + case nfs.JS: var item = document.createElement(nfs.SCRIPT); item.src = url, item.onerror = cb, item.onload = cb, document.body.appendChild(item); break } } Volcanos.meta._init = function(can) { var last = can.page.width() < can.page.height(); window.onresize = function(event) { diff --git a/publish/client/nodejs/proto.js b/publish/client/nodejs/proto.js index 0dd07d3f..fd3d4be2 100644 --- a/publish/client/nodejs/proto.js +++ b/publish/client/nodejs/proto.js @@ -23,7 +23,7 @@ try { if (typeof(global) == lang.OBJECT) { // nodejs } } catch (e) { console.log(e) } _can_name = "./frame.js" -Volcanos("onappend", {help: "渲染引擎", +Volcanos("onappend", { table: function(can, msg) { var max = {}; msg.Table(function(value, index, array) { for (var k in value) { if (value[k].length > (max[k]||0)) {