Your website visitors made the effort of voting on your site, now let's reward them with points.
Install these modules first
(these versions or higher)
Voting API 7.x-2.4
Fivestar 7.x-2.0-alpha1 (or another voting thingy that works with Voting API)
Voting Rules 7.x-1.0-alpha1
User Points 7.x-1.0
Be sure to enable Userpoints rules Integration (its part of the Userpoints module).
Adding Fivestar
Add a Fivestar Rating Field to the content type you'd like to rate.
Creating the Rule
Go to /admin/config/workflow/rules and add a new Rule:
You can name ot whatever you like, in this example we'll call it 'user votes on a node'.
Select 'Voting API -> User votes on a Node' as event and save.
Now as a Rule event select 'Points-> Grant points to a user'
As user Data selector type (or click) site:current-user and input the points value, points category value, operation value, description value and moderate value:
and save.
Don't forget to add a Rule condition that says 'node is of type' or 'Entity has Field' if you only want votes on certain nodes to be awarded with points.
And that was the last step already.
When voting the user gets points!
Cheat codes
There is a huge 'cheat' option in this system: your user can now vote multiple times on one node and get points for it every time.
I currently found no way to check if the user already voted on a certain node other than to add a user Flag that indicates if a certain user already voted on the node.
Doing it 'the Flag way' basically you set a flag that says 'this this user voted on this node'. Check before giving userpoints if that flag is set, and if so, don't give them the points. All throught Rules.
open issues that try to solve this:
Voting API http://drupal.org/node/1269614
Voting Rules http://drupal.org/node/981794
Rule Export
Here's the Rule I created for this tutorial. It applies to the standard Article content type.
{ "rules_user_votes_on_a_node" : {
"LABEL" : "User votes on a node",
"PLUGIN" : "reaction rule",
"REQUIRES" : [ "rules", "userpoints_rules", "voting_rules" ],
"ON" : [ "voting_rules_insert_node" ],
"IF" : [
{ "node_is_of_type" : { "node" : [ "node" ], "type" : { "value" : { "article" : "article" } } } }
],
"DO" : [
{ "userpoints_action_grant_points" : {
"user" : [ "site:current-user" ],
"points" : "10",
"tid" : "0",
"entity" : [ "" ],
"description" : "Rewarded points for voting on an article",
"operation" : "Insert",
"display" : 1,
"moderate" : "approved"
}
}
]
}
}