@@ -25,13 +25,19 @@ function get_selection() {
2525
2626function move_to ( target_pk , selection ) {
2727 selection . folders = selection . folders . filter ( function ( pk ) { return pk != target_pk ; } ) ;
28- var data = {
29- csrfmiddlewaretoken : getCSRFtoken ( ) ,
30- project : project_pk ,
31- parent : target_pk ,
32- folders : selection . folders ,
33- items : selection . items
28+ var fd = new FormData ( ) ;
29+ fd . set ( 'csrfmiddlewaretoken' , getCSRFtoken ( ) ) ;
30+ fd . set ( 'project' , project_pk ) ;
31+ if ( target_pk > 0 ) {
32+ fd . set ( 'parent' , target_pk ) ;
3433 }
34+ for ( let folder of selection . folders ) {
35+ fd . append ( 'folders' , folder ) ;
36+ }
37+ for ( let item of selection . items ) {
38+ fd . append ( 'items' , item ) ;
39+ }
40+
3541 var folder_rows = selection . folders . map ( function ( folder_pk ) {
3642 return document . querySelector ( '#contents .folder[data-folder="' + folder_pk + '"]' ) ;
3743 } ) ;
@@ -42,45 +48,62 @@ function move_to(target_pk,selection) {
4248 all_rows . forEach ( function ( row ) {
4349 row . classList . add ( 'moving' ) ;
4450 } )
45- $ . post ( {
46- url : Editor . url_prefix + 'folder/move' ,
47- data : data ,
48- traditional : true
51+ fetch (
52+ Editor . url_prefix + 'folder/move' ,
53+ {
54+ method : 'POST' ,
55+ body : fd ,
56+ headers : {
57+ 'Accept' : 'application/json'
58+ } ,
59+ }
60+ )
61+ . then ( r => {
62+ if ( ! r . ok ) {
63+ throw ( new Error ( r . statusText ) ) ;
64+ }
65+ return r ;
4966 } )
50- . then ( function ( r ) {
51- var moving_rows = document . querySelectorAll ( '#contents .moving' ) ;
52- for ( var i = 0 ; i < moving_rows . length ; i ++ ) {
53- moving_rows [ i ] . classList . remove ( 'moving' ) ;
54- }
55- var folder_rows = r . folders_moved . map ( function ( folder_pk ) {
56- return document . querySelector ( '#contents .folder[data-folder="' + folder_pk + '"]' ) ;
57- } ) ;
58- var item_rows = r . items_moved . map ( function ( item_pk ) {
59- return document . querySelector ( '#contents .item[data-item="' + item_pk + '"]' ) ;
60- } ) ;
61- var all_rows = folder_rows . concat ( item_rows ) . filter ( function ( row ) { return row } ) ;
62- all_rows . forEach ( function ( row ) {
63- if ( row . parentElement ) {
64- row . parentElement . removeChild ( row )
65- }
66- } ) ;
67- noty ( {
68- text : r . message ,
69- layout : 'topCenter' ,
70- } ) ;
71- num_items -= r . items_moved . length ;
72- document . getElementById ( 'num-items' ) . textContent = num_items + ' item' + ( num_items == 1 ? '' : 's' ) ;
73- if ( num_items <= 0 ) {
74- document . getElementById ( 'contents-container' ) . classList . add ( 'empty' ) ;
67+ . then ( r => r . json ( ) )
68+ . then ( function ( r ) {
69+ var moving_rows = document . querySelectorAll ( '#contents .moving' ) ;
70+ for ( var i = 0 ; i < moving_rows . length ; i ++ ) {
71+ moving_rows [ i ] . classList . remove ( 'moving' ) ;
72+ }
73+ var folder_rows = r . folders_moved . map ( function ( folder_pk ) {
74+ return document . querySelector ( '#contents .folder[data-folder="' + folder_pk + '"]' ) ;
75+ } ) ;
76+ var item_rows = r . items_moved . map ( function ( item_pk ) {
77+ return document . querySelector ( '#contents .item[data-item="' + item_pk + '"]' ) ;
78+ } ) ;
79+ var all_rows = folder_rows . concat ( item_rows ) . filter ( function ( row ) { return row } ) ;
80+ all_rows . forEach ( function ( row ) {
81+ if ( row . parentElement ) {
82+ row . parentElement . removeChild ( row )
7583 }
76- update_selection ( ) ;
77- } )
78- . fail ( function ( r ) {
79- all_rows . forEach ( function ( row ) {
80- row . classList . remove ( 'moving' ) ;
81- } ) ;
82- } )
83- ;
84+ } ) ;
85+ noty ( {
86+ text : r . message ,
87+ layout : 'topCenter' ,
88+ } ) ;
89+ num_items -= r . items_moved . length ;
90+ document . getElementById ( 'num-items' ) . textContent = num_items + ' item' + ( num_items == 1 ? '' : 's' ) ;
91+ if ( num_items <= 0 ) {
92+ document . getElementById ( 'contents-container' ) . classList . add ( 'empty' ) ;
93+ }
94+ update_selection ( ) ;
95+ } )
96+ . catch ( function ( err ) {
97+ console . log ( arguments ) ;
98+ noty ( {
99+ text : err ,
100+ layout : 'topCenter' ,
101+ type : 'error'
102+ } ) ;
103+ all_rows . forEach ( function ( row ) {
104+ row . classList . remove ( 'moving' ) ;
105+ } ) ;
106+ } ) ;
84107}
85108
86109function make_dragger ( row ) {
0 commit comments