1
0
mirror of https://shylinux.com/x/volcanos synced 2025-04-25 16:58:06 +08:00
This commit is contained in:
IT 老营长 @云轩领航-创始人 2023-09-01 15:57:00 +08:00
parent ffd0ee57d0
commit 2fbaf9398a
10 changed files with 97 additions and 80 deletions

View File

@ -195,7 +195,7 @@ var chat = {
OUTPUT: "output", SIMPLE: "simple", FLOAT: "float", FULL: "full", CMD: "cmd", OUTPUT: "output", SIMPLE: "simple", FLOAT: "float", FULL: "full", CMD: "cmd",
HEADER: "Header", ACTION: "Action", FOOTER: "Footer", HEADER: "Header", ACTION: "Action", FOOTER: "Footer",
libs: ["base.js", "core.js", "date.js", "misc.js", "page.js", "user.js"].map(function(p) { return "/volcanos/lib/"+p }), libs: ["base.js", "core.js", "date.js", "misc.js", "page.js", "user.js"].map(function(p) { return "/lib/"+p }),
panel_list: [{name: "Header", style: "head"}, {name: "River", style: "left"}, {name: "Action", style: "main"}, {name: "Search", style: "auto"}, {name: "Footer", style: "foot"}], panel_list: [{name: "Header", style: "head"}, {name: "River", style: "left"}, {name: "Action", style: "main"}, {name: "Search", style: "auto"}, {name: "Footer", style: "foot"}],
plugin_list: [ plugin_list: [
"state.js", "state.js",
@ -216,15 +216,15 @@ var chat = {
"local/wiki/word.js", "local/wiki/word.js",
"local/team/plan.js", "local/team/plan.js",
"local/mall/goods.js", "local/mall/goods.js",
].map(function(p) { return "/volcanos/plugin/"+p }).concat([ ].map(function(p) { return "/plugin/"+p }).concat([
"/require/modules/bootstrap-icons/font/bootstrap-icons.min.css", // https://icons.getbootstrap.com/ "/require/modules/bootstrap-icons/font/bootstrap-icons.min.css", // https://icons.getbootstrap.com/
]), ]),
PLUGIN_LOCAL: "/volcanos/plugin/local/", PLUGIN_LOCAL: "/plugin/local/",
PLUGIN_STORY: "/volcanos/plugin/story/", PLUGIN_STORY: "/plugin/story/",
PLUGIN_INPUT: "/volcanos/plugin/input/", PLUGIN_INPUT: "/plugin/input/",
PLUGIN_INPUT_JS: "/volcanos/plugin/input.js", PLUGIN_INPUT_JS: "/plugin/input.js",
PLUGIN_TABLE_JS: "/volcanos/plugin/table.js", PLUGIN_TABLE_JS: "/plugin/table.js",
PLUGIN_STATE_JS: "/volcanos/plugin/state.js", PLUGIN_STATE_JS: "/plugin/state.js",
FRAME_JS: "/volcanos/frame.js", FRAME_JS: "/volcanos/frame.js",
ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap", ONENGINE: "onengine", ONDAEMON: "ondaemon", ONAPPEND: "onappend", ONLAYOUT: "onlayout", ONMOTION: "onmotion", ONKEYMAP: "onkeymap",
@ -308,6 +308,7 @@ var html = {PLUGIN_MARGIN: 10, ACTION_HEIGHT: 32, ACTION_MARGIN: 200,
DESKTOP: "desktop", DIV_DESKTOP: "div.desktop", DIV_EXPAND: "div.expand", DESKTOP: "desktop", DIV_DESKTOP: "div.desktop", DIV_EXPAND: "div.expand",
DIV_ITEM_SELECT: "div.item.select", DIV_ITEM_SELECT: "div.item.select",
DIV_TABS_SELECT: "div.tabs.select", DIV_TABS_SELECT: "div.tabs.select",
DIV_PROFILE: "div.profile", DIV_DISPLAY: "div.display",
} }
var svg = { var svg = {
GROUP: "group", PID: "pid", GRID: "grid", GROUP: "group", PID: "pid", GRID: "grid",

View File

@ -11,7 +11,9 @@ Volcanos(chat.ONENGINE, {_init: function(can, meta, list, cb, target) {
can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, cb: next, target: sub._target}), delete(sub._history), delete(sub._conf.feature) can.core.CallFunc([sub.onaction, chat._INIT], {can: sub, cb: next, target: sub._target}), delete(sub._history), delete(sub._conf.feature)
}, target) }, target)
}, function() { can.onlayout._init(can, target), can.onmotion._init(can, target), can.onkeymap._init(can, target) }, function() { can.onlayout._init(can, target), can.onmotion._init(can, target), can.onkeymap._init(can, target)
can.onengine.signal(can, chat.ONMAIN, can.request()), can.base.isFunc(cb) && cb(can), can.onengine._config(can) can.onengine.signal(can, chat.ONMAIN, can.request()), can.base.isFunc(cb) && cb(can)
return
can.onengine._config(can)
}), can._path = location.href }), can._path = location.href
}, },
_config: function(can) { can.require(["/require/src/conf.js"], function() {}, function(can, name, sub) { _config: function(can) { can.require(["/require/src/conf.js"], function() {}, function(can, name, sub) {
@ -268,6 +270,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) {
field: function(can, type, item, target) { type = type||html.STORY, item = item||{} field: function(can, type, item, target) { type = type||html.STORY, item = item||{}
var name = can.core.Split(item.nick||item.name||"").pop()||""; can.base.isIn(name, "server", "client", "studio") && (name = (item.index||"").split(".").slice(-2).join(".")), name = can.core.Keys(item.space, name) var name = can.core.Split(item.nick||item.name||"").pop()||""; can.base.isIn(name, "server", "client", "studio") && (name = (item.index||"").split(".").slice(-2).join(".")), name = can.core.Keys(item.space, name)
var title = item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name var title = item.help && item.help != name && !can.user.isEnglish(can)? name+"("+can.core.Split(item.help)[0]+")": name
target = can.base.isFunc(target)? target(): target
return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}]) return can.page.Append(can, target||can._output, [{view: [type, html.FIELDSET], list: [{type: html.LEGEND, list: [item.icon && {icon: item.icon}, {text: title}]}, {view: [html.OPTION, html.FORM]}, html.ACTION, html.OUTPUT, html.STATUS]}])
}, },
input: function(can, item, value, target, style) { if ([html.BR, html.HR].indexOf(item.type) > -1) { return can.page.Append(can, target, [item]) } input: function(can, item, value, target, style) { if ([html.BR, html.HR].indexOf(item.type) > -1) { return can.page.Append(can, target, [item]) }

View File

@ -16,12 +16,12 @@ body {
--status-border:var(--box-border); --status-border:var(--box-border);
--panel-bg-color:var(--panel-output-bg-color); --panel-bg-color:var(--panel-output-bg-color);
--panel-fg-color:var(--panel-output-fg-color); --panel-fg-color:var(--panel-output-fg-color);
--panel-output-bg-color: var(--body-bg-color);
--panel-output-fg-color: var(--body-fg-color); --panel-output-fg-color: var(--body-fg-color);
--panel-hover-bg-color:var(--hover-bg-color); --panel-hover-bg-color:var(--hover-bg-color);
--panel-hover-fg-color:var(--hover-fg-color); --panel-hover-fg-color:var(--hover-fg-color);
--plugin-border-color:var(--box-border); --plugin-radius:10px; --plugin-border-color:var(--box-border); --plugin-radius:10px;
--plugin-bg-color:var(--body-bg-color); --plugin-bg-color:var(--legend-bg-color);
--panel-output-bg-color:var(--input-bg-color);
--plugin-fg-color:var(--body-fg-color); --plugin-fg-color:var(--body-fg-color);
--th-bg-color:var(--plugin-bg-color); --th-bg-color:var(--plugin-bg-color);
--td-hover-bg-color:var(--hover-bg-color); --td-hover-bg-color:var(--hover-bg-color);

View File

@ -126,6 +126,11 @@ Volcanos("misc", {
} catch (e) { can.misc.Warn(e), msg.Reply() } } catch (e) { can.misc.Warn(e), msg.Reply() }
}) } }) }
}, },
Resource(can, path) {
if (path.indexOf(nfs.PS) == 0 || path.indexOf(ice.HTTP) == 0) { return path }
return can.base.MergeURL("/require/"+path, ice.POD, can.Conf(web.SPACE)||can.Conf(ice.POD))
},
Template(can, path, file) { return can.base.Path(nfs.SRC_TEMPLATE, can.ConfIndex(), path, file) },
MergePath: function(can, file, path) { return file.indexOf(nfs.PS) == 0 || file.indexOf(ice.HTTP) == 0? file: can.base.Path(path, file) }, MergePath: function(can, file, path) { return file.indexOf(nfs.PS) == 0 || file.indexOf(ice.HTTP) == 0? file: can.base.Path(path, file) },
MergeCache: function(can, hash) { return can.misc.MergeURL(can, {_path: can.base.Path(web.SHARE_CACHE, hash)}, true) }, MergeCache: function(can, hash) { return can.misc.MergeURL(can, {_path: can.base.Path(web.SHARE_CACHE, hash)}, true) },
MergePodCmd: function(can, obj) { MergePodCmd: function(can, obj) {
@ -150,7 +155,8 @@ Volcanos("misc", {
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, web.WEBSITE])) { args[ls[i]] = ls[i+1] } }
return args return args
}, },
SplitPath: function(can, path) { var ls = path.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] } SplitPath: function(can, path) {
var ls = path.split(nfs.PS); if (ls.length == 1) { return [nfs.PWD, ls[0]] }
if (ls[0] == ice.USR) { return [ls.slice(0, 2).join(nfs.PS)+nfs.PS, ls.slice(2).join(nfs.PS)] } if (ls[0] == ice.USR) { return [ls.slice(0, 2).join(nfs.PS)+nfs.PS, ls.slice(2).join(nfs.PS)] }
return [ls.slice(0, 1).join(nfs.PS)+nfs.PS, ls.slice(1).join(nfs.PS)] return [ls.slice(0, 1).join(nfs.PS)+nfs.PS, ls.slice(1).join(nfs.PS)]
}, },

