123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- ///import core
- ///commands 右键菜单
- ///commandsName ContextMenu
- ///commandsTitle 右键菜单
- /**
- * 右键菜单
- * @function
- * @name baidu.editor.plugins.contextmenu
- * @author zhanyi
- */
- UE.plugins['contextmenu'] = function () {
- var me = this,
- lang = me.getLang( "contextMenu" ),
- menu,
- items = me.options.contextMenu || [
- {label:lang['selectall'], cmdName:'selectall'},
- {
- label:lang.deletecode,
- cmdName:'highlightcode',
- icon:'deletehighlightcode'
- },
- {
- label:lang.cleardoc,
- cmdName:'cleardoc',
- exec:function () {
- if ( confirm( lang.confirmclear ) ) {
- this.execCommand( 'cleardoc' );
- }
- }
- },
- {
- label:lang.clearcell,
- cmdName:'clearcell',
- exec:function () {
- this.execCommand( 'clearcell' );
- }
- },
- '-',
- {
- 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.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();
- }
- }
- ]
- },
- {
- group:lang.aligntable,
- icon:'aligntable',
- subMenu:[
- {
- cmdName:'tablealignment',
- label:lang.tableleft,
- value:['float','left']
- },
- {
- cmdName:'tablealignment',
- label:lang.tablecenter,
- value:['margin','0 auto']
- },
- {
- cmdName:'tablealignment',
- label:lang.tableright,
- value:['float','right']
- }
- ]
- },
- '-',
- {
- label:lang.insertparagraphbefore,
- cmdName:'insertparagraph',
- value:true
- },
- {
- label:lang.insertparagraphafter,
- cmdName:'insertparagraph'
- },
- {
- label:lang['copy'],
- cmdName:'copy',
- exec:function () {
- alert( lang.copymsg );
- },
- query:function () {
- return 0;
- }
- },
- {
- label:lang['paste'],
- cmdName:'paste',
- exec:function () {
- alert( lang.pastemsg );
- },
- query:function () {
- return 0;
- }
- },{
- label:lang['highlightcode'],
- cmdName:'highlightcode',
- exec:function () {
- if ( UE.ui['highlightcode'] ) {
- new UE.ui['highlightcode']( this );
- }
- this.ui._dialogs['highlightcodeDialog'].open();
- }
- }
- ];
- 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,
- 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");
- 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 ) {
- //highlight todo
- if ( item.cmdName == 'highlightcode' ) {
- if(me.queryCommandState( item.cmdName ) == 1 && item.icon != 'deletehighlightcode'){
- return;
- }
- if(me.queryCommandState( item.cmdName ) != 1 && item.icon == 'deletehighlightcode'){
- return;
- }
- }
- 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,
- editor:me
- } );
- menu.render();
- menu.showAt( offset );
- 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 );
- }
- }
- } );
- };
|