https://www.mediawiki.org/wiki/Special:Code/MediaWiki/113686
Revision: 113686
Author: wikinaut
Date: 2012-03-12 23:56:59 +0000 (Mon, 12 Mar 2012)
Log Message:
-----------
added method for votersto revoke their vote.
Modified Paths:
--------------
trunk/extensions/AJAXPoll/AJAXPoll.css
trunk/extensions/AJAXPoll/AJAXPoll.i18n.php
trunk/extensions/AJAXPoll/AJAXPoll.php
trunk/extensions/AJAXPoll/AJAXPoll_body.php
Modified: trunk/extensions/AJAXPoll/AJAXPoll.css
===================================================================
--- trunk/extensions/AJAXPoll/AJAXPoll.css 2012-03-12 23:53:06 UTC (rev
113685)
+++ trunk/extensions/AJAXPoll/AJAXPoll.css 2012-03-12 23:56:59 UTC (rev
113686)
@@ -23,6 +23,14 @@
font-size: 0.9em;
}
+.ajaxpoll .ajaxpoll-hover-vote {
+ background: cyan;
+}
+
+.ajaxpoll .ajaxpoll-hover-revoke {
+ background: gold;
+}
+
.ajaxpoll .ajaxpoll-answer-vote {
border: 1px solid #CCC;
width: 100%;
Modified: trunk/extensions/AJAXPoll/AJAXPoll.i18n.php
===================================================================
--- trunk/extensions/AJAXPoll/AJAXPoll.i18n.php 2012-03-12 23:53:06 UTC (rev
113685)
+++ trunk/extensions/AJAXPoll/AJAXPoll.i18n.php 2012-03-12 23:56:59 UTC (rev
113686)
@@ -24,6 +24,8 @@
'ajaxpoll-info' => 'There {{PLURAL:$1|was one vote|were $1 votes}}
since the poll was created on $2.',
'ajaxpoll-submitting' => 'Please wait, submitting your vote.',
'ajaxpoll-vote-permission' => 'You are not entitled to vote.',
+ 'ajaxpoll-revoke-vote' => 'I want to revoke my vote',
+ 'ajaxpoll-vote-revoked' => 'You succesfully revoked your vote.',
'right-ajaxpoll-vote' => 'Can vote in AJAX-based polls',
);
Modified: trunk/extensions/AJAXPoll/AJAXPoll.php
===================================================================
--- trunk/extensions/AJAXPoll/AJAXPoll.php 2012-03-12 23:53:06 UTC (rev
113685)
+++ trunk/extensions/AJAXPoll/AJAXPoll.php 2012-03-12 23:56:59 UTC (rev
113686)
@@ -19,7 +19,7 @@
* @author Jack Phoenix <[email protected]>
* @author Thomas Gries
* @maintainer Thomas Gries
- * @version 1.67
+ * @version 1.68
* @link http://www.mediawiki.org/wiki/Extension:AJAX_Poll Documentation
*/
@@ -31,7 +31,7 @@
$wgExtensionCredits['parserhook'][] = array(
'path' => __FILE__,
'name' => 'AJAX Poll',
- 'version' => '1.67 20120312',
+ 'version' => '1.68 20120313',
'author' => array( 'Dariusz Siedlecki', 'Jack Phoenix', 'Thomas Gries'
),
'descriptionmsg' => 'ajaxpoll-desc',
'url' => 'https://www.mediawiki.org/wiki/Extension:AJAX_Poll',
Modified: trunk/extensions/AJAXPoll/AJAXPoll_body.php
===================================================================
--- trunk/extensions/AJAXPoll/AJAXPoll_body.php 2012-03-12 23:53:06 UTC (rev
113685)
+++ trunk/extensions/AJAXPoll/AJAXPoll_body.php 2012-03-12 23:56:59 UTC (rev
113686)
@@ -165,51 +165,68 @@
return AJAXPoll::buildHTML( $id, $user );
}
- $answer = ++$answer;
+ if ( $answer != 0 ) {
- $q = $dbw->select(
- 'poll_vote',
- 'COUNT(*) AS c',
- array(
- 'poll_id' => $id,
- 'poll_user' => $user
- ),
- __METHOD__
- );
- $row = $dbw->fetchRow( $q );
+ $answer = ++$answer;
- if ( $row['c'] > 0 ) {
-
- $updateQuery = $dbw->update(
+ $q = $dbw->select(
'poll_vote',
+ 'COUNT(*) AS count',
array(
- 'poll_answer' => $answer,
- 'poll_date' => wfTimestampNow()
- ),
- array(
'poll_id' => $id,
'poll_user' => $user
),
__METHOD__
);
- $dbw->commit();
- $pollContainerText = ( $updateQuery ) ?
'ajaxpoll-vote-update' : 'ajaxpoll-vote-error';
+ $row = $dbw->fetchRow( $q );
- } else {
+ if ( $row['count'] > 0 ) {
- $insertQuery = $dbw->insert(
+ $updateQuery = $dbw->update(
+ 'poll_vote',
+ array(
+ 'poll_answer' => $answer,
+ 'poll_date' => wfTimestampNow()
+ ),
+ array(
+ 'poll_id' => $id,
+ 'poll_user' => $user,
+ ),
+ __METHOD__
+ );
+ $dbw->commit();
+ $pollContainerText = ( $updateQuery ) ?
'ajaxpoll-vote-update' : 'ajaxpoll-vote-error';
+
+ } else {
+
+ $insertQuery = $dbw->insert(
+ 'poll_vote',
+ array(
+ 'poll_id' => $id,
+ 'poll_user' => $user,
+ 'poll_ip' => wfGetIP(),
+ 'poll_answer' => $answer,
+ 'poll_date' => wfTimestampNow()
+ ),
+ __METHOD__
+ );
+ $dbw->commit();
+ $pollContainerText = ( $insertQuery ) ?
'ajaxpoll-vote-add' : 'ajaxpoll-vote-error';
+
+ }
+
+ } else { // revoking a vote
+
+ $deleteQuery = $dbw->delete(
'poll_vote',
array(
'poll_id' => $id,
'poll_user' => $user,
- 'poll_ip' => wfGetIP(),
- 'poll_answer' => $answer,
- 'poll_date' => wfTimestampNow()
),
__METHOD__
);
$dbw->commit();
- $pollContainerText = ( $insertQuery ) ?
'ajaxpoll-vote-add' : 'ajaxpoll-vote-error';
+ $pollContainerText = ( $deleteQuery ) ?
'ajaxpoll-vote-revoked' : 'ajaxpoll-vote-error';
}
@@ -301,7 +318,12 @@
// Different message depending on if the user has
already voted or not, or is entitled to vote
if ( $wgUser->isAllowed( 'ajaxpoll-vote' ) ) {
- $message = ( isset( $row[0] ) ) ?
$ourLastVoteDate : wfMsg( 'ajaxpoll-no-vote' );
+ if ( isset( $row[0] ) ) {
+ $message = $ourLastVoteDate;
+ $lines[] = wfMsg(
'ajaxpoll-revoke-vote' );
+ } else {
+ $message = wfMsg( 'ajaxpoll-no-vote' );
+ }
} else {
$message = wfMsg( 'ajaxpoll-vote-permission' );
}
@@ -313,6 +335,9 @@
'" id="ajaxpoll-answer-id-' . $id . '"><input
type="hidden" name="ajaxpoll-post-id" value="' . $id . '" />';
for ( $i = 1; $i < count( $lines ); $i++ ) {
+
+ $vote = ( $i != count( $lines ) - 1 );
+ $voteValue = ( $vote ) ? $i : 0;
$ans_no = $i - 1;
if ( $amountOfVotes == 0 ) {
@@ -330,19 +355,28 @@
if ( $wgUser->isAllowed( 'ajaxpoll-vote' ) ) {
if ( $wgUseAjax ) {
- $submitJS =
"sajax_do_call(\"AJAXPoll::submitVote\",[\"" . $id . "\",\"" . $i . "\"],
$(\"#ajaxpoll-container-" . $id . "\")[0]);";
+ $submitJS =
"sajax_do_call(\"AJAXPoll::submitVote\",[\"" . $id . "\",\"" . $voteValue .
"\"], $(\"#ajaxpoll-container-" . $id . "\")[0]);";
} else {
$submitJS =
"$(\"#ajaxpoll-answer-id-" . $id . "\").submit();";
}
- // HTML output has to be on one line thanks to
a MediaWiki bug
- // @see
https://bugzilla.wikimedia.org/show_bug.cgi?id=1319
- $ret .= "
-<div id='ajaxpoll-answer-" . $ans_no . "' class='ajaxpoll-answer'><div
class='ajaxpoll-answer-name'><label for='ajaxpoll-post-answer-" . $ans_no . "'
onclick='$(\"#ajaxpoll-ajax-" . $id . "\").html(\"" . wfMsg(
'ajaxpoll-submitting' ) . "\");$(\"#ajaxpoll-ajax-" . $id .
"\").css(\"display\",\"block\");$(this).addClass(\"ajaxpoll-checkevent\").prop(\"checked\",true);
" . $submitJS . "'><input type='radio' id='ajaxpoll-post-answer-" . $ans_no .
"' name='ajaxpoll-post-answer-" . $ans_no . "' value='" . $i . "'" . ( $our ?
'checked=true ' : '' ) . "/>" . strip_tags( $lines[$i] ) .
+ // HTML output has to be on one line
thanks to a MediaWiki bug
+ // @see
https://bugzilla.wikimedia.org/show_bug.cgi?id=1319
+
+ if ( $vote ) {
+ $ret .= "
+<div id='ajaxpoll-answer-" . $ans_no . "' class='ajaxpoll-answer'><div
class='ajaxpoll-answer-name'><label for='ajaxpoll-post-answer-" . $ans_no . "'
onmouseover='$(this).addClass(\"ajaxpoll-hover-vote\");'
onmouseout='$(this).removeClass(\"ajaxpoll-hover-vote\");'
onclick='$(\"#ajaxpoll-ajax-" . $id . "\").html(\"" . wfMsg(
'ajaxpoll-submitting' ) . "\");$(\"#ajaxpoll-ajax-" . $id .
"\").css(\"display\",\"block\");$(this).addClass(\"ajaxpoll-checkevent\").prop(\"checked\",true);
" . $submitJS . "'><input type='radio' id='ajaxpoll-post-answer-" . $ans_no .
"' name='ajaxpoll-post-answer-" . $ans_no . "' value='" . $voteValue . "' " . (
$our ? 'checked=true ' : '' ) . "/>" . strip_tags( $lines[$i] ) .
"</label></div><div class='ajaxpoll-answer-vote" . ( $our ? '
ajaxpoll-our-vote' : '' ) ."' onmouseover='mover(this)'
onmouseout='mout(this);'><span title='" . wfMsg( 'ajaxpoll-percent-votes',
sprintf( $percent ) ) . "'>" . ( ( isset( $poll_result ) && !empty(
$poll_result[$i + 1] ) ) ? $poll_result[$i + 1] : 0 ) . "</span><div
style='width: " . $percent . "%;" . ( $percent == 0 ? ' border:0;' : '' ) .
"'></div></div>
</div>
";
+ } else {
+ $ret .= "
+<div id='ajaxpoll-answer-" . $ans_no . "' class='ajaxpoll-answer'><div
class='ajaxpoll-answer-name'><label for='ajaxpoll-post-answer-" . $ans_no . "'
onmouseover='$(this).addClass(\"ajaxpoll-hover-revoke\");'
onmouseout='$(this).removeClass(\"ajaxpoll-hover-revoke\");'
onclick='$(\"#ajaxpoll-ajax-" . $id . "\").html(\"" . wfMsg(
'ajaxpoll-submitting' ) . "\");$(\"#ajaxpoll-ajax-" . $id .
"\").css(\"display\",\"block\");$(this).addClass(\"ajaxpoll-checkevent\").prop(\"checked\",true);
" . $submitJS . "'><input type='radio' id='ajaxpoll-post-answer-" . $ans_no .
"' name='ajaxpoll-post-answer-" . $ans_no . "' value='" . $voteValue . "' " . (
$our ? 'checked=true ' : '' ) . "/>" . strip_tags( $lines[$i] ) .
+"</label></div>
+</div>
+";
+ }
} else {
@@ -351,7 +385,6 @@
"</label></div><div class='ajaxpoll-answer-vote" . ( $our ? '
ajaxpoll-our-vote' : '' ) ."' onmouseover='mover(this)'
onmouseout='mout(this);'><span title='" . wfMsg( 'ajaxpoll-percent-votes',
sprintf( $percent ) ) . "'>" . ( ( isset( $poll_result ) && !empty(
$poll_result[$i + 1] ) ) ? $poll_result[$i + 1] : 0 ) . "</span><div
style='width: " . $percent . "%;" . ( $percent == 0 ? ' border:0;' : '' ) .
"'></div></div>
</div>
";
-
}
}
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs