diff --git a/frame.js b/frame.js index bb77b97a..59be7dbd 100644 --- a/frame.js +++ b/frame.js @@ -263,7 +263,7 @@ Volcanos(chat.ONAPPEND, {_init: function(can, meta, list, cb, target, field) { full: !can.isCmdMode() && "切换全屏", open: !can.isCmdMode() && "打开链接", // qrcode: !can.isCmdMode() && "生成链接", - chat: "发送聊天", + chat: can.user.isTechOrRoot(can) && "发送聊天", // chat: can.misc.Search(can, ice.MSG_DEBUG) == ice.TRUE && "发送聊天", help: can.page.ClassList.has(can, can._fields||can._target, html.PLUGIN) && can.Conf("_help") && can.Conf("_help") != "" && "查看文档", // vimer: can.page.ClassList.has(can, can._fields||can._target, html.PLUGIN) && can.Conf("_fileline") && can.misc.Search(can, ice.MSG_DEBUG) == ice.TRUE && "查看源码", diff --git a/lib/user.js b/lib/user.js index 72ec5e6c..6164d9d1 100644 --- a/lib/user.js +++ b/lib/user.js @@ -29,6 +29,7 @@ Volcanos("user", { isExtension: location && location.protocol && location.protocol == "chrome-extension:", isLocalFile: location && location.protocol && location.protocol == "file:", isLandscape: function() { return window.innerWidth > window.innerHeight }, + isTechOrRoot: function(can) { return can.base.isIn(can.user.info.userrole, aaa.TECH, aaa.ROOT) }, mod: { isPod: location && location.pathname && (location.pathname.indexOf(web.CHAT_POD) == 0 || location.pathname.indexOf("/x/") == 0 || location.pathname.indexOf("/s/") == 0), isCmd: location && location.pathname && (location.pathname.indexOf(web.CHAT_POD) == 0 && location.pathname.indexOf("/cmd/") > 0 diff --git a/panel/action.js b/panel/action.js index 103875a9..6dad26a2 100644 --- a/panel/action.js +++ b/panel/action.js @@ -28,6 +28,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg) { var river = can.Conf(chat.R }, oncontextmenu: sub._legend.onclick}]; sub._header_tabs = can.page.Append(can, can._header_tabs, tabs)._target, sub._tabs = can.page.Append(can, can._action, tabs)._target }, _menu: function(can, msg) { if (can.user.isMobile) { return } + if (!can.user.isTechOrRoot(can)) { return } var target = can.setHeaderMenu(can.base.Obj(can.Conf(chat.MENUS)||msg.Option(chat.MENUS), can.onaction._menus), function(event, button, list) { list && can.core.CallFunc([can.onaction, list[0]], [can, button]) }) can.onmotion.hidden(can, can._header_tabs = can.page.Append(can, target, [html.TABS])._target) }, diff --git a/panel/header.js b/panel/header.js index 6c142182..f800495d 100644 --- a/panel/header.js +++ b/panel/header.js @@ -24,6 +24,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { _avatar: function(can, msg) { can.user.isExtension || can.user.isLocalFile || can.page.Modify(can, "div.state.avatar>img", {src: can.onexport.avatar(can)}) }, _background: function(can, msg) { if (can.user.isExtension || can.user.isLocalFile) { return } can.onlayout.background(can, can.onexport.background(can)) }, _search: function(can, msg, target) { + if (!can.user.isTechOrRoot(can)) { return } can._search = can.onappend.input(can, {type: html.TEXT, _className: "args trans", icon: icon.SEARCH, name: mdb.SEARCH, value: can.misc.Search(can, "_search"), onkeydown: function(event) { can.onkeymap.input(event, can) event.key == code.ENTER && can.onengine.signal(can, chat.ONOPENSEARCH, can.request(event, {type: mdb.FOREACH, word: event.target.value||""})) }}, "", target, [chat.TITLE]) diff --git a/plugin/table.js b/plugin/table.js index b697f058..023b1173 100644 --- a/plugin/table.js +++ b/plugin/table.js @@ -7,6 +7,7 @@ Volcanos(chat.ONIMPORT, {_init: function(can, msg, target) { } else { can.onappend.table(can, msg, null, target), can.onappend.board(can, msg, target), can.onmotion.story.auto(can, target) } + if (msg.Option("sess.online") == ice.TRUE) { can.onimport._online(can) } }, card: function(can, msg, target) { target = target||can.ui.content||can._output var list = msg.Table(function(value) { value.icon = value.icons||value.icon||value.image