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.