mirador_rails 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (193) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/app/controllers/mirador_rails/locales_controller.rb +10 -0
  4. data/config/routes.rb +7 -0
  5. data/lib/mirador_rails/exceptions.rb +6 -0
  6. data/lib/mirador_rails/locale.rb +24 -0
  7. data/lib/mirador_rails/version.rb +1 -1
  8. data/lib/mirador_rails.rb +9 -2
  9. data/mirador_rails.gemspec +3 -0
  10. data/tasks/mirador_rails.rake +44 -10
  11. data/vendor/assets/images/border_type_4.png +0 -0
  12. data/vendor/assets/images/border_type_5.png +0 -0
  13. data/vendor/assets/javascripts/mirador/mirador.js.erb +20105 -0
  14. data/vendor/assets/javascripts/mirador.js +4 -1
  15. data/vendor/assets/locales/de/translation.json +3 -0
  16. data/vendor/assets/locales/en/translation.json +11 -7
  17. data/vendor/assets/locales/ko/translation.json +18 -9
  18. data/vendor/assets/stylesheets/enhancements.scss +36 -0
  19. data/vendor/assets/stylesheets/mirador-combined.css +1488 -1642
  20. data/vendor/assets/stylesheets/mirador.css +1 -0
  21. metadata +52 -174
  22. data/vendor/assets/javascripts/mirador.min.js +0 -89
  23. data/vendor/assets/javascripts/mirador.min.js.map +0 -1
  24. data/vendor/assets/plugins/plugins/advlist/plugin.js +0 -97
  25. data/vendor/assets/plugins/plugins/advlist/plugin.min.js +0 -1
  26. data/vendor/assets/plugins/plugins/anchor/plugin.js +0 -45
  27. data/vendor/assets/plugins/plugins/anchor/plugin.min.js +0 -1
  28. data/vendor/assets/plugins/plugins/autolink/plugin.js +0 -194
  29. data/vendor/assets/plugins/plugins/autolink/plugin.min.js +0 -1
  30. data/vendor/assets/plugins/plugins/autoresize/plugin.js +0 -152
  31. data/vendor/assets/plugins/plugins/autoresize/plugin.min.js +0 -1
  32. data/vendor/assets/plugins/plugins/autosave/plugin.js +0 -165
  33. data/vendor/assets/plugins/plugins/autosave/plugin.min.js +0 -1
  34. data/vendor/assets/plugins/plugins/bbcode/plugin.js +0 -123
  35. data/vendor/assets/plugins/plugins/bbcode/plugin.min.js +0 -1
  36. data/vendor/assets/plugins/plugins/charmap/plugin.js +0 -370
  37. data/vendor/assets/plugins/plugins/charmap/plugin.min.js +0 -1
  38. data/vendor/assets/plugins/plugins/code/plugin.js +0 -60
  39. data/vendor/assets/plugins/plugins/code/plugin.min.js +0 -1
  40. data/vendor/assets/plugins/plugins/colorpicker/plugin.js +0 -112
  41. data/vendor/assets/plugins/plugins/colorpicker/plugin.min.js +0 -1
  42. data/vendor/assets/plugins/plugins/compat3x/css/dialog.css +0 -118
  43. data/vendor/assets/plugins/plugins/compat3x/img/buttons.png +0 -0
  44. data/vendor/assets/plugins/plugins/compat3x/img/icons.gif +0 -0
  45. data/vendor/assets/plugins/plugins/compat3x/img/items.gif +0 -0
  46. data/vendor/assets/plugins/plugins/compat3x/img/menu_arrow.gif +0 -0
  47. data/vendor/assets/plugins/plugins/compat3x/img/menu_check.gif +0 -0
  48. data/vendor/assets/plugins/plugins/compat3x/img/progress.gif +0 -0
  49. data/vendor/assets/plugins/plugins/compat3x/img/tabs.gif +0 -0
  50. data/vendor/assets/plugins/plugins/compat3x/plugin.js +0 -297
  51. data/vendor/assets/plugins/plugins/compat3x/plugin.min.js +0 -1
  52. data/vendor/assets/plugins/plugins/compat3x/tiny_mce_popup.js +0 -542
  53. data/vendor/assets/plugins/plugins/compat3x/utils/editable_selects.js +0 -70
  54. data/vendor/assets/plugins/plugins/compat3x/utils/form_utils.js +0 -210
  55. data/vendor/assets/plugins/plugins/compat3x/utils/mctabs.js +0 -164
  56. data/vendor/assets/plugins/plugins/compat3x/utils/validate.js +0 -252
  57. data/vendor/assets/plugins/plugins/contextmenu/plugin.js +0 -87
  58. data/vendor/assets/plugins/plugins/contextmenu/plugin.min.js +0 -1
  59. data/vendor/assets/plugins/plugins/directionality/plugin.js +0 -64
  60. data/vendor/assets/plugins/plugins/directionality/plugin.min.js +0 -1
  61. data/vendor/assets/plugins/plugins/emoticons/img/smiley-cool.gif +0 -0
  62. data/vendor/assets/plugins/plugins/emoticons/img/smiley-cry.gif +0 -0
  63. data/vendor/assets/plugins/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  64. data/vendor/assets/plugins/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  65. data/vendor/assets/plugins/plugins/emoticons/img/smiley-frown.gif +0 -0
  66. data/vendor/assets/plugins/plugins/emoticons/img/smiley-innocent.gif +0 -0
  67. data/vendor/assets/plugins/plugins/emoticons/img/smiley-kiss.gif +0 -0
  68. data/vendor/assets/plugins/plugins/emoticons/img/smiley-laughing.gif +0 -0
  69. data/vendor/assets/plugins/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  70. data/vendor/assets/plugins/plugins/emoticons/img/smiley-sealed.gif +0 -0
  71. data/vendor/assets/plugins/plugins/emoticons/img/smiley-smile.gif +0 -0
  72. data/vendor/assets/plugins/plugins/emoticons/img/smiley-surprised.gif +0 -0
  73. data/vendor/assets/plugins/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  74. data/vendor/assets/plugins/plugins/emoticons/img/smiley-undecided.gif +0 -0
  75. data/vendor/assets/plugins/plugins/emoticons/img/smiley-wink.gif +0 -0
  76. data/vendor/assets/plugins/plugins/emoticons/img/smiley-yell.gif +0 -0
  77. data/vendor/assets/plugins/plugins/emoticons/plugin.js +0 -65
  78. data/vendor/assets/plugins/plugins/emoticons/plugin.min.js +0 -1
  79. data/vendor/assets/plugins/plugins/example/dialog.html +0 -8
  80. data/vendor/assets/plugins/plugins/example/plugin.js +0 -68
  81. data/vendor/assets/plugins/plugins/example/plugin.min.js +0 -1
  82. data/vendor/assets/plugins/plugins/example_dependency/plugin.js +0 -22
  83. data/vendor/assets/plugins/plugins/example_dependency/plugin.min.js +0 -1
  84. data/vendor/assets/plugins/plugins/fullpage/plugin.js +0 -490
  85. data/vendor/assets/plugins/plugins/fullpage/plugin.min.js +0 -1
  86. data/vendor/assets/plugins/plugins/fullscreen/plugin.js +0 -136
  87. data/vendor/assets/plugins/plugins/fullscreen/plugin.min.js +0 -1
  88. data/vendor/assets/plugins/plugins/hr/plugin.js +0 -30
  89. data/vendor/assets/plugins/plugins/hr/plugin.min.js +0 -1
  90. data/vendor/assets/plugins/plugins/image/plugin.js +0 -439
  91. data/vendor/assets/plugins/plugins/image/plugin.min.js +0 -1
  92. data/vendor/assets/plugins/plugins/importcss/plugin.js +0 -195
  93. data/vendor/assets/plugins/plugins/importcss/plugin.min.js +0 -1
  94. data/vendor/assets/plugins/plugins/insertdatetime/plugin.js +0 -121
  95. data/vendor/assets/plugins/plugins/insertdatetime/plugin.min.js +0 -1
  96. data/vendor/assets/plugins/plugins/layer/plugin.js +0 -225
  97. data/vendor/assets/plugins/plugins/layer/plugin.min.js +0 -1
  98. data/vendor/assets/plugins/plugins/legacyoutput/plugin.js +0 -211
  99. data/vendor/assets/plugins/plugins/legacyoutput/plugin.min.js +0 -1
  100. data/vendor/assets/plugins/plugins/link/plugin.js +0 -400
  101. data/vendor/assets/plugins/plugins/link/plugin.min.js +0 -1
  102. data/vendor/assets/plugins/plugins/lists/plugin.js +0 -791
  103. data/vendor/assets/plugins/plugins/lists/plugin.min.js +0 -1
  104. data/vendor/assets/plugins/plugins/media/moxieplayer.swf +0 -0
  105. data/vendor/assets/plugins/plugins/media/plugin.js +0 -774
  106. data/vendor/assets/plugins/plugins/media/plugin.min.js +0 -1
  107. data/vendor/assets/plugins/plugins/nonbreaking/plugin.js +0 -53
  108. data/vendor/assets/plugins/plugins/nonbreaking/plugin.min.js +0 -1
  109. data/vendor/assets/plugins/plugins/noneditable/plugin.js +0 -540
  110. data/vendor/assets/plugins/plugins/noneditable/plugin.min.js +0 -1
  111. data/vendor/assets/plugins/plugins/pagebreak/plugin.js +0 -88
  112. data/vendor/assets/plugins/plugins/pagebreak/plugin.min.js +0 -1
  113. data/vendor/assets/plugins/plugins/paste/classes/Clipboard.js +0 -634
  114. data/vendor/assets/plugins/plugins/paste/classes/Plugin.js +0 -110
  115. data/vendor/assets/plugins/plugins/paste/classes/Quirks.js +0 -159
  116. data/vendor/assets/plugins/plugins/paste/classes/Utils.js +0 -130
  117. data/vendor/assets/plugins/plugins/paste/classes/WordFilter.js +0 -493
  118. data/vendor/assets/plugins/plugins/paste/plugin.dev.js +0 -120
  119. data/vendor/assets/plugins/plugins/paste/plugin.js +0 -1625
  120. data/vendor/assets/plugins/plugins/paste/plugin.min.js +0 -1
  121. data/vendor/assets/plugins/plugins/preview/plugin.js +0 -88
  122. data/vendor/assets/plugins/plugins/preview/plugin.min.js +0 -1
  123. data/vendor/assets/plugins/plugins/print/plugin.js +0 -32
  124. data/vendor/assets/plugins/plugins/print/plugin.min.js +0 -1
  125. data/vendor/assets/plugins/plugins/save/plugin.js +0 -94
  126. data/vendor/assets/plugins/plugins/save/plugin.min.js +0 -1
  127. data/vendor/assets/plugins/plugins/searchreplace/plugin.js +0 -594
  128. data/vendor/assets/plugins/plugins/searchreplace/plugin.min.js +0 -1
  129. data/vendor/assets/plugins/plugins/spellchecker/classes/DomTextMatcher.js +0 -470
  130. data/vendor/assets/plugins/plugins/spellchecker/classes/Plugin.js +0 -436
  131. data/vendor/assets/plugins/plugins/spellchecker/plugin.dev.js +0 -117
  132. data/vendor/assets/plugins/plugins/spellchecker/plugin.js +0 -996
  133. data/vendor/assets/plugins/plugins/spellchecker/plugin.min.js +0 -1
  134. data/vendor/assets/plugins/plugins/tabfocus/plugin.js +0 -120
  135. data/vendor/assets/plugins/plugins/tabfocus/plugin.min.js +0 -1
  136. data/vendor/assets/plugins/plugins/table/classes/CellSelection.js +0 -176
  137. data/vendor/assets/plugins/plugins/table/classes/Dialogs.js +0 -749
  138. data/vendor/assets/plugins/plugins/table/classes/Plugin.js +0 -422
  139. data/vendor/assets/plugins/plugins/table/classes/Quirks.js +0 -372
  140. data/vendor/assets/plugins/plugins/table/classes/TableGrid.js +0 -864
  141. data/vendor/assets/plugins/plugins/table/plugin.dev.js +0 -118
  142. data/vendor/assets/plugins/plugins/table/plugin.js +0 -2680
  143. data/vendor/assets/plugins/plugins/table/plugin.min.js +0 -1
  144. data/vendor/assets/plugins/plugins/template/plugin.js +0 -262
  145. data/vendor/assets/plugins/plugins/template/plugin.min.js +0 -1
  146. data/vendor/assets/plugins/plugins/textcolor/plugin.js +0 -272
  147. data/vendor/assets/plugins/plugins/textcolor/plugin.min.js +0 -1
  148. data/vendor/assets/plugins/plugins/textpattern/plugin.js +0 -268
  149. data/vendor/assets/plugins/plugins/textpattern/plugin.min.js +0 -1
  150. data/vendor/assets/plugins/plugins/visualblocks/css/visualblocks.css +0 -135
  151. data/vendor/assets/plugins/plugins/visualblocks/img/address.gif +0 -0
  152. data/vendor/assets/plugins/plugins/visualblocks/img/article.gif +0 -0
  153. data/vendor/assets/plugins/plugins/visualblocks/img/aside.gif +0 -0
  154. data/vendor/assets/plugins/plugins/visualblocks/img/blockquote.gif +0 -0
  155. data/vendor/assets/plugins/plugins/visualblocks/img/div.gif +0 -0
  156. data/vendor/assets/plugins/plugins/visualblocks/img/dl.gif +0 -0
  157. data/vendor/assets/plugins/plugins/visualblocks/img/figure.gif +0 -0
  158. data/vendor/assets/plugins/plugins/visualblocks/img/h1.gif +0 -0
  159. data/vendor/assets/plugins/plugins/visualblocks/img/h2.gif +0 -0
  160. data/vendor/assets/plugins/plugins/visualblocks/img/h3.gif +0 -0
  161. data/vendor/assets/plugins/plugins/visualblocks/img/h4.gif +0 -0
  162. data/vendor/assets/plugins/plugins/visualblocks/img/h5.gif +0 -0
  163. data/vendor/assets/plugins/plugins/visualblocks/img/h6.gif +0 -0
  164. data/vendor/assets/plugins/plugins/visualblocks/img/hgroup.gif +0 -0
  165. data/vendor/assets/plugins/plugins/visualblocks/img/ol.gif +0 -0
  166. data/vendor/assets/plugins/plugins/visualblocks/img/p.gif +0 -0
  167. data/vendor/assets/plugins/plugins/visualblocks/img/pre.gif +0 -0
  168. data/vendor/assets/plugins/plugins/visualblocks/img/section.gif +0 -0
  169. data/vendor/assets/plugins/plugins/visualblocks/img/ul.gif +0 -0
  170. data/vendor/assets/plugins/plugins/visualblocks/plugin.js +0 -86
  171. data/vendor/assets/plugins/plugins/visualblocks/plugin.min.js +0 -1
  172. data/vendor/assets/plugins/plugins/visualchars/plugin.js +0 -88
  173. data/vendor/assets/plugins/plugins/visualchars/plugin.min.js +0 -1
  174. data/vendor/assets/plugins/plugins/wordcount/plugin.js +0 -69
  175. data/vendor/assets/plugins/plugins/wordcount/plugin.min.js +0 -1
  176. data/vendor/assets/skins/skins/lightgray/content.inline.min.css +0 -1
  177. data/vendor/assets/skins/skins/lightgray/content.min.css +0 -1
  178. data/vendor/assets/skins/skins/lightgray/fonts/tinymce-small.eot +0 -0
  179. data/vendor/assets/skins/skins/lightgray/fonts/tinymce-small.svg +0 -62
  180. data/vendor/assets/skins/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  181. data/vendor/assets/skins/skins/lightgray/fonts/tinymce-small.woff +0 -0
  182. data/vendor/assets/skins/skins/lightgray/fonts/tinymce.eot +0 -0
  183. data/vendor/assets/skins/skins/lightgray/fonts/tinymce.svg +0 -63
  184. data/vendor/assets/skins/skins/lightgray/fonts/tinymce.ttf +0 -0
  185. data/vendor/assets/skins/skins/lightgray/fonts/tinymce.woff +0 -0
  186. data/vendor/assets/skins/skins/lightgray/img/anchor.gif +0 -0
  187. data/vendor/assets/skins/skins/lightgray/img/loader.gif +0 -0
  188. data/vendor/assets/skins/skins/lightgray/img/object.gif +0 -0
  189. data/vendor/assets/skins/skins/lightgray/img/trans.gif +0 -0
  190. data/vendor/assets/skins/skins/lightgray/skin.ie7.min.css +0 -1
  191. data/vendor/assets/skins/skins/lightgray/skin.min.css +0 -1
  192. data/vendor/assets/themes/themes/modern/theme.js +0 -617
  193. data/vendor/assets/themes/themes/modern/theme.min.js +0 -1
