locomotive-aloha-rails 0.23.2.1 → 0.23.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +3 -3
- data/lib/aloha/rails/engine.rb +1 -1
- data/lib/aloha/rails/version.rb +2 -2
- data/lib/tasks/aloha-assets.rake +1 -1
- data/vendor/assets/javascripts/aloha/css/aloha-sidebar.css +41 -17
- data/vendor/assets/javascripts/aloha/css/aloha.css +2 -2
- data/vendor/assets/javascripts/aloha/lib/aloha/contenthandlermanager.js +19 -18
- data/vendor/assets/javascripts/aloha/lib/aloha/engine.js +168 -9
- data/vendor/assets/javascripts/aloha/lib/aloha/ephemera.js +8 -1
- data/vendor/assets/javascripts/aloha/lib/aloha/markup.js +3 -2
- data/vendor/assets/javascripts/aloha/lib/aloha/pluginmanager.js +8 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/sidebar.js +1 -1
- data/vendor/assets/javascripts/aloha/lib/aloha/state-override.js +59 -37
- data/vendor/assets/javascripts/aloha/lib/util/arrays.js +53 -6
- data/vendor/assets/javascripts/aloha/lib/util/boundary-markers.js +86 -0
- data/vendor/assets/javascripts/aloha/lib/util/dom2.js +178 -19
- data/vendor/assets/javascripts/aloha/lib/util/html.js +77 -10
- data/vendor/assets/javascripts/aloha/lib/util/maps.js +23 -1
- data/vendor/assets/javascripts/aloha/lib/util/range-context.js +429 -181
- data/vendor/assets/javascripts/aloha/lib/util/strings.js +9 -1
- data/vendor/assets/javascripts/aloha/plugins/common/align/nls/de/i18n.js +4 -1
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockmanager.js +2 -5
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/css/characterpicker.css +6 -3
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/lib/characterpicker-plugin.js +29 -32
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/blockelementcontenthandler.js +41 -70
- data/vendor/assets/javascripts/aloha/plugins/common/dom-to-xhtml/lib/dom-to-xhtml.js +1 -1
- data/vendor/assets/javascripts/aloha/plugins/common/format/lib/format-plugin.js +22 -10
- data/vendor/assets/javascripts/aloha/plugins/common/link/css/link.css +2 -8
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-cell.js +7 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin.js +149 -131
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table.js +77 -47
- data/vendor/assets/javascripts/aloha/plugins/common/ui/lib/port-helper-attribute-field.js +4 -8
- data/vendor/assets/javascripts/aloha/plugins/common/ui/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/css/cite.css +0 -10
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/lib/cite-plugin.js +4 -4
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/lib/headerids-plugin.js +84 -32
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/de/i18n.js +2 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/i18n.js +2 -1
- metadata +15 -14
@@ -105,10 +105,18 @@ define(['jquery'], function ($) {
|
|
105
105
|
return result;
|
106
106
|
}
|
107
107
|
|
108
|
+
/**
|
109
|
+
* Returns true for the empty string, null and undefined.
|
110
|
+
*/
|
111
|
+
function empty(str) {
|
112
|
+
return "" === str || null == str;
|
113
|
+
}
|
114
|
+
|
108
115
|
return {
|
109
116
|
words: words,
|
110
117
|
dashesToCamelCase: dashesToCamelCase,
|
111
118
|
camelCaseToDashes: camelCaseToDashes,
|
112
|
-
splitIncl: splitIncl
|
119
|
+
splitIncl: splitIncl,
|
120
|
+
empty: empty
|
113
121
|
};
|
114
122
|
});
|
@@ -2,5 +2,8 @@ define({
|
|
2
2
|
"button.alignright.tooltip": "Rechtsbünding",
|
3
3
|
"button.alignleft.tooltip": "Linksbündig",
|
4
4
|
"button.aligncenter.tooltip": "Zentriert",
|
5
|
-
"button.alignjustify.tooltip": "Blocksatz"
|
5
|
+
"button.alignjustify.tooltip": "Blocksatz",
|
6
|
+
"button.aligntop.tooltip": "Oben aurichten",
|
7
|
+
"button.alignmiddle.tooltip": "Zentriert ausrichten",
|
8
|
+
"button.alignbottom.tooltip": "Unten ausrichten"
|
6
9
|
});
|
@@ -238,11 +238,8 @@ define([
|
|
238
238
|
// - IE7/8 Workaround
|
239
239
|
// - deletion of blocks inside block collection
|
240
240
|
jQuery(window.document).keydown(function (e) {
|
241
|
-
|
242
|
-
|
243
|
-
// causes the destruction of the block;
|
244
|
-
// if the keypress comes from a form element do nothing
|
245
|
-
if (typeof e.srcElement !== 'undefined' && typeof e.srcElement.form !== 'undefined') {
|
241
|
+
// Ignore events originating from the UI
|
242
|
+
if ($(e.target).closest('.aloha-ui').length > 0) {
|
246
243
|
return true;
|
247
244
|
}
|
248
245
|
|
@@ -22,13 +22,16 @@
|
|
22
22
|
.aloha-character-picker-overlay td{
|
23
23
|
width: 1.2em;
|
24
24
|
height: 1.2em;
|
25
|
-
line-height: 1.2em;
|
26
|
-
font-size: 1em;
|
27
25
|
padding: 0.1em;
|
28
|
-
cursor: pointer;
|
29
26
|
border: 1px solid #afafaf;
|
30
27
|
background-color: #fff;
|
28
|
+
|
29
|
+
color: #000000;
|
30
|
+
line-height: 1.2em;
|
31
|
+
font-size: 1em;
|
31
32
|
text-align: center;
|
33
|
+
|
34
|
+
cursor: pointer;
|
32
35
|
}
|
33
36
|
|
34
37
|
.aloha-character-picker-overlay td.focused {
|
data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/lib/characterpicker-plugin.js
CHANGED
@@ -67,7 +67,7 @@ define([
|
|
67
67
|
var configs = {};
|
68
68
|
|
69
69
|
/**
|
70
|
-
* Checks whether the character picker overlay.
|
70
|
+
* Checks whether the character picker overlay is visible.
|
71
71
|
*
|
72
72
|
* @param {Overlay} overlay
|
73
73
|
* @return {boolean} True if the overlay is visible.
|
@@ -88,12 +88,12 @@ define([
|
|
88
88
|
});
|
89
89
|
|
90
90
|
$('body').click(function ($event) {
|
91
|
-
// Because
|
91
|
+
// Because click events on the overlay ui should not cause it to
|
92
92
|
// hide itself.
|
93
93
|
if (!overlay._overlayActive
|
94
94
|
|| ($event.target === overlay.$element[0])
|
95
|
-
|| $(event.target).is('.aloha-icon-characterpicker')
|
96
|
-
|| $(event.target).find('.aloha-icon-characterpicker').length) {
|
95
|
+
|| $($event.target).is('.aloha-icon-characterpicker')
|
96
|
+
|| $($event.target).find('.aloha-icon-characterpicker').length) {
|
97
97
|
return;
|
98
98
|
}
|
99
99
|
overlay.hide();
|
@@ -119,12 +119,11 @@ define([
|
|
119
119
|
*
|
120
120
|
* @param {HTMLElement} source The element of which the style element is
|
121
121
|
* taken.
|
122
|
-
* @param {HTMLElement} target Where the style will be applied.
|
122
|
+
* @param {jQuery.<HTMLElement>} target Where the style will be applied.
|
123
123
|
* @param {string} styleProp The css property which shall be copied.
|
124
|
-
* @return {jQuery.<HTMLElement>}
|
125
124
|
*/
|
126
|
-
function copyStyle(source, target, styleProp) {
|
127
|
-
// Move to strings.js
|
125
|
+
function copyStyle(source, $target, styleProp) {
|
126
|
+
// TODO: Move to strings.js
|
128
127
|
var camelize = function (str) {
|
129
128
|
return str.replace(/\-(\w)/g, function (str, letter) {
|
130
129
|
return letter.toUpperCase();
|
@@ -144,7 +143,9 @@ define([
|
|
144
143
|
style = source.style[camelize(styleProp)];
|
145
144
|
}
|
146
145
|
|
147
|
-
|
146
|
+
if (style) {
|
147
|
+
$target.css(styleProp, style);
|
148
|
+
}
|
148
149
|
}
|
149
150
|
|
150
151
|
/**
|
@@ -252,24 +253,22 @@ define([
|
|
252
253
|
}
|
253
254
|
|
254
255
|
/**
|
255
|
-
*
|
256
|
+
* Calculates the offset at which to position the overlay element.
|
257
|
+
*
|
256
258
|
* @param {jQuery.<HTMLElement>} $element A DOM element around which to
|
257
259
|
* calculate the offset.
|
258
260
|
*/
|
259
|
-
function calculateOffset(
|
261
|
+
function calculateOffset($element) {
|
260
262
|
var offset = $element.offset();
|
261
263
|
if ('fixed' === Floating.POSITION_STYLE) {
|
262
264
|
offset.top -= $WINDOW.scrollTop();
|
263
265
|
offset.left -= $WINDOW.scrollLeft();
|
264
266
|
}
|
265
|
-
return
|
266
|
-
top: overlay.offset.top + (offset.top - overlay.offset.top),
|
267
|
-
left: overlay.offset.left + (offset.left - overlay.offset.left)
|
268
|
-
};
|
267
|
+
return offset;
|
269
268
|
}
|
270
269
|
|
271
270
|
/**
|
272
|
-
*
|
271
|
+
* Inserts the selected character, at the editor's selection.
|
273
272
|
*
|
274
273
|
* @param {String} character
|
275
274
|
*/
|
@@ -318,13 +317,9 @@ define([
|
|
318
317
|
}
|
319
318
|
|
320
319
|
Overlay.prototype = {
|
321
|
-
offset: {
|
322
|
-
top: 0,
|
323
|
-
left: 0
|
324
|
-
},
|
325
320
|
|
326
321
|
/**
|
327
|
-
*
|
322
|
+
* Shows the character overlay at the insert button's position.
|
328
323
|
*
|
329
324
|
* @param {jQuery.<HTMLElement>} $insert Insert button.
|
330
325
|
*/
|
@@ -333,7 +328,7 @@ define([
|
|
333
328
|
|
334
329
|
// Because the overlay needs to be reposition relative its button.
|
335
330
|
overlay.$element
|
336
|
-
.css(calculateOffset(
|
331
|
+
.css(calculateOffset($insert))
|
337
332
|
.css('position', Floating.POSITION_STYLE)
|
338
333
|
.show()
|
339
334
|
.find('.focused')
|
@@ -347,6 +342,9 @@ define([
|
|
347
342
|
overlay._overlayActive = true;
|
348
343
|
},
|
349
344
|
|
345
|
+
/**
|
346
|
+
* Hides the character overlay.
|
347
|
+
*/
|
350
348
|
hide: function () {
|
351
349
|
this.$element.hide();
|
352
350
|
this._overlayActive = false;
|
@@ -354,7 +352,7 @@ define([
|
|
354
352
|
};
|
355
353
|
|
356
354
|
/**
|
357
|
-
*
|
355
|
+
* Generates an character picker overlay for the given editable.
|
358
356
|
*
|
359
357
|
* Because each editable may have its own configuration and therefore may
|
360
358
|
* have its own overlay.
|
@@ -366,7 +364,7 @@ define([
|
|
366
364
|
* character picker.
|
367
365
|
*/
|
368
366
|
function generateOverlay(characterpicker, editable) {
|
369
|
-
var config = characterpicker.getEditableConfig(editable);
|
367
|
+
var config = characterpicker.getEditableConfig(editable.obj);
|
370
368
|
if (!config) {
|
371
369
|
return null;
|
372
370
|
}
|
@@ -411,11 +409,11 @@ define([
|
|
411
409
|
rangeAtOpen = Aloha.Selection.rangeObject;
|
412
410
|
|
413
411
|
var from = rangeAtOpen.startContainer.parentNode;
|
414
|
-
var to = characterpicker.overlay.$element;
|
412
|
+
var $to = characterpicker.overlay.$element;
|
415
413
|
|
416
|
-
copyStyle(from, to, 'font-family');
|
417
|
-
copyStyle(from, to, 'font-weight');
|
418
|
-
copyStyle(from, to, 'font-style');
|
414
|
+
copyStyle(from, $to, 'font-family');
|
415
|
+
copyStyle(from, $to, 'font-weight');
|
416
|
+
copyStyle(from, $to, 'font-style');
|
419
417
|
|
420
418
|
characterpicker.overlay.show(this.element);
|
421
419
|
}
|
@@ -423,8 +421,8 @@ define([
|
|
423
421
|
});
|
424
422
|
|
425
423
|
/**
|
426
|
-
* Pre-
|
427
|
-
*
|
424
|
+
* Pre-generates overlays so that they will be ready when the editor
|
425
|
+
* click on an editable.
|
428
426
|
*
|
429
427
|
* @param {number} editableIndex
|
430
428
|
*/
|
@@ -455,9 +453,8 @@ define([
|
|
455
453
|
|
456
454
|
PubSub.sub('aloha.floating.changed', function (message) {
|
457
455
|
if (characterpicker.overlay) {
|
458
|
-
characterpicker.overlay.offset = message.position.offset;
|
459
456
|
characterpicker.overlay.$element.css(
|
460
|
-
calculateOffset(
|
457
|
+
calculateOffset(button.element)
|
461
458
|
);
|
462
459
|
}
|
463
460
|
});
|
data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/blockelementcontenthandler.js
CHANGED
@@ -3,76 +3,58 @@
|
|
3
3
|
* Author & Copyright (c) 2010-2013 Gentics Software GmbH
|
4
4
|
* aloha-sales@gentics.com
|
5
5
|
* Licensed unter the terms of http://www.aloha-editor.com/license.html
|
6
|
+
*
|
7
|
+
* @overview
|
8
|
+
* Prepares block-level elements in contents of editables that are initialized
|
9
|
+
* for editing ('initEditing'), or when exporting contents of editable for
|
10
|
+
* saving ('getContents').
|
6
11
|
*/
|
7
12
|
define([
|
8
13
|
'jquery',
|
9
14
|
'aloha/core',
|
10
15
|
'aloha/contenthandlermanager',
|
11
16
|
'contenthandler/contenthandler-utils',
|
17
|
+
'util/functions',
|
12
18
|
'util/html'
|
13
19
|
], function (
|
14
20
|
$,
|
15
21
|
Aloha,
|
16
22
|
ContentHandlerManager,
|
17
23
|
Utils,
|
24
|
+
Functions,
|
18
25
|
Html
|
19
26
|
) {
|
20
27
|
'use strict';
|
21
28
|
|
22
|
-
var blocksSelector = Html.
|
23
|
-
var emptyBlocksSelector = Html.
|
29
|
+
var blocksSelector = Html.BLOCKLEVEL_ELEMENTS.join();
|
30
|
+
var emptyBlocksSelector = Html.BLOCKLEVEL_ELEMENTS.join(':empty,')
|
31
|
+
+ ':empty';
|
24
32
|
var NOT_ALOHA_BLOCK_FILTER = ':not(.aloha-block)';
|
25
33
|
|
26
|
-
|
27
|
-
|
28
|
-
* for it to be visible.
|
29
|
-
*
|
30
|
-
* @param {HTMLElement} block
|
31
|
-
* @return {boolean}
|
32
|
-
*/
|
33
|
-
function needsEndBr(block) {
|
34
|
-
return (
|
35
|
-
Html.isBlock(block)
|
36
|
-
&&
|
37
|
-
(!block.lastChild ||
|
38
|
-
'br' !== block.lastChild.nodeName.toLowerCase())
|
39
|
-
);
|
40
|
-
}
|
41
|
-
|
42
|
-
/**
|
43
|
-
* Finds a <br> tag that is at the end of the given container.
|
44
|
-
* Invisible what spaces are ignored.
|
45
|
-
*
|
46
|
-
* @param {HTMLElement} container
|
47
|
-
* @return {HTMLElement|null} A <br> tag at the end of the container; null
|
48
|
-
* if none is found.
|
49
|
-
*/
|
50
|
-
function findEndBr(container) {
|
51
|
-
var node = container.lastChild;
|
52
|
-
while (node && Html.isIgnorableWhitespace(node)) {
|
53
|
-
node = node.previousSibling;
|
54
|
-
}
|
55
|
-
return ('br' === node.nodeName.toLowerCase()) ? node : null;
|
56
|
-
}
|
34
|
+
var isNotIgnorableWhitespace =
|
35
|
+
Functions.complement(Html.isIgnorableWhitespace);
|
57
36
|
|
58
37
|
/**
|
59
38
|
* Removes the <br> tag that is at the end of the given container.
|
60
|
-
* Invisible
|
39
|
+
* Invisible white spaces are ignored.
|
61
40
|
*
|
62
|
-
* @param {number} i Unused
|
63
|
-
* @param {HTMLElement} element
|
41
|
+
* @param {number} i Index of element in its collection. (Unused)
|
42
|
+
* @param {HTMLElement} element The container in which to remove the <br>.
|
64
43
|
*/
|
65
|
-
function
|
66
|
-
var
|
67
|
-
|
68
|
-
|
44
|
+
function removeTrailingBr(i, element) {
|
45
|
+
var node = Html.findNodeRight(
|
46
|
+
element.lastChild,
|
47
|
+
isNotIgnorableWhitespace
|
48
|
+
);
|
49
|
+
if (node && 'br' === node.nodeName.toLowerCase()) {
|
50
|
+
$(node).remove();
|
69
51
|
}
|
70
52
|
}
|
71
53
|
|
72
54
|
/**
|
73
55
|
* Prepares this content for editing
|
74
56
|
*
|
75
|
-
* @param {number} i Unused
|
57
|
+
* @param {number} i Index of element in its collection. (Unused)
|
76
58
|
* @param {HTMLElement} element
|
77
59
|
*/
|
78
60
|
function prepareForEditing(i, element) {
|
@@ -81,10 +63,10 @@ define([
|
|
81
63
|
$element.filter(emptyBlocksSelector).remove();
|
82
64
|
|
83
65
|
if ($.browser.msie) {
|
84
|
-
//
|
85
|
-
//
|
86
|
-
// "aloha-end-br" classes, this clean-up
|
87
|
-
//
|
66
|
+
// Because even though content edited by Aloha Editor is no longer
|
67
|
+
// exported with propping <br>'s that are annotated with
|
68
|
+
// "aloha-end-br" classes, this clean-up still needs to be done for
|
69
|
+
// content that was edited using legacy Aloha Editor.
|
88
70
|
$element.filter('br.aloha-end-br').remove();
|
89
71
|
|
90
72
|
// Because IE's Trident engine goes against W3C's HTML specification
|
@@ -95,20 +77,14 @@ define([
|
|
95
77
|
// content editable block-level elements are not rendered invisibly
|
96
78
|
// in IE, we can remove the propping <br> in otherwise empty
|
97
79
|
// block-level elements.
|
98
|
-
$element.filter(blocksSelector).each(
|
99
|
-
} else {
|
100
|
-
$element.filter('li').each(function () {
|
101
|
-
// Does not compute; Html.isBlock(li) === false
|
102
|
-
if (needsEndBr(this)) {
|
103
|
-
$(this).append('<br/>');
|
104
|
-
}
|
105
|
-
});
|
80
|
+
$element.filter(blocksSelector).each(removeTrailingBr);
|
106
81
|
}
|
82
|
+
|
107
83
|
$element.children(NOT_ALOHA_BLOCK_FILTER).each(prepareForEditing);
|
108
84
|
}
|
109
85
|
|
110
86
|
/**
|
111
|
-
* Prepares the content for editing in
|
87
|
+
* Prepares the content for editing in IE versions older than version 8.
|
112
88
|
*
|
113
89
|
* Ensure that all empty blocklevel elements must contain a zero-width
|
114
90
|
* whitespace.
|
@@ -116,18 +92,18 @@ define([
|
|
116
92
|
* @param {number} i Unused
|
117
93
|
* @param {HTMLElement} element
|
118
94
|
*/
|
119
|
-
function
|
95
|
+
function prepareEditingInOldIE(i, element) {
|
120
96
|
var $element = $(element);
|
121
97
|
$element.filter(emptyBlocksSelector).append('\u200b');
|
122
|
-
$element.children(NOT_ALOHA_BLOCK_FILTER).each(
|
98
|
+
$element.children(NOT_ALOHA_BLOCK_FILTER).each(prepareEditingInOldIE);
|
123
99
|
}
|
124
100
|
|
125
101
|
/**
|
126
102
|
* For a given DOM element, will make sure that it, and every one of its
|
127
103
|
* child nodes, which is a block-level element ends with a <br> node.
|
128
104
|
*
|
129
|
-
* This ensures that a block is rendered visibly (with atleast one
|
130
|
-
*
|
105
|
+
* This ensures that a block is rendered visibly (with atleast one character
|
106
|
+
* height).
|
131
107
|
*
|
132
108
|
* @param {number} i Unused
|
133
109
|
* @param {HTMLElement} element
|
@@ -139,34 +115,29 @@ define([
|
|
139
115
|
}
|
140
116
|
|
141
117
|
return ContentHandlerManager.createHandler({
|
142
|
-
handleContent: function (content, options) {
|
118
|
+
handleContent: function handleBlockLevelContent(content, options) {
|
119
|
+
if (!options) {
|
120
|
+
return content;
|
121
|
+
}
|
143
122
|
var $content = Utils.wrapContent(content);
|
144
|
-
|
145
|
-
|
146
|
-
return $content && $content.html();
|
123
|
+
if (!$content) {
|
124
|
+
return content;
|
147
125
|
}
|
148
|
-
|
149
126
|
switch (options.command) {
|
150
127
|
case 'initEditable':
|
151
128
|
$content.children(NOT_ALOHA_BLOCK_FILTER)
|
152
129
|
.each(prepareForEditing);
|
153
130
|
|
154
|
-
// TODO: Do we support ie versions below 7?
|
155
131
|
if ($.browser.msie && $.browser.version <= 7) {
|
156
132
|
$content.children(NOT_ALOHA_BLOCK_FILTER)
|
157
|
-
.each(
|
133
|
+
.each(prepareEditingInOldIE);
|
158
134
|
}
|
159
135
|
break;
|
160
136
|
case 'getContents':
|
161
137
|
$content.children(NOT_ALOHA_BLOCK_FILTER)
|
162
138
|
.each(propBlockElements);
|
163
|
-
|
164
|
-
// Because trailing end <br>s in <li>s are not necessary for
|
165
|
-
// rendering.
|
166
|
-
$content.find('li>br:last').remove();
|
167
139
|
break;
|
168
140
|
}
|
169
|
-
|
170
141
|
return $content.html();
|
171
142
|
}
|
172
143
|
});
|
@@ -118,7 +118,7 @@ function(
|
|
118
118
|
* The given string with & and < characters replaced with the corresponding HTML entity references.
|
119
119
|
*/
|
120
120
|
function encodePcdata(str) {
|
121
|
-
return str.replace(/&/g, '&').replace(/</g, '<');
|
121
|
+
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
122
122
|
}
|
123
123
|
|
124
124
|
/**
|
@@ -199,6 +199,19 @@ define('format/format-plugin', [
|
|
199
199
|
Aloha.Selection.changeMarkupOnSelection(jQuery('<' + button + '>'));
|
200
200
|
}
|
201
201
|
|
202
|
+
function updateUiAfterMutation(formatPlugin, rangeObject) {
|
203
|
+
// select the modified range
|
204
|
+
rangeObject.select();
|
205
|
+
// update Button toggle state. We take 'Aloha.Selection.getRangeObject()'
|
206
|
+
// because rangeObject is not up-to-date
|
207
|
+
onSelectionChanged(formatPlugin, Aloha.Selection.getRangeObject());
|
208
|
+
}
|
209
|
+
|
210
|
+
function format(formatPlugin, rangeObject, markup) {
|
211
|
+
GENTICS.Utils.Dom.addMarkup(rangeObject, markup);
|
212
|
+
updateUiAfterMutation(formatPlugin, rangeObject);
|
213
|
+
}
|
214
|
+
|
202
215
|
function addMarkup(button) {
|
203
216
|
var formatPlugin = this;
|
204
217
|
var markup = jQuery('<'+button+'>');
|
@@ -223,27 +236,26 @@ define('format/format-plugin', [
|
|
223
236
|
// the range is not collapsed, so we remove the markup from the range
|
224
237
|
GENTICS.Utils.Dom.removeMarkup(rangeObject, jQuery(foundMarkup), Aloha.activeEditable.obj);
|
225
238
|
}
|
239
|
+
updateUiAfterMutation(formatPlugin, rangeObject);
|
226
240
|
} else {
|
227
241
|
// when the range is collapsed, extend it to a word
|
228
242
|
if (rangeObject.isCollapsed()) {
|
229
243
|
GENTICS.Utils.Dom.extendToWord(rangeObject);
|
230
244
|
if (rangeObject.isCollapsed()) {
|
231
245
|
if (StateOverride.enabled()) {
|
232
|
-
StateOverride.setWithRangeObject(
|
246
|
+
StateOverride.setWithRangeObject(
|
247
|
+
commandsByElement[button],
|
248
|
+
rangeObject,
|
249
|
+
function (command, rangeObject) {
|
250
|
+
format(formatPlugin, rangeObject, markup);
|
251
|
+
}
|
252
|
+
);
|
233
253
|
return;
|
234
254
|
}
|
235
255
|
}
|
236
256
|
}
|
237
|
-
|
238
|
-
// add the markup
|
239
|
-
GENTICS.Utils.Dom.addMarkup(rangeObject, markup);
|
257
|
+
format(formatPlugin, rangeObject, markup);
|
240
258
|
}
|
241
|
-
// select the modified range
|
242
|
-
rangeObject.select();
|
243
|
-
|
244
|
-
// update Button toggle state. We take 'Aloha.Selection.getRangeObject()'
|
245
|
-
// because rangeObject is not up-to-date
|
246
|
-
onSelectionChanged(formatPlugin, Aloha.Selection.getRangeObject());
|
247
259
|
}
|
248
260
|
|
249
261
|
function onSelectionChanged(formatPlugin, rangeObject) {
|