locomotive-aloha-rails 0.20.1.2 → 0.20.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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 );
|