- if opts[:owner_uuid]
- conds = []
- cond_params = []
- conds << "#{klass.table_name}.owner_uuid = ?"
- cond_params << opts[:owner_uuid]
- if opts[:include_linked]
- haslink = "#{klass.table_name}.uuid IN (SELECT head_uuid FROM links WHERE link_class=#{klass.sanitize 'name'}"
- haslink += " AND links.tail_uuid=#{klass.sanitize opts[:owner_uuid]}"
- haslink += ")"
- conds << haslink
- end
- if conds.any?
- cond_sql = '(' + conds.join(') OR (') + ')'
- @objects = @objects.where(cond_sql, *cond_params)
- end
+ end
+
+ klasses.each do |klass|
+ # If the currently requested orders specifically match the
+ # table_name for the current klass, apply that order.
+ # Otherwise, order by recency.
+ request_order =
+ request_orders.andand.find { |r| r =~ /^#{klass.table_name}\./i } ||
+ klass.default_orders.join(", ")
+
+ @select = nil
+ where_conds = {}
+ where_conds[:owner_uuid] = @object.uuid if @object
+ if klass == Collection
+ @select = klass.selectable_attributes - ["manifest_text"]
+ elsif klass == Group
+ where_conds[:group_class] = "project"