vote_plugin_helper.rb 941 Bytes
module VotePluginHelper

  def vote_partial(target, like = true, load_voters=false)
    vote = like ? 1 : -1
    like_action = like ? 'like' : 'dislike'
    type = target.kind_of?(Article) ? 'article' : target.kind_of?(Comment) ? 'comment' : nil

    proc do
      settings = Noosfero::Plugin::Settings.new(environment, VotePlugin)

      if settings.get_setting("enable_vote_#{type}").include?(vote)

        voters = !load_voters ? nil : target.votes.where(:vote => vote).includes(:voter).limit(settings.get_setting('voters_limit')).map(&:voter)
        active = user ? (like ? user.voted_for?(target) : user.voted_against?(target)) : false
        count = like ? target.votes_for : target.votes_against

        render(:partial => 'vote/vote', :locals => {:target => target, :active => active, :action => like_action, :count => count, :voters => voters, :vote => vote, :model => type })
      else
        ""
      end
    end
  end

end