locomotive-aloha-rails 0.20.1.2 → 0.20.1.3
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/Rakefile +1 -1
- data/lib/aloha/rails/version.rb +2 -2
- data/vendor/assets/javascripts/aloha/css/aloha.css +3 -0
- data/vendor/assets/javascripts/aloha/css/ext-aloha.css +3 -0
- data/vendor/assets/javascripts/aloha/lib/aloha-bootstrap.js +4565 -3934
- data/vendor/assets/javascripts/aloha/lib/aloha.js +1357 -702
- data/vendor/assets/javascripts/aloha/lib/aloha/command.js +16 -13
- data/vendor/assets/javascripts/aloha/lib/aloha/core.js +23 -3
- data/vendor/assets/javascripts/aloha/lib/aloha/ecma5shims.js +23 -7
- data/vendor/assets/javascripts/aloha/lib/aloha/editable.js +57 -14
- data/vendor/assets/javascripts/aloha/lib/aloha/engine.js +9 -5
- data/vendor/assets/javascripts/aloha/lib/aloha/floatingmenu.js +288 -96
- data/vendor/assets/javascripts/aloha/lib/aloha/jquery.js +11 -1
- data/vendor/assets/javascripts/aloha/lib/aloha/markup.js +318 -40
- data/vendor/assets/javascripts/aloha/lib/aloha/repositorymanager.js +11 -10
- data/vendor/assets/javascripts/aloha/lib/aloha/selection.js +20 -1
- data/vendor/assets/javascripts/aloha/lib/aloha/sidebar.js +11 -1
- data/vendor/assets/javascripts/aloha/lib/jquery-plugin.js +10 -7
- data/vendor/assets/javascripts/aloha/lib/util/dom.js +18 -6
- data/vendor/assets/javascripts/aloha/lib/util/range.js +6 -6
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/ext-all-debug.js +26 -2
- data/vendor/assets/javascripts/aloha/lib/vendor/jquery.store.js +39 -15
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/lib/abbr-plugin.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/lib/align-plugin.js +344 -334
- data/vendor/assets/javascripts/aloha/plugins/common/block/css/block.css +65 -12
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block-plugin.js +12 -15
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block.js +796 -180
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockcontenthandler.js +54 -13
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockmanager.js +315 -78
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editor.js +111 -8
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editormanager.js +2 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/jquery-ui-1.8.16.custom.min.js +198 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/sidebarattributeeditor.js +7 -20
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/lib/characterpicker-plugin.js +15 -3
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/sanitizecontenthandler.js +3 -2
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/wordcontenthandler.js +111 -5
- data/vendor/assets/javascripts/aloha/plugins/common/dom-to-xhtml/lib/dom-to-xhtml-plugin.js +29 -0
- data/vendor/assets/javascripts/aloha/plugins/common/dom-to-xhtml/lib/dom-to-xhtml.js +306 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/lib/format-plugin.js +59 -5
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/i18n.js +1 -1
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/lib/horizontalruler-plugin.js +18 -3
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/crop-buttons.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/lib/image-plugin.js +1629 -1601
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jquery.jcrop.css +11 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/extra/linklist.js +8 -6
- data/vendor/assets/javascripts/aloha/plugins/common/link/lib/link-plugin.js +26 -10
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/de/i18n.js +5 -1
- data/vendor/assets/javascripts/aloha/plugins/common/paste/lib/paste-plugin.js +3 -4
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-cell.js +13 -12
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin.js +108 -61
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-selection.js +61 -1
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/de/i18n.js +28 -1
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/i18n.js +36 -10
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browser.jqgrid.css +292 -292
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/browser.js +28 -5
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/locale.js +2 -2
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.de.js +6 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.en.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jqGrid.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jstree.js +6 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.ui.js +6 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/ui-layout.js +6 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/lib/cite-plugin.js +18 -4
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js +1 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js +14 -2
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/js/aloha-config.js +2 -2
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/lib/toc-plugin.js +382 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/nls/de/i18n.js +3 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/nls/i18n.js +4 -0
- metadata +15 -11
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/de.json +0 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/en.json +0 -1
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/src/toc.js +0 -350
@@ -19,6 +19,16 @@
|
|
19
19
|
*/
|
20
20
|
|
21
21
|
// define jquery and ext modules. They need to be available in global namespace
|
22
|
-
define('aloha/jquery',[], function() {
|
22
|
+
define('aloha/jquery',[], function() {
|
23
|
+
// Work-around for http://bugs.jquery.com/ticket/9905
|
24
|
+
// and https://github.com/alohaeditor/Aloha-Editor/issues/397
|
25
|
+
if ( !Aloha.jQuery.support.getSetAttribute ) {
|
26
|
+
( function( global ) {
|
27
|
+
Aloha.jQuery.removeAttr = function( elem, name ) {
|
28
|
+
elem.removeAttribute( name );
|
29
|
+
};
|
30
|
+
}( Aloha ));
|
31
|
+
}
|
32
|
+
|
23
33
|
return Aloha.jQuery;
|
24
34
|
});
|
@@ -18,13 +18,224 @@
|
|
18
18
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
19
|
*/
|
20
20
|
|
21
|
-
define(
|
22
|
-
|
23
|
-
|
21
|
+
define([
|
22
|
+
'aloha/core',
|
23
|
+
'util/class',
|
24
|
+
'aloha/jquery',
|
25
|
+
'aloha/ecma5shims'
|
26
|
+
],
|
27
|
+
function( Aloha, Class, jQuery, shims ) {
|
28
|
+
|
24
29
|
|
25
30
|
|
26
31
|
var GENTICS = window.GENTICS;
|
27
32
|
|
33
|
+
var isOldIE = !!( jQuery.browser.msie &&
|
34
|
+
9 > parseInt( jQuery.browser.version, 10 ) );
|
35
|
+
|
36
|
+
function isBR( node ) {
|
37
|
+
return 'BR' === node.nodeName;
|
38
|
+
}
|
39
|
+
|
40
|
+
function isBlock( node ) {
|
41
|
+
return 'false' === jQuery( node ).attr( 'contenteditable' );
|
42
|
+
}
|
43
|
+
|
44
|
+
function isTextNode( node ) {
|
45
|
+
return node && 3 === node.nodeType; // Node.TEXT_NODE
|
46
|
+
}
|
47
|
+
|
48
|
+
function nodeLength( node ) {
|
49
|
+
return !node ? 0
|
50
|
+
: ( isTextNode( node ) ? node.length
|
51
|
+
: node.childNodes.length );
|
52
|
+
}
|
53
|
+
|
54
|
+
function nextVisibleNode( node ) {
|
55
|
+
if ( !node ) {
|
56
|
+
return null;
|
57
|
+
}
|
58
|
+
|
59
|
+
if ( node.nextSibling ) {
|
60
|
+
// Skip over nodes that the user cannot see ...
|
61
|
+
if ( isTextNode( node.nextSibling ) &&
|
62
|
+
!isVisibleTextNode( node.nextSibling ) ) {
|
63
|
+
return nextVisibleNode( node.nextSibling );
|
64
|
+
}
|
65
|
+
|
66
|
+
// Skip over propping <br>s ...
|
67
|
+
if ( isBR( node.nextSibling ) &&
|
68
|
+
node.nextSibling === node.parentNode.lastChild ) {
|
69
|
+
return nextVisibleNode( node.nextSibling );
|
70
|
+
}
|
71
|
+
|
72
|
+
// Skip over empty editable elements ...
|
73
|
+
if ( '' === node.nextSibling.innerHTML &&
|
74
|
+
!isBlock( node.nextSibling ) ) {
|
75
|
+
return nextVisibleNode( node.nextSibling );
|
76
|
+
}
|
77
|
+
|
78
|
+
return node.nextSibling;
|
79
|
+
}
|
80
|
+
|
81
|
+
if ( node.parentNode ) {
|
82
|
+
return nextVisibleNode( node.parentNode );
|
83
|
+
}
|
84
|
+
|
85
|
+
return null;
|
86
|
+
}
|
87
|
+
|
88
|
+
function prevVisibleNode( node ) {
|
89
|
+
if ( !node ) {
|
90
|
+
return null;
|
91
|
+
}
|
92
|
+
|
93
|
+
if ( node.previousSibling ) {
|
94
|
+
// Skip over nodes that the user cannot see...
|
95
|
+
if ( isTextNode( node.previousSibling ) &&
|
96
|
+
!isVisibleTextNode( node.previousSibling ) ) {
|
97
|
+
return prevVisibleNode( node.previousSibling );
|
98
|
+
}
|
99
|
+
|
100
|
+
// Skip over empty editable elements ...
|
101
|
+
if ( '' === node.previousSibling.innerHTML &&
|
102
|
+
!isBlock( node.previousSibling ) ) {
|
103
|
+
return prevVisibleNode( node.previouSibling );
|
104
|
+
}
|
105
|
+
|
106
|
+
return node.previousSibling;
|
107
|
+
}
|
108
|
+
|
109
|
+
if ( node.parentNode ) {
|
110
|
+
return prevVisibleNode( node.parentNode );
|
111
|
+
}
|
112
|
+
|
113
|
+
return null;
|
114
|
+
}
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Determines whether the given text node is visible to the the user,
|
118
|
+
* based on our understanding that browsers will not display
|
119
|
+
* superfluous white spaces.
|
120
|
+
*
|
121
|
+
* @param {HTMLEmenent} node The text node to be checked.
|
122
|
+
*/
|
123
|
+
function isVisibleTextNode( node ) {
|
124
|
+
return 0 < node.data.replace( /\s+/g, '' ).length;
|
125
|
+
}
|
126
|
+
|
127
|
+
function isFrontPosition( node, offset ) {
|
128
|
+
return ( 0 === offset ) ||
|
129
|
+
( offset <= node.data.length -
|
130
|
+
node.data.replace( /^\s+/, '' ).length );
|
131
|
+
}
|
132
|
+
|
133
|
+
function isBlockInsideEditable( $block ) {
|
134
|
+
return $block.parent().hasClass( 'aloha-editable' );
|
135
|
+
}
|
136
|
+
|
137
|
+
function isEndPosition( node, offset ) {
|
138
|
+
var length = nodeLength( node );
|
139
|
+
|
140
|
+
if ( length === offset ) {
|
141
|
+
return true;
|
142
|
+
}
|
143
|
+
|
144
|
+
var isText = isTextNode( node );
|
145
|
+
|
146
|
+
// If within a text node, then ignore superfluous white-spaces,
|
147
|
+
// since they are invisible to the user.
|
148
|
+
if ( isText &&
|
149
|
+
node.data.replace( /\s+$/, '' ).length === offset ) {
|
150
|
+
return true;
|
151
|
+
}
|
152
|
+
|
153
|
+
if ( 1 === length && !isText ) {
|
154
|
+
return isBR( node.childNodes[0] );
|
155
|
+
}
|
156
|
+
|
157
|
+
return false;
|
158
|
+
}
|
159
|
+
|
160
|
+
function blink( node ) {
|
161
|
+
jQuery( node )
|
162
|
+
.stop( true )
|
163
|
+
.css({ opacity: 0 })
|
164
|
+
.fadeIn( 0 ).delay( 100 )
|
165
|
+
.fadeIn(function () {
|
166
|
+
jQuery( node ).css({ opacity: 1 });
|
167
|
+
});
|
168
|
+
|
169
|
+
return node;
|
170
|
+
}
|
171
|
+
|
172
|
+
/**
|
173
|
+
* @TODO(petro): We need to be more intelligent about whether we insert a
|
174
|
+
* block-level placeholder or a phrasing level element.
|
175
|
+
* @TODO(petro): test with <pre>
|
176
|
+
*/
|
177
|
+
function jumpBlock( block, isGoingLeft ) {
|
178
|
+
var range = new GENTICS.Utils.RangeObject();
|
179
|
+
var sibling = isGoingLeft ? prevVisibleNode( block )
|
180
|
+
: nextVisibleNode( block );
|
181
|
+
|
182
|
+
if ( !sibling || isBlock( sibling ) ) {
|
183
|
+
var $landing = jQuery( '<div> </div>' );
|
184
|
+
|
185
|
+
if ( isGoingLeft ) {
|
186
|
+
jQuery( block ).before( $landing );
|
187
|
+
} else {
|
188
|
+
jQuery( block ).after( $landing );
|
189
|
+
}
|
190
|
+
|
191
|
+
range.startContainer = range.endContainer = $landing[0];
|
192
|
+
range.startOffset = range.endOffset = 0;
|
193
|
+
|
194
|
+
// Clear out any old placeholder first ...
|
195
|
+
cleanupPlaceholders( range );
|
196
|
+
|
197
|
+
window.$_alohaPlaceholder = $landing;
|
198
|
+
} else {
|
199
|
+
range.startContainer = range.endContainer = sibling;
|
200
|
+
range.startOffset = range.endOffset = isGoingLeft ?
|
201
|
+
nodeLength( sibling ) : ( isOldIE ? 1 : 0 );
|
202
|
+
|
203
|
+
cleanupPlaceholders( range );
|
204
|
+
}
|
205
|
+
|
206
|
+
range.select();
|
207
|
+
|
208
|
+
Aloha.trigger( 'aloha-block-selected', block );
|
209
|
+
Aloha.Selection.preventSelectionChanged();
|
210
|
+
}
|
211
|
+
|
212
|
+
function nodeContains( node1, node2 ) {
|
213
|
+
return isOldIE ? ( shims.compareDocumentPosition( node1, node2 ) & 16 )
|
214
|
+
: 0 < jQuery( node1 ).find( node2 ).length;
|
215
|
+
}
|
216
|
+
|
217
|
+
function isInsidePlaceholder( range ) {
|
218
|
+
var start = range.startContainer;
|
219
|
+
var end = range.endContainer;
|
220
|
+
var $placeholder = window.$_alohaPlaceholder;
|
221
|
+
|
222
|
+
return $placeholder.is( start ) ||
|
223
|
+
$placeholder.is( end ) ||
|
224
|
+
nodeContains( $placeholder[0], start ) ||
|
225
|
+
nodeContains( $placeholder[0], end );
|
226
|
+
}
|
227
|
+
|
228
|
+
function cleanupPlaceholders( range ) {
|
229
|
+
if ( window.$_alohaPlaceholder && !isInsidePlaceholder( range ) ) {
|
230
|
+
if ( 0 === window.$_alohaPlaceholder.html()
|
231
|
+
.replace( /^( )*$/, '' ).length ) {
|
232
|
+
window.$_alohaPlaceholder.remove();
|
233
|
+
}
|
234
|
+
|
235
|
+
window.$_alohaPlaceholder = null;
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
28
239
|
/**
|
29
240
|
* Markup object
|
30
241
|
*/
|
@@ -106,9 +317,14 @@ Aloha.Markup = Class.extend( {
|
|
106
317
|
}
|
107
318
|
}
|
108
319
|
|
109
|
-
//
|
320
|
+
// LEFT (37), RIGHT (39) keys for block detection
|
110
321
|
if ( event.keyCode === 37 || event.keyCode === 39 ) {
|
111
|
-
|
322
|
+
if ( this.processCursor( rangeObject, event.keyCode ) ) {
|
323
|
+
cleanupPlaceholders( Aloha.Selection.rangeObject );
|
324
|
+
return true;
|
325
|
+
}
|
326
|
+
|
327
|
+
return false;
|
112
328
|
}
|
113
329
|
|
114
330
|
// BACKSPACE
|
@@ -139,55 +355,117 @@ Aloha.Markup = Class.extend( {
|
|
139
355
|
},
|
140
356
|
|
141
357
|
/**
|
142
|
-
* Processing of cursor keys
|
143
|
-
*
|
144
|
-
*
|
358
|
+
* Processing of cursor keys.
|
359
|
+
* Detect blocks (elements with contenteditable=false) and will select them
|
360
|
+
* (normally the cursor would simply jump right past them).
|
145
361
|
*
|
146
|
-
* For each block an 'aloha-block-selected' event will be
|
362
|
+
* For each block that is selected, an 'aloha-block-selected' event will be
|
363
|
+
* triggered.
|
147
364
|
*
|
148
|
-
* @param range the current
|
149
|
-
* @param
|
150
|
-
* @return
|
365
|
+
* @param {RangyRange} range A range object for the current selection.
|
366
|
+
* @param {number} keyCode Code of the currently pressed key.
|
367
|
+
* @return {boolean} False if a block was found, to prevent further events,
|
368
|
+
* true otherwise.
|
151
369
|
*/
|
152
370
|
processCursor: function( range, keyCode ) {
|
153
|
-
var rt = range.getRangeTree(), // RangeTree reference
|
154
|
-
i = 0,
|
155
|
-
cursorLeft = keyCode === 37,
|
156
|
-
cursorRight = keyCode === 39,
|
157
|
-
nextSiblingIsBlock = false, // check whether the next sibling is a block (contenteditable = false)
|
158
|
-
cursorIsWithinBlock = false, // check whether the cursor is positioned within a block (contenteditable = false)
|
159
|
-
cursorAtLastPos = false, // check if the cursor is within the last position of the currently active dom element
|
160
|
-
obj; // will contain references to dom objects
|
161
|
-
|
162
371
|
if ( !range.isCollapsed() ) {
|
163
372
|
return true;
|
164
373
|
}
|
165
374
|
|
166
|
-
|
167
|
-
if ( typeof rt[i].domobj === 'undefined'
|
168
|
-
|| range.startOffset === rt[i].domobj.length ) {
|
169
|
-
continue;
|
170
|
-
}
|
375
|
+
var node = range.startContainer;
|
171
376
|
|
172
|
-
|
173
|
-
|
377
|
+
if ( !node ) {
|
378
|
+
return true;
|
379
|
+
}
|
174
380
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
381
|
+
var sibling;
|
382
|
+
|
383
|
+
// Versions of Internet Explorer that are older that 9, will
|
384
|
+
// erroneously allow you to enter and edit inside elements which have
|
385
|
+
// their contenteditable attribute set to false...
|
386
|
+
if ( isOldIE ) {
|
387
|
+
var $parentBlock = jQuery( node ).parents(
|
388
|
+
'[contenteditable=false]' );
|
389
|
+
var isInsideBlock = $parentBlock.length > 0;
|
390
|
+
|
391
|
+
if ( isInsideBlock ) {
|
392
|
+
if ( isBlockInsideEditable( $parentBlock ) ) {
|
393
|
+
sibling = $parentBlock[0];
|
394
|
+
} else {
|
395
|
+
return true;
|
396
|
+
}
|
181
397
|
}
|
398
|
+
}
|
399
|
+
|
400
|
+
if ( !sibling ) {
|
401
|
+
// True if keyCode denotes LEFT or UP arrow key, otherwise they
|
402
|
+
// keyCode is for RIGHT or DOWN in which this value will be false.
|
403
|
+
var isLeft = (37 === keyCode || 38 === keyCode);
|
404
|
+
var offset = range.startOffset;
|
405
|
+
|
406
|
+
if ( isTextNode( node ) ) {
|
407
|
+
if ( isLeft ) {
|
408
|
+
// FIXME(Petro): Please consider if you have a better idea
|
409
|
+
// of how we can work around this.
|
410
|
+
//
|
411
|
+
// Here is the problem... with Internet Explorer:
|
412
|
+
// ----------------------------------------------
|
413
|
+
//
|
414
|
+
// Versions of Internet Explorer older than 9, are buggy in
|
415
|
+
// how they `select()', or position a selection from cursor
|
416
|
+
// movements, when the following conditions are true:
|
417
|
+
//
|
418
|
+
// * The range is collapsed.
|
419
|
+
// * startContainer is a contenteditable text node.
|
420
|
+
// * startOffset is 1.
|
421
|
+
// * There is a non-conenteditable element left of the
|
422
|
+
// startContainer.
|
423
|
+
// * You attempt to move left to offset 0 (we consider a
|
424
|
+
// range to be at "frontposition" if it is at offset 0
|
425
|
+
// within its startContainer).
|
426
|
+
//
|
427
|
+
// What happens in IE 7, and IE 8, is that the selection
|
428
|
+
// will jump to the adjacent non-contenteditable
|
429
|
+
// element(s), instead moving to the front of the
|
430
|
+
// container, and the offset will be stuck at 1--even as
|
431
|
+
// the cursor is jumping around the screen!
|
432
|
+
//
|
433
|
+
// Our imperfect work-around is to reckon ourselves to be
|
434
|
+
// at the front of the next node (ie: offset 0 in other
|
435
|
+
// browsers), as soon as we detect that we are at offset 1
|
436
|
+
// in IEv<9.
|
437
|
+
//
|
438
|
+
// Considering the bug, I think this is acceptable because
|
439
|
+
// the user can still position themselve right between the
|
440
|
+
// block (non-contenteditable element) and the first
|
441
|
+
// characater of the text node by clicking there with the
|
442
|
+
// mouse, since this seems to work fine in all IE versions.
|
443
|
+
var isFrontPositionInIE = isOldIE && 1 === offset;
|
444
|
+
|
445
|
+
if ( !isFrontPositionInIE &&
|
446
|
+
!isFrontPosition( node, offset ) ) {
|
447
|
+
return true;
|
448
|
+
}
|
182
449
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
450
|
+
} else if ( !isEndPosition( node, offset ) ) {
|
451
|
+
return true;
|
452
|
+
}
|
453
|
+
|
454
|
+
} else {
|
455
|
+
node = node.childNodes[
|
456
|
+
offset === nodeLength( node ) ? offset - 1 : offset ];
|
189
457
|
}
|
458
|
+
|
459
|
+
sibling = isLeft ? prevVisibleNode( node )
|
460
|
+
: nextVisibleNode( node );
|
190
461
|
}
|
462
|
+
|
463
|
+
if ( isBlock( sibling ) ) {
|
464
|
+
jumpBlock( sibling, isLeft );
|
465
|
+
return false;
|
466
|
+
}
|
467
|
+
|
468
|
+
return true;
|
191
469
|
},
|
192
470
|
|
193
471
|
/**
|
@@ -35,6 +35,7 @@ define( [
|
|
35
35
|
Aloha.RepositoryManager = Class.extend( {
|
36
36
|
|
37
37
|
repositories : [],
|
38
|
+
settings: {},
|
38
39
|
|
39
40
|
/**
|
40
41
|
* Initialize all registered repositories
|
@@ -51,15 +52,15 @@ define( [
|
|
51
52
|
var repositories = this.repositories,
|
52
53
|
i = 0,
|
53
54
|
j = repositories.length,
|
54
|
-
repository
|
55
|
-
settings;
|
55
|
+
repository;
|
56
56
|
|
57
57
|
if ( Aloha.settings && Aloha.settings.repositories ) {
|
58
|
-
settings = Aloha.settings.repositories;
|
59
|
-
} else {
|
60
|
-
settings = {};
|
58
|
+
this.settings = Aloha.settings.repositories;
|
61
59
|
}
|
62
|
-
|
60
|
+
|
61
|
+
// use the configured repository manger query timeout or 5 sec
|
62
|
+
this.settings.timeout = this.settings.timeout || 5000;
|
63
|
+
|
63
64
|
for ( ; i < j; ++i ) {
|
64
65
|
repository = repositories[ i ];
|
65
66
|
|
@@ -67,10 +68,10 @@ define( [
|
|
67
68
|
repository.settings = {};
|
68
69
|
}
|
69
70
|
|
70
|
-
if ( settings[ repository.repositoryId ] ) {
|
71
|
+
if ( this.settings[ repository.repositoryId ] ) {
|
71
72
|
jQuery.extend(
|
72
73
|
repository.settings,
|
73
|
-
settings[ repository.repositoryId ]
|
74
|
+
this.settings[ repository.repositoryId ]
|
74
75
|
);
|
75
76
|
}
|
76
77
|
|
@@ -241,7 +242,7 @@ define( [
|
|
241
242
|
// respond. 5 seconds is deemed to be the reasonable time to wait
|
242
243
|
// when querying the repository manager in the context of something
|
243
244
|
// like autocomplete
|
244
|
-
var timeout = parseInt( params.timeout, 10 ) ||
|
245
|
+
var timeout = parseInt( params.timeout, 10 ) || this.settings.timeout;
|
245
246
|
timer = setTimeout( function() {
|
246
247
|
numOpenCallbacks = 0;
|
247
248
|
that.queryCallback( callback, allitems, allmetainfo, timer );
|
@@ -405,7 +406,7 @@ define( [
|
|
405
406
|
repositories = this.repositories;
|
406
407
|
}
|
407
408
|
|
408
|
-
var timeout = parseInt( params.timeout, 10 ) ||
|
409
|
+
var timeout = parseInt( params.timeout, 10 ) || this.settings.timeout;
|
409
410
|
timer = setTimeout( function() {
|
410
411
|
numOpenCallbacks = 0;
|
411
412
|
that.getChildrenCallback( callback, allitems, timer );
|