There's a small UI issue with the merit-sending page that makes it easier than it should be to accidentally send more merit than you intended (I'm sure I've run into a handful of anecdotes about this, but I can't find them now).
Basically, the "Merit points" field is pre-populated with a 0, like this:
People are used to having to get rid of that 0 before entering an amount (or, they have to make sure that the amount they enter is
after that 0). Sometimes, people are careless or tired, and accidentally enter something on the wrong side of that 0 (maybe believing that they've already deleted or selected it after mis-hitting a key, or something), and they end up sending more merit than they meant to (that is, sending 10, 20, 30, 40 or 50 merits by mistake is an easier thing to do than it should be).
For comparison with what follows, the current HTML for that input looks like this:
<input type="text" size="6" name="merits" value="0">.
Here are some ways that I think this could be improved:
Approach AThis approach would leave the field initially empty so that there's no 0 there to trip anyone up.
That would look like this:
The HTML would change to:
<input type="text" size="6" name="merits"> (that is,
value="0" would be removed).
Approach BThis approach would add a bit of JavaScript that "selects" the value whenever it's clicked, that way, whatever you type in will replace whatever was already there.
That would look like this (after clicking):
The HTML would change to:
<input type="text" size="6" name="merits" value="0" onclick="this.select();"> (that is,
onclick="this.select();" would be added).
Approach CThis approach would leave the 0 there, but make it "placeholder" text instead of actual text, that way, it's just there as a cue, but the field is actually empty (the 0 will disappear as soon as you type something in).
That would look like this:
The HTML would change to:
<input type="text" size="6" name="merits" placeholder="0"> (that is,
value="0" would change to
placeholder="0").
Closing thoughtsOne disadvantage of approach A is that it leaves the user wondering what they're meant to type in (that's obviously not an issue for people that have sent merit before, but I could see brand new users getting confused without any cues to help them).
One disadvantage of approach B is that it requires JavaScript to function, and there's a (pretty small in this case, IMHO) chance that cross-browser weirdness will make it unreliable. One
advantage of approach B is that it will catch a wider range of mistakes (sometimes people initially decide to send 1 merit, and then change that to a 2, but actually end up sending 12 or 21, by mistake. If the entire value gets selected each time you click the input, then those kinds of mistakes would be much harder to make).
Approach C won't catch as many mistakes as approach B, but it's simple, won't leave new users confused, and doesn't need JavaScript to work.
I would have included PHP diffs with this post, but I don't have access to the relevant code, so all I can do this time around is make suggestions like a noob.
(I'm taking a break from the forum, but I'll be back on the 27th; try not to miss me too much.)