View File

@ -207,6 +207,7 @@ Volcanos("page", {
case html.A: return "<a href='"+arg[1]+"' target='_blank'>"+(arg[2]||arg[1])+"</a>" case html.A: return "<a href='"+arg[1]+"' target='_blank'>"+(arg[2]||arg[1])+"</a>"
case html.IMG: return arg[2]? "<img src='"+arg[1]+"' height="+arg[2]+">": "<img src='"+arg[1]+"'>" case html.IMG: return arg[2]? "<img src='"+arg[1]+"' height="+arg[2]+">": "<img src='"+arg[1]+"'>"
case html.SPAN: case html.SPAN:
arg[2] && typeof arg[2] == code.OBJECT && (arg[2] = arg[2].join(lex.SP))
return arg[2]? "<span class='"+arg[2]+"'>"+arg[1]+"</span>": arg[1] return arg[2]? "<span class='"+arg[2]+"'>"+arg[1]+"</span>": arg[1]
default: /* type inner arg... */ default: /* type inner arg... */
var list = ["<"+type]; for (var i = 2; i < arg.length; i += 2) { list.push(lex.SP+arg[i]+mdb.EQ+arg[i+1]) } var list = ["<"+type]; for (var i = 2; i < arg.length; i += 2) { list.push(lex.SP+arg[i]+mdb.EQ+arg[i+1]) }

View File

@ -1,41 +1,42 @@
fieldset.can.tinymce div.tox-tinymce, fieldset.tinymce div.tox-tinymce,
fieldset.can.tinymce div.tox:not(.tox-tinymce-inline) .tox-editor-header { fieldset.tinymce div.tox:not(.tox-tinymce-inline) .tox-editor-header {
border:none; border:none;
} }
fieldset.can.tinymce div.tox-promotion { display:none; } fieldset.tinymce div.tox-promotion { display:none; }
fieldset.can.tinymce div.tox div.tox-sidebar-wrap div.tox-edit-area iframe { fieldset.tinymce div.tox div.tox-sidebar-wrap div.tox-edit-area iframe {
background-color:var(--output-bg-color); background-color:var(--output-bg-color);
} }
div.tox .tox-collection--list .tox-collection__item--active, div.tox .tox-collection--list .tox-collection__item--active,
div.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled), div.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled),
fieldset.can.tinymce div.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active), div.tox .tox-collection--list .tox-collection__item--enabled,
fieldset.can.tinymce div.tox .tox-mbtn:focus:not(:disabled), fieldset.tinymce div.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active),
fieldset.can.tinymce div.tox .tox-mbtn--active, fieldset.tinymce div.tox .tox-mbtn:focus:not(:disabled),
fieldset.can.tinymce div.tox .tox-tbtn:hover { fieldset.tinymce div.tox .tox-mbtn--active,
fieldset.tinymce div.tox .tox-tbtn:hover {
background-color:var(--hover-bg-color); background-color:var(--hover-bg-color);
color:var(--hover-fg-color); color:var(--hover-fg-color);
} }
div.tox .tox-menu, div.tox .tox-menu,
div.tox .tox-collection__item, div.tox .tox-collection__item,
fieldset.can.tinymce div.tox .tox-editor-header, fieldset.tinymce div.tox .tox-editor-header,
fieldset.can.tinymce div.tox .tox-menubar, fieldset.tinymce div.tox .tox-mbtn,
fieldset.can.tinymce div.tox .tox-toolbar, fieldset.tinymce div.tox .tox-menubar,
fieldset.can.tinymce div.tox .tox-toolbar-overlord, fieldset.tinymce div.tox .tox-toolbar,
fieldset.can.tinymce div.tox .tox-toolbar__overflow, fieldset.tinymce div.tox .tox-toolbar-overlord,
fieldset.can.tinymce div.tox .tox-toolbar__primary, fieldset.tinymce div.tox .tox-toolbar__overflow,
fieldset.can.tinymce div.tox .tox-statusbar, fieldset.tinymce div.tox .tox-toolbar__primary,
fieldset.can.tinymce div.tox .tox-statusbar__path-item, fieldset.tinymce div.tox .tox-statusbar,
fieldset.can.tinymce div.tox .tox-statusbar__wordcount, fieldset.tinymce div.tox .tox-statusbar__path-item,
fieldset.can.tinymce div.tox .tox-statusbar a, fieldset.tinymce div.tox .tox-statusbar__wordcount,
fieldset.can.tinymce div.tox :not(svg):not(rect) { fieldset.tinymce div.tox .tox-statusbar a {
background-color:var(--plugin-bg-color); background-color:var(--plugin-bg-color);
color:var(--plugin-fg-color); color:var(--plugin-fg-color);
} }
fieldset.can.tinymce div.tox .tox-tbtn svg, fieldset.tinymce div.tox .tox-tbtn svg,
fieldset.can.tinymce div.tox .tox-tbtn:disabled svg, fieldset.tinymce div.tox .tox-tbtn:disabled svg,
fieldset.can.tinymce div.tox .tox-tbtn:disabled:hover svg, fieldset.tinymce div.tox .tox-tbtn:disabled:hover svg,
fieldset.can.tinymce div.tox .tox-tbtn--disabled svg, fieldset.tinymce div.tox .tox-tbtn--disabled svg,
fieldset.can.tinymce div.tox .tox-tbtn--disabled:hover svg, fieldset.tinymce div.tox .tox-tbtn--disabled:hover svg,
fieldset.can.tinymce div.tox .tox-statusbar__branding svg { fieldset.tinymce div.tox .tox-statusbar__branding svg {
fill:var(--plugin-fg-color); fill:var(--plugin-fg-color);
} }

