| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496 | ///import core///commands 右键菜单///commandsName  ContextMenu///commandsTitle  右键菜单/** * 右键菜单 * @function * @name baidu.editor.plugins.contextmenu * @author zhanyi */UE.plugins['contextmenu'] = function () {    var me = this;    me.setOpt('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());                }            }        }    });};
 |