@@ -1,422 +0,0 @@
1
- /**
2
- * Plugin.js
3
- *
4
- * Copyright, Moxiecode Systems AB
5
- * Released under LGPL License.
6
- *
7
- * License: http://www.tinymce.com/license
8
- * Contributing: http://www.tinymce.com/contributing
9
- */
10
-
11
- /**
12
- * This class contains all core logic for the table plugin.
13
- *
14
- * @class tinymce.tableplugin.Plugin
15
- * @private
16
- */
17
- define("tinymce/tableplugin/Plugin", [
18
- "tinymce/tableplugin/TableGrid",
19
- "tinymce/tableplugin/Quirks",
20
- "tinymce/tableplugin/CellSelection",
21
- "tinymce/tableplugin/Dialogs",
22
- "tinymce/util/Tools",
23
- "tinymce/dom/TreeWalker",
24
- "tinymce/Env",
25
- "tinymce/PluginManager"
26
- ], function(TableGrid, Quirks, CellSelection, Dialogs, Tools, TreeWalker, Env, PluginManager) {
27
- var each = Tools.each;
28
-
29
- function Plugin(editor) {
30
- var clipboardRows, self = this, dialogs = new Dialogs(editor);
31
-
32
- function cmd(command) {
33
- return function() {
34
- editor.execCommand(command);
35
- };
36
- }
37
-
38
- function insertTable(cols, rows) {
39
- var y, x, html, tableElm;
40
-
41
- html = '<table id="__mce"><tbody>';
42
-
43
- for (y = 0; y < rows; y++) {
44
- html += '<tr>';
45
-
46
- for (x = 0; x < cols; x++) {
47
- html += '<td>' + (Env.ie ? " " : '<br>') + '</td>';
48
- }
49
-
50
- html += '</tr>';
51
- }
52
-
53
- html += '</tbody></table>';
54
-
55
- editor.undoManager.transact(function() {
56
- editor.insertContent(html);
57
-
58
- tableElm = editor.dom.get('__mce');
59
- editor.dom.setAttrib(tableElm, 'id', null);
60
-
61
- editor.dom.setAttribs(tableElm, editor.settings.table_default_attributes || {});
62
- editor.dom.setStyles(tableElm, editor.settings.table_default_styles || {});
63
- });
64
-
65
- return tableElm;
66
- }
67
-
68
- function handleDisabledState(ctrl, selector) {
69
- function bindStateListener() {
70
- ctrl.disabled(!editor.dom.getParent(editor.selection.getStart(), selector));
71
-
72
- editor.selection.selectorChanged(selector, function(state) {
73
- ctrl.disabled(!state);
74
- });
75
- }
76
-
77
- if (editor.initialized) {
78
- bindStateListener();
79
- } else {
80
- editor.on('init', bindStateListener);
81
- }
82
- }
83
-
84
- function postRender() {
85
- /*jshint validthis:true*/
86
- handleDisabledState(this, 'table');
87
- }
88
-
89
- function postRenderCell() {
90
- /*jshint validthis:true*/
91
- handleDisabledState(this, 'td,th');
92
- }
93
-
94
- function generateTableGrid() {
95
- var html = '';
96
-
97
- html = '<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';
98
-
99
- for (var y = 0; y < 10; y++) {
100
- html += '<tr>';
101
-
102
- for (var x = 0; x < 10; x++) {
103
- html += '<td role="gridcell" tabindex="-1"><a id="mcegrid' + (y * 10 + x) + '" href="#" ' +
104
- 'data-mce-x="' + x + '" data-mce-y="' + y + '"></a></td>';
105
- }
106
-
107
- html += '</tr>';
108
- }
109
-
110
- html += '</table>';
111
-
112
- html += '<div class="mce-text-center" role="presentation">1 x 1</div>';
113
-
114
- return html;
115
- }
116
-
117
- function selectGrid(tx, ty, control) {
118
- var table = control.getEl().getElementsByTagName('table')[0];
119
- var x, y, focusCell, cell, active;
120
- var rtl = control.isRtl() || control.parent().rel == 'tl-tr';
121
-
122
- table.nextSibling.innerHTML = (tx + 1) + ' x ' + (ty + 1);
123
-
124
- if (rtl) {
125
- tx = 9 - tx;
126
- }
127
-
128
- for (y = 0; y < 10; y++) {
129
- for (x = 0; x < 10; x++) {
130
- cell = table.rows[y].childNodes[x].firstChild;
131
- active = (rtl ? x >= tx : x <= tx) && y <= ty;
132
-
133
- editor.dom.toggleClass(cell, 'mce-active', active);
134
-
135
- if (active) {
136
- focusCell = cell;
137
- }
138
- }
139
- }
140
-
141
- return focusCell.parentNode;
142
- }
143
-
144
- if (editor.settings.table_grid === false) {
145
- editor.addMenuItem('inserttable', {
146
- text: 'Insert table',
147
- icon: 'table',
148
- context: 'table',
149
- onclick: dialogs.table
150
- });
151
- } else {
152
- editor.addMenuItem('inserttable', {
153
- text: 'Insert table',
154
- icon: 'table',
155
- context: 'table',
156
- ariaHideMenu: true,
157
- onclick: function(e) {
158
- if (e.aria) {
159
- this.parent().hideAll();
160
- e.stopImmediatePropagation();
161
- dialogs.table();
162
- }
163
- },
164
- onshow: function() {
165
- selectGrid(0, 0, this.menu.items()[0]);
166
- },
167
- onhide: function() {
168
- var elements = this.menu.items()[0].getEl().getElementsByTagName('a');
169
- editor.dom.removeClass(elements, 'mce-active');
170
- editor.dom.addClass(elements[0], 'mce-active');
171
- },
172
- menu: [
173
- {
174
- type: 'container',
175
- html: generateTableGrid(),
176
-
177
- onPostRender: function() {
178
- this.lastX = this.lastY = 0;
179
- },
180
-
181
- onmousemove: function(e) {
182
- var target = e.target, x, y;
183
-
184
- if (target.tagName.toUpperCase() == 'A') {
185
- x = parseInt(target.getAttribute('data-mce-x'), 10);
186
- y = parseInt(target.getAttribute('data-mce-y'), 10);
187
-
188
- if (this.isRtl() || this.parent().rel == 'tl-tr') {
189
- x = 9 - x;
190
- }
191
-
192
- if (x !== this.lastX || y !== this.lastY) {
193
- selectGrid(x, y, e.control);
194
-
195
- this.lastX = x;
196
- this.lastY = y;
197
- }
198
- }
199
- },
200
-
201
- onclick: function(e) {
202
- var self = this;
203
-
204
- if (e.target.tagName.toUpperCase() == 'A') {
205
- e.preventDefault();
206
- e.stopPropagation();
207
- self.parent().cancel();
208
-
209
- editor.undoManager.transact(function() {
210
- insertTable(self.lastX + 1, self.lastY + 1);
211
- });
212
-
213
- editor.addVisual();
214
- }
215
- }
216
- }
217
- ]
218
- });
219
- }
220
-
221
- editor.addMenuItem('tableprops', {
222
- text: 'Table properties',
223
- context: 'table',
224
- onPostRender: postRender,
225
- onclick: dialogs.tableProps
226
- });
227
-
228
- editor.addMenuItem('deletetable', {
229
- text: 'Delete table',
230
- context: 'table',
231
- onPostRender: postRender,
232
- cmd: 'mceTableDelete'
233
- });
234
-
235
- editor.addMenuItem('cell', {
236
- separator: 'before',
237
- text: 'Cell',
238
- context: 'table',
239
- menu: [
240
- {text: 'Cell properties', onclick: cmd('mceTableCellProps'), onPostRender: postRenderCell},
241
- {text: 'Merge cells', onclick: cmd('mceTableMergeCells'), onPostRender: postRenderCell},
242
- {text: 'Split cell', onclick: cmd('mceTableSplitCells'), onPostRender: postRenderCell}
243
- ]
244
- });
245
-
246
- editor.addMenuItem('row', {
247
- text: 'Row',
248
- context: 'table',
249
- menu: [
250
- {text: 'Insert row before', onclick: cmd('mceTableInsertRowBefore'), onPostRender: postRenderCell},
251
- {text: 'Insert row after', onclick: cmd('mceTableInsertRowAfter'), onPostRender: postRenderCell},
252
- {text: 'Delete row', onclick: cmd('mceTableDeleteRow'), onPostRender: postRenderCell},
253
- {text: 'Row properties', onclick: cmd('mceTableRowProps'), onPostRender: postRenderCell},
254
- {text: '-'},
255
- {text: 'Cut row', onclick: cmd('mceTableCutRow'), onPostRender: postRenderCell},
256
- {text: 'Copy row', onclick: cmd('mceTableCopyRow'), onPostRender: postRenderCell},
257
- {text: 'Paste row before', onclick: cmd('mceTablePasteRowBefore'), onPostRender: postRenderCell},
258
- {text: 'Paste row after', onclick: cmd('mceTablePasteRowAfter'), onPostRender: postRenderCell}
259
- ]
260
- });
261
-
262
- editor.addMenuItem('column', {
263
- text: 'Column',
264
- context: 'table',
265
- menu: [
266
- {text: 'Insert column before', onclick: cmd('mceTableInsertColBefore'), onPostRender: postRenderCell},
267
- {text: 'Insert column after', onclick: cmd('mceTableInsertColAfter'), onPostRender: postRenderCell},
268
- {text: 'Delete column', onclick: cmd('mceTableDeleteCol'), onPostRender: postRenderCell}
269
- ]
270
- });
271
-
272
- var menuItems = [];
273
- each("inserttable tableprops deletetable | cell row column".split(' '), function(name) {
274
- if (name == '|') {
275
- menuItems.push({text: '-'});
276
- } else {
277
- menuItems.push(editor.menuItems[name]);
278
- }
279
- });
280
-
281
- editor.addButton("table", {
282
- type: "menubutton",
283
- title: "Table",
284
- menu: menuItems
285
- });
286
-
287
- // Select whole table is a table border is clicked
288
- if (!Env.isIE) {
289
- editor.on('click', function(e) {
290
- e = e.target;
291
-
292
- if (e.nodeName === 'TABLE') {
293
- editor.selection.select(e);
294
- editor.nodeChanged();
295
- }
296
- });
297
- }
298
-
299
- self.quirks = new Quirks(editor);
300
-
301
- editor.on('Init', function() {
302
- self.cellSelection = new CellSelection(editor);
303
- });
304
-
305
- // Register action commands
306
- each({
307
- mceTableSplitCells: function(grid) {
308
- grid.split();
309
- },
310
-
311
- mceTableMergeCells: function(grid) {
312
- var cell;
313
-
314
- cell = editor.dom.getParent(editor.selection.getStart(), 'th,td');
315
-
316
- if (!editor.dom.select('td.mce-item-selected,th.mce-item-selected').length) {
317
- dialogs.merge(grid, cell);
318
- } else {
319
- grid.merge();
320
- }
321
- },
322
-
323
- mceTableInsertRowBefore: function(grid) {
324
- grid.insertRow(true);
325
- },
326
-
327
- mceTableInsertRowAfter: function(grid) {
328
- grid.insertRow();
329
- },
330
-
331
- mceTableInsertColBefore: function(grid) {
332
- grid.insertCol(true);
333
- },
334
-
335
- mceTableInsertColAfter: function(grid) {
336
- grid.insertCol();
337
- },
338
-
339
- mceTableDeleteCol: function(grid) {
340
- grid.deleteCols();
341
- },
342
-
343
- mceTableDeleteRow: function(grid) {
344
- grid.deleteRows();
345
- },
346
-
347
- mceTableCutRow: function(grid) {
348
- clipboardRows = grid.cutRows();
349
- },
350
-
351
- mceTableCopyRow: function(grid) {
352
- clipboardRows = grid.copyRows();
353
- },
354
-
355
- mceTablePasteRowBefore: function(grid) {
356
- grid.pasteRows(clipboardRows, true);
357
- },
358
-
359
- mceTablePasteRowAfter: function(grid) {
360
- grid.pasteRows(clipboardRows);
361
- },
362
-
363
- mceTableDelete: function(grid) {
364
- grid.deleteTable();
365
- }
366
- }, function(func, name) {
367
- editor.addCommand(name, function() {
368
- var grid = new TableGrid(editor);
369
-
370
- if (grid) {
371
- func(grid);
372
- editor.execCommand('mceRepaint');
373
- self.cellSelection.clear();
374
- }
375
- });
376
- });
377
-
378
- // Register dialog commands
379
- each({
380
- mceInsertTable: dialogs.table,
381
- mceTableProps: function() {
382
- dialogs.table(true);
383
- },
384
- mceTableRowProps: dialogs.row,
385
- mceTableCellProps: dialogs.cell
386
- }, function(func, name) {
387
- editor.addCommand(name, function(ui, val) {
388
- func(val);
389
- });
390
- });
391
-
392
- // Enable tab key cell navigation
393
- if (editor.settings.table_tab_navigation !== false) {
394
- editor.on('keydown', function(e) {
395
- var cellElm, grid, delta;
396
-
397
- if (e.keyCode == 9) {
398
- cellElm = editor.dom.getParent(editor.selection.getStart(), 'th,td');
399
-
400
- if (cellElm) {
401
- e.preventDefault();
402
-
403
- grid = new TableGrid(editor);
404
- delta = e.shiftKey ? -1 : 1;
405
-
406
- editor.undoManager.transact(function() {
407
- if (!grid.moveRelIdx(cellElm, delta) && delta > 0) {
408
- grid.insertRow();
409
- grid.refresh();
410
- grid.moveRelIdx(cellElm, delta);
411
- }
412
- });
413
- }
414
- }
415
- });
416
- }
417
-
418
- self.insertTable = insertTable;
419
- }
420
-
421
- PluginManager.add('table', Plugin);
422
- });