1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-14 19:02:41 +01:00
phorge-phorge/webroot/rsrc/js/application/ponder/behavior-votebox.js
epriestley 054ea7dc4a Simplify upvote/downvote implementation
Summary:
Use sigils to simplify the vote implementation and move most rendering to the server.

Use unicode glyphs in place of graphics.

Test Plan: {F19539}

Reviewers: pieter, starruler

Reviewed By: pieter

CC: aran

Maniphest Tasks: T1644

Differential Revision: https://secure.phabricator.com/D3518
2012-09-30 20:12:35 -07:00

55 lines
1.2 KiB
JavaScript

/**
* @provides javelin-behavior-ponder-votebox
* @requires javelin-behavior
* javelin-dom
* javelin-util
* javelin-stratcom
* javelin-request
*/
JX.behavior('ponder-votebox', function(config) {
function handle_vote(e, vote) {
e.kill();
var root = e.getNode('ponder-votable');
var data = e.getNodeData('ponder-votable');
if (data.vote != vote) {
data.vote = vote;
data.count += vote;
} else {
// User is undoing their vote.
data.vote = 0;
data.count -= vote;
}
var upv = JX.DOM.find(root, 'a', 'upvote');
JX.DOM.alterClass(upv, 'ponder-vote-active', (data.vote > 0));
var downv = JX.DOM.find(root, 'a', 'downvote');
JX.DOM.alterClass(downv, 'ponder-vote-active', (data.vote < 0))
JX.DOM.setContent(
JX.DOM.find(root, 'div', 'ponder-vote-count'),
data.count);
new JX.Request(e.getTarget().href, JX.bag)
.setData({vote: data.vote})
.send()
}
JX.Stratcom.listen(
'click',
'downvote',
function(e) {
handle_vote(e, -1);
});
JX.Stratcom.listen(
'click',
'upvote',
function(e) {
handle_vote(e, 1);
});
});