@@ -17,15 +17,15 @@ def index
17
17
@submissions = [ ]
18
18
case state
19
19
when 'expired'
20
- @submissions = @feed . submissions . approved . expired
20
+ @submissions = @feed . submissions . approved . expired . reorder ( 'contents.end_time desc' )
21
21
when 'future'
22
- @submissions = @feed . submissions . approved . future
22
+ @submissions = @feed . submissions . approved . future . reorder ( 'contents.start_time' )
23
23
when 'pending'
24
- @submissions = @feed . submissions . pending
24
+ @submissions = @feed . submissions . pending . reorder ( 'contents.start_time' )
25
25
when 'denied'
26
- @submissions = @feed . submissions . denied
26
+ @submissions = @feed . submissions . denied . reorder ( 'submissions.updated_at desc' )
27
27
else
28
- @submissions = @feed . submissions . approved . active
28
+ @submissions = @feed . submissions . approved . active . reorder ( 'submissions.seq_no, submissions.id' )
29
29
state = 'active'
30
30
end
31
31
@submissions = @submissions . includes ( :content )
@@ -49,6 +49,53 @@ def index
49
49
end
50
50
end
51
51
52
+ # GET /feeds/:feed_id/submissions/1/reorder?before=
53
+ # GET /feeds/:feed_id/submissions/1/reorder?before=.js
54
+ def reorder
55
+ @submission = Submission . find ( params [ :id ] )
56
+ if cannot? ( :moderate , @feed )
57
+ head :forbidden
58
+ else
59
+ @before = Submission . find ( params [ :before ] )
60
+ if @submission . blank? || @before . blank?
61
+ head :not_found
62
+ else
63
+ @submissions = @feed . submissions . approved . active . reorder ( 'submissions.seq_no, contents.start_time' )
64
+ seq_no = 0
65
+ reserved_slot = 0
66
+ parent_seq_nos = { }
67
+ @submissions . each do |s |
68
+ # child content also has a submission record, and its seq_no should match it's parent, so skip the children here
69
+ next if s . content . parent . present?
70
+
71
+ seq_no = seq_no + 1
72
+ if s . id == @before . id
73
+ reserved_slot = seq_no
74
+ seq_no = seq_no + 1
75
+ s . seq_no = seq_no
76
+ elsif s . id == @submission . id
77
+ s . seq_no = reserved_slot
78
+ else
79
+ s . seq_no = seq_no
80
+ end
81
+ s . save
82
+
83
+ # keep track of each parent's seq_no so we can set their children
84
+ if s . content . children_count > 0
85
+ parent_seq_nos [ s . content . id ] = s . seq_no
86
+ end
87
+ end
88
+ @submissions . each do |s |
89
+ next if s . content . parent . blank?
90
+ s . seq_no = parent_seq_nos [ s . content . parent . id ]
91
+ s . save
92
+ end
93
+
94
+ head :ok
95
+ end
96
+ end
97
+ end
98
+
52
99
# GET /feeds/:feed_id/submissions/1
53
100
# GET /feeds/:feed_id/submissions/1.js
54
101
def show
0 commit comments