304 Star 1.5K Fork 291

GVPNotadd/Neditor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
contextmenu.js 14.09 KB
一键复制 编辑 原始数据 按行查看 历史
Phinome 提交于 8年前 . prettier format file
///import core
///commands 右键菜单
///commandsName ContextMenu
///commandsTitle 右键菜单
/**
* 右键菜单
* @function
* @name baidu.editor.plugins.contextmenu
* @author zhanyi
*/
UE.plugins["contextmenu"] = function() {
var me = this;
me.setOpt("enableContextMenu", me.getOpt("enableContextMenu") || true);
if (me.getOpt("enableContextMenu") === false) {
return;
}
var lang = me.getLang("contextMenu"),
menu,
items = me.options.contextMenu || [
{ label: lang["selectall"], cmdName: "selectall" },
{
label: lang.cleardoc,
cmdName: "cleardoc",
exec: function() {
if (confirm(lang.confirmclear)) {
this.execCommand("cleardoc");
}
}
},
"-",
{
label: lang.unlink,
cmdName: "unlink"
},
"-",
{
group: lang.paragraph,
icon: "justifyjustify",
subMenu: [
{
label: lang.justifyleft,
cmdName: "justify",
value: "left"
},
{
label: lang.justifyright,
cmdName: "justify",
value: "right"
},
{
label: lang.justifycenter,
cmdName: "justify",
value: "center"
},
{
label: lang.justifyjustify,
cmdName: "justify",
value: "justify"
}
]
},
"-",
{
group: lang.table,
icon: "table",
subMenu: [
{
label: lang.inserttable,
cmdName: "inserttable"
},
{
label: lang.deletetable,
cmdName: "deletetable"
},
"-",
{
label: lang.deleterow,
cmdName: "deleterow"
},
{
label: lang.deletecol,
cmdName: "deletecol"
},
{
label: lang.insertcol,
cmdName: "insertcol"
},
{
label: lang.insertcolnext,
cmdName: "insertcolnext"
},
{
label: lang.insertrow,
cmdName: "insertrow"
},
{
label: lang.insertrownext,
cmdName: "insertrownext"
},
"-",
{
label: lang.insertcaption,
cmdName: "insertcaption"
},
{
label: lang.deletecaption,
cmdName: "deletecaption"
},
{
label: lang.inserttitle,
cmdName: "inserttitle"
},
{
label: lang.deletetitle,
cmdName: "deletetitle"
},
{
label: lang.inserttitlecol,
cmdName: "inserttitlecol"
},
{
label: lang.deletetitlecol,
cmdName: "deletetitlecol"
},
"-",
{
label: lang.mergecells,
cmdName: "mergecells"
},
{
label: lang.mergeright,
cmdName: "mergeright"
},
{
label: lang.mergedown,
cmdName: "mergedown"
},
"-",
{
label: lang.splittorows,
cmdName: "splittorows"
},
{
label: lang.splittocols,
cmdName: "splittocols"
},
{
label: lang.splittocells,
cmdName: "splittocells"
},
"-",
{
label: lang.averageDiseRow,
cmdName: "averagedistributerow"
},
{
label: lang.averageDisCol,
cmdName: "averagedistributecol"
},
"-",
{
label: lang.edittd,
cmdName: "edittd",
exec: function() {
if (UE.ui["edittd"]) {
new UE.ui["edittd"](this);
}
this.getDialog("edittd").open();
}
},
{
label: lang.edittable,
cmdName: "edittable",
exec: function() {
if (UE.ui["edittable"]) {
new UE.ui["edittable"](this);
}
this.getDialog("edittable").open();
}
},
{
label: lang.setbordervisible,
cmdName: "setbordervisible"
}
]
},
{
group: lang.tablesort,
icon: "tablesort",
subMenu: [
{
label: lang.enablesort,
cmdName: "enablesort"
},
{
label: lang.disablesort,
cmdName: "disablesort"
},
"-",
{
label: lang.reversecurrent,
cmdName: "sorttable",
value: "reversecurrent"
},
{
label: lang.orderbyasc,
cmdName: "sorttable",
value: "orderbyasc"
},
{
label: lang.reversebyasc,
cmdName: "sorttable",
value: "reversebyasc"
},
{
label: lang.orderbynum,
cmdName: "sorttable",
value: "orderbynum"
},
{
label: lang.reversebynum,
cmdName: "sorttable",
value: "reversebynum"
}
]
},
{
group: lang.borderbk,
icon: "borderBack",
subMenu: [
{
label: lang.setcolor,
cmdName: "interlacetable",
exec: function() {
this.execCommand("interlacetable");
}
},
{
label: lang.unsetcolor,
cmdName: "uninterlacetable",
exec: function() {
this.execCommand("uninterlacetable");
}
},
{
label: lang.setbackground,
cmdName: "settablebackground",
exec: function() {
this.execCommand("settablebackground", {
repeat: true,
colorList: ["#bbb", "#ccc"]
});
}
},
{
label: lang.unsetbackground,
cmdName: "cleartablebackground",
exec: function() {
this.execCommand("cleartablebackground");
}
},
{
label: lang.redandblue,
cmdName: "settablebackground",
exec: function() {
this.execCommand("settablebackground", {
repeat: true,
colorList: ["red", "blue"]
});
}
},
{
label: lang.threecolorgradient,
cmdName: "settablebackground",
exec: function() {
this.execCommand("settablebackground", {
repeat: true,
colorList: ["#aaa", "#bbb", "#ccc"]
});
}
}
]
},
{
group: lang.aligntd,
icon: "aligntd",
subMenu: [
{
cmdName: "cellalignment",
value: { align: "left", vAlign: "top" }
},
{
cmdName: "cellalignment",
value: { align: "center", vAlign: "top" }
},
{
cmdName: "cellalignment",
value: { align: "right", vAlign: "top" }
},
{
cmdName: "cellalignment",
value: { align: "left", vAlign: "middle" }
},
{
cmdName: "cellalignment",
value: { align: "center", vAlign: "middle" }
},
{
cmdName: "cellalignment",
value: { align: "right", vAlign: "middle" }
},
{
cmdName: "cellalignment",
value: { align: "left", vAlign: "bottom" }
},
{
cmdName: "cellalignment",
value: { align: "center", vAlign: "bottom" }
},
{
cmdName: "cellalignment",
value: { align: "right", vAlign: "bottom" }
}
]
},
{
group: lang.aligntable,
icon: "aligntable",
subMenu: [
{
cmdName: "tablealignment",
className: "left",
label: lang.tableleft,
value: "left"
},
{
cmdName: "tablealignment",
className: "center",
label: lang.tablecenter,
value: "center"
},
{
cmdName: "tablealignment",
className: "right",
label: lang.tableright,
value: "right"
}
]
},
"-",
{
label: lang.insertparagraphbefore,
cmdName: "insertparagraph",
value: true
},
{
label: lang.insertparagraphafter,
cmdName: "insertparagraph"
},
{
label: lang["copy"],
cmdName: "copy"
},
{
label: lang["paste"],
cmdName: "paste"
}
];
if (!items.length) {
return;
}
var uiUtils = UE.ui.uiUtils;
me.addListener("contextmenu", function(type, evt) {
var offset = uiUtils.getViewportOffsetByEvent(evt);
me.fireEvent("beforeselectionchange");
if (menu) {
menu.destroy();
}
for (var i = 0, ti, contextItems = []; (ti = items[i]); i++) {
var last;
(function(item) {
if (item == "-") {
if ((last = contextItems[contextItems.length - 1]) && last !== "-") {
contextItems.push("-");
}
} else if (item.hasOwnProperty("group")) {
for (var j = 0, cj, subMenu = []; (cj = item.subMenu[j]); j++) {
(function(subItem) {
if (subItem == "-") {
if ((last = subMenu[subMenu.length - 1]) && last !== "-") {
subMenu.push("-");
} else {
subMenu.splice(subMenu.length - 1);
}
} else {
if (
(me.commands[subItem.cmdName] ||
UE.commands[subItem.cmdName] ||
subItem.query) &&
(subItem.query
? subItem.query()
: me.queryCommandState(subItem.cmdName)) > -1
) {
subMenu.push({
label:
subItem.label ||
me.getLang(
"contextMenu." +
subItem.cmdName +
(subItem.value || "")
) ||
"",
className:
"edui-for-" +
subItem.cmdName +
(subItem.className
? " edui-for-" +
subItem.cmdName +
"-" +
subItem.className
: ""),
onclick: subItem.exec
? function() {
subItem.exec.call(me);
}
: function() {
me.execCommand(subItem.cmdName, subItem.value);
}
});
}
}
})(cj);
}
if (subMenu.length) {
function getLabel() {
switch (item.icon) {
case "table":
return me.getLang("contextMenu.table");
case "justifyjustify":
return me.getLang("contextMenu.paragraph");
case "aligntd":
return me.getLang("contextMenu.aligntd");
case "aligntable":
return me.getLang("contextMenu.aligntable");
case "tablesort":
return lang.tablesort;
case "borderBack":
return lang.borderbk;
default:
return "";
}
}
contextItems.push({
//todo 修正成自动获取方式
label: getLabel(),
className: "edui-for-" + item.icon,
subMenu: {
items: subMenu,
editor: me
}
});
}
} else {
//有可能commmand没有加载右键不能出来,或者没有command也想能展示出来添加query方法
if (
(me.commands[item.cmdName] ||
UE.commands[item.cmdName] ||
item.query) &&
(item.query
? item.query.call(me)
: me.queryCommandState(item.cmdName)) > -1
) {
contextItems.push({
label: item.label || me.getLang("contextMenu." + item.cmdName),
className:
"edui-for-" +
(item.icon ? item.icon : item.cmdName + (item.value || "")),
onclick: item.exec
? function() {
item.exec.call(me);
}
: function() {
me.execCommand(item.cmdName, item.value);
}
});
}
}
})(ti);
}
if (contextItems[contextItems.length - 1] == "-") {
contextItems.pop();
}
menu = new UE.ui.Menu({
items: contextItems,
className: "edui-contextmenu",
editor: me
});
menu.render();
menu.showAt(offset);
me.fireEvent("aftershowcontextmenu", menu);
domUtils.preventDefault(evt);
if (browser.ie) {
var ieRange;
try {
ieRange = me.selection.getNative().createRange();
} catch (e) {
return;
}
if (ieRange.item) {
var range = new dom.Range(me.document);
range.selectNode(ieRange.item(0)).select(true, true);
}
}
});
// 添加复制的flash按钮
me.addListener("aftershowcontextmenu", function(type, menu) {
if (me.zeroclipboard) {
var items = menu.items;
for (var key in items) {
if (items[key].className == "edui-for-copy") {
me.zeroclipboard.clip(items[key].getDom());
}
}
}
});
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/notadd/neditor.git
git@gitee.com:notadd/neditor.git
notadd
neditor
Neditor
master

搜索帮助