@@ -14,6 +14,8 @@ module OrderableOverride
1414
1515 private
1616
17+ alias_method :decidim_original_reorder , :reorder
18+
1719 # read order from session if available
1820 def order
1921 @order ||= detect_order ( session [ :order ] ) || default_order
@@ -31,38 +33,23 @@ def possible_orders
3133 end
3234 end
3335
34- # rubocop:disable Metrics/CyclomaticComplexity
3536 def reorder ( proposals )
37+ title_by_locale = Arel . sql ( proposals . sanitize_sql ( [ "decidim_proposals_proposals.title->>? #{ collation } " , locale ] ) )
38+ title_by_machine_translation = Arel . sql ( proposals . sanitize_sql ( [ "decidim_proposals_proposals.title->'machine_translations'->>? #{ collation } " , locale ] ) )
39+ title_by_default_locale = Arel . sql ( proposals . sanitize_sql ( [ "decidim_proposals_proposals.title->>? #{ collation } " , default_locale ] ) )
3640 case order
3741 when "az"
38- proposals . order ( Arel . sql ( "CONCAT(decidim_proposals_proposals.title->>'#{ locale } ',
39- decidim_proposals_proposals.title->'machine_translations'->>'#{ locale } ',
40- decidim_proposals_proposals.title->>'#{ default_locale } ') #{ collation } ASC" ) )
42+ proposals . order ( title_by_locale => :asc , title_by_machine_translation => :asc , title_by_default_locale => :asc )
4143 when "za"
42- proposals . order ( Arel . sql ( "CONCAT(decidim_proposals_proposals.title->>'#{ locale } ',
43- decidim_proposals_proposals.title->'machine_translations'->>'#{ locale } ',
44- decidim_proposals_proposals.title->>'#{ default_locale } ') #{ collation } DESC" ) )
44+ proposals . order ( title_by_locale => :desc , title_by_machine_translation => :desc , title_by_default_locale => :desc )
4545 when "supported_first"
4646 proposals . joins ( my_votes_join ) . group ( :id ) . order ( Arel . sql ( "COUNT(decidim_proposals_proposal_votes.id) DESC" ) )
4747 when "supported_last"
4848 proposals . joins ( my_votes_join ) . group ( :id ) . order ( Arel . sql ( "COUNT(decidim_proposals_proposal_votes.id) ASC" ) )
49- when "most_commented"
50- proposals . left_joins ( :comments ) . group ( :id ) . order ( Arel . sql ( "COUNT(decidim_comments_comments.id) DESC" ) )
51- when "most_endorsed"
52- proposals . order ( endorsements_count : :desc )
53- when "most_followed"
54- proposals . left_joins ( :follows ) . group ( :id ) . order ( Arel . sql ( "COUNT(decidim_follows.id) DESC" ) )
55- when "most_voted"
56- proposals . order ( proposal_votes_count : :desc )
57- when "random"
58- proposals . order_randomly ( random_seed )
59- when "recent"
60- proposals . order ( published_at : :desc )
61- when "with_more_authors"
62- proposals . order ( coauthorships_count : :desc )
49+ else
50+ decidim_original_reorder ( proposals )
6351 end
6452 end
65- # rubocop:enable Metrics/CyclomaticComplexity
6653
6754 def collation
6855 @collation ||= begin
0 commit comments