diff --git a/const.js b/const.js index 9bfc9e37..6c55149f 100644 --- a/const.js +++ b/const.js @@ -1,6 +1,6 @@ var kit = {proto: function(sub, sup) { return sub.__proto__ = sup, sub }, Dict: function() { var res = {}, arg = arguments; for (var i = 0; i < arg.length; i += 2) { var key = arg[i] - if (typeof key == "object") { i--; + if (typeof key == "object") { i-- if (key.length == undefined) { for (var k in key) { res[k] = key[k] } } else { @@ -10,90 +10,73 @@ var kit = {proto: function(sub, sup) { return sub.__proto__ = sup, sub }, } return res }, } var ice = { - TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", PS: "/", PT: ".", FS: ",", QS: "?", NL: "\n", LT: "<", GT: ">", + TB: "\t", SP: " ", DF: ":", EQ: "=", AT: "@", QS: "?", PS: "/", PT: ".", FS: ",", NL: "\n", LT: "<", GT: ">", OK: "ok", TRUE: "true", FALSE: "false", SUCCESS: "success", FAILURE: "failure", PROCESS: "process", - HTTP: "http", HTML: "html", - HOME: "home", MAIN: "main", + HTTP: "http", HELP: "help", + MAIN: "main", AUTO: "auto", LIST: "list", BACK: "back", - SHOW: "show", HIDE: "hide", - VIEW: "view", MODE: "mode", - COPY: "copy", HELP: "help", - AUTO: "auto", EXEC: "exec", - SHIP: "ship", - DEV: "dev", POD: "pod", CTX: "ctx", CMD: "cmd", ARG: "arg", OPT: "opt", - CAN: "can", MSG: "msg", RUN: "run", RES: "res", ERR: "err", + HOME: "home", COPY: "copy", + MODE: "mode", EXEC: "exec", + CAN: "can", POD: "pod", CTX: "ctx", CMD: "cmd", ARG: "arg", + + MSG_FIELDS: "fields", MSG_SESSID: "sessid", MSG_DETAIL: "detail", MSG_OPTION: "option", MSG_APPEND: "append", MSG_RESULT: "result", - MSG_SESSID: "sessid", MSG_FIELDS: "fields", - MSG_SOURCE: "_source", MSG_TARGET: "_target", MSG_HANDLE: "_handle", MSG_UPLOAD: "_upload", + MSG_SOURCE: "_source", MSG_TARGET: "_target", MSG_ACTION: "_action", MSG_STATUS: "_status", MSG_INDEX: "_index", + MSG_PROCESS: "_process", MSG_DISPLAY: "_display", MSG_TOOLKIT: "_toolkit", - MSG_PROCESS: "_process", + PROCESS_REWRITE: "_rewrite", PROCESS_AGAIN: "_again", PROCESS_FIELD: "_field", - PROCESS_REWRITE: "_rewrite", MSG_PREFIX: "_prefix", MSG_METHOD: "_method", MSG_USERNICK: "user.nick", MSG_USERNAME: "user.name", MSG_USERROLE: "user.role", MSG_LANGUAGE: "user.lang", - MSG_TITLE: "sess.title", MSG_THEME: "sess.theme", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm", - MSG_HEIGHT: "sess.height", MSG_WIDTH: "sess.width", MSG_MODE: "sess.mode", MSG_DAEMON: "sess.daemon", - LOG_DISABLE: "log.disable", + MSG_MODE: "sess.mode", MSG_THEME: "sess.theme", MSG_TITLE: "sess.title", MSG_RIVER: "sess.river", MSG_STORM: "sess.storm", + MSG_DAEMON: "sess.daemon", LOG_DISABLE: "log.disable", - ErrWarn: "warn: ", ErrNotLogin: "not login: ", ErrNotRight: "not right: ", ErrNotFound: "not found: ", ErrNotValid: "not valid: ", - CAN_PLUGIN: "can._plugin", CAN_DEBUG: "can.debug", LOG_DEBUG: "log.debug", - NFS: "nfs", USR: "usr", USR_VOLCANOS: "usr/volcanos/", + ErrWarn: "warn: ", ErrNotLogin: "not login: ", ErrNotRight: "not right: ", ErrNotValid: "not valid: ", ErrNotFound: "not found: ", + NFS: "nfs", USR: "usr", USR_VOLCANOS: "usr/volcanos/", CAN_PLUGIN: "can._plugin", } var ctx = { CONTEXT: "context", COMMAND: "command", CONFIG: "config", INPUTS: "inputs", FEATURE: "feature", - INDEX: "index", ARGS: "args", STYLE: "style", DISPLAY: "display", ACTION: "action", + INDEX: "index", ARGS: "args", STYLE: "style", DISPLAY: "display", ACTION: "action", RUN: "run", EXTRA_INDEX: "extra.index", EXTRA_ARGS: "extra.args", - RUN: "run", } -var mdb = { +var mdb = {FOREACH: "*", RANDOMS: "%", DICT: "dict", META: "meta", HASH: "hash", LIST: "list", - ID: "id", KEY: "key", TIME: "time", ZONE: "zone", TYPE: "type", NAME: "name", TEXT: "text", - DATA: "data", VIEW: "view", ICON: "icon", ICONS: "icons", LINK: "link", SCAN: "scan", HELP: "help", - SHORT: "short", FIELD: "field", TOTAL: "total", COUNT: "count", LIMIT: "limit", + ID: "id", KEY: "key", TIME: "time", ZONE: "zone", TYPE: "type", NAME: "name", TEXT: "text", DATA: "data", VIEW: "view", + LINK: "link", SCAN: "scan", HELP: "help", ICON: "icon", ICONS: "icons", INDEX: "index", VALUE: "value", EXTRA: "extra", ALIAS: "alias", EXPIRE: "expire", + SHORT: "short", FIELD: "field", TOTAL: "total", COUNT: "count", LIMIT: "limit", - CREATE: "create", REMOVE: "remove", INSERT: "insert", DELETE: "delete", MODIFY: "modify", SELECT: "select", - INPUTS: "inputs", PRUNES: "prunes", EXPORT: "export", IMPORT: "import", REVERT: "revert", NORMAL: "normal", + INPUTS: "inputs", CREATE: "create", REMOVE: "remove", INSERT: "insert", DELETE: "delete", MODIFY: "modify", SELECT: "select", + PRUNES: "prunes", EXPORT: "export", IMPORT: "import", SEARCH: "search", ENGINE: "engine", RENDER: "render", PLUGIN: "plugin", - DETAIL: "detail", - PRUNE: "prune", - INFO: "info", + DETAIL: "detail", NORMAL: "normal", PRUNE: "prune", - KEYS: "keys", MAIN: "main", PAGE: "page", NEXT: "next", PREV: "prev", LIMIT: "limit", OFFEND: "offend", - FOREACH: "*", RANDOMS: "%", QS: ice.QS, AT: ice.AT, EQ: ice.EQ, FS: ice.FS, } -var web = {CHAT: "chat", STUDIO: "studio", - DREAM: "dream", SPACE: "space", ROUTE: "route", SPIDE: "spide", COUNT: "count", SHARE: "share", - WEBSITE: "website", DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", INPUT: "input", - CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", - CONFIRM: "confirm", - THEME: "theme", - PORTAL: "portal", - SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/", +var web = {CHAT: "chat", PORTAL: "portal", STUDIO: "studio", + SPIDE: "spide", SPACE: "space", ROUTE: "route", DREAM: "dream", + SHARE: "share", COUNT: "count", WORKER: "worker", SERVER: "server", GATEWAY: "gateway", - OPEN: "open", + OPEN: "open", LINK: "link", HTTP: "http", URL: "url", SHARE_CACHE: "/share/cache/", SHARE_LOCAL: "/share/local/", + AT: ice.AT, QS: ice.QS, - AT: "@", QS: "?", LINK: "link", HTTP: "http", - GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", - Accept: "Accept", ContentType: "Content-Type", ContentJSON: "application/json", ContentFORM: "application/x-www-form-urlencoded", - IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm", - URL: "url", + DRAW: "draw", PLAY: "play", CLEAR: "clear", REFRESH: "refresh", RESIZE: "resize", FILTER: "filter", + CANCEL: "cancel", SUBMIT: "submit", UPLOAD: "upload", DOWNLOAD: "download", TOIMAGE: "toimage", CONFIRM: "confirm", CODE_GIT_SEARCH: "web.code.git.search", CODE_GIT_STATUS: "web.code.git.status", @@ -113,18 +96,16 @@ var web = {CHAT: "chat", STUDIO: "studio", TEAM_PLAN: "web.team.plan", } var aaa = { - SESS: "sess", - AUTH: "auth", - USER: "user", - EMAIL: "email", - LOGIN: "login", LOGOUT: "logout", INVITE: "invite", TOKEN: "token", - USERNICK: "usernick", USERNAME: "username", PASSWORD: "password", USERROLE: "userrole", BACKGROUND: "background", AVATAR: "avatar", + LOGIN: "login", LOGOUT: "logout", + USER: "user", AUTH: "auth", SESS: "sess", + USERNICK: "usernick", USERNAME: "username", PASSWORD: "password", USERROLE: "userrole", + EMAIL: "email", AVATAR: "avatar", BACKGROUND: "background", LANGUAGE: "language", ENGLISH: "english", CHINESE: "chinese", VOID: "void", TECH: "tech", ROOT: "root", } var lex = { - SPLIT: "split", PREFIX: "prefix", SUFFIX: "suffix", - PARSE: "parse", + SPLIT: "split", PARSE: "parse", + PREFIX: "prefix", SUFFIX: "suffix", TB: ice.TB, SP: ice.SP, NL: ice.NL, } var yac = { @@ -138,33 +119,28 @@ var gdb = { } var tcp = { HOST: "host", PORT: "port", - SERVER: "server", - CLIENT: "client", + CLIENT: "client", SERVER: "server", } var nfs = { DIR: "dir", CAT: "cat", DEFS: "defs", PACK: "pack", TRASH: "trash", DIR_ROOT: "dir_root", COPY: "copy", EDIT: "edit", SAVE: "save", LOAD: "load", FIND: "find", GREP: "grep", TAGS: "tags", - SUBJECT: "subject", - CONTENT: "content", RECENT: "recent", SCRIPT: "script", MODULE: "module", SOURCE: "source", TARGET: "target", REPOS: "repos", MASTER: "master", + SUBJECT: "subject", CONTENT: "content", RECENT: "recent", SCRIPT: "script", SOURCE: "source", TARGET: "target", + REPOS: "repos", MASTER: "master", MODULE: "module", PUSH: "push", PULL: "pull", PATH: "path", FILE: "file", LINE: "line", SIZE: "size", - PUSH: "push", PULL: "pull", REPLACE: "replace", FROM: "from", TO: "to", SVG: "svg", HTML: "html", CSS: "css", JS: "js", SH: "sh", GO: "go", CSV: "csv", JSON: "json", SHY: "shy", TXT: "txt", PNG: "png", WEBM: "webm", _CSS: ".css", _JS: ".js", - PWD: "./", SRC: "src/", USR: "usr/", USR_LOCAL_WORK: "usr/local/work/", SRC_DOCUMENT: "src/document/", + PWD: "./", SRC: "src/", USR: "usr/", USR_LOCAL_WORK: "usr/local/work/", SRC_DOCUMENT: "src/document/", SRC_TEMPLATE: "src/template/", DF: ice.DF, PS: ice.PS, PT: ice.PT, - SRC_TEMPLATE: "src/template/", } var cli = { - OPENS: "opens", SYSTEM: "system", DAEMON: "daemon", ORDER: "order", BUILD: "build", - BEGIN: "begin", START: "start", OPEN: "open", CLOSE: "close", STOP: "stop", END: "end", RESTART: "restart", + RUNTIME: "runtime", SYSTEM: "system", DAEMON: "daemon", ORDER: "order", BUILD: "build", OPENS: "opens", + BEGIN: "begin", END: "end", START: "start", RESTART: "restart", STOP: "stop", OPEN: "open", CLOSE: "close", COLOR: "color", BLACK: "black", WHITE: "white", BLUE: "blue", RED: "red", GRAY: "gray", CYAN: "cyan", GREEN: "green", PURPLE: "purple", YELLOW: "yellow", MAGENTA: "magenta", SILVER: "silver", ALICEBLUE: "aliceblue", TRANSPARENT: "transparent", - MAKE: "make", EXEC: "exec", DONE: "done", COST: "cost", FROM: "from", CLEAR: "clear", LINUX: "linux", DARWIN: "darwin", WINDOWS: "windows", - RUN: "run", - RUNTIME: "runtime", + DONE: "done", COST: "cost", FROM: "from", PWD: "pwd", } var log = { @@ -222,16 +198,10 @@ var chat = { "local/wiki/feel.js", "local/wiki/word.js", "local/team/plan.js", - "local/mall/goods.js", ].map(function(p) { return "/plugin/"+p }), - PLUGIN_LOCAL: "/plugin/local/", - PLUGIN_STORY: "/plugin/story/", - PLUGIN_INPUT: "/plugin/input/", - PLUGIN_INPUT_JS: "/plugin/input.js", - PLUGIN_TABLE_JS: "/plugin/table.js", - PLUGIN_STATE_JS: "/plugin/state.js", + PLUGIN_LOCAL: "/plugin/local/", PLUGIN_STORY: "/plugin/story/", PLUGIN_INPUT: "/plugin/input/", + PLUGIN_INPUT_JS: "/plugin/input.js", PLUGIN_TABLE_JS: "/plugin/table.js", PLUGIN_STATE_JS: "/plugin/state.js", FRAME_JS: "/volcanos/frame.js", - // ICONS_CSS: "/require/modules/bootstrap-icons/font/bootstrap-icons.min.css", // https://icons.getbootstrap.com/ ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap", ONIMPORT: "onimport", ONACTION: "onaction", ONDETAIL: "ondetail", ONEXPORT: "onexport", @@ -258,16 +228,9 @@ var mall = { ASSET: "asset", SALARY: "salary", } -var icon = { - SEARCH: "bi bi-search", TERMINAL: "bi bi-terminal", -} var http = { GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", - ContentType: "Content-Type", -} -var mime = { - TextPlain: "text/plain", - ApplicationJSON: "application/json", + Accept: "Accept", ContentType: "Content-Type", ApplicationJSON: "application/json", ApplicationFORM: "application/x-www-form-urlencoded", } var html = {PLUGIN_MARGIN: 10, ACTION_HEIGHT: 32, ACTION_MARGIN: 200, FIELDSET: "fieldset", LEGEND: "legend", OPTION: "option", ACTION: "action", OUTPUT: "output", STATUS: "status", @@ -316,6 +279,11 @@ var html = {PLUGIN_MARGIN: 10, ACTION_HEIGHT: 32, ACTION_MARGIN: 200, DIV_ITEM_SELECT: "div.item.select", DIV_TABS_SELECT: "div.tabs.select", DIV_PROFILE: "div.profile", DIV_DISPLAY: "div.display", + + IMAGE_PNG: "image/png", VIDEO_WEBM: "video/webm", +} +var icon = { + SEARCH: "bi bi-search", TERMINAL: "bi bi-terminal", } var svg = { GROUP: "group", PID: "pid", GRID: "grid", diff --git a/frame.js b/frame.js index 536cc5bc..9df94e3f 100644 --- a/frame.js +++ b/frame.js @@ -40,7 +40,7 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) { }, _engine: function(event, can, msg, panel, cmds, cb) { return false }, _plugin: function(event, can, msg, panel, cmds, cb) { - if (cmds[0] == ctx.ACTION && cmds[1] == ice.RUN) { var p = can.onengine.plugin(can, cmds[2]) + if (cmds[0] == ctx.ACTION && cmds[1] == ctx.RUN) { var p = can.onengine.plugin(can, cmds[2]) if (p) { return can.core.CallFunc(p, {can: p.can||panel, sub: msg._can, msg: msg, arg: cmds.slice(3), cmds: cmds.slice(3), cb: cb, meta: p.meta}), true } } var p = can.onengine.plugin(can, cmds[0]), n = 1; if (!p) { return false } @@ -443,7 +443,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { var value = can.onengine.plugin(can, meta.index); if (value) { can.onappend._plugin(can, value, meta, function(sub, meta, skip) { value.meta && value.meta._init && value.meta._init(sub, meta), _cb(sub, meta, skip) }, target, field); return res } - can.runAction(can.request({}, {_method: web.GET, pod: meta.space})._caller(), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res + can.runAction(can.request({}, {_method: http.GET, pod: meta.space})._caller(), ctx.COMMAND, [meta.index], function(msg) { msg.Table(function(value) { can.onappend._plugin(can, value, meta, _cb, target, field) })}); return res }, _plugin: function(can, value, meta, cb, target, field) { can.base.Copy(meta, value, true) meta.type = meta.type||chat.STORY, meta.name = meta.name||value.meta&&value.meta.name||"", meta.help = meta.help||value.help||"", meta.height = meta.height||can.ConfHeight()-2*html.ACTION_HEIGHT, meta.width = meta.width||can.ConfWidth() diff --git a/index.css b/index.css index a20581b2..6547c975 100644 --- a/index.css +++ b/index.css @@ -458,7 +458,7 @@ fieldset.dream>div.output.card>div.item>div.title>img { height:48px; width:48px fieldset.dream>div.output.card>div.item>div.title>span { line-height:48px; margin-left:10px; } fieldset.inner.float>div.status { display:none; } fieldset.trans>div.output>fieldset{ margin:10px; } -fieldset.trans>form.option>div.item>input { width:240px; } +fieldset.trans>form.option>div.item.text>input { width:240px; } fieldset.inner>form.option input[name=path] { width:80px !important; } fieldset.inner>form.option input[name=file] { width:160px !important; } fieldset.inner>div.output>div.project div.item.modify { background-color:#00800036; } diff --git a/lib/core.js b/lib/core.js index 4a8f1576..f5c34553 100644 --- a/lib/core.js +++ b/lib/core.js @@ -45,7 +45,7 @@ Volcanos("core", { } return begin > -1 && (s? push({type: code.STRING, text: str.slice(begin), left: s, right: ""}): push(str.slice(begin))), res }, SplitInput: function(item, type) { if (typeof item == code.OBJECT) { return item } type = type||html.TEXT; switch (item) { - case ice.RUN: return {type: html.BUTTON, name: item} + case ctx.RUN: return {type: html.BUTTON, name: item} case ice.LIST: return {type: html.BUTTON, name: item, action: ice.AUTO} case ice.BACK: return {type: html.BUTTON, name: item} case mdb.NAME: return {type: html.TEXT, name: item} diff --git a/lib/misc.js b/lib/misc.js index 3eb54eb0..3c4c8808 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -3,13 +3,13 @@ Volcanos("misc", { RunAction: function(event, sub, cmds, meta) { var msg = can.request(event); meta = meta || sub&&sub.onaction || {} if (!msg._method) { if (!cmds || cmds.length == 0 || cmds[0] != ctx.ACTION) { - msg._method = web.GET + msg._method = http.GET } else if (can.base.isIn(cmds[1], mdb.CREATE, mdb.INSERT)) { - msg._method = web.PUT + msg._method = http.PUT } else if (can.base.isIn(cmds[1], mdb.REMOVE, mdb.DELETE)) { - msg._method = web.DELETE + msg._method = http.DELETE } else { - msg._method = web.POST + msg._method = http.POST } } if (msg.Option(ice.MSG_HANDLE) != ice.TRUE && cmds && cmds[0] == ctx.ACTION && can.base.isFunc(meta[cmds[1]])) { msg.Option(ice.MSG_HANDLE, ice.TRUE) @@ -87,18 +87,18 @@ Volcanos("misc", { }, POST: function(can, msg, url, form, cb, cbs) { var xhr = new XMLHttpRequest(), begin = new Date(); msg._xhr = xhr var data = can.core.ItemForm(form, function(v, i, k) { return k+mdb.EQ+encodeURIComponent(v) }).join("&") - if (can.base.isIn(msg._method, web.GET, web.DELETE)) { url += (url.indexOf("?") == -1? "?": "&")+data, data = "" } - xhr.open(msg._method||web.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return } + if (can.base.isIn(msg._method, http.GET, http.DELETE)) { url += (url.indexOf("?") == -1? "?": "&")+data, data = "" } + xhr.open(msg._method||http.POST, url), xhr.onreadystatechange = function() { if (xhr.readyState != 4) { return } try { var res = JSON.parse(xhr.responseText) } catch (e) { var res = {result: [xhr.responseText]} } msg.Option("_cost", new Date() - begin) if (xhr.status == 200) { return msg.detail || (msg.detail = res.detail), can.base.isFunc(cb) && cb(msg.Copy(res)) } can.user.toastFailure(can, xhr.response, url), can.misc.Warn(xhr.status, res, url, form) cbs && cbs(xhr) - }, xhr.setRequestHeader(web.Accept, msg._accept||web.ContentJSON) + }, xhr.setRequestHeader(http.Accept, msg._accept||http.ApplicationJSON) if (msg._upload) { var data = new FormData(); can.core.ItemForm(form, function(v, i, k) { data.append(k, v) }) data.append(ice.MSG_UPLOAD, web.UPLOAD), data.append(web.UPLOAD, msg._upload) xhr.upload.onprogress = function(event) { can.base.isFunc(msg._progress) && msg._progress(event, parseInt(event.loaded*100/event.total), event.total, event.loaded) } } else { - xhr.setRequestHeader(web.ContentType, web.ContentFORM) + xhr.setRequestHeader(http.ContentType, http.ApplicationFORM) } try { xhr.send(data) } catch(e) { can.misc.Warn(e), cbs && cbs(e) } }, WSS: function(can, args, cb, onopen, onclose, onerror, _msg) { if (can.user.isIE) { return } @@ -149,14 +149,14 @@ Volcanos("misc", { }, MergeURL: function(can, obj, clear) { var path = location.pathname; obj._path && (path = obj._path), delete(obj._path) can.misc.Search(can, log.DEBUG) && (obj.debug = ice.TRUE); var hash = obj._hash||""; delete(obj._hash) - var args = [web.CHAT]; can.core.List([ice.POD, ice.CMD, web.WEBSITE], function(key) { obj[key] && args.push(key, obj[key]), delete(obj[key]) }) + var args = [web.CHAT]; can.core.List([ice.POD, ice.CMD], function(key) { obj[key] && args.push(key, obj[key]), delete(obj[key]) }) var _location = location; if (can.user.isExtension) { var _location = new URL(Volcanos.meta.iceberg) } return can.base.MergeURL(_location.origin+(args.length == 1? path: nfs.PS+args.join(nfs.PS))+(clear? "": _location.search), obj)+(hash? "#"+hash: "") }, ParseURL: function(can, url) { url = url||location.href; var args = can.base.ParseURL(url), _location = new URL(url) delete(args.link), delete(args.origin), delete(args._origin) var ls = can.core.Split(_location.pathname, nfs.PS); if (ls[0] == chat.SHARE) { args[chat.SHARE] = ls[1] } - for (var i = 1; i < ls.length; i += 2) { if (can.base.isIn(ls[i], [ice.POD, ice.CMD, web.WEBSITE])) { args[ls[i]] = ls[i+1] } } + for (var i = 1; i < ls.length; i += 2) { if (can.base.isIn(ls[i], [ice.POD, ice.CMD])) { args[ls[i]] = ls[i+1] } } return args }, SplitPath: function(can, path) { diff --git a/lib/page.js b/lib/page.js index c8bbe810..c2d8259b 100644 --- a/lib/page.js +++ b/lib/page.js @@ -337,7 +337,7 @@ Volcanos("page", { var canvas = can.page.Create(can, html.CANVAS, {width: size, height: size}), ctx = canvas.getContext("2d") ctx.fillStyle = colors[Math.floor(Math.random()*(colors.length))], ctx.fillRect(margin, margin, size-2*margin, size-2*margin) ctx.fillStyle = cli.WHITE, ctx.font = (fonts||can.base.Min(size/text.length-30, 16))+"px Arial", ctx.textAlign = "center", ctx.textBaseline = "middle", ctx.fillText(text, size/2, size/2) - return canvas.toDataURL(web.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} }, theme: function(cb) { @@ -353,7 +353,7 @@ Volcanos("page", { return action }, buttonStyle: function(can, name) { - return can.base.isIn(name, mdb.CREATE, mdb.INSERT, cli.RESTART, cli.START, cli.BUILD, cli.RUN, web.OPEN, "startall", "clone")? "notice": + return can.base.isIn(name, mdb.CREATE, mdb.INSERT, cli.RESTART, cli.START, cli.BUILD, ctx.RUN, web.OPEN, "startall", "clone")? "notice": can.base.isIn(name, mdb.REMOVE, mdb.DELETE, mdb.PRUNES, mdb.PRUNE, nfs.TRASH, "drop", cli.STOP, "stopall")? "danger": "" }, exportValue: function(can, msg) { diff --git a/lib/user.js b/lib/user.js index a991c8fb..ebc24c11 100644 --- a/lib/user.js +++ b/lib/user.js @@ -202,7 +202,7 @@ Volcanos("user", { }, upload: function(event, can, cb, silent) { var begin = new Date() var ui = can.page.Append(can, document.body, [{view: [[html.UPLOAD, chat.FLOAT]], list: [ - html.ACTION, {view: html.OUTPUT, list: ["progress"]}, {view: html.STATUS, list: [ice.SHOW, cli.COST, nfs.SIZE]}, + html.ACTION, {view: html.OUTPUT, list: ["progress"]}, {view: html.STATUS, list: [html.SHOW, cli.COST, nfs.SIZE]}, ]}]); can.onlayout.figure(event, can, ui._target) var action = can.onappend._action(can, [{type: html.UPLOAD, onchange: function(event) { action.show(event, 0, event.target.files[0].size, 0) }}, {type: html.BUTTON, name: cli.CLOSE}], ui.action, { begin: function(event) { begin = new Date() @@ -225,7 +225,7 @@ Volcanos("user", { }, toimage: function(can, name, target, silent) { var toast = can.user.toastProcess(can, "生成中...") can.require(["/require/modules/html2canvas/dist/html2canvas.min.js"], function() { toast.close() - html2canvas(target||can._target).then(function (canvas) { var url = canvas.toDataURL(web.IMAGE_PNG) + html2canvas(target||can._target).then(function (canvas) { var url = canvas.toDataURL(html.IMAGE_PNG) silent? (can.user.download(can, url, name, nfs.PNG), can.user.toastSuccess(can)): can.user.toastImage(can, name, url) }) }) @@ -235,45 +235,22 @@ Volcanos("user", { can.user.input(event, can, [{name: mdb.NAME, value: name}], function(list) { can.user.download(can, url, list[0], nfs.PNG) }) }), resize: html.IMG, }) }, - login: function(can, cb, method, sso) { var trans = kit.Dict(aaa.USERNAME, "用户", aaa.PASSWORD, "密码", aaa.LOGIN, "登录") + login: function(can, cb, msg) { can.misc.CookieSessid(can, "") function layout() { can.page.style(can, ui._target, {left: (window.innerWidth-ui._target.offsetWidth)/2, top: window.innerHeight/8}) } - function button(list) { return {view: [html.ITEM, html.TR], list: [{type: html.TD}, {type: html.TD, list: can.core.Item(list, function(key, cb) { - return {type: html.INPUT, value: can.user.trans(can, key, trans), data: {type: html.BUTTON}, onclick: cb} - }) }]} } - function input(name, type) { return {view: [html.ITEM, html.TR], list: [ - {type: html.TD, list: [{text: can.user.trans(can, name, trans)}]}, - {type: html.TD, list: [{type: html.INPUT, name: name, data: {type: type||html.TEXT}}]}, - ]} } - var _sso = can.core.Item(sso, function(key, value) { - return value.url && {view: "sso", list: [{img: can.misc.Resource(can, value.icon)}, {text: key}], onclick: function() { can.user.jumps(value.url) }} - }) - can.misc.CookieSessid(can, "") var ui = can.onappend.tabview(can, { "扫码授权": function(target) { var socket = can.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) { - if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [ - {text: "
或命令授权: "}, {text: [_cmd, "", html.ITEM], title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }}, - ].concat(_sso)), can.onmotion.delay(can, function() { layout() }, 10) } - if (cmd == ice.MSG_SESSID) { can.onmotion.delay(can, function() { socket.close() }) + if (cmd == cli.PWD) { var _cmd = " space login "+arg[0]; can.onmotion.delay(can, function() { layout() }) + return can.page.Modify(can, target, arg[2]), can.page.Append(can, target, [ + {text: "
或命令授权: "}, {text: [_cmd, "", html.ITEM], title: "点击复制,并后台执行此命令,即可登录", style: {cursor: "copy"}, onclick: function() { can.user.copy(event, can, _cmd) }}, + ].concat(msg.Table(function(value) { + return {view: "sso", list: [{img: can.misc.Resource(can, value.icon)}, {text: value.name}], onclick: function() { can.user.jumps(value.url) }} + }))) + } else if (cmd == ice.MSG_SESSID) { can.onmotion.delay(can, function() { socket.close() }) if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } return can.page.Remove(can, ui._target), can.base.isFunc(cb) && cb(), cb = null } }) }, - "密码登录": function(target) { - var _ui = can.page.Append(can, target, [input(aaa.USERNAME), input(aaa.PASSWORD, aaa.PASSWORD), button(kit.Dict(aaa.LOGIN, function(event) { - can.runAction(event, aaa.LOGIN, [_ui.username.value, _ui.password.value], function(msg) { - if (!msg.Option(ice.MSG_USERNAME)) { return can.user.toastFailure(can, "用户或密码错误") } - can.page.Remove(can, ui._target), can.base.isFunc(cb) && cb() - }) - }))]); can.page.Append(can, target, _sso) - can.misc.WSS(can, {type: aaa.LOGIN}, function(cmd, arg) { - if (cmd == ice.MSG_SESSID) { - if (!can.misc.CookieSessid(can, arg[0])) { can.user.info.sessid = arg[0] } - return can.page.Remove(can, ui._target), can.base.isFunc(cb) && cb() - } - }) - }, - }, can.base.Obj(method, can.user.isMobile? ["密码登录"]: ["扫码授权"]), can.page.Append(can, document.body, [{view: "input login float"}])._target) - can.onmotion.delay(can, function() { layout() }) + }, ["扫码授权"], can.page.Append(can, document.body, [{view: "input login float"}])._target); can.onmotion.delay(can, function() { layout() }) }, logout: function(can) { can.user.toastConfirm(can, aaa.LOGOUT, "", function() { can.runAction({}, aaa.LOGOUT, [], function(msg) { can.misc.CookieSessid(can, ""), can.misc.Search(can, chat.SHARE)? can.misc.Search(can, chat.SHARE, ""): can.user.reload(true) diff --git a/panel/action.js b/panel/action.js index 37ef6758..0bd7bef3 100644 --- a/panel/action.js +++ b/panel/action.js @@ -51,7 +51,7 @@ Volcanos(chat.ONACTION, {_init: function(can, target) { if (can.onmotion.cache(can, function(save, load) { save({plugins: can._plugins}) return load(can.core.Keys(can.Conf(chat.RIVER, river), can.Conf(chat.STORM, storm)), function(bak) { can._plugins = bak.plugins }) }, can._output, can._action, can._header_tabs)) { if (msg.Option("refresh") != "true") { return can.onaction.layout(can) } } - can.run(can.request({}, {_method: web.GET}), [river, storm], function(msg) { + can.run(can.request({}, {_method: http.GET}), [river, storm], function(msg) { if (msg.Length() == 0) { return can.user.isLocalFile? can.user.toastFailure(can, "miss data"): can.onengine.signal(can, chat.ONACTION_NOTOOL, can.request({}, {river: river, storm: storm})) } return can.onimport._init(can, msg) }) @@ -192,7 +192,7 @@ Volcanos(chat.ONKEYMAP, { toggleLayout: function(can, layout) { can.onaction.layout(can, can.onexport.layout(can) == layout? ice.AUTO: layout) }, }) Volcanos(chat.ONPLUGIN, {_plugin: shy("默认插件", [mdb.NAME, ice.LIST, ice.BACK]), - layout: shy("界面布局", {_init: function(can) { can.Option(chat.LAYOUT, can.getAction(chat.LAYOUT)) }}, ["layout:select=auto,tabs,tabview,horizon,vertical,grid,free,flow,page", ice.RUN], function(can, msg, arg) { + layout: shy("界面布局", {_init: function(can) { can.Option(chat.LAYOUT, can.getAction(chat.LAYOUT)) }}, ["layout:select=auto,tabs,tabview,horizon,vertical,grid,free,flow,page", ctx.RUN], function(can, msg, arg) { can.onaction.layout(can, arg[0]) }), "parse": shy("生成网页", { diff --git a/panel/footer.js b/panel/footer.js index 524a47b5..6e1aaa42 100644 --- a/panel/footer.js +++ b/panel/footer.js @@ -17,7 +17,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can. _command: function(can, msg, target) { can.onappend.input(can, {type: html.TEXT, icon: icon.TERMINAL, name: ice.CMD, onkeydown: function(event) { can.onkeymap.input(event, can) function close() { can.ui.cli && can.ui.cli.onaction.close() } if (event.key == code.ESCAPE) { return close() } if (event.key != code.ENTER) { return } close(); switch (event.target.value) { - case cli.CLEAR: + case web.CLEAR: case cli.CLOSE: break default: var list = can.core.Split(event.target.value, lex.SP) can.onexport._float(can, "cli", list[0], list.slice(1), function(sub) { can.getActionSize(function(left) { can.page.style(can, sub._target, html.LEFT, left+10, html.RIGHT, "") }) }) @@ -31,7 +31,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.Conf(NKEY, can. }) Volcanos(chat.ONACTION, {_init: function(can) {}, onsize: function(can) { can.ConfHeight(can._target.offsetHeight), can.ConfWidth(can._target.offsetWidth) }, - onlogin: function(can, msg) { can.run(can.request({}, {_method: web.GET}), [], function(msg) { can.onmotion.clear(can), can.onimport._init(can, msg, can._output) }) }, + onlogin: function(can, msg) { can.run(can.request({}, {_method: http.GET}), [], function(msg) { can.onmotion.clear(can), can.onimport._init(can, msg, can._output) }) }, 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}) }, onlayout: function(can, layout) { can.onmotion.toggle(can, can._target, !layout || layout == html.TABS) }, @@ -42,7 +42,7 @@ Volcanos(chat.ONACTION, {_init: function(can) {}, can.runAction(msg, msg.Option(ctx.ACTION), [msg.Option(ctx.INDEX)], function(_msg) { _msg.Table(function(item) { item.mode = chat.FLOAT can.onappend.plugin(can, item, function(sub) { - sub.run = function(event, cmds, cb) { can.run(can.request(event, {_method: http.POST, space: sub.Conf(web.SPACE)}), [ctx.ACTION, msg.Option(ctx.ACTION), ice.RUN].concat(cmds), cb) } + sub.run = function(event, cmds, cb) { can.run(can.request(event, {_method: http.POST, space: sub.Conf(web.SPACE)}), [ctx.ACTION, msg.Option(ctx.ACTION), ctx.RUN].concat(cmds), cb) } can.getActionSize(function(left, top, width, height) { sub.onimport.size(sub, sub.ConfHeight(height/2), sub.ConfWidth(width), true) can.onmotion.move(can, sub._target, {left: left||0, top: (top||0)+height/4}) }), sub.onaction.close = function() { can.page.Remove(can, sub._target) } diff --git a/panel/header.js b/panel/header.js index f27d5067..187aacd4 100644 --- a/panel/header.js +++ b/panel/header.js @@ -34,7 +34,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { language: function(can, language) { can.runAction(event, aaa.LANGUAGE, [language == ice.AUTO? "": language], function(msg) { can.user.toastConfirm(can, can.user.trans(can, "reload page for "+language), aaa.LANGUAGE, function() { can.user.reload(true) }) }) }, - theme: function(can, theme) { theme && can.runAction({}, web.THEME, [theme]) + theme: function(can, theme) { theme && can.runAction({}, chat.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})), can.user.theme(can, can.onexport.theme(can)) }, menu: function(can, cmds, cb, trans) { can.base.isString(cmds) && (cmds = [cmds]) @@ -61,7 +61,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { msg.Option(nfs.SCRIPT) && can.require(can.base.Obj(msg.Option(nfs.SCRIPT)), function(can) { can.onaction.source(can, msg) }) lang(msg, function() { can.onmotion.clear(can), can.onimport._init(can, can.request(), can._output), can.onengine.signal(can, chat.ONLOGIN) }) } - can.run(can.request({}, {_method: web.GET}), [], function(msg) { + can.run(can.request({}, {_method: http.GET}), [], function(msg) { lang(msg), can.page.requireModules(can, [msg.Option(mdb.ICONS)]) can.require(can.core.List(msg["theme.list"], function(item) { return "src/template/web.chat.header/theme/"+item })) can.onaction._menus[1] = [chat.THEME, ice.AUTO].concat(can.core.List(msg["theme.list"], function(item) { return can.base.trimSuffix(item, ".css") })) @@ -69,7 +69,7 @@ Volcanos(chat.ONACTION, {_init: function(can) { if (can.base.beginWith(location.pathname, "/wiki/portal/", "/chat/cmd/web.wiki.portal/", "/chat/cmd/web.chat.oauth.client", "/chat/pod/20230511-golang-story/cmd/web.code.gitea.client")) { return show(msg) } if (location.pathname == "/" && can.base.beginWith(msg.Option(ice.MAIN)||"", "/wiki/portal/", "/chat/cmd/web.wiki.portal/")) { return show(msg) } if (!can.Conf(aaa.USERNICK, msg.Option(aaa.USERNICK)||msg.Option(ice.MSG_USERNICK)||msg.Option(ice.MSG_USERNAME))) { - return can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg.Option(aaa.LOGIN), can.base.Obj(msg.Option(chat.SSO))) + return can.user.login(can, function() { can.onengine.signal(can, chat.ONMAIN, msg) }, msg) } show(msg) }) }, @@ -112,12 +112,12 @@ Volcanos(chat.ONACTION, {_init: function(can) { }, _params: [log.DEBUG, chat.TITLE], - _menus: ["shareuser", [web.THEME], [aaa.LANGUAGE], + _menus: ["shareuser", [chat.THEME], [aaa.LANGUAGE], [nfs.SAVE, aaa.EMAIL, web.TOIMAGE, code.WEBPACK], - [aaa.USER, "setnick", aaa.PASSWORD, cli.CLEAR, aaa.LOGOUT], + [aaa.USER, "setnick", aaa.PASSWORD, web.CLEAR, aaa.LOGOUT], ], _trans: kit.Dict( - "shareuser", "共享用户", web.THEME, "界面主题", aaa.LANGUAGE, "语言地区", + "shareuser", "共享用户", chat.THEME, "界面主题", aaa.LANGUAGE, "语言地区", nfs.SAVE, "保存网页", aaa.EMAIL, "发送邮件", web.TOIMAGE, "生成图片", code.WEBPACK, "打包页面", aaa.USER, "用户信息", "setnick", "设置昵称", aaa.PASSWORD, "修改密码", web.CLEAR, "清除背景", aaa.LOGOUT, "退出登录", @@ -169,11 +169,11 @@ Volcanos(chat.ONPLUGIN, { }), avatar: shy("用户头像", function(can, sub, cb) { can.page.Append(can, sub._output, [{img: can.user.info.avatar, style: kit.Dict(html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())}]) }), background: shy("背景图片", function(can, sub, cb) { can.page.Append(can, sub._output, [{img: can.user.info.background, style: kit.Dict(html.MAX_HEIGHT, sub.ConfHeight(), html.MAX_WIDTH, sub.ConfWidth())}]) }), - language: shy("语言地区", {_init: function(can) { can.Option(aaa.LANGUAGE, can.user.info.language||ice.AUTO) }}, ["language:select=auto,zh,en", ice.RUN], function(can, msg, arg) { can.onimport.language(can, arg[0]) }), + language: shy("语言地区", {_init: function(can) { can.Option(aaa.LANGUAGE, can.user.info.language||ice.AUTO) }}, ["language:select=auto,zh,en", ctx.RUN], function(can, msg, arg) { can.onimport.language(can, arg[0]) }), title: shy("网页标题", [chat.TITLE], function(can, msg, arg) { msg.Echo(can.user.title(arg[0])) }), theme: shy("界面主题", {_init: function(can) { can.Option(chat.THEME, can.getHeader(chat.THEME)) }, - save: function(can, sup) { can.user.downloads(can, sup._themes[can.Option(web.THEME)], can.Option(web.THEME), nfs.CSS) }, - }, ["theme:select=auto,dark,light,print,white,black", ice.RUN, nfs.SAVE], function(can, msg, arg) { + save: function(can, sup) { can.user.downloads(can, sup._themes[can.Option(chat.THEME)], can.Option(chat.THEME), nfs.CSS) }, + }, ["theme:select=auto,dark,light,print,white,black", ctx.RUN, nfs.SAVE], function(can, msg, arg) { if (arg[0] == ice.AUTO) { arg[0] = "", can._theme = "" } can.misc.localStorage(can, "can.theme", arg[0]), can.onimport.theme(can, arg[0]) }), logout: shy("退出登录", kit.Dict(aaa.LOGOUT, shy("退出", function(can) { can.user.logout(can._root.Header) })), [aaa.LOGOUT]), diff --git a/panel/river.js b/panel/river.js index 6d670fd4..b19eb6d0 100644 --- a/panel/river.js +++ b/panel/river.js @@ -18,7 +18,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onimport._main(can, msg _menu: function(can, msg) { can.user.isMobile || can.user.mod.isPod || can.onappend._action(can, can.onaction.list, can._action) }, }) Volcanos(chat.ONACTION, {list: [mdb.CREATE, web.SHARE, web.REFRESH], _init: function(can) { can.onmotion.hidden(can) }, - onlogin: function(can, msg) { can.run(can.request({}, {_method: web.GET}), [], function(msg) { if (msg.Option(ice.MSG_RIVER)) { return can.page.Remove(can, can._target) } + onlogin: function(can, msg) { can.run(can.request({}, {_method: http.GET}), [], function(msg) { if (msg.Option(ice.MSG_RIVER)) { return can.page.Remove(can, can._target) } can.onimport._init(can, msg); if (can.user.isMobile || can.user.isExtension) { return can.page.ClassList.add(can, can._target, ice.AUTO) } can.onmotion.toggle(can, can._target, true), can.onlayout._init(can) }) }, diff --git a/panel/search.js b/panel/search.js index aeb25cbe..bf1a163f 100644 --- a/panel/search.js +++ b/panel/search.js @@ -20,7 +20,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { can.onmotion.clear(can, can can.ui.done = function() { can.base.isFunc(cb) && cb(can.onexport.select(can)), can.onmotion.hidden(can) }, can.db = {}, can._plugins = [], can.onimport._input(can, msg, cmds, fields) }, }) -Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list: [cli.CLOSE, cli.CLEAR, cli.DONE], +Volcanos(chat.ONACTION, {_init: function(can) { can.onmotion.hidden(can) }, list: [cli.CLOSE, web.CLEAR, cli.DONE], onsize: function(can, msg, height, width) { can.onimport._size(can), can.core.List(can._plugins, function(sub) { sub.onimport.size(sub, can.ConfHeight(), can.ConfWidth(), true) }) }, onlogin: function(can, msg) { can.ui = can.page.Append(can, can._output, [chat.CONTENT, {view: [[chat.DISPLAY, chat.CONTENT], html.TABLE]}, chat.PROFILE]) can.onappend._action(can, (can.Conf(html.ACTION)||can.onaction.list).concat({type: html.TEXT, name: html.FILTER, _init: function(target) { can.ui.filter = target }, onkeydown: function(event) { diff --git a/plugin/input.js b/plugin/input.js index 51aed977..a0def1c6 100644 --- a/plugin/input.js +++ b/plugin/input.js @@ -1,6 +1,6 @@ Volcanos(chat.ONACTION, { - run: function(event, can) { can.run(can.request(event, {_method: web.POST})) }, refresh: function(event, can) { can.run(can.request(event, {_method: web.GET})) }, - list: function(event, can) { can.sup.isSimpleMode() || can.run(can.request(event, {_method: web.GET})) }, back: function(event, can) { can.sup.onimport._back(can.sup) }, + run: function(event, can) { can.run(can.request(event, {_method: http.POST})) }, refresh: function(event, can) { can.run(can.request(event, {_method: http.GET})) }, + list: function(event, can) { can.sup.isSimpleMode() || can.run(can.request(event, {_method: http.GET})) }, back: function(event, can) { can.sup.onimport._back(can.sup) }, onclick: function(event, can) { can.Conf(mdb.TYPE) == html.BUTTON && can.run(event, [ctx.ACTION, can.Conf(mdb.NAME)].concat(can.sup.Input())), can.onkeymap.prevent(event) }, onchange: function(event, can) { can.Conf(mdb.TYPE) == html.SELECT && can.run(event) }, onkeydown: function(event, can) { can.onkeymap.input(event, can, event.target); if (can.Conf(mdb.TYPE) == html.TEXTAREA && !event.ctrlKey) { return } diff --git a/plugin/input/keyboard.js b/plugin/input/keyboard.js index fbed7bf9..517943a8 100644 --- a/plugin/input/keyboard.js +++ b/plugin/input/keyboard.js @@ -10,7 +10,7 @@ Volcanos(chat.ONFIGURE, {keyboard: { function hold() { can.page.ClassList.add(can, div, "hold") } var div = can.page.Append(can, can._output, [{view: item.type+lex.SP+item.name+(item.name.indexOf(lex.NL)>-1? " double": item.name.length>1? " special": ""), list: [{text: [item.name]}], onclick: function(event) { switch (item.name) { - case cli.CLEAR: target.value = "", target.focus(); break + case web.CLEAR: target.value = "", target.focus(); break case cli.CLOSE: can.close(); break case code.ESC: can.close(); break case code.CTRL: can._ctrl = !can._ctrl, hold(); break diff --git a/plugin/local/chat/location.js b/plugin/local/chat/location.js index d380de06..3bc7904e 100644 --- a/plugin/local/chat/location.js +++ b/plugin/local/chat/location.js @@ -112,7 +112,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb, target) { can.ui = can.on myInfoWindow.prototype.createDOM = function() { var meta = this.meta, ui = can.onappend.field(can, chat.FLOAT, {}, can._output) can.onappend.plugin(can, meta, function(sub) { - sub.run = function(event, cmds, cb) { can.runAction(can.request(event), ice.RUN, [meta.index].concat(cmds), cb) } + sub.run = function(event, cmds, cb) { can.runAction(can.request(event), ctx.RUN, [meta.index].concat(cmds), cb) } sub.onaction.close = function(event) { can.misc.Event(event, can, function(msg) { can.onmotion.hidden(can, sub._target) }) } diff --git a/plugin/local/code/vimer.js b/plugin/local/code/vimer.js index a661d521..4c8e9236 100644 --- a/plugin/local/code/vimer.js +++ b/plugin/local/code/vimer.js @@ -26,7 +26,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { Volcanos(chat.ONFIGURE, { source: function(can, target, zone, path) { var args = can.base.getValid(can.misc.SearchHash(can), [can.Option(nfs.PATH), can.Option(nfs.FILE)]) - function show(target, zone, path) { can.run(can.request({}, {_method: web.GET, dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { + function show(target, zone, path) { can.run(can.request({}, {_method: http.GET, dir_root: path, dir_deep: true}), [nfs.PWD], function(msg) { zone._icon(kit.Dict( web.REFRESH, function(event) { show(target, zone, path) }, mdb.CREATE, function(event, button) { can.onaction.module(event, can, nfs.MODULE) }, diff --git a/plugin/local/code/xterm.js b/plugin/local/code/xterm.js index 87d906c4..e0535c95 100644 --- a/plugin/local/code/xterm.js +++ b/plugin/local/code/xterm.js @@ -65,13 +65,13 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireModules can.onexport.term(can, term) }) }, _input: function(can, term, data) { if (data == "\u0013") { can._delay = true - can.onmotion.delay(can, function() { can._delay && can.runAction(can.request({}, term._item), web.INPUT, [btoa(data)], function(msg) { + can.onmotion.delay(can, function() { can._delay && can.runAction(can.request({}, term._item), html.INPUT, [btoa(data)], function(msg) { if (msg.IsErr()) { can.misc.Warn(msg.Result()) } }) }) } else { if (can._delay) { can._delay = false; var msg = can.request({}, {_handle: ice.TRUE}, term._item) can._keylist = can.onkeymap._parse({key: data, _msg: msg}, can, mdb.NORMAL, can._keylist||[], term); return - } can._output = term._output, can.runAction(can.request({}, {rows: term.rows, cols: term.cols}, term._item), web.INPUT, [btoa(data)], function(msg) { + } can._output = term._output, can.runAction(can.request({}, {rows: term.rows, cols: term.cols}, term._item), html.INPUT, [btoa(data)], function(msg) { if (msg.IsErr()) { can.misc.Warn(msg.Result()) } }) } diff --git a/plugin/local/team/plan.js b/plugin/local/team/plan.js index 2c780698..41090ef6 100644 --- a/plugin/local/team/plan.js +++ b/plugin/local/team/plan.js @@ -18,7 +18,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear( ondrop: function(event) { can.onkeymap.prevent(event), can.drop(event, event.target, time) }, ondragover: function(event) { can.onkeymap.prevent(event), can.page.Select(can, can.ui.content, html.TD, function(td) { can.page.ClassList.set(can, td, "over", td == event.target) }) }, list: can.core.List(list, function(task) { return can.base.isString(task)? {text: [task, html.DIV, "date"]}: - {text: [can.core.CallFunc([can.onexport, can.Action(ice.VIEW)||mdb.TEXT], [can, task])||task.name, html.DIV, can.onexport.style(can, task)], + {text: [can.core.CallFunc([can.onexport, can.Action(html.VIEW)||mdb.TEXT], [can, task])||task.name, html.DIV, can.onexport.style(can, task)], ondragstart: function(event) { var target = event.target; can.drop = function(event, td, time) { td.append(target) can.onaction.modifyTask(event, can, task, team.BEGIN_TIME, time+task.begin_time.slice(time.length), task.begin_time) } }, draggable: time != undefined, title: can.onexport.title(can, task), _init: function(target) { @@ -46,7 +46,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear( }, can.ui.display)) { return } task[ctx.EXTRA_INDEX] && can.onappend.plugin(can, {space: task.space, index: task[ctx.EXTRA_INDEX], args: task[ctx.EXTRA_ARGS], height: can.ConfHeight()/2-2*html.ACTION_HEIGHT}, function(sub, meta) { sub.run = function(event, cmds, cb) { can.request(event, kit.Dict(team.TASK_POD, task.space, team.TASK_ZONE, task.zone, team.TASK_ID, task.id)) - can.page.style(can, sub._output, html.MAX_HEIGHT, ""), can.runAction(event, ice.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb) + can.page.style(can, sub._output, html.MAX_HEIGHT, ""), can.runAction(event, ctx.RUN, [task[mdb.ZONE], task[mdb.ID]].concat(cmds), cb) } can._plugin_display = sub sub.onaction.close = function() { can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can) } diff --git a/plugin/local/wiki/draw.js b/plugin/local/wiki/draw.js index 85378e6a..df5f89cc 100644 --- a/plugin/local/wiki/draw.js +++ b/plugin/local/wiki/draw.js @@ -16,7 +16,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear( var _cb = can.core.Value(figure, [svg.DATA, key]); if (can.base.isFunc(_cb)) { return _cb(can, value, key, target) } if (value == ice.AUTO) { return target.removeAttribute(key) } if (key == html.INNER) { return value != undefined && (target.innerHTML = value), target.innerHTML } - if (key == ice.SHIP) { return value != undefined && target.setAttribute(key, JSON.stringify(value)), can.base.Obj(target.getAttribute(key), []) } + if (key == svg.SHIP) { return value != undefined && target.setAttribute(key, JSON.stringify(value)), can.base.Obj(target.getAttribute(key), []) } try { return value != undefined && target.setAttribute(key, value), target.getAttribute(key) || can.core.Value(target[key], "baseVal.value") || can.core.Value(target[key], "baseVal") || undefined } catch(e) { } @@ -77,7 +77,7 @@ Volcanos(chat.ONACTION, {list: [[svg.GRID, 10, 1, 2, 3, 4, 5, 10, 20], [svg.FONT_SIZE, svg.FONT_SIZE, 12, 16, 18, 24, 32], [svg.STROKE_WIDTH, svg.STROKE_WIDTH, 1, 2, 3, 4, 5], [svg.STROKE, svg.STROKE, cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE], [svg.FILL, svg.FILL, cli.RED, cli.YELLOW, cli.GREEN, cli.CYAN, cli.BLUE, cli.PURPLE, cli.BLACK, cli.WHITE, cli.TRANSPARENT], - [svg.GO, ice.AUTO, ice.RUN, ice.AUTO, "manual"], [ice.MODE, web.DRAW, web.RESIZE], + [svg.GO, ice.AUTO, ctx.RUN, ice.AUTO, "manual"], [ice.MODE, web.DRAW, web.RESIZE], [svg.SHAPE, svg.RECT, svg.TEXT, svg.RECT, svg.LINE, svg.BLOCK, svg.CIRCLE, svg.ELLIPSE], ], _change: function(can, key, value) { value == "" && (value = key), can.Action(key, value) @@ -92,7 +92,7 @@ Volcanos(chat.ONACTION, {list: [[svg.GRID, 10, 1, 2, 3, 4, 5, 10, 20], mode: function(event, can, key, value) { can.Action(key, value) }, shape: function(event, can, key, value) { can.Action(key, value) }, - menu_list: [ice.HIDE, ice.SHOW, mdb.CREATE, web.CLEAR, mdb.REMOVE], + menu_list: [html.HIDE, html.SHOW, mdb.CREATE, web.CLEAR, mdb.REMOVE], hide: function(event, can) { can.onmotion.hide(can, {interval: 100, length: 10}, null, can.group) }, show: function(event, can) { can.onmotion.show(can, {interval: 10, length: 1}, null, can.group) }, create: function(event, can) { can.user.input(event, can, [svg.GROUP], function(list) { can.onimport.group(can, list[0]) }) }, @@ -100,14 +100,14 @@ Volcanos(chat.ONACTION, {list: [[svg.GRID, 10, 1, 2, 3, 4, 5, 10, 20], remove: function(event, can) { can.group == can.svg || can.page.Remove(can, can.group) }, save: function(event, can, button) { can.runAction(can.request(event, {text: can.onexport.content(can, can.svg)}), button, [can.Option(nfs.PATH)]) }, - edit: function(event, can) { can.Action(svg.GO, can.Action(svg.GO) == ice.RUN? ice.AUTO: ice.RUN) }, + edit: function(event, can) { can.Action(svg.GO, can.Action(svg.GO) == ctx.RUN? ice.AUTO: ctx.RUN) }, _mode: { draw: function(event, can, points) { var shape = can.Action(svg.SHAPE), figure = can.onfigure[shape] figure.grid && figure.grid(event, can, points); if (figure.data.points && figure.data.points != points.length) { return } var data = figure.draw && figure.draw(event, can, points, {}), target = data && can.onimport.block(can, figure.data.name||shape, data, can.group) if (event.type == html.CLICK) { can.points = []; if (target) { var pid = can.onexport._pid(can, target) - can.core.List(points, function(p, i) { p.target && p.target.Value(ice.SHIP, p.target.Value(ice.SHIP).concat([{pid: pid, which: i+1, anchor: p.anchor}])) }) + can.core.List(points, function(p, i) { p.target && p.target.Value(svg.SHIP, p.target.Value(svg.SHIP).concat([{pid: pid, which: i+1, anchor: p.anchor}])) }) return } } return target }, @@ -115,7 +115,7 @@ Volcanos(chat.ONACTION, {list: [[svg.GRID, 10, 1, 2, 3, 4, 5, 10, 20], if (event.type == html.CLICK) { if (points.length > 1) { return can.points = [], delete(can.current) } return can.current = {target: target, begin: can.core.List([target], function(target) { if (can.page.tagis(target, svg.G)) { return } return {target: target, height: target.Val(html.HEIGHT), width: target.Val(html.WIDTH), x: target.Val(svg.X), y: target.Val(svg.Y), - ship: can.core.List(target.Value(ice.SHIP), function(ship) { return ship.pid && (ship.target = can.ondetail._select(can, ship.pid)) && ship }) + ship: can.core.List(target.Value(svg.SHIP), function(ship) { return ship.pid && (ship.target = can.ondetail._select(can, ship.pid)) && ship }) } }), pos: can.onexport.cursor(event, can, target)} } @@ -141,12 +141,12 @@ Volcanos(chat.ONACTION, {list: [[svg.GRID, 10, 1, 2, 3, 4, 5, 10, 20], }, onmouseover: function(event, can) { can.onexport._show(can, event.target) }, onmousemove: function(event, can) { var point = can.onexport._point(event, can) - if (can.Action(svg.GO) == ice.RUN) { return can.page.style(can, can.svg, "cursor", "pointer") } can.onexport.cursor(event, can, event.target) + if (can.Action(svg.GO) == ctx.RUN) { return can.page.style(can, can.svg, "cursor", "pointer") } can.onexport.cursor(event, can, event.target) if (can.Action(svg.GO) == ice.AUTO) { can.onaction._auto(can, event.target) } can.onaction._figure(event, can, can.points.concat(point)) }, onclick: function(event, can) { var point = can.onexport._point(event, can) - if (can.Action(svg.GO) == ice.RUN) { return can.ondetail._select(can, event.target.Value(svg.PID)) } + if (can.Action(svg.GO) == ctx.RUN) { return can.ondetail._select(can, event.target.Value(svg.PID)) } can.onaction._figure(event, can, can.points = can.points.concat(point)) }, ondblclick: function(event, can) { can.ondetail.label(event, can) }, @@ -186,11 +186,11 @@ Volcanos(chat.ONDETAIL, {list: [cli.START, ice.COPY, html.LABEL, "toimage", mdb. }, toimage: function(event, can) { can.user.toimage(can, can.Option(nfs.PATH).split(nfs.PS).pop().split(nfs.PT)[0], can.svg) }, remove: function(event, can) { if (target == can.svg) { return } var target = event.target - can.core.List(target.Value(ice.SHIP), function(item) { can.ondetail._select(can, item.pid, function(target) { can.page.Remove(can, target) }) }) + can.core.List(target.Value(svg.SHIP), function(item) { can.ondetail._select(can, item.pid, function(target) { can.page.Remove(can, target) }) }) can.ondetail._select(can, target.Value(mdb.TEXT), function(target) { can.page.Remove(can, target) }), can.page.Remove(can, target) }, _move: function(can, target, list) { - can.core.List(list||target.Value(ice.SHIP), function(ship) { var p = can.onexport.anchor(target, ship.anchor, {}); ship.target = can.ondetail._select(can, ship.pid) + can.core.List(list||target.Value(svg.SHIP), function(ship) { var p = can.onexport.anchor(target, ship.anchor, {}); ship.target = can.ondetail._select(can, ship.pid) if (ship.which == 1) { ship.target.Val(svg.X1, p.x), ship.target.Val(svg.Y1, p.y) } else if (ship.which == 2) { ship.target.Val(svg.X2, p.x), ship.target.Val(svg.Y2, p.y) } }) }, @@ -328,7 +328,7 @@ Volcanos(chat.ONKEYMAP, { _mode: { normal: { Escape: function(event, can) { can._undo && can._undo(), can.points = [] }, - gr: function(event, can) { can.Action(svg.GO, ice.RUN) }, + gr: function(event, can) { can.Action(svg.GO, ctx.RUN) }, ga: function(event, can) { can.Action(svg.GO, ice.AUTO) }, gm: function(event, can) { can.Action(svg.GO, "manual") }, diff --git a/plugin/local/wiki/word.js b/plugin/local/wiki/word.js index e19e58cc..aa3b62ca 100644 --- a/plugin/local/wiki/word.js +++ b/plugin/local/wiki/word.js @@ -120,10 +120,10 @@ Volcanos(chat.ONDETAIL, {list: ["删除"], } }) }, - next: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) { + next: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, html.SHOW), function(page) { page.nextSibling? sub.sup.ondetail.show(sub, page.nextSibling): sub.user.toast(sub.sup, cli.END) }) }, - prev: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, ice.SHOW), function(page) { + prev: function(sub) { sub.page.Select(sub, sub.ui.content, sub.core.Keys(html.DIV_PAGE, html.SHOW), function(page) { page.previousSibling? sub.sup.ondetail.show(sub, page.previousSibling): sub.user.toast(sub.sup, cli.END) }) }, flash: function(sub) { sub.core.Next(sub.page.Select(sub, sub.ui.content, html.DIV_PAGE), function(page, next) { diff --git a/plugin/state.js b/plugin/state.js index 069f56fd..d2c25681 100644 --- a/plugin/state.js +++ b/plugin/state.js @@ -15,7 +15,7 @@ Volcanos(chat.ONIMPORT, { msg.Table(function(item) { can.onappend._plugin(can, item, {index: item.index, args: can.base.Obj(item.args||item.arg, []), height: height, width: width}, function(sub) { can.onmotion.delay(can, function() { can.onmotion.scrollIntoView(can, sub._target) }, 300) sub.run = function(event, cmds, cb) { var index = msg.Option(ice.MSG_INDEX) - can.run(event, (!index || index == can._index || index.indexOf("can.") == 0? msg[ice.MSG_PREFIX]||[]: [ice.RUN, index]).concat(cmds), cb, true) + can.run(event, (!index || index == can._index || index.indexOf("can.") == 0? msg[ice.MSG_PREFIX]||[]: [ctx.RUN, index]).concat(cmds), cb, true) }, can.page.ClassList.has(can, sub._target, html.FLOAT)? can.onmotion.float(sub): sub.onimport.size(sub, height, width, true), cb && cb(sub) }) }) }, @@ -124,10 +124,10 @@ Volcanos(chat.ONACTION, {list: [ }, "打包页面": function(event, can) { can.onengine.signal(can, "onwebpack", can.request(event)) }, - "查看文档": function(event, can) { can.request(event).Option(ctx.ACTION, ice.HELP), can.onengine.signal(can, "ondebugs", can.request(event, {action: ice.HELP, index: can.Conf(ctx.INDEX)})) }, - "查看脚本": function(event, can) { can.request(event).Option(ctx.ACTION, nfs.SCRIPT), can.onengine.signal(can, "ondebugs", can.request(event, {action: nfs.SCRIPT, index: can.Conf(ctx.INDEX)})) }, - "查看源码": function(event, can) { can.request(event).Option(ctx.ACTION, nfs.SOURCE), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, - "查看配置": function(event, can) { can.request(event).Option(ctx.ACTION, ctx.CONFIG), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看文档": function(event, can) { can.requests(event, {action: ice.HELP}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看脚本": function(event, can) { can.requests(event, {action: nfs.SCRIPT}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看源码": function(event, can) { can.requests(event, {action: nfs.SOURCE}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, + "查看配置": function(event, can) { can.requests(event, {action: ctx.CONFIG}), can.onengine.signal(can, "ondebugs", can.requestPodCmd(event)) }, "查看日志": function(event, can) { var sub = can.sub; sub.onimport.tool(sub, ["can.debug"], function(sub) { sub.select() }) }, "删除工具": function(event, can) { can.onaction._close(event, can) }, @@ -187,7 +187,7 @@ Volcanos(chat.ONACTION, {list: [ } }) }, record2: function(event, can) { can.onaction.record0(event, can, "shot", function(stream, cb) { - var recorder = new MediaRecorder(stream, {mimeType: web.VIDEO_WEBM}), blobs = []; recorder.ondataavailable = function(res) { blobs.push(res.data) } + var recorder = new MediaRecorder(stream, {mimeType: html.VIDEO_WEBM}), blobs = []; recorder.ondataavailable = function(res) { blobs.push(res.data) } recorder.onstop = function() { cb(blobs, nfs.WEBM) }, recorder.start(1) }) }, }) diff --git a/plugin/story/spide.js b/plugin/story/spide.js index 8fd48f54..41add1de 100644 --- a/plugin/story/spide.js +++ b/plugin/story/spide.js @@ -18,10 +18,10 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(ca _color: function(can, tree) { return tree.meta.color || (tree.list == 0? cli.PURPLE: cli.YELLOW) }, layout: function(can) { can.page.ClassList.has(can, can._fields, html.FLOAT) || can.page.style(can, can._output, html.MAX_HEIGHT, "") can.svg && can.svg.Val(svg.FONT_SIZE, can.size = parseInt(can.Action(html.SIZE)||24)), can.margin = parseInt(can.Action(html.MARGIN)||10) - can._tree && can._tree[can.dir_root] && can.core.CallFunc(can.onaction[can.Action(ice.VIEW)||"横向"], [event, can, can.Action(ice.VIEW)]) + can._tree && can._tree[can.dir_root] && can.core.CallFunc(can.onaction[can.Action(html.VIEW)||"横向"], [event, can, can.Action(html.VIEW)]) }, }) -Volcanos(chat.ONACTION, {list: [[ice.VIEW, "横向", "纵向"], [html.SIZE, 24, 32, 48], [html.MARGIN, 10, 30, 50]], +Volcanos(chat.ONACTION, {list: [[html.VIEW, "横向", "纵向"], [html.SIZE, 24, 32, 48], [html.MARGIN, 10, 30, 50]], size: function(event, can) { can.onimport.layout(can) }, margin: function(event, can) { can.onimport.layout(can) }, "横向": function(event, can, button) { can.onimport._height(can, can._tree[can.dir_root]), can.onmotion.clear(can, can.svg) can.svg.Val(html.HEIGHT, can._tree[can.dir_root].height*(can.size+can.margin)+2*can.margin), can.svg.Value(svg.TEXT_ANCHOR, "start") @@ -55,7 +55,7 @@ Volcanos(chat.ONACTION, {list: [[ice.VIEW, "横向", "纵向"], [html.SIZE, 24, }) Volcanos(chat.ONDETAIL, { onclick: function(event, can, tree) { - if (tree.list.length > 0 || tree.name.endsWith(can.Conf(lex.SPLIT))) { return tree.hide = !tree.hide, can.onaction[can.Action(ice.VIEW)||"横向"](event, can) } + if (tree.list.length > 0 || tree.name.endsWith(can.Conf(lex.SPLIT))) { return tree.hide = !tree.hide, can.onaction[can.Action(html.VIEW)||"横向"](event, can) } 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.Conf(ctx.ACTION)||[], [tree.file||"", tree.name]), function(msg) { if (msg.Length() == 0) { return can.onappend._float(can, web.CODE_INNER, [can._msg.Option(nfs.DIR_ROOT), tree.file, tree.line]) } diff --git a/plugin/story/trend.js b/plugin/story/trend.js index fdf5b758..1b4ea8d0 100644 --- a/plugin/story/trend.js +++ b/plugin/story/trend.js @@ -1,6 +1,6 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.requireDraw(can, function() { can.base.isFunc(cb) && cb(msg) - can.Conf(ice.VIEW) && can.Action(ice.VIEW, can.Conf(ice.VIEW)), can.onmotion.toggle(can, can._option, !can.user.isMobile || !can.isFullMode()) + can.Conf(html.VIEW) && can.Action(html.VIEW, can.Conf(html.VIEW)), can.onmotion.toggle(can, can._option, !can.user.isMobile || !can.isFullMode()) can.db.data = msg.Table(), can.onimport.layout(can) }) }, @@ -23,11 +23,11 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, cb) { can.page.style(can, can._output, html.MAX_HEIGHT, "") return {height: height, width: width, margin: margin, step: step} }, - layout: function(can) { can.db.data && can.core.CallFunc(can.onaction[can.Action(ice.VIEW)], [{}, can]) }, + layout: function(can) { can.db.data && can.core.CallFunc(can.onaction[can.Action(html.VIEW)], [{}, can]) }, // transform: function(can, target) { target.Value("transform", "scale(1, -1)") }, transform: function(can, target) { target.Value("transform", "translate(0, "+parseInt(can.ConfHeight())+") scale(1, -1)") }, }) -Volcanos(chat.ONACTION, {list: [[ice.VIEW, "趋势图", "柱状图", "折线图", "数据源"], +Volcanos(chat.ONACTION, {list: [[html.VIEW, "趋势图", "柱状图", "折线图", "数据源"], [html.HEIGHT, html.HEIGHT, 100, 200, 400, 600, 800], [html.MARGIN, html.MARGIN, 10, 20, 50, 100], [html.SPEED, html.SPEED, 10, 20, 50, 100], ], "趋势图": function(event, can) { var args = can.onimport._layout(can) diff --git a/proto.js b/proto.js index d0f817a8..f625a7cc 100644 --- a/proto.js +++ b/proto.js @@ -4,17 +4,14 @@ function shy(help, meta, list, cb) { var arg = arguments, i = 0; function next(t } else if (i < arg.length && (!type || type == typeof arg[i])) { return arg[i++] } } return cb = typeof arg[arg.length-1] == code.FUNCTION? arg[arg.length-1]: function() {}, cb.help = next(code.STRING)||"", cb.meta = next(code.OBJECT)||{}, cb.list = next(code.ARRAY)||[], cb }; var _can_name = "", _can_path = "" -var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, - _cache: {}, cache: {}, pack: {}, args: {}}, function(name, can, libs, cb) { +var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, _cache: {}, cache: {}, pack: {}, args: {}}, function(name, can, libs, cb) { var meta = arguments.callee.meta, list = arguments.callee.list; if (typeof name == code.OBJECT) { if (name.length > 0) { return Volcanos({panels: [{name: chat.HEADER, style: html.HIDE, state: [mdb.TIME, aaa.USERNICK]}, {name: chat.ACTION, style: html.MAIN, tool: name}, {name: chat.FOOTER, style: html.HIDE}]}) } var Config = name; name = Config.name||ice.CAN, _can_name = "" meta.iceberg = Config.iceberg||meta.iceberg, meta.volcano = Config.volcano||meta.volcano meta.libs = (Config.libs||chat.libs).concat(Config.list), panels = Config.panels||chat.panel_list, delete(Config.panels) libs = [], panels.forEach(function(p) { p && (libs = libs.concat(p.list = p.list||["/panel/"+p.name+nfs._JS, "/panel/"+p.name+nfs._CSS])) }), libs = libs.concat(Config.plugins||chat.plugin_list) - cb = can||function(can) { can.require([can.frame], function() { - can.onengine._init(can, can.Conf(Config), panels, Config._init||meta._init, can._target) - }, function(can, key, sub) { can[key] = sub }) } + cb = can||function(can) { can.require([can.frame], function() { can.onengine._init(can, can.Conf(Config), panels, Config._init||meta._init, can._target) }, function(can, key, sub) { can[key] = sub }) } can = Config, can._follow = name, can._target = Config.target||meta.target, can._height = Config.height||meta._height, can._width = Config.width||meta._width } can = kit.proto(can||{}, kit.proto({_name: name, _path: _can_name, _load: function(name, cbs) { var cache = meta.cache[name]||[] @@ -28,7 +25,7 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, require: function(libs, cb, cbs) { if (!libs || libs.length == 0) { if (navigator.userAgent == "nodejs") { return typeof cb == code.FUNCTION && cb(can) } - return typeof cb == code.FUNCTION && setTimeout(function() { cb(can) }, 10) + return typeof cb == code.FUNCTION && setTimeout(function() { cb(can) }, 30) } if (libs[0] == undefined) { return can.require(libs.slice(1), cb, cbs) } if (libs[0] == "") { libs[0] = can._path.replace(nfs._JS, nfs._CSS) } @@ -43,14 +40,6 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, if (name.indexOf("/require/") == 0 && meta.iceberg) { name = meta.iceberg+name } meta.cache[name]? next(): meta._load(name, next) }, - requestPodCmd: function(event) { return can.request(event, {space: can.ConfSpace(), index: can.ConfIndex()}) }, - requests: function(event) { event = event||{}, event = event._event||event - var msg = event._msg||can.misc.Message(event, can); event._msg = msg - function set(key, value) { msg.Option(key, value) } - can.core.List(arguments, function(item, index) { if (!item || index == 0) { return } - can.base.isFunc(item.Option)? can.core.List(item.Option(), function(key) { set(key, item.Option(key)) }): can.core.Item(can.base.isFunc(item)? item(): item, set) - }); return msg - }, request: function(event) { event = event||{}, event = event._event||event var msg = event._msg||can.misc.Message(event, can); event._msg = msg function set(key, value) { if (key == "_method") { return msg._method = value } @@ -63,6 +52,10 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, }) return msg }, + requests: function(event) { var msg = can.request(event); function set(key, value) { msg.Option(key, value) } + can.core.List(arguments, function(item, index) { if (!item || index == 0) { return } can.core.Item(item, set) }); return msg + }, + requestPodCmd: function(event) { return can.request(event, {space: can.ConfSpace(), index: can.ConfIndex()}) }, requestAction: function(event, button) { return can.request(event, {action: button, _toast: ice.PROCESS+" "+button}) }, runActionInputs: function(event, cmds, cb) { var msg = can.request(event), meta = can.Conf() 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]}) @@ -71,7 +64,7 @@ var Volcanos = shy({iceberg: "", volcano: "", frame: chat.FRAME_JS, } can.runAction(event, cmds[1], cmds.slice(2), cb, true) }, runActionCommand: function(event, index, args, cb) { can.request(event)._caller() - can.runAction(event, ice.RUN, [index].concat(args), cb, true) + can.runAction(event, ctx.RUN, [index].concat(args), cb, true) }, runAction: function(event, action, args, cb, silent) { can.request(event, {_handle: ice.TRUE}, can.Option())._caller() @@ -125,10 +118,10 @@ try { if (typeof(window) == code.OBJECT) { var meta = Volcanos.meta meta.version = window._version, window.outerWidth-window.innerWidth > 100 && (meta.version = "", debug = false) } meta._load = function(url, cb) { - if (meta.version) { url += (url.indexOf("?") == -1? "?": "&")+meta.version.slice(1) } + if (meta.version) { url += (url.indexOf(web.QS) == -1? web.QS: "&")+meta.version.slice(1) } if (meta._cache[url]) { return meta._cache[url].push(cb) } else { meta._cache[url] = [cb] } function _cb() { meta._cache[url].forEach(function(cb) { cb() }), delete(meta._cache[url]) } - switch (url.split(ice.QS)[0].split(nfs.PT).pop().toLowerCase()) { + switch (url.split(web.QS)[0].split(nfs.PT).pop().toLowerCase()) { case nfs.CSS: var item = document.createElement(mdb.LINK); item.href = url, item.rel = "stylesheet", 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) } @@ -139,10 +132,10 @@ try { if (typeof(window) == code.OBJECT) { var meta = Volcanos.meta if (can.user.isMobile && last === can.page.width() < can.page.height()) { return } last = can.page.width() < can.page.height() can.onmotion.delayOnce(can, function() { can.onengine.signal(can, chat.ONRESIZE, can.request(event, kit.Dict(html.HEIGHT, window.innerHeight, html.WIDTH, window.innerWidth))) }, 100, can._delay_resize = can._delay_resize||[]) }) } - window.onbeforeunload = function() { can.onengine.signal(can, chat.ONUNLOAD) } window.onerror = function(message, source, lineno, colno, error) { debug? alert([message].concat(can.misc._stacks(0, error)).join(lex.NL)): can.misc.Error(message, lex.NL+[source, lineno, colno].join(ice.DF), error) } window.onmousemove = function(event) { window._mousemove && (window._mousemove.onmousemove(event)) } window.onmouseup = function(event) { window._mousemove && (window._mousemove.onmouseup(event)) } + window.onbeforeunload = function() { can.onengine.signal(can, chat.ONUNLOAD) } } } else { // nodejs global.document = {}, global.location = {}, global.window = {}, global.navigator = {userAgent: "nodejs"} @@ -151,6 +144,6 @@ try { if (typeof(window) == code.OBJECT) { var meta = Volcanos.meta global.lex = lex, global.yac = yac, global.ssh = ssh, global.gdb = gdb global.tcp = tcp, global.nfs = nfs, global.cli = cli, global.log = log global.code = code, global.wiki = wiki, global.chat = chat, global.team = team, global.mall = mall - global.html = html, global.svg = svg + global.http = http, global.html = html, global.icon = icon, global.svg = svg global.shy = shy, global.Volcanos = Volcanos } } catch (e) { console.log(e) }