View File

@ -1,20 +1,28 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg, cb) { can.page.requireModules(can, can.Conf("modules"), function() { _init: function(can, msg, cb) {
var target = can.page.Appends(can, can._output, [{type: html.TEXTAREA}])._target can.require(["/require/modules/tinymce/tinymce.min.js", "/plugin/local/code/vimer.js"], function(can) { can.onimport._last_init(can, msg, function(msg) {
can.page.style(can, can._output, html.MAX_HEIGHT, "") can.onappend.style(can, "tinymce"), cb && cb(msg)
tinymce.init({target: target, height: can.ConfHeight(), // menubar: false, }) })
},
content: function(can, text) { return can.ui.editor.setContent(text) },
layout: function(can) { can.page.style(can, can.ui.content, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()) },
}, [""])
Volcanos(chat.ONSYNTAX, {
_split: function(can, msg, target) {
var _target = can.page.Appends(can, target, [{type: html.TEXTAREA}])._target
tinymce.init({target: _target, height: can.ConfHeight(), // menubar: false,
save_onsavecallback: function () { can.onaction.save({}, can, nfs.SAVE) },
content_style: "body#tinymce { background:transparent; color:silver; }", content_style: "body#tinymce { background:transparent; color:silver; }",
toolbar: [ toolbar: [[
[ "save code undo redo cut copy paste",
"code undo redo cut copy paste",
"backcolor forecolor bold italic underline strikethrough subscript superscript", "backcolor forecolor bold italic underline strikethrough subscript superscript",
"alignleft aligncenter alignright alignjustify outdent indent", "alignleft aligncenter alignright alignjustify outdent indent",
"bullist numlist table image media link charmap", "bullist numlist table image media link charmap",
"blockquote removeformat hr pagebreak anchor insertdatetime", "blockquote removeformat hr pagebreak anchor insertdatetime",
"fullscreen wordcount preview print help", "fullscreen wordcount preview print help",
].join("|"), ].join("|")],
],
plugins: [ plugins: [
"save",
"code", "code",
"lists", "lists",
"advlist", "advlist",
@ -32,8 +40,7 @@ Volcanos(chat.ONIMPORT, {
"preview", "preview",
"help", "help",
"save", "autosave",
// "autosave",
"codesample", "codesample",
"directionality", "directionality",
"emoticons", "emoticons",
@ -45,17 +52,16 @@ Volcanos(chat.ONIMPORT, {
"visualblocks", "visualblocks",
"visualchars", "visualchars",
].join(" ") ].join(" ")
}).then(function(list) { can.ui.editor = list[0], can.ui.editor.setContent(msg.Result()), cb && cb(msg) }) }).then(function(list) { can.ui.editor = list[0], can.ui.editor.setContent(msg.Result()) }).catch(function(err) { can.misc.Warn(err) })
}) }, },
content: function(can, text) { return can.ui.editor.setContent(text) }, })
}, [""])
Volcanos(chat.ONEXPORT, { Volcanos(chat.ONEXPORT, {
content: function(can) { return can.ui.editor.getContent() }, content: function(can) { return can.ui.editor.getContent() },
}) })
Volcanos(chat.ONPLUGIN, { Volcanos(chat.ONPLUGIN, {
tinymce: shy("富文本", { tinymce: shy("富文本", {
save: shy(function(can, msg) { can.user.toast(can, msg.Option(nfs.CONTENT)) }), save: shy(function(can, msg) { can.user.toast(can, msg.Option(nfs.CONTENT)) }),
}, [nfs.PATH, ice.LIST, nfs.SAVE], function(can, msg, meta) { }, [nfs.PATH, nfs.FILE, nfs.LINE, ice.LIST, nfs.SAVE], function(can, msg, meta) {
msg.Display(meta._path) msg.Display(meta._path)
}), }),
}) })

View File

@ -1,31 +1,27 @@
Volcanos(chat.ONIMPORT, { Volcanos(chat.ONIMPORT, {
_init: function(can, msg, cb) { var toast = can.user.toastProcess(can) _init: function(can, msg, cb) {
can.page.requireModules(can, ["monaco-editor/min/vs/loader.js"], function() { can.require(["/require/modules/monaco-editor/min/vs/loader.js"], function() {
require.config({paths: {vs: "/require/modules/monaco-editor/min/vs"}}) require.config({paths: {vs: "/require/modules/monaco-editor/min/vs"}})
require(["vs/editor/editor.main"], function () { require(["vs/editor/editor.main"], function () {
can.require(["/plugin/local/code/vimer.js"], function(can) { can.require(["/plugin/local/code/vimer.js"], function(can) { can.onimport._last_init(can, msg, function(msg) {
can.onimport._last_init(can, msg, function(msg) { can.onappend.style(can, "monaco"), cb && cb(msg)
can.onappend.style(can, "monaco") }) })
cb && cb(msg), toast.close()
})
})
}) })
}) })
}, },
_theme: function(can) { _theme: function(can) { if (can.base.isIn(can.getHeaderTheme(), html.LIGHT, html.WHITE)) { monaco.editor.setTheme("vs") } else { monaco.editor.setTheme("vs-dark") } },
if (can.base.isIn(can.getHeaderTheme(), html.LIGHT, html.WHITE)) { layout: function(can) { can.page.style(can, can.ui.content, html.HEIGHT, can.ConfHeight(), html.WIDTH, can.ConfWidth()), can.ui.editor && can.ui.editor.layout() },
monaco.editor.setTheme("vs") content: function(can, text) { return can.ui.editor.setValue(text) },
} else {
monaco.editor.setTheme("vs-dark")
}
},
}, [""]) }, [""])
Volcanos(chat.ONSYNTAX, { Volcanos(chat.ONSYNTAX, {
_split: function(can, msg, target) { can.onimport._theme(can) _split: function(can, msg, target) { can.onimport._theme(can), can.onengine.listen(can, chat.ONTHEMECHANGE, function() { can.onimport._theme(can) })
can.onengine.listen(can, chat.ONTHEMECHANGE, function() { can.onimport._theme(can) }) can.ui.editor = monaco.editor.create(target, {value: msg.Result(), language: "javascript", automaticLayout: true, resize: true})
can.ui.editor = monaco.editor.create(target, {value: msg.Result(), language: "javascript", automaticLayout: true}) can.ui.editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function () { can.onaction.save({}, can, nfs.SAVE) })
}, },
}) })
Volcanos(chat.ONEXPORT, {
content: function(can) { return can.ui.editor.getValue() },
})
Volcanos(chat.ONPLUGIN, { Volcanos(chat.ONPLUGIN, {
monaco: shy("编辑器", { monaco: shy("编辑器", {
save: shy(function(can, msg) { can.user.toast(can, msg.Option(nfs.CONTENT)) }), save: shy(function(can, msg) { can.user.toast(can, msg.Option(nfs.CONTENT)) }),

View File

@ -113,7 +113,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { can.onmotion.clear(
}}, "", target) }}, "", target)
}, },
item: function(can, item, cb, cbs, target) { target = target||(can.ui && can.ui.project? can.ui.project: can._output) item: function(can, item, cb, cbs, target) { target = target||(can.ui && can.ui.project? can.ui.project: can._output)
var ui = can.page.Append(can, target, [{view: html.ITEM, list: [{icon: item.icon}, {text: item.nick||item.name||item.zone}], title: item.title, onclick: function(event) { var ui = can.page.Append(can, target, [{view: html.ITEM, list: [item.icon && {icon: item.icon}, {text: item.nick||item.name||item.zone}], title: item.title, onclick: function(event) {
can.onmotion.select(can, target, html.DIV_ITEM, event.currentTarget) can.onmotion.select(can, target, html.DIV_ITEM, event.currentTarget)
cb(event, event.currentTarget, event.currentTarget._list && can.onmotion.toggle(can, event.currentTarget._list)) cb(event, event.currentTarget, event.currentTarget._list && can.onmotion.toggle(can, event.currentTarget._list))
}, oncontextmenu: function(event) { }, oncontextmenu: function(event) {
@ -230,6 +230,7 @@ Volcanos(chat.ONKEYMAP, {
Enter: shy("执行操作", function(event, can) { can.onaction.enter(event, can) }), Enter: shy("执行操作", function(event, can) { can.onaction.enter(event, can) }),
" ": shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }), " ": shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }),
f: shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }), f: shy("搜索项目", function(event, can) { can.ui.filter && (can.ui.filter.focus(), can.onkeymap.prevent(event)) }),
a: shy("展示项目", function(event, can) { can.ui && can.ui.project && (can.onmotion.toggle(can, can.ui.project), can.onimport.layout(can)) }),
v: shy("展示预览", function(event, can) { can.ui && can.ui.profile && (can.onmotion.toggle(can, can.ui.profile), can.onimport.layout(can)) }), v: shy("展示预览", function(event, can) { can.ui && can.ui.profile && (can.onmotion.toggle(can, can.ui.profile), can.onimport.layout(can)) }),
r: shy("展示输出", function(event, can) { can.ui && can.ui.display && (can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can)) }), r: shy("展示输出", function(event, can) { can.ui && can.ui.display && (can.onmotion.toggle(can, can.ui.display), can.onimport.layout(can)) }),
p: shy("添加插件", function(event, can) { can.sup.onaction["添加工具"](event, can.sup) }), p: shy("添加插件", function(event, can) { can.sup.onaction["添加工具"](event, can.sup) }),

View File

@ -12,7 +12,7 @@ var Volcanos = shy({
var Config = name; name = Config.name||ice.CAN, _can_name = "" var Config = name; name = Config.name||ice.CAN, _can_name = ""
meta.iceberg = Config.iceberg||meta.iceberg, meta.volcano = Config.volcano||meta.volcano 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) 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||["/volcanos/panel/"+p.name+nfs._JS, "/volcanos/panel/"+p.name+nfs._CSS])) }), libs = libs.concat(Config.plugins||chat.plugin_list) 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) { cb = can||function(can) {
can.require([can.frame], function() { can.require([can.frame], function() {
can.onengine._init(can, can.Conf(Config), panels, Config._init||meta._init, can._target) can.onengine._init(can, can.Conf(Config), panels, Config._init||meta._init, can._target)
@ -39,11 +39,13 @@ var Volcanos = shy({
if (libs[0][0] != nfs.PS && libs[0].indexOf(web.HTTP) != 0) { libs[0] = can._path.slice(0, can._path.lastIndexOf(ice.PS)+1)+libs[0] } if (libs[0][0] != nfs.PS && libs[0].indexOf(web.HTTP) != 0) { libs[0] = can._path.slice(0, can._path.lastIndexOf(ice.PS)+1)+libs[0] }
var name = (libs[0].indexOf(web.HTTP) == 0 || libs[0].indexOf("?pod=") > -1? libs[0]: libs[0].split(ice.QS)[0]).toLowerCase() var name = (libs[0].indexOf(web.HTTP) == 0 || libs[0].indexOf("?pod=") > -1? libs[0]: libs[0].split(ice.QS)[0]).toLowerCase()
function next() { can._load(name, cbs), can.require(libs.slice(1), cb, cbs) } function next() { can._load(name, cbs), can.require(libs.slice(1), cb, cbs) }
if (meta.cache[name] || name == "") { return next() } if (name.indexOf("/lib/") == 0) { name = "/volcanos"+name }
if (name.indexOf("/panel/") == 0) { name = "/volcanos"+name }
if (name.indexOf("/plugin/") == 0) { name = "/volcanos"+name } if (name.indexOf("/plugin/") == 0) { name = "/volcanos"+name }
if (name.indexOf("/volcanos/") == 0 && meta.volcano) { name = meta.volcano+name } if (name.indexOf("/volcanos/") == 0 && meta.volcano) { name = meta.volcano+name }
if (name.indexOf("/require/") == 0 && meta.iceberg) { name = meta.iceberg+name } if (name.indexOf("/require/") == 0 && meta.iceberg) { name = meta.iceberg+name }
meta._load(name, next) // meta.cache[name] || name == ""? next(): meta._load(name, next)
meta.cache[name]? next(): meta._load(name, next)
}, },
requestPodCmd: function(event) { return can.request(event, {space: can.Conf(web.SPACE), index: can.Conf(ctx.INDEX)}) }, requestPodCmd: function(event) { return can.request(event, {space: can.Conf(web.SPACE), index: can.Conf(ctx.INDEX)}) },
request: function(event) { event = event||{}, event = event._event||event request: function(event) { event = event||{}, event = event._event||event