It gives you the ability to vote on topics in a specified category. To enable it, edit any category, look on the settings tab for the “Allow users to vote on topics in this category” checkbox:
Once enabled, the topics in that category can be voted on with the count of votes added next to the topic title.
The vote count is also included next to the title when scrolled.
To make it easier to see vote counts from a topic list, the vote count is also added under the topic titles.
Here are the views you’ll see given different states of the user and topic:
There is also a section in the user’s profile page that displays their active votes:
A few points about the backend:
- The number of active votes is configurable and defaults to 10.
- If the topic is closed or archived, the votes are released to the users and can be applied to other topics but the vote count on the topic remains.
- If a topic is re-opened or unarchived, the votes are reclaimed and applied back to the users active vote count.
- If a topic reclaims the votes of a user and they go over their limit, they simply need to wait until topics are closed or archived to allow them to vote again.
You can find the repo here:
A couple things I’m interested in as next steps:
- Create a section for the user to see their active and archived votes.
- Allow moderators/staff/admins to see who has voted on a topic.
Data Explorer Queries
List people who voted for a topic along with their email addresses:
-- [params] -- int :topic_id = 1 SELECT user_custom_fields.user_id, email FROM user_custom_fields LEFT JOIN user_emails ON user_custom_fields.user_id = user_emails.user_id WHERE name IN ('votes', 'votes_archive') AND value = (:topic_id)::text