@@ -10,17 +10,22 @@ var applyMovable = function(target) {
10
10
11
11
var applyPortal = function ( target , params ) {
12
12
var destination = params . destination ;
13
- target . data ( 'portal' , function ( objectId ) { handlePortal ( destination , objectId ) ; } ) ;
13
+ target . data ( 'portal' , function ( object ) { handlePortal ( destination , object ) ; } ) ;
14
+ portals . push ( target ) ;
14
15
} ;
15
16
16
- var handlePortal = function ( destintation , objectId ) {
17
- var object = placeObjects [ objectId ] ;
18
- delete placeObjects [ 'objectId' ] ;
19
- objectState [ destination ] [ objectId ] = object ;
17
+ var handlePortal = function ( destination , object ) {
18
+ var objectId = object . attr ( 'id' ) ;
19
+ var objectSpec = placeObjects [ objectId ] ;
20
+ delete placeObjects [ objectId ] ;
21
+ objectState [ destination ] [ objectId ] = objectSpec ;
22
+ object . hide ( ) ;
20
23
saveState ( ) ;
21
24
} ;
22
25
23
26
27
+
28
+
24
29
var behaviorHandlers = {
25
30
'movable' : applyMovable ,
26
31
'portal' : applyPortal
@@ -39,6 +44,7 @@ var initialState = {
39
44
40
45
var objectState ;
41
46
var placeObjects ;
47
+ var portals = [ ] ;
42
48
43
49
var dragStop = function ( e , ui ) {
44
50
// when someone finishes dragging an object, let's update its object state
@@ -48,8 +54,26 @@ var dragStop = function(e, ui) {
48
54
placeObjects [ objectId ] . top = ui . position . top ;
49
55
placeObjects [ objectId ] . left = ui . position . left ;
50
56
57
+ handlePortals ( ui . helper , ui . position ) ;
58
+
51
59
saveState ( ) ;
52
- } ;
60
+ }
61
+
62
+ var handlePortals = function ( object , position ) {
63
+ for ( i = 0 ; i < portals . length ; i ++ )
64
+ {
65
+ var portal = portals [ i ] ;
66
+ var portalPosition = portal . offset ( ) ;
67
+
68
+ var portalBottom = portalPosition . top + portal . height ( ) ;
69
+ var portalRight = portalPosition . left + portal . width ( ) ;
70
+ if ( position . top > portalPosition . top && position . left > portalPosition . left
71
+ && position . top < portalBottom && position . left < portalRight )
72
+ {
73
+ portal . data ( 'portal' ) ( object ) ;
74
+ }
75
+ }
76
+ }
53
77
54
78
var clearSavedState = function ( ) {
55
79
createCookie ( 'thingsState' , '' , - 1 ) ;
0 commit comments