1 /* 2 Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved. 3 For licensing, see LICENSE.html or http://ckeditor.com/license 4 */ 5 6 CKEDITOR.plugins.add( 'table', 7 { 8 init : function( editor ) 9 { 10 var table = CKEDITOR.plugins.table, 11 lang = editor.lang.table; 12 13 editor.addCommand( 'table', new CKEDITOR.dialogCommand( 'table' ) ); 14 editor.addCommand( 'tableProperties', new CKEDITOR.dialogCommand( 'tableProperties' ) ); 15 editor.ui.addButton( 'Table', 16 { 17 label : lang.toolbar, 18 command : 'table' 19 }); 20 21 CKEDITOR.dialog.add( 'table', this.path + 'dialogs/table.js' ); 22 CKEDITOR.dialog.add( 'tableProperties', this.path + 'dialogs/table.js' ); 23 24 // If the "menu" plugin is loaded, register the menu items. 25 if ( editor.addMenuItems ) 26 { 27 editor.addMenuItems( 28 { 29 table : 30 { 31 label : lang.menu, 32 command : 'tableProperties', 33 group : 'table', 34 order : 5 35 }, 36 37 // tabledelete : 38 // { 39 // label : lang.deleteTable, 40 // command : 'tableDelete', 41 // group : 'table', 42 // order : 1 43 // }, 44 45 tablecell : 46 { 47 label : lang.cell.menu, 48 group : 'tablecell', 49 order : 1, 50 getItems : function() 51 { 52 return { 53 tablecell_insertBefore : CKEDITOR.TRISTATE_OFF, 54 tablecell_insertAfter : CKEDITOR.TRISTATE_OFF, 55 tablecell_delete : CKEDITOR.TRISTATE_OFF 56 }; 57 } 58 }, 59 60 tablecell_insertBefore : 61 { 62 label : lang.cell.insertBefore, 63 group : 'tablecell', 64 order : 5 65 }, 66 67 tablecell_insertAfter : 68 { 69 label : lang.cell.insertAfter, 70 group : 'tablecell', 71 order : 10 72 }, 73 74 tablecell_delete : 75 { 76 label : lang.cell.deleteCell, 77 group : 'tablecell', 78 order : 15 79 }, 80 81 tablerow : 82 { 83 label : lang.row.menu, 84 group : 'tablerow', 85 order : 1, 86 getItems : function() 87 { 88 return { 89 tablerow_insertBefore : CKEDITOR.TRISTATE_OFF, 90 tablerow_insertAfter : CKEDITOR.TRISTATE_OFF, 91 tablerow_delete : CKEDITOR.TRISTATE_OFF 92 }; 93 } 94 }, 95 96 tablerow_insertBefore : 97 { 98 label : lang.row.insertBefore, 99 group : 'tablerow', 100 order : 5 101 }, 102 103 tablerow_insertAfter : 104 { 105 label : lang.row.insertAfter, 106 group : 'tablerow', 107 order : 10 108 }, 109 110 tablerow_delete : 111 { 112 label : lang.row.deleteRow, 113 group : 'tablerow', 114 order : 15 115 }, 116 117 tablecolumn : 118 { 119 label : lang.column.menu, 120 group : 'tablecolumn', 121 order : 1, 122 getItems : function() 123 { 124 return { 125 tablecolumn_insertBefore : CKEDITOR.TRISTATE_OFF, 126 tablecolumn_insertAfter : CKEDITOR.TRISTATE_OFF, 127 tablecolumn_delete : CKEDITOR.TRISTATE_OFF 128 }; 129 } 130 }, 131 132 tablecolumn_insertBefore : 133 { 134 label : lang.column.insertBefore, 135 group : 'tablecolumn', 136 order : 5 137 }, 138 139 tablecolumn_insertAfter : 140 { 141 label : lang.column.insertAfter, 142 group : 'tablecolumn', 143 order : 10 144 }, 145 146 tablecolumn_delete : 147 { 148 label : lang.column.deleteColumn, 149 group : 'tablecolumn', 150 order : 15 151 } 152 }); 153 } 154 155 // If the "contextmenu" plugin is loaded, register the listeners. 156 if ( editor.contextMenu ) 157 { 158 editor.contextMenu.addListener( function( element, selection ) 159 { 160 if ( !element ) 161 return; 162 163 var isTable = element.is( 'table' ) ; 164 var isCell = !isTable && element.hasAscendant( 'table' ) ; 165 166 if ( isTable || isCell ) 167 { 168 var ret = isCell ? 169 { 170 tablecell : CKEDITOR.TRISTATE_OFF, 171 tablerow : CKEDITOR.TRISTATE_OFF, 172 tablecolumn : CKEDITOR.TRISTATE_OFF 173 } 174 : {}; 175 176 ret.tabledelete = CKEDITOR.TRISTATE_OFF; 177 ret.table = CKEDITOR.TRISTATE_OFF; 178 179 return ret; 180 } 181 182 return null; 183 }); 184 } 185 } 186 } ); 187