comfortable_media_surfer 3.0.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.github/workflows/coveralls.yml +13 -1
- data/.github/workflows/rubyonrails.yml +15 -3
- data/.gitignore +4 -0
- data/.rubocop.yml +4 -1
- data/CHANGELOG.md +59 -0
- data/CONTRIBUTING.md +4 -2
- data/Gemfile +6 -2
- data/README.md +60 -25
- data/app/assets/builds/.keep +0 -0
- data/app/assets/config/manifest.js +1 -0
- data/app/assets/javascripts/comfy/admin/cms/application.js +21 -36
- data/app/assets/javascripts/comfy/admin/cms/base.js +6 -5
- data/app/assets/javascripts/comfy/admin/cms/codemirror.js +22 -10
- data/app/assets/javascripts/comfy/admin/cms/diff.js +7 -5
- data/app/assets/javascripts/comfy/admin/cms/file_link.js +17 -11
- data/app/assets/javascripts/comfy/admin/cms/file_upload.js +67 -41
- data/app/assets/javascripts/comfy/admin/cms/files_modal.js +20 -13
- data/app/assets/javascripts/comfy/admin/cms/sortable_list.js +28 -19
- data/app/assets/javascripts/comfy/admin/cms/timepicker.js +20 -12
- data/app/assets/javascripts/comfy/admin/cms/wysiwyg.js +39 -20
- data/app/assets/javascripts/comfy/vendor/diff/pretty_text_diff.js +30 -18
- data/app/assets/javascripts/comfy/vendor/redactor/definedlinks.js +31 -34
- data/app/assets/javascripts/comfy/vendor/redactor/filemanager.js +77 -62
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/hr.js +78 -76
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/nb.js +76 -74
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/pl.js +77 -75
- data/app/assets/javascripts/comfy/vendor/redactor/imagemanager.js +66 -55
- data/app/assets/javascripts/comfy/vendor/redactor/table.js +346 -335
- data/app/assets/javascripts/comfy/vendor/redactor/video.js +69 -64
- data/app/assets/javascripts/comfy/vendor/redactor.js +2 -0
- data/app/assets/stylesheets/comfy/admin/cms/application.sass +2 -2
- data/app/assets/stylesheets/comfy/admin/cms/codemirror_overrides.sass +1 -1
- data/app/helpers/comfy/admin/cms_helper.rb +2 -2
- data/comfortable_media_surfer.gemspec +6 -8
- data/config/application.rb +1 -1
- data/config/environments/development.rb +11 -10
- data/config/environments/production.rb +0 -6
- data/config/puma.rb +43 -0
- data/gemfiles/7.1.gemfile +3 -2
- data/gemfiles/7.2.gemfile +3 -2
- data/gemfiles/{6.1.gemfile → 8.0.gemfile} +3 -2
- data/lib/comfortable_media_surfer/engine.rb +3 -8
- data/lib/comfortable_media_surfer/extensions/has_revisions.rb +1 -1
- data/lib/comfortable_media_surfer/render_methods.rb +7 -7
- data/lib/comfortable_media_surfer/version.rb +1 -1
- data/lib/generators/comfy/scaffold/scaffold_generator.rb +1 -1
- data/lib/tasks/cms_assets.rake +19 -0
- data/package-lock.json +379 -0
- data/package.json +23 -0
- data/rakelib/create_release.rake +17 -17
- metadata +16 -152
- data/app/assets/javascripts/comfy/vendor/Moxie.swf +0 -0
- data/app/assets/javascripts/comfy/vendor/Moxie.xap +0 -0
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js +0 -7
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js.map +0 -1
- data/app/assets/javascripts/comfy/vendor/codemirror/addon/edit/closetag.js +0 -169
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/css/css.js +0 -832
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/htmlmixed/htmlmixed.js +0 -152
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/javascript/javascript.js +0 -875
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/markdown/markdown.js +0 -861
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/xml/xml.js +0 -394
- data/app/assets/javascripts/comfy/vendor/codemirror.js +0 -9653
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ar.js +0 -52
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bg.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bn.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ca.js +0 -83
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cs.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cy.js +0 -92
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/da.js +0 -71
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/de.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/default.js +0 -80
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/eo.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/es.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/et.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fa.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fi.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fr.js +0 -75
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/gr.js +0 -74
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/he.js +0 -57
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hi.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hr.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hu.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/id.js +0 -61
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/it.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ja.js +0 -57
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ko.js +0 -60
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lt.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lv.js +0 -67
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mk.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mn.js +0 -67
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ms.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/my.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/nl.js +0 -75
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/no.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pa.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pl.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt-BR.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ro.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ru.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/si.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sk.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sl.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sq.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sr.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sv.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/th.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/tr.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/uk.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/vn.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-CN.js +0 -61
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-TW.js +0 -61
- data/app/assets/javascripts/comfy/vendor/moxie.min.js +0 -16
- data/app/assets/javascripts/comfy/vendor/plupload.dev.js +0 -2497
- data/app/assets/javascripts/comfy/vendor/sortable.min.js +0 -5
- data/app/assets/stylesheets/comfy/vendor/codemirror.css +0 -346
- data/app/assets/stylesheets/comfy/vendor/flatpickr.min.css +0 -13
- data/config/initializers/assets.rb +0 -14
- data/gemfiles/7.0.gemfile +0 -31
@@ -1,337 +1,348 @@
|
|
1
|
+
import jQuery from "jquery";
|
2
|
+
|
1
3
|
if (!RedactorPlugins) var RedactorPlugins = {};
|
2
4
|
|
3
|
-
(function($)
|
4
|
-
{
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
5
|
+
(function ($) {
|
6
|
+
RedactorPlugins.table = function () {
|
7
|
+
return {
|
8
|
+
getTemplate: function () {
|
9
|
+
return (
|
10
|
+
String() +
|
11
|
+
'<section id="redactor-modal-table-insert">' +
|
12
|
+
"<label>" +
|
13
|
+
this.lang.get("rows") +
|
14
|
+
"</label>" +
|
15
|
+
'<input type="text" size="5" value="2" id="redactor-table-rows" />' +
|
16
|
+
"<label>" +
|
17
|
+
this.lang.get("columns") +
|
18
|
+
"</label>" +
|
19
|
+
'<input type="text" size="5" value="3" id="redactor-table-columns" />' +
|
20
|
+
"</section>"
|
21
|
+
);
|
22
|
+
},
|
23
|
+
init: function () {
|
24
|
+
var dropdown = {};
|
25
|
+
|
26
|
+
dropdown.insert_table = {
|
27
|
+
title: this.lang.get("insert_table"),
|
28
|
+
func: this.table.show,
|
29
|
+
};
|
30
|
+
dropdown.insert_row_above = {
|
31
|
+
title: this.lang.get("insert_row_above"),
|
32
|
+
func: this.table.addRowAbove,
|
33
|
+
};
|
34
|
+
dropdown.insert_row_below = {
|
35
|
+
title: this.lang.get("insert_row_below"),
|
36
|
+
func: this.table.addRowBelow,
|
37
|
+
};
|
38
|
+
dropdown.insert_column_left = {
|
39
|
+
title: this.lang.get("insert_column_left"),
|
40
|
+
func: this.table.addColumnLeft,
|
41
|
+
};
|
42
|
+
dropdown.insert_column_right = {
|
43
|
+
title: this.lang.get("insert_column_right"),
|
44
|
+
func: this.table.addColumnRight,
|
45
|
+
};
|
46
|
+
dropdown.add_head = {
|
47
|
+
title: this.lang.get("add_head"),
|
48
|
+
func: this.table.addHead,
|
49
|
+
};
|
50
|
+
dropdown.delete_head = {
|
51
|
+
title: this.lang.get("delete_head"),
|
52
|
+
func: this.table.deleteHead,
|
53
|
+
};
|
54
|
+
dropdown.delete_column = {
|
55
|
+
title: this.lang.get("delete_column"),
|
56
|
+
func: this.table.deleteColumn,
|
57
|
+
};
|
58
|
+
dropdown.delete_row = {
|
59
|
+
title: this.lang.get("delete_row"),
|
60
|
+
func: this.table.deleteRow,
|
61
|
+
};
|
62
|
+
dropdown.delete_table = {
|
63
|
+
title: this.lang.get("delete_table"),
|
64
|
+
func: this.table.deleteTable,
|
65
|
+
};
|
66
|
+
|
67
|
+
this.observe.addButton("td", "table");
|
68
|
+
this.observe.addButton("th", "table");
|
69
|
+
|
70
|
+
var button = this.button.addBefore(
|
71
|
+
"link",
|
72
|
+
"table",
|
73
|
+
this.lang.get("table")
|
74
|
+
);
|
75
|
+
this.button.addDropdown(button, dropdown);
|
76
|
+
},
|
77
|
+
show: function () {
|
78
|
+
this.modal.addTemplate("table", this.table.getTemplate());
|
79
|
+
|
80
|
+
this.modal.load("table", this.lang.get("insert_table"), 300);
|
81
|
+
this.modal.createCancelButton();
|
82
|
+
|
83
|
+
var button = this.modal.createActionButton(this.lang.get("insert"));
|
84
|
+
button.on("click", this.table.insert);
|
85
|
+
|
86
|
+
this.selection.save();
|
87
|
+
this.modal.show();
|
88
|
+
|
89
|
+
$("#redactor-table-rows").focus();
|
90
|
+
},
|
91
|
+
insert: function () {
|
92
|
+
var rows = $("#redactor-table-rows").val(),
|
93
|
+
columns = $("#redactor-table-columns").val(),
|
94
|
+
$tableBox = $("<div>"),
|
95
|
+
tableId = Math.floor(Math.random() * 99999),
|
96
|
+
$table = $(
|
97
|
+
'<table id="table' + tableId + '"><tbody></tbody></table>'
|
98
|
+
),
|
99
|
+
i,
|
100
|
+
$row,
|
101
|
+
z,
|
102
|
+
$column;
|
103
|
+
|
104
|
+
for (i = 0; i < rows; i++) {
|
105
|
+
$row = $("<tr>");
|
106
|
+
|
107
|
+
for (z = 0; z < columns; z++) {
|
108
|
+
$column = $("<td>" + this.opts.invisibleSpace + "</td>");
|
109
|
+
|
110
|
+
// set the focus to the first td
|
111
|
+
if (i === 0 && z === 0) {
|
112
|
+
$column.append(this.selection.getMarker());
|
113
|
+
}
|
114
|
+
|
115
|
+
$($row).append($column);
|
116
|
+
}
|
117
|
+
|
118
|
+
$table.append($row);
|
119
|
+
}
|
120
|
+
|
121
|
+
$tableBox.append($table);
|
122
|
+
var html = $tableBox.html();
|
123
|
+
|
124
|
+
this.modal.close();
|
125
|
+
this.selection.restore();
|
126
|
+
|
127
|
+
if (this.table.getTable()) return;
|
128
|
+
|
129
|
+
this.buffer.set();
|
130
|
+
|
131
|
+
var current = this.selection.getBlock() || this.selection.getCurrent();
|
132
|
+
if (current && current.tagName != "BODY") {
|
133
|
+
if (current.tagName == "LI") current = $(current).closest("ul, ol");
|
134
|
+
$(current).after(html);
|
135
|
+
} else {
|
136
|
+
this.insert.html(html);
|
137
|
+
}
|
138
|
+
|
139
|
+
this.selection.restore();
|
140
|
+
|
141
|
+
var table = this.$editor.find("#table" + tableId);
|
142
|
+
|
143
|
+
if (
|
144
|
+
!this.opts.linebreaks &&
|
145
|
+
(this.utils.browser("mozilla") || this.utils.browser("msie"))
|
146
|
+
) {
|
147
|
+
var $next = table.next();
|
148
|
+
if ($next.length === 0) {
|
149
|
+
table.after(this.opts.emptyHtml);
|
150
|
+
}
|
151
|
+
}
|
152
|
+
|
153
|
+
this.observe.buttons();
|
154
|
+
|
155
|
+
table.find("span.redactor-selection-marker").remove();
|
156
|
+
table.removeAttr("id");
|
157
|
+
|
158
|
+
this.code.sync();
|
159
|
+
this.core.setCallback("insertedTable", table);
|
160
|
+
},
|
161
|
+
getTable: function () {
|
162
|
+
var $table = $(this.selection.getParent()).closest("table");
|
163
|
+
|
164
|
+
if (!this.utils.isRedactorParent($table)) return false;
|
165
|
+
if ($table.size() === 0) return false;
|
166
|
+
|
167
|
+
return $table;
|
168
|
+
},
|
169
|
+
restoreAfterDelete: function ($table) {
|
170
|
+
this.selection.restore();
|
171
|
+
$table.find("span.redactor-selection-marker").remove();
|
172
|
+
this.code.sync();
|
173
|
+
},
|
174
|
+
deleteTable: function () {
|
175
|
+
var $table = this.table.getTable();
|
176
|
+
if (!$table) return;
|
177
|
+
|
178
|
+
this.buffer.set();
|
179
|
+
|
180
|
+
var $next = $table.next();
|
181
|
+
if (!this.opts.linebreaks && $next.length !== 0) {
|
182
|
+
this.caret.setStart($next);
|
183
|
+
} else {
|
184
|
+
this.caret.setAfter($table);
|
185
|
+
}
|
186
|
+
|
187
|
+
$table.remove();
|
188
|
+
|
189
|
+
this.code.sync();
|
190
|
+
},
|
191
|
+
deleteRow: function () {
|
192
|
+
var $table = this.table.getTable();
|
193
|
+
if (!$table) return;
|
194
|
+
|
195
|
+
var $current = $(this.selection.getCurrent());
|
196
|
+
|
197
|
+
this.buffer.set();
|
198
|
+
|
199
|
+
var $current_tr = $current.closest("tr");
|
200
|
+
var $focus_tr = $current_tr.prev().length
|
201
|
+
? $current_tr.prev()
|
202
|
+
: $current_tr.next();
|
203
|
+
if ($focus_tr.length) {
|
204
|
+
var $focus_td = $focus_tr.children("td, th").first();
|
205
|
+
if ($focus_td.length) $focus_td.prepend(this.selection.getMarker());
|
206
|
+
}
|
207
|
+
|
208
|
+
$current_tr.remove();
|
209
|
+
this.table.restoreAfterDelete($table);
|
210
|
+
},
|
211
|
+
deleteColumn: function () {
|
212
|
+
var $table = this.table.getTable();
|
213
|
+
if (!$table) return;
|
214
|
+
|
215
|
+
this.buffer.set();
|
216
|
+
|
217
|
+
var $current = $(this.selection.getCurrent());
|
218
|
+
var $current_td = $current.closest("td, th");
|
219
|
+
var index = $current_td[0].cellIndex;
|
220
|
+
|
221
|
+
$table.find("tr").each(
|
222
|
+
$.proxy(function (i, elem) {
|
223
|
+
var $elem = $(elem);
|
224
|
+
var focusIndex = index - 1 < 0 ? index + 1 : index - 1;
|
225
|
+
if (i === 0)
|
226
|
+
$elem
|
227
|
+
.find("td, th")
|
228
|
+
.eq(focusIndex)
|
229
|
+
.prepend(this.selection.getMarker());
|
230
|
+
|
231
|
+
$elem.find("td, th").eq(index).remove();
|
232
|
+
}, this)
|
233
|
+
);
|
234
|
+
|
235
|
+
this.table.restoreAfterDelete($table);
|
236
|
+
},
|
237
|
+
addHead: function () {
|
238
|
+
var $table = this.table.getTable();
|
239
|
+
if (!$table) return;
|
240
|
+
|
241
|
+
this.buffer.set();
|
242
|
+
|
243
|
+
if ($table.find("thead").size() !== 0) {
|
244
|
+
this.table.deleteHead();
|
245
|
+
return;
|
246
|
+
}
|
247
|
+
|
248
|
+
var tr = $table.find("tr").first().clone();
|
249
|
+
tr.find("td").replaceWith(
|
250
|
+
$.proxy(function () {
|
251
|
+
return $("<th>").html(this.opts.invisibleSpace);
|
252
|
+
}, this)
|
253
|
+
);
|
254
|
+
|
255
|
+
$thead = $("<thead></thead>").append(tr);
|
256
|
+
$table.prepend($thead);
|
257
|
+
|
258
|
+
this.code.sync();
|
259
|
+
},
|
260
|
+
deleteHead: function () {
|
261
|
+
var $table = this.table.getTable();
|
262
|
+
if (!$table) return;
|
263
|
+
|
264
|
+
var $thead = $table.find("thead");
|
265
|
+
if ($thead.size() === 0) return;
|
266
|
+
|
267
|
+
this.buffer.set();
|
268
|
+
|
269
|
+
$thead.remove();
|
270
|
+
this.code.sync();
|
271
|
+
},
|
272
|
+
addRowAbove: function () {
|
273
|
+
this.table.addRow("before");
|
274
|
+
},
|
275
|
+
addRowBelow: function () {
|
276
|
+
this.table.addRow("after");
|
277
|
+
},
|
278
|
+
addColumnLeft: function () {
|
279
|
+
this.table.addColumn("before");
|
280
|
+
},
|
281
|
+
addColumnRight: function () {
|
282
|
+
this.table.addColumn("after");
|
283
|
+
},
|
284
|
+
addRow: function (type) {
|
285
|
+
var $table = this.table.getTable();
|
286
|
+
if (!$table) return;
|
287
|
+
|
288
|
+
this.buffer.set();
|
289
|
+
|
290
|
+
var $current = $(this.selection.getCurrent());
|
291
|
+
var $current_tr = $current.closest("tr");
|
292
|
+
var new_tr = $current_tr.clone();
|
293
|
+
|
294
|
+
new_tr.find("th").replaceWith(function () {
|
295
|
+
var $td = $("<td>");
|
296
|
+
$td[0].attributes = this.attributes;
|
297
|
+
|
298
|
+
return $td.append($(this).contents());
|
299
|
+
});
|
300
|
+
|
301
|
+
new_tr.find("td").html(this.opts.invisibleSpace);
|
302
|
+
|
303
|
+
if (type == "after") {
|
304
|
+
$current_tr.after(new_tr);
|
305
|
+
} else {
|
306
|
+
$current_tr.before(new_tr);
|
307
|
+
}
|
308
|
+
|
309
|
+
this.code.sync();
|
310
|
+
},
|
311
|
+
addColumn: function (type) {
|
312
|
+
var $table = this.table.getTable();
|
313
|
+
if (!$table) return;
|
314
|
+
|
315
|
+
var index = 0;
|
316
|
+
var current = $(this.selection.getCurrent());
|
317
|
+
|
318
|
+
this.buffer.set();
|
319
|
+
|
320
|
+
var $current_tr = current.closest("tr");
|
321
|
+
var $current_td = current.closest("td, th");
|
322
|
+
|
323
|
+
$current_tr.find("td, th").each(
|
324
|
+
$.proxy(function (i, elem) {
|
325
|
+
if ($(elem)[0] === $current_td[0]) index = i;
|
326
|
+
}, this)
|
327
|
+
);
|
328
|
+
|
329
|
+
$table.find("tr").each(
|
330
|
+
$.proxy(function (i, elem) {
|
331
|
+
var $current = $(elem).find("td, th").eq(index);
|
332
|
+
|
333
|
+
var td = $current.clone();
|
334
|
+
td.html(this.opts.invisibleSpace);
|
335
|
+
|
336
|
+
if (type == "after") {
|
337
|
+
$current.after(td);
|
338
|
+
} else {
|
339
|
+
$current.before(td);
|
340
|
+
}
|
341
|
+
}, this)
|
342
|
+
);
|
343
|
+
|
344
|
+
this.code.sync();
|
345
|
+
},
|
346
|
+
};
|
347
|
+
};
|
348
|
+
})(jQuery);
|