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.
- checksums.yaml +7 -0
- data/lib/voteable_taylor.rb +59 -0
- metadata +43 -0
checksums.yaml
ADDED
|
@@ -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: []
|