* Add polls Fix #1629 * Add tests * Fixes * Change API for creating polls * Use name instead of content for votes * Remove poll validation for remote polls * Add polls to public pages * When updating the poll, update options just in case they were changed * Fix public pages showing both poll and other media
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class REST::PollSerializer < ActiveModel::Serializer
 | 
						|
  attributes :id, :expires_at, :expired,
 | 
						|
             :multiple, :votes_count
 | 
						|
 | 
						|
  has_many :dynamic_options, key: :options
 | 
						|
 | 
						|
  attribute :voted, if: :current_user?
 | 
						|
 | 
						|
  def id
 | 
						|
    object.id.to_s
 | 
						|
  end
 | 
						|
 | 
						|
  def dynamic_options
 | 
						|
    if !object.expired? && object.hide_totals?
 | 
						|
      object.unloaded_options
 | 
						|
    else
 | 
						|
      object.loaded_options
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def expired
 | 
						|
    object.expired?
 | 
						|
  end
 | 
						|
 | 
						|
  def voted
 | 
						|
    object.votes.where(account: current_user.account).exists?
 | 
						|
  end
 | 
						|
 | 
						|
  def current_user?
 | 
						|
    !current_user.nil?
 | 
						|
  end
 | 
						|
 | 
						|
  class OptionSerializer < ActiveModel::Serializer
 | 
						|
    attributes :title, :votes_count
 | 
						|
  end
 | 
						|
end
 |