1
1
jQuery ( document ) . ready ( function ( ) {
2
- var dragSrcEl = null ;
3
-
4
- function handleDragStart ( e ) {
5
- // Target (this) element is the source node.
6
- dragSrcEl = this ;
7
-
8
- e . dataTransfer . effectAllowed = 'move' ;
9
- e . dataTransfer . setData ( 'text/html' , this . outerHTML ) ;
10
-
11
- this . classList . add ( 'dragElem' ) ;
12
- }
13
- function handleDragOver ( e ) {
14
- if ( e . preventDefault ) {
15
- e . preventDefault ( ) ; // Necessary. Allows us to drop.
16
- }
17
- this . classList . add ( 'over' ) ;
18
-
19
- e . dataTransfer . dropEffect = 'move' ; // See the section on the DataTransfer object.
20
-
21
- return false ;
22
- }
23
-
24
- function handleDragEnter ( e ) {
25
- // this / e.target is the current hover target.
26
- }
27
-
28
- function handleDragLeave ( e ) {
29
- this . classList . remove ( 'over' ) ; // this / e.target is previous target element.
30
- }
31
-
32
- function handleDrop ( e ) {
33
- // this/e.target is current target element.
34
-
35
- if ( e . stopPropagation ) {
36
- e . stopPropagation ( ) ; // Stops some browsers from redirecting.
37
- }
38
-
39
- // Don't do anything if dropping the same column we're dragging.
40
- if ( dragSrcEl != this ) {
41
-
42
- let targetRoute ;
43
- if ( e . target . localName == "a" ) {
44
- targetRoute = e . target . href
45
- } else {
46
- targetRoute = e . target . querySelector ( "a" ) . href
47
- }
48
- let targetParams = new URL ( targetRoute )
49
- var targetProperties = { }
50
- for ( const [ key , value ] of targetParams . searchParams . entries ( ) ) {
51
- targetProperties [ key ] = value
2
+ /*
3
+ page reorder and nesting support using jquery sorting plugin
4
+ */
5
+ if ( $ ( "#columns" ) . data ( "reorder-url" ) ) {
6
+ jQuery ( '#columns' ) . sortable ( {
7
+ nested : true ,
8
+ onDrop : function ( $item , container , _super ) {
9
+ // console.log("onDrop", $item, container, _super)
10
+ container . el . removeClass ( "active" ) ;
11
+ var srcProperties = {
12
+ ...$item [ 0 ] . dataset
52
13
}
53
- // console.log("targetProperties", targetProperties)
54
-
55
- var srcParams = new URL ( dragSrcEl . querySelector ( "a" ) . href )
56
- var srcProperties = { }
57
-
58
- for ( const [ key , value ] of srcParams . searchParams . entries ( ) ) {
59
- srcProperties [ key ] = value
60
- }
61
- // console.log("srcProperties", srcProperties)
62
-
63
- let project_id = srcProperties [ "project_id" ]
64
-
65
- // console.log("project_id", project_id)
14
+ var containerProperties = { ...container . el [ 0 ] . dataset }
66
15
67
16
let request = {
68
- "src_wiki_id" : srcProperties [ "wiki_id" ] ,
69
- "target_wiki_id" : targetProperties [ "wiki_id" ]
17
+ "src_wiki_id" : srcProperties [ "pageId" ] ,
18
+ "index" : $item . index ( ) ,
19
+ "parent_id" : containerProperties [ "parentId" ]
70
20
}
71
21
72
- console . log ( "request" , request )
22
+ // console.log("request", request)
23
+
73
24
74
25
$ . ajax ( {
75
- cache : false ,
76
- url : $ ( "#columns" ) . data ( "reorder-url" ) ,
77
- contentType : "application/json" ,
78
- type : "POST" ,
79
- processData : false ,
80
- data : JSON . stringify ( request ) ,
81
- success : function ( data ) {
82
- // self.refresh(data);
83
- // self.savingInProgress = false;
84
- } ,
85
- error : function ( ) {
86
- // self.app.hideLoadingIcon();
87
- // self.savingInProgress = false;
88
- } ,
89
- statusCode : {
90
- 403 : function ( data ) {
91
- window . alert ( data . responseJSON . message ) ;
92
- document . location . reload ( true ) ;
26
+ cache : false ,
27
+ url : $ ( "#columns" ) . data ( "reorder-url" ) ,
28
+ contentType : "application/json" ,
29
+ type : "POST" ,
30
+ processData : false ,
31
+ data : JSON . stringify ( request ) ,
32
+ success : function ( data ) {
33
+ // self.refresh(data);
34
+ // self.savingInProgress = false;
35
+ } ,
36
+ error : function ( ) {
37
+ // self.app.hideLoadingIcon();
38
+ // self.savingInProgress = false;
39
+ } ,
40
+ statusCode : {
41
+ 403 : function ( data ) {
42
+ window . alert ( data . responseJSON . message ) ;
43
+ document . location . reload ( true ) ;
44
+ }
93
45
}
94
- }
95
- } ) ;
96
-
97
- // Set the source column's HTML to the HTML of the column we dropped on.
98
- //alert(this.outerHTML);
99
- //dragSrcEl.innerHTML = this.innerHTML;
100
- //this.innerHTML = e.dataTransfer.getData('text/html');
101
- this . parentNode . removeChild ( dragSrcEl ) ;
102
- var dropHTML = e . dataTransfer . getData ( 'text/html' ) ;
103
- this . insertAdjacentHTML ( 'beforebegin' , dropHTML ) ;
104
- var dropElem = this . previousSibling ;
105
- addDnDHandlers ( dropElem ) ;
106
-
107
- }
108
- this . classList . remove ( 'over' ) ;
109
- return false ;
46
+ } ) ;
47
+ _super ( $item , container ) ;
48
+ } ,
49
+ } )
110
50
}
111
-
112
- function handleDragEnd ( e ) {
113
- // this/e.target is the source node.
114
- this . classList . remove ( 'over' ) ;
115
-
116
- /*[].forEach.call(cols, function (col) {
117
- col.classList.remove('over');
118
- });*/
119
- }
120
-
121
- function addDnDHandlers ( elem ) {
122
- elem . addEventListener ( 'dragstart' , handleDragStart , false ) ;
123
- elem . addEventListener ( 'dragenter' , handleDragEnter , false )
124
- elem . addEventListener ( 'dragover' , handleDragOver , false ) ;
125
- elem . addEventListener ( 'dragleave' , handleDragLeave , false ) ;
126
- elem . addEventListener ( 'drop' , handleDrop , false ) ;
127
- elem . addEventListener ( 'dragend' , handleDragEnd , false ) ;
128
-
129
- }
130
-
131
- var cols = document . querySelectorAll ( '#columns .wikipage' ) ;
132
- [ ] . forEach . call ( cols , addDnDHandlers ) ;
133
-
134
51
} ) ;
0 commit comments