voteable_taylor 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/voteable_taylor.rb +59 -0
  3. metadata +43 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9866eac455a06bb09f91cf15004fc9faef692f0a
4
+ data.tar.gz: 9b95425ea852c1220ce0551a4112c11ff4021bf5
5
+ SHA512:
6
+ metadata.gz: 35a187434ba98d849cfef112a20e6331fe50b81394098418c1a66a5d5ea755e190eb0f7dac1889e3b51a3f2ab5a22f73c433676ce2b90e1047d4a874caeb3604
7
+ data.tar.gz: bb9977783f56eec7a020dec3ba1bb66d377e08330a3690f19dd837577004e9827e2c9404e3caeddf3136bd5c17d316486757574322bfd173133f9c43baeea894
@@ -0,0 +1,59 @@
1
+ module Voteable
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ has_many :votes, as: :voteable
6
+ end
7
+
8
+ attr_reader :html_message, :js_message, :fade_in, :fade_out
9
+
10
+ def vote_total
11
+ up_votes - down_votes
12
+ end
13
+
14
+ def up_votes
15
+ self.votes.where(vote: true).size
16
+ end
17
+
18
+ def down_votes
19
+ self.votes.where(vote: false).size
20
+ end
21
+
22
+ def process_vote(vote_value, session_id)
23
+ if exist_vote = self.votes.find_by(user_id: session_id)
24
+ if exist_vote.vote.to_s == vote_value
25
+ set_vote_params and return
26
+ else
27
+ exist_vote.delete
28
+ set_vote_params(vote_value, :remove) and return
29
+ end
30
+ end
31
+
32
+ vote = self.votes.create(vote: vote_value, user_id: session_id)
33
+
34
+ if vote.valid?
35
+ set_vote_params(vote_value, :add)
36
+ else
37
+ set_vote_params
38
+ end
39
+ end
40
+
41
+ def set_vote_params(vote_value=nil, type=nil)
42
+ if type == :remove
43
+ @js_message = "Vote<br>removed".html_safe
44
+ @html_message = "Your previous vote has been removed."
45
+ @fade_in = vote_value == "true" ? ".icon-arrow-down" : ".icon-arrow-up"
46
+ @fade_out = "#no_id"
47
+ elsif type == :add
48
+ @js_message = "Vote<br>counted".html_safe
49
+ @html_message = "Your vote has been counted."
50
+ @fade_in = "#no_id"
51
+ @fade_out = vote_value == "false" ? ".icon-arrow-down" : ".icon-arrow-up"
52
+ else
53
+ @js_message = "Vote<br>not<br>counted".html_safe
54
+ @html_message = "Your vote could not be counted."
55
+ @fade_in = @fade_out = "#no_id"
56
+ end
57
+ end
58
+
59
+ end
metadata ADDED
@@ -0,0 +1,43 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: voteable_taylor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Taylor Peat
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Voting gem where votes can be added and removed.
14
+ email: taylorpeat@outlook.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/voteable_taylor.rb
20
+ homepage: http://github.com
21
+ licenses: []
22
+ metadata: {}
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ required_rubygems_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ requirements: []
38
+ rubyforge_project:
39
+ rubygems_version: 2.5.0
40
+ signing_key:
41
+ specification_version: 4
42
+ summary: A voting gem
43
+ test_files: []