123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534 |
- ///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());
- }
- }
- }
- });
- };
|