User Tools

  • Logged in as: anonymous (anonymous)
  • Log Out

Site Tools


mantisbt:issue_voting_requirements

This is an old revision of the document!


Issue Voting Requirements

Introduction

The idea of voting is to allow users to vote on the issues that matter most to them. Given that most of the time it is good to have all features implemented and bugs fixed, users should do some choice when deciding to vote for the more important issues. Users should also be able to vote against feature requests that they believe will be of harm to the product.

Database Schema Changes

  • mantis_bug_table
    • votes_positive as integer.
    • votes_negative as integer.
  • mantis_bug_votes_table
    • issue_id
    • user_id
    • weight (can be positive or negative, typically -1 or +1), can't be 0.

Configuration Changes

  • voting_enabled (boolean, default false) - enable or disable the whole voting feature.
  • voting_place_vote_threshold (default REPORTER) - access level required for users to vote on issues.
  • voting_view_user_votes_threshold (default DEVELOPER) - access level required for users to view the users who voted and their votes.

Votes Columns

  • It should be possible to expose the positive, negative or overall votes as a column in export csv, Excel, View Issues, etc. Overall votes are positive votes minus negative votes.

View Issue Page

  • The view issues page should allow users to vote positively or negatively. Also if users have already voted before and the issue is not resolved, then they can remove their vote.
  • Display the total number of positive / negative votes (kind of thumbs-up / thumbs-down counters)
  • The list of users who voted positively or negatively are listed in the same way users monitoring the issue are listed.

The Act of Voting

  • Ensure that users can vote (i.e. have the required access level).
  • If users have voted before for this issue, and their new vote is different then remove their current vote.
  • Add a record in the votes table.
  • Update overall counters on the issue.
  • Update issue last updated timestamp.

Implementation Details

  • Deleting an issue must delete all associated votes.
  • Deleting a user must delete all associated votes, no update for last_update of the issues.
  • Implement core/vote_api.php
    • vote_add( $p_issue_id, $p_weight, $p_user_id = null )
    • vote_delete_issue_votes( $p_issue_id );
    • vote_delete_user_votes( $p_user_id );
    • vote_get_issue_votes( $p_issue_id ) - returns an array of user ids, weight.
    • vote_is_enabled( $p_project_id = ALL_PROJECTS )
    • vote_can_vote( $p_issue_id, $p_user_id = null )
    • vote_can_view_vote_details( $p_issue_id, $p_user_id = null )

Future Ideas

  • Limit the amount of votes users have
    • Users regulary get granted credits to use for voting.
    • Users get granted credits to use for voting based on certain actions (e.g. submitting an issue, adding a note, etc).
    • Users buy credits to vote.
    • Users get assigned credits manually by users above certain level.
    • Users above a certain access level bypass limits (default DEVELOPER)

Feedback

Please place any feedback here.

2007-07-31 ave : I would like to vote without changing weight sometimes just to show that 'I have reviewed the issue'. How about adding an configuration option for voting with weight=0?
mantisbt/issue_voting_requirements.1185886850.txt.gz · Last modified: 2008/10/29 04:31 (external edit)

Driven by DokuWiki