I use trac for quite a few projects of mine. Recently I tried to find a plugin for deciding which features to implement next. Usually trac hacks has something in store for that, but not this time.
I wanted to be able to create a ticket and then collect user feedback as comments for the feature, with each piece of feedback being a vote for that feature, like this:
After searching for a bit I came up with a solution by using just a report with a nicely constructed SQL query.
SELECT p.value AS __color__, t.type AS `type`, id AS ticket, count(tc.ticket) as votes, summary, component, version, milestone, t.time AS created, changetime AS _changetime, description AS _description, reporter AS _reporter FROM ticket t, ticket_change tc, enum p WHERE t.status <> 'closed' AND tc.ticket = t.id and tc.field = 'comment' and tc.newvalue like '%#vote%' AND p.name = t.priority AND p.type = 'priority' GROUP BY id, summary, component, version, milestone, t.type, owner, t.time, changetime, description, reporter, p.value, status HAVING count(tc.ticket) >= 1 ORDER BY votes DESC, milestone, t.type, t.time
So just by including “#vote” in a comment, it would count towards the number of votes. You can change this text to anything you want, of course. For example like this:
I hope this can be useful for someone else, too.