Index: branches/wmf-deployment/extensions/SecurePoll/SecurePoll.php |
— | — | @@ -89,6 +89,7 @@ |
90 | 90 | |
91 | 91 | # talliers |
92 | 92 | 'SecurePoll_ElectionTallier' => "$dir/includes/talliers/ElectionTallier.php", |
| 93 | + 'SecurePoll_HistogramRangeTallier' => "$dir/includes/talliers/HistogramRangeTallier.php", |
93 | 94 | 'SecurePoll_PairwiseTallier' => "$dir/includes/talliers/PairwiseTallier.php", |
94 | 95 | 'SecurePoll_PluralityTallier' => "$dir/includes/talliers/PluralityTallier.php", |
95 | 96 | 'SecurePoll_SchulzeTallier' => "$dir/includes/talliers/SchulzeTallier.php", |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/user/Voter.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
96 | 97 | Merged /trunk/extensions/SecurePoll/includes/user/Voter.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/user/Auth.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
97 | 98 | Merged /trunk/extensions/SecurePoll/includes/user/Auth.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/TranslatePage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
98 | 99 | Merged /trunk/extensions/SecurePoll/includes/pages/TranslatePage.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/pages/VotePage.php |
— | — | @@ -67,6 +67,10 @@ |
68 | 68 | $this->showJumpForm(); |
69 | 69 | return; |
70 | 70 | } |
| 71 | + |
| 72 | + // This is when it starts getting all serious; disable JS |
| 73 | + // that might be used to sniff cookies or log voting data. |
| 74 | + $wgOut->disallowUserJs(); |
71 | 75 | |
72 | 76 | // Show welcome |
73 | 77 | if ( $this->voter->isRemote() ) { |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/VotePage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
74 | 78 | Merged /trunk/extensions/SecurePoll/includes/pages/VotePage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/Page.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
75 | 79 | Merged /trunk/extensions/SecurePoll/includes/pages/Page.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/pages/EntryPage.php |
— | — | @@ -11,6 +11,7 @@ |
12 | 12 | function execute( $params ) { |
13 | 13 | global $wgOut; |
14 | 14 | $pager = new SecurePoll_ElectionPager( $this ); |
| 15 | + $wgOut->addWikiMsg( 'securepoll-entry-text' ); |
15 | 16 | $wgOut->addHTML( |
16 | 17 | $pager->getBody() . |
17 | 18 | $pager->getNavigationBar() |
— | — | @@ -30,11 +31,26 @@ |
31 | 32 | */ |
32 | 33 | class SecurePoll_ElectionPager extends TablePager { |
33 | 34 | var $subpages = array( |
34 | | - 'vote', |
35 | | - 'translate', |
36 | | - 'list', |
37 | | - 'dump', |
38 | | - 'tally' |
| 35 | + 'vote' => array( |
| 36 | + 'public' => true, |
| 37 | + 'visible-after-close' => false, |
| 38 | + ), |
| 39 | + 'translate' => array( |
| 40 | + 'public' => true, |
| 41 | + 'visible-after-close' => true, |
| 42 | + ), |
| 43 | + 'list' => array( |
| 44 | + 'public' => true, |
| 45 | + 'visible-after-close' => true, |
| 46 | + ), |
| 47 | + 'dump' => array( |
| 48 | + 'public' => false, |
| 49 | + 'visible-after-close' => true, |
| 50 | + ), |
| 51 | + 'tally' => array( |
| 52 | + 'public' => false, |
| 53 | + 'visible-after-close' => true, |
| 54 | + ), |
39 | 55 | ); |
40 | 56 | var $fields = array( |
41 | 57 | 'el_title', |
— | — | @@ -63,6 +79,18 @@ |
64 | 80 | 'el_title', 'el_start_date', 'el_end_date' |
65 | 81 | ) ); |
66 | 82 | } |
| 83 | + |
| 84 | + /** |
| 85 | + * Add classes based on whether the poll is open or closed |
| 86 | + * @param $row database object |
| 87 | + * @return String |
| 88 | + * @see TablePager::getRowClass() |
| 89 | + */ |
| 90 | + function getRowClass( $row ) { |
| 91 | + return $row->el_end_date > wfTimestampNow( TS_DB ) |
| 92 | + ? 'securepoll-election-open' |
| 93 | + : 'securepoll-election-closed'; |
| 94 | + } |
67 | 95 | |
68 | 96 | function formatValue( $name, $value ) { |
69 | 97 | global $wgLang; |
— | — | @@ -76,20 +104,40 @@ |
77 | 105 | return htmlspecialchars( $value ); |
78 | 106 | } |
79 | 107 | } |
| 108 | + |
| 109 | + function formatRow( $row ) { |
| 110 | + global $wgUser; |
| 111 | + $id = $row->el_entity; |
| 112 | + $this->election = $this->entryPage->context->getElection( $id ); |
| 113 | + if( !$this->election ) { |
| 114 | + $this->isAdmin = false; |
| 115 | + } else { |
| 116 | + $this->isAdmin = $this->election->isAdmin( $wgUser ); |
| 117 | + } |
| 118 | + return parent::formatRow( $row ); |
| 119 | + } |
80 | 120 | |
81 | 121 | function getLinks() { |
82 | 122 | global $wgUser; |
83 | 123 | $id = $this->mCurrentRow->el_entity; |
| 124 | + |
84 | 125 | $s = ''; |
85 | 126 | $sep = wfMsg( 'pipe-separator' ); |
86 | 127 | $skin = $wgUser->getSkin(); |
87 | | - foreach ( $this->subpages as $subpage ) { |
88 | | - $title = $this->entryPage->parent->getTitle( "$subpage/$id" ); |
89 | | - $linkText = wfMsg( "securepoll-subpage-$subpage" ); |
| 128 | + foreach ( $this->subpages as $subpage => $props ) { |
| 129 | + $linkText = wfMsgExt( "securepoll-subpage-$subpage", 'parseinline' ); |
90 | 130 | if ( $s !== '' ) { |
91 | 131 | $s .= $sep; |
92 | 132 | } |
93 | | - $s .= $skin->makeKnownLinkObj( $title, $linkText ); |
| 133 | + if( ( $this->isAdmin || $props['public'] ) |
| 134 | + && ( !$this->election->isFinished() || $props['visible-after-close'] ) ) |
| 135 | + { |
| 136 | + $title = $this->entryPage->parent->getTitle( "$subpage/$id" ); |
| 137 | + $s .= $skin->makeKnownLinkObj( $title, $linkText ); |
| 138 | + } else { |
| 139 | + $s .= "<span class=\"securepoll-link-disabled\">" . |
| 140 | + $linkText . "</span>"; |
| 141 | + } |
94 | 142 | } |
95 | 143 | return $s; |
96 | 144 | } |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/EntryPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
97 | 145 | Merged /trunk/extensions/SecurePoll/includes/pages/EntryPage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/DetailsPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
98 | 146 | Merged /trunk/extensions/SecurePoll/includes/pages/DetailsPage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/DumpPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
99 | 147 | Merged /trunk/extensions/SecurePoll/includes/pages/DumpPage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/TallyPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
100 | 148 | Merged /trunk/extensions/SecurePoll/includes/pages/TallyPage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/LoginPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
101 | 149 | Merged /trunk/extensions/SecurePoll/includes/pages/LoginPage.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/MessageDumpPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
102 | 150 | Merged /trunk/extensions/SecurePoll/includes/pages/MessageDumpPage.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/pages/ListPage.php |
— | — | @@ -175,7 +175,6 @@ |
176 | 176 | var $listPage, $isAdmin, $election; |
177 | 177 | |
178 | 178 | static $publicFields = array( |
179 | | - 'details', |
180 | 179 | 'vote_timestamp', |
181 | 180 | 'vote_voter_name', |
182 | 181 | 'vote_voter_domain', |
— | — | @@ -220,10 +219,14 @@ |
221 | 220 | } |
222 | 221 | |
223 | 222 | function formatValue( $name, $value ) { |
224 | | - global $wgLang; |
225 | | - $critical = Xml::element( 'img', |
226 | | - array( 'src' => $GLOBALS['wgScriptPath'] . '/extensions/SecurePoll/resources/critical-32.png' ) |
| 223 | + global $wgLang, $wgScriptPath; |
| 224 | + $critical = Xml::element( 'img', array( |
| 225 | + 'src' => "$wgScriptPath/extensions/SecurePoll/resources/critical-32.png" ) |
227 | 226 | ); |
| 227 | + $voter = SecurePoll_Voter::newFromId( |
| 228 | + $this->listPage->context, |
| 229 | + $this->mCurrentRow->vote_voter |
| 230 | + ); |
228 | 231 | |
229 | 232 | switch ( $name ) { |
230 | 233 | case 'vote_timestamp': |
— | — | @@ -264,6 +267,15 @@ |
265 | 268 | 'value' => $label, |
266 | 269 | 'onclick' => "securepoll_strike_popup(event, $action, $voteId)" |
267 | 270 | ) ); |
| 271 | + case 'vote_voter_name': |
| 272 | + $msg = $voter->isRemote() |
| 273 | + ? 'securepoll-voter-name-remote' |
| 274 | + : 'securepoll-voter-name-local'; |
| 275 | + return wfMsgExt( |
| 276 | + $msg, |
| 277 | + 'parseinline', |
| 278 | + array( $value ) |
| 279 | + ); |
268 | 280 | default: |
269 | 281 | return htmlspecialchars( $value ); |
270 | 282 | } |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/pages/ListPage.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
271 | 283 | Merged /trunk/extensions/SecurePoll/includes/pages/ListPage.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/Tallier.php |
— | — | @@ -6,7 +6,7 @@ |
7 | 7 | * questions. |
8 | 8 | */ |
9 | 9 | abstract class SecurePoll_Tallier { |
10 | | - var $context, $question, $optionsById; |
| 10 | + var $context, $question, $electionTallier, $election, $optionsById; |
11 | 11 | |
12 | 12 | abstract function addVote( $scores ); |
13 | 13 | abstract function getHtmlResult(); |
— | — | @@ -14,20 +14,24 @@ |
15 | 15 | |
16 | 16 | abstract function finishTally(); |
17 | 17 | |
18 | | - static function factory( $context, $type, $question ) { |
| 18 | + static function factory( $context, $type, $electionTallier, $question ) { |
19 | 19 | switch ( $type ) { |
20 | 20 | case 'plurality': |
21 | | - return new SecurePoll_PluralityTallier( $context, $question ); |
| 21 | + return new SecurePoll_PluralityTallier( $context, $electionTallier, $question ); |
22 | 22 | case 'schulze': |
23 | | - return new SecurePoll_SchulzeTallier( $context, $question ); |
| 23 | + return new SecurePoll_SchulzeTallier( $context, $electionTallier, $question ); |
| 24 | + case 'histogram-range': |
| 25 | + return new SecurePoll_HistogramRangeTallier( $context, $electionTallier, $question ); |
24 | 26 | default: |
25 | 27 | throw new MWException( "Invalid tallier type: $type" ); |
26 | 28 | } |
27 | 29 | } |
28 | 30 | |
29 | | - function __construct( $context, $question ) { |
| 31 | + function __construct( $context, $electionTallier, $question ) { |
30 | 32 | $this->context = $context; |
31 | 33 | $this->question = $question; |
| 34 | + $this->electionTallier = $electionTallier; |
| 35 | + $this->election = $electionTallier->election; |
32 | 36 | foreach ( $this->question->getOptions() as $option ) { |
33 | 37 | $this->optionsById[$option->getId()] = $option; |
34 | 38 | } |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/Tallier.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
35 | 39 | Merged /trunk/extensions/SecurePoll/includes/talliers/Tallier.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/ElectionTallier.php |
— | — | @@ -32,7 +32,7 @@ |
33 | 33 | $this->talliers = array(); |
34 | 34 | $tallyType = $this->election->getTallyType(); |
35 | 35 | foreach ( $questions as $question ) { |
36 | | - $tallier = $this->context->newTallier( $tallyType, $question ); |
| 36 | + $tallier = $this->context->newTallier( $tallyType, $this, $question ); |
37 | 37 | if ( !$tallier ) { |
38 | 38 | throw new MWException( 'Invalid tally type' ); |
39 | 39 | } |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/ElectionTallier.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
40 | 40 | Merged /trunk/extensions/SecurePoll/includes/talliers/ElectionTallier.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/PairwiseTallier.php |
— | — | @@ -10,8 +10,8 @@ |
11 | 11 | var $abbrevs; |
12 | 12 | var $rowLabels = array(); |
13 | 13 | |
14 | | - function __construct( $context, $question ) { |
15 | | - parent::__construct( $context, $question ); |
| 14 | + function __construct( $context, $electionTallier, $question ) { |
| 15 | + parent::__construct( $context, $electionTallier, $question ); |
16 | 16 | $this->optionIds = array(); |
17 | 17 | foreach ( $question->getOptions() as $option ) { |
18 | 18 | $this->optionIds[] = $option->getId(); |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/PluralityTallier.php |
— | — | @@ -6,8 +6,8 @@ |
7 | 7 | class SecurePoll_PluralityTallier extends SecurePoll_Tallier { |
8 | 8 | var $tally = array(); |
9 | 9 | |
10 | | - function __construct( $context, $question ) { |
11 | | - parent::__construct( $context, $question ); |
| 10 | + function __construct( $context, $electionTallier, $question ) { |
| 11 | + parent::__construct( $context, $electionTallier, $question ); |
12 | 12 | foreach ( $question->getOptions() as $option ) { |
13 | 13 | $this->tally[$option->getId()] = 0; |
14 | 14 | } |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/HistogramRangeTallier.php |
— | — | @@ -0,0 +1,86 @@ |
| 2 | +<?php |
| 3 | + |
| 4 | +class SecurePoll_HistogramRangeTallier extends SecurePoll_Tallier { |
| 5 | + var $histogram = array(); |
| 6 | + var $sums = array(); |
| 7 | + var $counts = array(); |
| 8 | + var $averages; |
| 9 | + var $minScore, $maxScore; |
| 10 | + |
| 11 | + function __construct( $context, $electionTallier, $question ) { |
| 12 | + parent::__construct( $context, $electionTallier, $question ); |
| 13 | + $this->minScore = intval( $question->getProperty( 'min-score' ) ); |
| 14 | + $this->maxScore = intval( $question->getProperty( 'max-score' ) ); |
| 15 | + if ( $this->minScore >= $this->maxScore ) { |
| 16 | + throw new MWException( __METHOD__.': min-score/max-score configured incorrectly' ); |
| 17 | + } |
| 18 | + |
| 19 | + foreach ( $question->getOptions() as $option ) { |
| 20 | + $this->histogram[$option->getId()] = |
| 21 | + array_fill( $this->minScore, $this->maxScore - $this->minScore + 1, 0 ); |
| 22 | + $this->sums[$option->getId()] = 0; |
| 23 | + $this->counts[$option->getId()] = 0; |
| 24 | + } |
| 25 | + } |
| 26 | + |
| 27 | + function addVote( $scores ) { |
| 28 | + foreach ( $scores as $oid => $score ) { |
| 29 | + $this->histogram[$oid][$score] ++; |
| 30 | + $this->sums[$oid] += $score; |
| 31 | + $this->counts[$oid] ++; |
| 32 | + } |
| 33 | + return true; |
| 34 | + } |
| 35 | + |
| 36 | + function finishTally() { |
| 37 | + $this->averages = array(); |
| 38 | + foreach ( $this->sums as $oid => $sum ) { |
| 39 | + if ( $this->counts[$oid] === 0 ) { |
| 40 | + $this->averages[$oid] = 'N/A'; |
| 41 | + break; |
| 42 | + } |
| 43 | + $this->averages[$oid] = $sum / $this->counts[$oid]; |
| 44 | + } |
| 45 | + arsort( $this->averages ); |
| 46 | + } |
| 47 | + |
| 48 | + function getHtmlResult() { |
| 49 | + $ballot = $this->election->getBallot(); |
| 50 | + if ( !is_callable( array( $ballot, 'getColumnLabels' ) ) ) { |
| 51 | + throw new MWException( __METHOD__.': ballot type not supported by this tallier' ); |
| 52 | + } |
| 53 | + $optionLabels = array(); |
| 54 | + foreach ( $this->question->getOptions() as $option ) { |
| 55 | + $optionLabels[$option->getId()] = $option->getMessage( 'text' ); |
| 56 | + } |
| 57 | + |
| 58 | + $labels = $ballot->getColumnLabels( $this->question ); |
| 59 | + $s = "<table class=\"securepoll-table\">\n" . |
| 60 | + "<tr>\n" . |
| 61 | + "<th> </th>\n"; |
| 62 | + foreach ( $labels as $label ) { |
| 63 | + $s .= Xml::element( 'th', array(), $label ) . "\n"; |
| 64 | + } |
| 65 | + $s .= Xml::element( 'th', array(), wfMsg( 'securepoll-average-score' ) ); |
| 66 | + $s .= "</tr>\n"; |
| 67 | + |
| 68 | + foreach ( $this->averages as $oid => $average ) { |
| 69 | + $s .= "<tr>\n" . |
| 70 | + Xml::element( 'td', array( 'class' => 'securepoll-results-row-heading' ), |
| 71 | + $optionLabels[$oid] ) . |
| 72 | + "\n"; |
| 73 | + foreach ( $labels as $score => $label ) { |
| 74 | + $s .= Xml::element( 'td', array(), $this->histogram[$oid][$score] ) . "\n"; |
| 75 | + } |
| 76 | + $s .= Xml::element( 'td', array(), $average ) . "\n"; |
| 77 | + $s .= "</tr>\n"; |
| 78 | + } |
| 79 | + $s .= "</table>\n"; |
| 80 | + return $s; |
| 81 | + } |
| 82 | + |
| 83 | + function getTextResult() { |
| 84 | + throw new MWException( __METHOD__.': not yet implemented' ); |
| 85 | + } |
| 86 | +} |
| 87 | + |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/talliers/HistogramRangeTallier.php |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 88 | + native |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/ballots/RadioRangeBallot.php |
— | — | @@ -86,6 +86,7 @@ |
87 | 87 | foreach ( $labels as $label ) { |
88 | 88 | $s .= Xml::element( 'th', array(), $label ) . "\n"; |
89 | 89 | } |
| 90 | + $s .= "</tr>\n"; |
90 | 91 | $defaultScore = $question->getProperty( 'default-score' ); |
91 | 92 | |
92 | 93 | foreach ( $options as $option ) { |
— | — | @@ -179,6 +180,7 @@ |
180 | 181 | list( $min, $max ) = $this->getMinMax( $questions[$qid] ); |
181 | 182 | if ( $score < $min || $score > $max ) { |
182 | 183 | wfDebug( __METHOD__.": score out of range\n" ); |
| 184 | + return false; |
183 | 185 | } |
184 | 186 | $scores[$qid][$oid] = $score; |
185 | 187 | } |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/ballots/Ballot.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
186 | 188 | Merged /trunk/extensions/SecurePoll/includes/ballots/Ballot.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/crypt/Random.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
187 | 189 | Merged /trunk/extensions/SecurePoll/includes/crypt/Random.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/crypt/Crypt.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
188 | 190 | Merged /trunk/extensions/SecurePoll/includes/crypt/Crypt.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/entities/Option.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
189 | 191 | Merged /trunk/extensions/SecurePoll/includes/entities/Option.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/entities/Entity.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
190 | 192 | Merged /trunk/extensions/SecurePoll/includes/entities/Entity.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/entities/Election.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
191 | 193 | Merged /trunk/extensions/SecurePoll/includes/entities/Election.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/entities/Question.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
192 | 194 | Merged /trunk/extensions/SecurePoll/includes/entities/Question.php:r58282-58801 |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/main/Store.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
193 | 195 | Merged /trunk/extensions/SecurePoll/includes/main/Store.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/main/Context.php |
— | — | @@ -251,8 +251,8 @@ |
252 | 252 | return SecurePoll_Crypt::factory( $this, $type, $election ); |
253 | 253 | } |
254 | 254 | |
255 | | - function newTallier( $type, $question ) { |
256 | | - return SecurePoll_Tallier::factory( $this, $type, $question ); |
| 255 | + function newTallier( $type, $electionTallier, $question ) { |
| 256 | + return SecurePoll_Tallier::factory( $this, $type, $electionTallier, $question ); |
257 | 257 | } |
258 | 258 | |
259 | 259 | function newBallot( $type, $election ) { |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/main/Context.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
260 | 260 | Merged /trunk/extensions/SecurePoll/includes/main/Context.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/includes/main/Base.php |
— | — | @@ -1,5 +1,10 @@ |
2 | 2 | <?php |
3 | 3 | |
| 4 | +/** |
| 5 | + * The page that's initially called by MediaWiki when navigating to |
| 6 | + * Special:SecurePoll. The actual pages are not actually subclasses of |
| 7 | + * this or of SpecialPage, they're subclassed from SecurePoll_Page. |
| 8 | + */ |
4 | 9 | class SecurePoll_BasePage extends UnlistedSpecialPage { |
5 | 10 | static $pages = array( |
6 | 11 | 'details' => 'SecurePoll_DetailsPage', |
Property changes on: branches/wmf-deployment/extensions/SecurePoll/includes/main/Base.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
7 | 12 | Merged /trunk/extensions/SecurePoll/includes/main/Base.php:r58282-58801 |
Index: branches/wmf-deployment/extensions/SecurePoll/cli/cli.inc |
— | — | @@ -14,3 +14,5 @@ |
15 | 15 | |
16 | 16 | require( $IP . '/maintenance/commandLine.inc' ); |
17 | 17 | |
| 18 | +wfLoadExtensionMessages( 'SecurePoll' ); |
| 19 | + |
Index: branches/wmf-deployment/extensions/SecurePoll/resources/SecurePoll.css |
— | — | @@ -94,3 +94,6 @@ |
95 | 95 | .securepoll-error-jump { |
96 | 96 | margin-right: 0.5em; |
97 | 97 | } |
| 98 | +.securepoll-election-closed { |
| 99 | + color: #aaa; |
| 100 | +} |
Index: branches/wmf-deployment/extensions/SecurePoll/SecurePoll.i18n.php |
— | — | @@ -100,6 +100,8 @@ |
101 | 101 | 'securepoll-strike-error' => 'Error performing strike/unstrike: $1', |
102 | 102 | 'securepoll-strike-token-mismatch' => 'Session data lost', |
103 | 103 | 'securepoll-details-link' => 'Details', |
| 104 | + 'securepoll-voter-name-local' => '[[User:$1|$1]]', |
| 105 | + 'securepoll-voter-name-remote' => '$1', |
104 | 106 | |
105 | 107 | # Details page |
106 | 108 | # Mostly for admins |
— | — | @@ -133,6 +135,7 @@ |
134 | 136 | 'securepoll-submit-select-lang' => 'Translate', |
135 | 137 | |
136 | 138 | # Entry page |
| 139 | + 'securepoll-entry-text' => 'Below is the list of polls.', |
137 | 140 | 'securepoll-header-title' => 'Name', |
138 | 141 | 'securepoll-header-start-date' => 'Start date', |
139 | 142 | 'securepoll-header-end-date' => 'End date', |
— | — | @@ -159,6 +162,7 @@ |
160 | 163 | 'securepoll-pairwise-victories' => 'Pairwise victory matrix', |
161 | 164 | 'securepoll-strength-matrix' => 'Path strength matrix', |
162 | 165 | 'securepoll-ranks' => 'Final ranking', |
| 166 | + 'securepoll-average-score' => 'Average score', |
163 | 167 | ); |
164 | 168 | |
165 | 169 | /** Message documentation (Message documentation) |
— | — | @@ -234,6 +238,7 @@ |
235 | 239 | * @author Naudefj |
236 | 240 | */ |
237 | 241 | $messages['af'] = array( |
| 242 | + 'securepoll-submit' => 'Dien stem in', |
238 | 243 | 'securepoll-return' => 'Keer terug na $1', |
239 | 244 | 'securepoll-list-title' => 'Wys stemme: $1', |
240 | 245 | 'securepoll-header-timestamp' => 'Tyd', |
— | — | @@ -493,6 +498,7 @@ |
494 | 499 | 'securepoll-submit-translate' => 'Абнавіць', |
495 | 500 | 'securepoll-language-label' => 'Выбар мовы:', |
496 | 501 | 'securepoll-submit-select-lang' => 'Перакласьці', |
| 502 | + 'securepoll-entry-text' => 'Ніжэй пададзены сьпіс апытаньняў.', |
497 | 503 | 'securepoll-header-title' => 'Назва', |
498 | 504 | 'securepoll-header-start-date' => 'Дата пачатку', |
499 | 505 | 'securepoll-header-end-date' => 'Дата заканчэньня', |
— | — | @@ -672,6 +678,7 @@ |
673 | 679 | 'securepoll-submit-translate' => 'Hizivaat', |
674 | 680 | 'securepoll-language-label' => 'Dibab ar yezh :', |
675 | 681 | 'securepoll-submit-select-lang' => 'Treiñ', |
| 682 | + 'securepoll-entry-text' => 'A-is emañ roll ar mouezhiadegoù.', |
676 | 683 | 'securepoll-header-title' => 'Anv', |
677 | 684 | 'securepoll-header-start-date' => 'Deiziad kregiñ', |
678 | 685 | 'securepoll-header-end-date' => 'Deiziad termen', |
— | — | @@ -798,6 +805,7 @@ |
799 | 806 | 'securepoll-submit-translate' => 'Ažuriranje', |
800 | 807 | 'securepoll-language-label' => 'Izaberi jezik:', |
801 | 808 | 'securepoll-submit-select-lang' => 'Prevedi', |
| 809 | + 'securepoll-entry-text' => 'Ispod je spisak glasanja.', |
802 | 810 | 'securepoll-header-title' => 'Ime', |
803 | 811 | 'securepoll-header-start-date' => 'Datum početka', |
804 | 812 | 'securepoll-header-end-date' => 'Datum završetka', |
— | — | @@ -1052,6 +1060,7 @@ |
1053 | 1061 | 'securepoll-submit-translate' => 'Uložit', |
1054 | 1062 | 'securepoll-language-label' => 'Zvolte jazyk:', |
1055 | 1063 | 'securepoll-submit-select-lang' => 'Překládat', |
| 1064 | + 'securepoll-entry-text' => 'Níže je zobrazen seznam hlasování.', |
1056 | 1065 | 'securepoll-header-title' => 'Název', |
1057 | 1066 | 'securepoll-header-start-date' => 'Datum začátku', |
1058 | 1067 | 'securepoll-header-end-date' => 'Datum ukončení', |
— | — | @@ -1129,6 +1138,8 @@ |
1130 | 1139 | 'securepoll-invalid-rank' => "Gradd annilys yn y drefn restrol. Rhaid ichi roi gradd rhwng 1 a 999 i'r ymgeiswyr.", |
1131 | 1140 | 'securepoll-unranked-options' => 'Gadawyd rhai dewisiadau heb eu rhestru. |
1132 | 1141 | Rhaid ichi roi gradd rhwng 1 a 999 i bob dewis.', |
| 1142 | + 'securepoll-invalid-score' => "Rhaid i'r sgôr fod yn rif rhwng $1 a $2.", |
| 1143 | + 'securepoll-unanswered-options' => 'Rhaid ateb pob cwestiwn.', |
1133 | 1144 | 'securepoll-remote-auth-error' => "Cafwyd gwall wrth nôl gwybodaeth eich cyfrif o'r gweinydd.", |
1134 | 1145 | 'securepoll-remote-parse-error' => "Cafwyd gwall wrth ddehongli ymateb y gweinydd i'r cais awdurdodi.", |
1135 | 1146 | 'securepoll-api-invalid-params' => 'Paramedrau annilys.', |
— | — | @@ -1176,6 +1187,7 @@ |
1177 | 1188 | 'securepoll-submit-translate' => 'Diweddaru', |
1178 | 1189 | 'securepoll-language-label' => 'Dewis iaith:', |
1179 | 1190 | 'securepoll-submit-select-lang' => 'Cyfieithu', |
| 1191 | + 'securepoll-entry-text' => 'Dyma restr yr etholiadau.', |
1180 | 1192 | 'securepoll-header-title' => 'Enw', |
1181 | 1193 | 'securepoll-header-start-date' => 'Dyddiad dechrau', |
1182 | 1194 | 'securepoll-header-end-date' => 'Dyddiad gorffen', |
— | — | @@ -1429,6 +1441,7 @@ |
1430 | 1442 | 'securepoll-submit-translate' => 'Aktualisieren', |
1431 | 1443 | 'securepoll-language-label' => 'Sprache auswählen:', |
1432 | 1444 | 'securepoll-submit-select-lang' => 'Übersetzen', |
| 1445 | + 'securepoll-entry-text' => 'Nachfolgend die Liste der Wahlen.', |
1433 | 1446 | 'securepoll-header-title' => 'Name', |
1434 | 1447 | 'securepoll-header-start-date' => 'Beginn', |
1435 | 1448 | 'securepoll-header-end-date' => 'Ende', |
— | — | @@ -1722,6 +1735,7 @@ |
1723 | 1736 | 'securepoll-submit-translate' => 'Aktualizěrowaś', |
1724 | 1737 | 'securepoll-language-label' => 'Rěc wubraś:', |
1725 | 1738 | 'securepoll-submit-select-lang' => 'Přełožyś', |
| 1739 | + 'securepoll-entry-text' => 'Dołojce jo lisćina wótgłosowanjow.', |
1726 | 1740 | 'securepoll-header-title' => 'Mě', |
1727 | 1741 | 'securepoll-header-start-date' => 'Zachopny datum', |
1728 | 1742 | 'securepoll-header-end-date' => 'Kóńcny datum', |
— | — | @@ -2462,6 +2476,7 @@ |
2463 | 2477 | /** French (Français) |
2464 | 2478 | * @author Crochet.david |
2465 | 2479 | * @author IAlex |
| 2480 | + * @author Jean-Frédéric |
2466 | 2481 | * @author Louperivois |
2467 | 2482 | * @author Omnipaedista |
2468 | 2483 | * @author PieRRoMaN |
— | — | @@ -2565,6 +2580,7 @@ |
2566 | 2581 | 'securepoll-submit-translate' => 'Mettre à jour', |
2567 | 2582 | 'securepoll-language-label' => 'Sélectionner la langue :', |
2568 | 2583 | 'securepoll-submit-select-lang' => 'Traduire', |
| 2584 | + 'securepoll-entry-text' => 'Ci-dessous la liste des sondages.', |
2569 | 2585 | 'securepoll-header-title' => 'Nom', |
2570 | 2586 | 'securepoll-header-start-date' => 'Date de début', |
2571 | 2587 | 'securepoll-header-end-date' => 'Date de fin', |
— | — | @@ -2736,6 +2752,7 @@ |
2737 | 2753 | 'securepoll-submit-translate' => 'Actualizar', |
2738 | 2754 | 'securepoll-language-label' => 'Seleccione a lingua:', |
2739 | 2755 | 'securepoll-submit-select-lang' => 'Traducir', |
| 2756 | + 'securepoll-entry-text' => 'A continuación hai unha lista coas enquisas.', |
2740 | 2757 | 'securepoll-header-title' => 'Nome', |
2741 | 2758 | 'securepoll-header-start-date' => 'Data de inicio', |
2742 | 2759 | 'securepoll-header-end-date' => 'Data de fin', |
— | — | @@ -2888,6 +2905,7 @@ |
2889 | 2906 | 'securepoll-submit-translate' => 'Aktualisiere', |
2890 | 2907 | 'securepoll-language-label' => 'Sproch uuswehle:', |
2891 | 2908 | 'securepoll-submit-select-lang' => 'Ibersetze', |
| 2909 | + 'securepoll-entry-text' => 'Do unte het s e Lischt mit Abstimmige.', |
2892 | 2910 | 'securepoll-header-title' => 'Name', |
2893 | 2911 | 'securepoll-header-start-date' => 'Aafangsdatum', |
2894 | 2912 | 'securepoll-header-end-date' => 'Änddatum', |
— | — | @@ -3408,6 +3426,7 @@ |
3409 | 3427 | 'securepoll-submit-translate' => 'Aktualizować', |
3410 | 3428 | 'securepoll-language-label' => 'Rěč wubrać:', |
3411 | 3429 | 'securepoll-submit-select-lang' => 'Přełožić', |
| 3430 | + 'securepoll-entry-text' => 'Deleka je lisćina wothłosowanjow.', |
3412 | 3431 | 'securepoll-header-title' => 'Mjeno', |
3413 | 3432 | 'securepoll-header-start-date' => 'Spočatny datum', |
3414 | 3433 | 'securepoll-header-end-date' => 'Kónčny datum', |
— | — | @@ -3539,6 +3558,7 @@ |
3540 | 3559 | 'securepoll-submit-translate' => 'Frissítés', |
3541 | 3560 | 'securepoll-language-label' => 'Nyelv kiválasztása:', |
3542 | 3561 | 'securepoll-submit-select-lang' => 'Fordítás', |
| 3562 | + 'securepoll-entry-text' => 'Alább látható a szavazások listája.', |
3543 | 3563 | 'securepoll-header-title' => 'Név', |
3544 | 3564 | 'securepoll-header-start-date' => 'Kezdődátum', |
3545 | 3565 | 'securepoll-header-end-date' => 'Záródátum', |
— | — | @@ -3665,6 +3685,7 @@ |
3666 | 3686 | 'securepoll-submit-translate' => 'Actualisar', |
3667 | 3687 | 'securepoll-language-label' => 'Selige lingua:', |
3668 | 3688 | 'securepoll-submit-select-lang' => 'Traducer', |
| 3689 | + 'securepoll-entry-text' => 'Ci infra es le lista de votationes.', |
3669 | 3690 | 'securepoll-header-title' => 'Nomine', |
3670 | 3691 | 'securepoll-header-start-date' => 'Data de initio', |
3671 | 3692 | 'securepoll-header-end-date' => 'Data de fin', |
— | — | @@ -3694,6 +3715,7 @@ |
3695 | 3716 | /** Indonesian (Bahasa Indonesia) |
3696 | 3717 | * @author Bennylin |
3697 | 3718 | * @author Irwangatot |
| 3719 | + * @author IvanLanin |
3698 | 3720 | * @author Rex |
3699 | 3721 | */ |
3700 | 3722 | $messages['id'] = array( |
— | — | @@ -3792,6 +3814,7 @@ |
3793 | 3815 | 'securepoll-submit-translate' => 'Perbarui', |
3794 | 3816 | 'securepoll-language-label' => 'Pilih bahasa:', |
3795 | 3817 | 'securepoll-submit-select-lang' => 'Terjemahkan', |
| 3818 | + 'securepoll-entry-text' => 'Berikut adalah daftar pemungutan suara', |
3796 | 3819 | 'securepoll-header-title' => 'Nama', |
3797 | 3820 | 'securepoll-header-start-date' => 'Tanggal mulai', |
3798 | 3821 | 'securepoll-header-end-date' => 'Tanggal selesai', |
— | — | @@ -4063,6 +4086,7 @@ |
4064 | 4087 | 'securepoll-submit-translate' => '更新', |
4065 | 4088 | 'securepoll-language-label' => '言語を選択:', |
4066 | 4089 | 'securepoll-submit-select-lang' => '翻訳', |
| 4090 | + 'securepoll-entry-text' => '以下は投票の一覧です。', |
4067 | 4091 | 'securepoll-header-title' => '名前', |
4068 | 4092 | 'securepoll-header-start-date' => '開始日時', |
4069 | 4093 | 'securepoll-header-end-date' => '終了日時', |
— | — | @@ -4446,6 +4470,7 @@ |
4447 | 4471 | 'securepoll-submit-translate' => 'Neu maache!', |
4448 | 4472 | 'securepoll-language-label' => 'Shprooch ußwähle:', |
4449 | 4473 | 'securepoll-submit-select-lang' => 'Övversätze!', |
| 4474 | + 'securepoll-entry-text' => 'Heh dronger kütt en Leß met de Afschtemmunge.', |
4450 | 4475 | 'securepoll-header-title' => 'Name', |
4451 | 4476 | 'securepoll-header-start-date' => 'Aanfangsdattum', |
4452 | 4477 | 'securepoll-header-end-date' => 'Et Dattum vum Engk', |
— | — | @@ -4573,6 +4598,7 @@ |
4574 | 4599 | 'securepoll-submit-translate' => 'Aktualiséieren', |
4575 | 4600 | 'securepoll-language-label' => 'Sprooch eraussichen:', |
4576 | 4601 | 'securepoll-submit-select-lang' => 'Iwwersetzen', |
| 4602 | + 'securepoll-entry-text' => "Ënnedrèenner ass d'L!escht vun den Ëmfroen.", |
4577 | 4603 | 'securepoll-header-title' => 'Numm', |
4578 | 4604 | 'securepoll-header-start-date' => 'Ufanksdatum', |
4579 | 4605 | 'securepoll-header-end-date' => 'Schlussdatum', |
— | — | @@ -4921,6 +4947,7 @@ |
4922 | 4948 | 'securepoll-submit-translate' => 'Ажурирање', |
4923 | 4949 | 'securepoll-language-label' => 'Избери јазик:', |
4924 | 4950 | 'securepoll-submit-select-lang' => 'Преведување', |
| 4951 | + 'securepoll-entry-text' => 'Подолу е наведена листата на гласањата.', |
4925 | 4952 | 'securepoll-header-title' => 'Име', |
4926 | 4953 | 'securepoll-header-start-date' => 'Почетен датум', |
4927 | 4954 | 'securepoll-header-end-date' => 'Завршен датум', |
— | — | @@ -4984,6 +5011,7 @@ |
4985 | 5012 | |
4986 | 5013 | പിശക്: |
4987 | 5014 | <pre>$2</pre>', |
| 5015 | + 'securepoll-gpg-config-error' => 'GPG താക്കോലുകൾ തെറ്റായാണ് ക്രമീകരിക്കപ്പെട്ടിരിക്കുന്നത്.', |
4988 | 5016 | 'securepoll-jump' => 'വോട്ടിങ് സെർവറിലേയ്ക്ക് പോവുക', |
4989 | 5017 | 'securepoll-bad-ballot-submission' => 'താങ്കളുടെ വോട്ട് അസാധുവാണ്: $1', |
4990 | 5018 | 'securepoll-unanswered-questions' => 'താങ്കൾ എല്ലാ ചോദ്യങ്ങൾക്കും ഉത്തരം നൽകേണ്ടതാണ്.', |
— | — | @@ -4992,8 +5020,10 @@ |
4993 | 5021 | താങ്കൾ 1 മുതൽ 999 വരെയുള്ളതിനിടയ്ക്കുള്ള റാങ്ക് എല്ലാത്തിനും നൽകേണ്ടതാണ്.', |
4994 | 5022 | 'securepoll-invalid-score' => 'നൽകുന്ന വില $1, $2 എന്നിവയുടെ ഇടയിലുള്ളതായിരിക്കണം.', |
4995 | 5023 | 'securepoll-unanswered-options' => 'എല്ലാ ചോദ്യങ്ങൾക്കും താങ്കൾ പ്രതികരിക്കേണ്ടതാണ്.', |
| 5024 | + 'securepoll-remote-auth-error' => 'താങ്കളുടെ അംഗത്വ വിവരങ്ങൾ സെർവറിൽ നിന്ന് ശേഖരിക്കുമ്പോൾ പിശക് സംഭവിച്ചിരിക്കുന്നു.', |
4996 | 5025 | 'securepoll-api-invalid-params' => 'അസാധുവായ ചരങ്ങൾ.', |
4997 | 5026 | 'securepoll-api-no-user' => 'ലഭ്യമാക്കിയ ഐ.ഡി.യിൽ ഉപയോക്താക്കളെ ഒന്നും കണ്ടെത്താനായില്ല.', |
| 5027 | + 'securepoll-api-token-mismatch' => 'സുരക്ഷാ ചീട്ട് ഒത്തുപോകുന്നില്ല, പ്രവേശിക്കാൻ കഴിയില്ല.', |
4998 | 5028 | 'securepoll-not-logged-in' => 'ഈ തിരഞ്ഞെടുപ്പിൽ വോട്ട് ചെയ്യാൻ താങ്കൾ ലോഗിൻ ചെയ്യേണ്ടതാകുന്നു', |
4999 | 5029 | 'securepoll-too-few-edits' => 'ക്ഷമിക്കുക, താങ്കൾക്ക് വോട്ട് ചെയ്യാനാവില്ല. ഈ തിരഞ്ഞെടുപ്പിൽ വോട്ട് ചെയ്യാൻ താങ്കൾക്ക് $1 {{PLURAL:$1|തിരുത്തൽ|തിരുത്തലുകൾ}} ആവശ്യമാണ്, താങ്കൾക്ക് $2 എണ്ണമേയുള്ളു.', |
5000 | 5030 | 'securepoll-blocked' => 'ക്ഷമിക്കുക, താങ്കളെ ഇപ്പോൾ തിരുത്തുന്നതിൽ നിന്നും തടഞ്ഞിരിക്കുന്നതിനാൽ താങ്കൾക്ക് വോട്ട് ചെയ്യാൻ കഴിയില്ല.', |
— | — | @@ -5003,31 +5033,44 @@ |
5004 | 5034 | 'securepoll-list-title' => 'വോട്ടുകളുടെ പട്ടിക: $1', |
5005 | 5035 | 'securepoll-header-timestamp' => 'സമയം', |
5006 | 5036 | 'securepoll-header-voter-name' => 'പേര്', |
| 5037 | + 'securepoll-header-voter-domain' => 'ഡൊമൈൻ', |
| 5038 | + 'securepoll-header-ua' => 'ഉപയോക്തൃ പ്രതിനിധി', |
| 5039 | + 'securepoll-header-cookie-dup' => 'അപര(ൻ)', |
| 5040 | + 'securepoll-header-strike' => 'വെട്ടുക', |
5007 | 5041 | 'securepoll-header-details' => 'വിവരങ്ങൾ', |
| 5042 | + 'securepoll-strike-button' => 'വെട്ടുക', |
| 5043 | + 'securepoll-unstrike-button' => 'വെട്ടൽ നീക്കുക', |
5008 | 5044 | 'securepoll-strike-reason' => 'കാരണം:', |
5009 | 5045 | 'securepoll-strike-cancel' => 'റദ്ദാക്കുക', |
| 5046 | + 'securepoll-strike-error' => 'വെട്ടൽ/അതൊഴിവാക്കൽ ചെയ്തതിൽ പിശക്: $1', |
5010 | 5047 | 'securepoll-strike-token-mismatch' => 'സെഷൻ വിവരങ്ങൾ നഷ്ടപ്പെട്ടിരിക്കുന്നു', |
5011 | 5048 | 'securepoll-details-link' => 'വിശദവിവരങ്ങൾ', |
5012 | 5049 | 'securepoll-details-title' => 'വോട്ടിന്റെ വിവരങ്ങൾ: #$1', |
5013 | 5050 | 'securepoll-invalid-vote' => '"$1" ഒരു സാധുവായ വോട്ട് ഐ.ഡി. അല്ല', |
5014 | 5051 | 'securepoll-header-voter-type' => 'വോട്ടർ തരം', |
5015 | 5052 | 'securepoll-voter-properties' => 'വോട്ടർ വിശേഷതകൾ', |
| 5053 | + 'securepoll-strike-log' => 'വെട്ടലുകൾ ചെയ്തതിന്റെ രേഖ', |
5016 | 5054 | 'securepoll-header-action' => 'പ്രവൃത്തി', |
5017 | 5055 | 'securepoll-header-reason' => 'കാരണം', |
5018 | 5056 | 'securepoll-header-admin' => 'കാര്യനിർവാഹകൻ', |
| 5057 | + 'securepoll-dump-no-crypt' => 'തിരഞ്ഞെടുപ്പിൽ ഗൂഢീകരണം ക്രമീകരിച്ചിട്ടില്ലാത്തതിനാൽ, ഈ തിരഞ്ഞെടുപ്പിൽ ഗൂഢീകരിച്ച തിരഞ്ഞെടുപ്പ് വിവരങ്ങളൊന്നും ലഭ്യമല്ല.', |
5019 | 5058 | 'securepoll-dump-not-finished' => 'നിഗൂഢമാക്കപ്പെട്ട തിരഞ്ഞെടുപ്പ് രേഖകൾ തിരഞ്ഞെടുപ്പ് പൂർണ്ണമാകുന്ന $1 $2 -വിനു ശേഷം മാത്രമേ ലഭ്യമാവുകയുള്ളു', |
5020 | 5059 | 'securepoll-dump-no-urandom' => '/dev/urandom തുറക്കാൻ കഴിഞ്ഞില്ല. |
5021 | 5060 | വോട്ടു ചെയ്യുന്നയാളുടെ സ്വകാര്യത സൂക്ഷിക്കാനായി, നിഗൂഢമാക്കപ്പെട്ട തിരഞ്ഞെടുപ്പ് രേഖകൾ സുരക്ഷിത ക്രമരഹിത സംഖ്യാ ശ്രേണിയുമായി കശക്കിയ ശേഷം മാത്രമേ പൊതു ലഭ്യമാവുകയുള്ളു.', |
| 5061 | + 'securepoll-urandom-not-supported' => 'ഈ സെർവർ ഗൂഢീകരിച്ച ക്രമരഹിത സംഖ്യാ സൃഷ്ടി പിന്തുണയ്ക്കുന്നില്ല. |
| 5062 | +വോട്ട് ചെയ്യുന്നയാളിന്റെ സ്വകാര്യത സംരക്ഷിക്കാനായി, സുരക്ഷിതമായ ഒരു ക്രമരഹിത സംഖ്യാ ശ്രേണിയുമായി കശക്കി ഗൂഢീകരിച്ച വോട്ടെടുപ്പ് വിവരങ്ങൾ മാത്രമേ പുറത്തു വിടുകയുള്ളു.', |
5022 | 5063 | 'securepoll-translate-title' => 'തർജ്ജമ ചെയ്യുക:$1', |
5023 | | - 'securepoll-invalid-language' => 'അസാധുവാന ഭാഷാ കോഡ് "$1"', |
| 5064 | + 'securepoll-invalid-language' => 'അസാധുവായ ഭാഷാ കോഡ് "$1"', |
5024 | 5065 | 'securepoll-submit-translate' => 'പുതുക്കുക', |
5025 | 5066 | 'securepoll-language-label' => 'ഭാഷ തിരഞ്ഞെടുക്കുക:', |
5026 | 5067 | 'securepoll-submit-select-lang' => 'തർജ്ജമ ചെയ്യുക', |
| 5068 | + 'securepoll-entry-text' => 'വോട്ടെടുപ്പുകളുടെ പട്ടികയാണ് താഴെ.', |
5027 | 5069 | 'securepoll-header-title' => 'പേര്', |
5028 | 5070 | 'securepoll-header-start-date' => 'തുടങ്ങുന്ന തീയതി', |
5029 | 5071 | 'securepoll-header-end-date' => 'അവസാനിക്കുന്ന തീയതി', |
5030 | 5072 | 'securepoll-subpage-vote' => 'വോട്ട്', |
5031 | 5073 | 'securepoll-subpage-translate' => 'തർജ്ജമ ചെയ്യുക', |
| 5074 | + 'securepoll-ranks' => 'അന്തിമ റാങ്കിങ്', |
5032 | 5075 | ); |
5033 | 5076 | |
5034 | 5077 | /** Malay (Bahasa Melayu) |
— | — | @@ -5162,7 +5205,7 @@ |
5163 | 5206 | 'securepoll' => 'SecurePoll', |
5164 | 5207 | 'securepoll-desc' => 'Estensjoni għall-elezzjonijiet u s-sondaġġi', |
5165 | 5208 | 'securepoll-invalid-page' => 'Sottopaġna invalida "<nowiki>$1</nowiki>"', |
5166 | | - 'securepoll-need-admin' => 'Trid tkun amministratur biex tesegwixxi din l-azzjoni.', |
| 5209 | + 'securepoll-need-admin' => 'Trid tkun amministratur tal-elezzjoni biex tesegwixxi din l-azzjoni.', |
5167 | 5210 | 'securepoll-too-few-params' => 'Parametri mhux biżżejjed tas-sottopaġna (ħolqa invalida)0.', |
5168 | 5211 | 'securepoll-invalid-election' => '"$1" mhijiex ID valida għall-elezzjoni.', |
5169 | 5212 | 'securepoll-welcome' => '<strong>Merħba $1!</strong>', |
— | — | @@ -5495,6 +5538,7 @@ |
5496 | 5539 | 'securepoll-submit-translate' => 'Bijwerken', |
5497 | 5540 | 'securepoll-language-label' => 'Taal selecteren:', |
5498 | 5541 | 'securepoll-submit-select-lang' => 'Vertalen', |
| 5542 | + 'securepoll-entry-text' => 'Hieronder wordt een lijst met stemmingen weergegeven.', |
5499 | 5543 | 'securepoll-header-title' => 'Naam', |
5500 | 5544 | 'securepoll-header-start-date' => 'Begindatum', |
5501 | 5545 | 'securepoll-header-end-date' => 'Einddatum', |
— | — | @@ -5858,6 +5902,7 @@ |
5859 | 5903 | 'securepoll-submit-translate' => 'Metre a jorn', |
5860 | 5904 | 'securepoll-language-label' => 'Seleccionar la lenga :', |
5861 | 5905 | 'securepoll-submit-select-lang' => 'Traduire', |
| 5906 | + 'securepoll-entry-text' => 'Çaijós la lista dels sondatges.', |
5862 | 5907 | 'securepoll-header-title' => 'Nom', |
5863 | 5908 | 'securepoll-header-start-date' => 'Data de començament', |
5864 | 5909 | 'securepoll-header-end-date' => 'Data de fin', |
— | — | @@ -6008,6 +6053,8 @@ |
6009 | 6054 | 'securepoll-header-voter-name' => 'Naame', |
6010 | 6055 | 'securepoll-strike-reason' => 'Grund:', |
6011 | 6056 | 'securepoll-header-reason' => 'Grund', |
| 6057 | + 'securepoll-header-admin' => 'Verwalter', |
| 6058 | + 'securepoll-translate-title' => 'Iwwersetze: $1', |
6012 | 6059 | 'securepoll-submit-select-lang' => 'Iwwersetze', |
6013 | 6060 | 'securepoll-header-title' => 'Naame', |
6014 | 6061 | 'securepoll-subpage-translate' => 'Iwwersetze', |
— | — | @@ -6143,6 +6190,7 @@ |
6144 | 6191 | ); |
6145 | 6192 | |
6146 | 6193 | /** Piedmontese (Piemontèis) |
| 6194 | + * @author Borichèt |
6147 | 6195 | * @author Dragonòt |
6148 | 6196 | */ |
6149 | 6197 | $messages['pms'] = array( |
— | — | @@ -6193,6 +6241,8 @@ |
6194 | 6242 | 'securepoll-invalid-rank' => 'Vot pa bon. It deuve dé ai candidà un vot tra 1 e 999.', |
6195 | 6243 | 'securepoll-unranked-options' => 'Cheich opsion a son pa stàite votà. |
6196 | 6244 | It deuve deje a minca vos un vot tra 1 e 999.', |
| 6245 | + 'securepoll-invalid-score' => 'Ël pontegi a deuv esse un nùmer an tra $1 e $2.', |
| 6246 | + 'securepoll-unanswered-options' => "A dev dé n'arspòsta për minca chestion.", |
6197 | 6247 | 'securepoll-remote-auth-error' => 'Eror an lesend le anformassion ëd tò cont dal server.', |
6198 | 6248 | 'securepoll-remote-parse-error' => "Eror an antërpretand l'arspòsta d'autorisassion dal server.", |
6199 | 6249 | 'securepoll-api-invalid-params' => 'Paràmetr pa vàlid.', |
— | — | @@ -6240,6 +6290,7 @@ |
6241 | 6291 | 'securepoll-submit-translate' => 'Agiorna', |
6242 | 6292 | 'securepoll-language-label' => 'Sern lenga:', |
6243 | 6293 | 'securepoll-submit-select-lang' => 'Traduv', |
| 6294 | + 'securepoll-entry-text' => 'Sota a-i é la lista dij sondagi.', |
6244 | 6295 | 'securepoll-header-title' => 'Nòm', |
6245 | 6296 | 'securepoll-header-start-date' => 'Data inissi', |
6246 | 6297 | 'securepoll-header-end-date' => 'Data fin', |
— | — | @@ -6286,6 +6337,7 @@ |
6287 | 6338 | * @author Capmo |
6288 | 6339 | * @author Crazymadlover |
6289 | 6340 | * @author Everton137 |
| 6341 | + * @author Hamilton Abreu |
6290 | 6342 | * @author Lijealso |
6291 | 6343 | * @author Malafaya |
6292 | 6344 | * @author Waldir |
— | — | @@ -6348,7 +6400,7 @@ |
6349 | 6401 | 'securepoll-blocked' => 'Desculpe, você não pode votar nesta eleição, se você está atualmente bloqueado de editar.', |
6350 | 6402 | 'securepoll-bot' => 'Desculpe, contas com a marca de robô não estão autorizadas a votar nesta eleição.', |
6351 | 6403 | 'securepoll-not-in-group' => 'Só os membros do grupo "$1" podem votar nesta eleição.', |
6352 | | - 'securepoll-not-in-list' => 'Desculpe, você não está na lista de usuários previamente autorizados a votar nesta eleição.', |
| 6404 | + 'securepoll-not-in-list' => 'Desculpe, não consta da lista de utilizadores previamente autorizados a votar nesta eleição.', |
6353 | 6405 | 'securepoll-list-title' => 'Listar votos: $1', |
6354 | 6406 | 'securepoll-header-timestamp' => 'Hora', |
6355 | 6407 | 'securepoll-header-voter-name' => 'Nome', |
— | — | @@ -6690,6 +6742,7 @@ |
6691 | 6743 | 'securepoll-submit-translate' => 'Обновить', |
6692 | 6744 | 'securepoll-language-label' => 'Выбор языка:', |
6693 | 6745 | 'securepoll-submit-select-lang' => 'Перевести', |
| 6746 | + 'securepoll-entry-text' => 'Ниже приведён список голосований.', |
6694 | 6747 | 'securepoll-header-title' => 'Имя', |
6695 | 6748 | 'securepoll-header-start-date' => 'Дата начала', |
6696 | 6749 | 'securepoll-header-end-date' => 'Дата окончания', |
— | — | @@ -6914,6 +6967,8 @@ |
6915 | 6968 | 'securepoll-invalid-rank' => 'Neplatné hodnotenie. Musíte zadať kandidátov s hodnotením medzi 1 a 999.', |
6916 | 6969 | 'securepoll-unranked-options' => 'Niektoré možnosti neboli ohodnotené. |
6917 | 6970 | Musíte dať každej možnosti hodnotenie medzi 1 a 999.', |
| 6971 | + 'securepoll-invalid-score' => 'Skóre musí byť číslo medzi $1 a $2.', |
| 6972 | + 'securepoll-unanswered-options' => 'Musíte dať odpoveď na každú otázku.', |
6918 | 6973 | 'securepoll-remote-auth-error' => 'Pri zisťovaní vašich prihlasovacích informácií zo servera nastala chyba.', |
6919 | 6974 | 'securepoll-remote-parse-error' => 'Pri interpretácii odpovede o autorizácii od servera nastala chyba.', |
6920 | 6975 | 'securepoll-api-invalid-params' => 'Neplatné parametre.', |
— | — | @@ -7312,6 +7367,7 @@ |
7313 | 7368 | ); |
7314 | 7369 | |
7315 | 7370 | /** Thai (ไทย) |
| 7371 | + * @author Ans |
7316 | 7372 | * @author Octahedron80 |
7317 | 7373 | * @author Passawuth |
7318 | 7374 | * @author Watcharakorn |
— | — | @@ -7320,7 +7376,7 @@ |
7321 | 7377 | $messages['th'] = array( |
7322 | 7378 | 'securepoll-desc' => 'ส่วนขยายสำหรับการลงคะแนนและการสำรวจ', |
7323 | 7379 | 'securepoll-invalid-page' => 'ไม่มีหน้าย่อย "<nowiki>$1</nowiki>"', |
7324 | | - 'securepoll-need-admin' => 'คุณต้องเป็นผู้ดูแลระบบในการกระทำสิ่งนี้', |
| 7380 | + 'securepoll-need-admin' => 'คุณต้องเป็นผู้ดูแลระบบการเลือกตั้งในการกระทำสิ่งนี้', |
7325 | 7381 | 'securepoll-too-few-params' => 'พารามิเตอร์ของหน้าย่อยไม่เพียงพอ (ไม่มีลิงก์ดังกล่าว)', |
7326 | 7382 | 'securepoll-invalid-election' => '"$1" ไม่ใช่ไอดีลงคะแนนที่ถูกต้อง', |
7327 | 7383 | 'securepoll-welcome' => '<strong>ยินดีต้อนรับ $1!</strong>', |
— | — | @@ -7602,6 +7658,7 @@ |
7603 | 7659 | 'securepoll-submit-translate' => 'Güncelle', |
7604 | 7660 | 'securepoll-language-label' => 'Dili seç:', |
7605 | 7661 | 'securepoll-submit-select-lang' => 'Çevir', |
| 7662 | + 'securepoll-entry-text' => 'Aşağıdaki, anketlerin listesidir.', |
7606 | 7663 | 'securepoll-header-title' => 'Ad', |
7607 | 7664 | 'securepoll-header-start-date' => 'Başlangıç tarihi', |
7608 | 7665 | 'securepoll-header-end-date' => 'Bitiş tarihi', |
— | — | @@ -7642,12 +7699,14 @@ |
7643 | 7700 | * @author AS |
7644 | 7701 | * @author Ahonc |
7645 | 7702 | * @author Ilyaroz |
| 7703 | + * @author NickK |
| 7704 | + * @author Prima klasy4na |
7646 | 7705 | */ |
7647 | 7706 | $messages['uk'] = array( |
7648 | 7707 | 'securepoll' => 'Безпечне голосування', |
7649 | 7708 | 'securepoll-desc' => 'Розширення для проведення виборів і опитувань', |
7650 | 7709 | 'securepoll-invalid-page' => 'Помилкова підсторінка "<nowiki>$1</nowiki>"', |
7651 | | - 'securepoll-need-admin' => 'Вам потрібно бути адміністртором, щоб виконати цю дію.', |
| 7710 | + 'securepoll-need-admin' => 'Вам потрібно бути адміністратором виборів, щоб виконати цю дію.', |
7652 | 7711 | 'securepoll-too-few-params' => 'Не вистачає параметрів підсторінки (помилкове посилання).', |
7653 | 7712 | 'securepoll-invalid-election' => '«$1» не є допустимим виборчим ідентифікатором.', |
7654 | 7713 | 'securepoll-welcome' => '<strong>Ласкаво просимо, $1!</strong>', |
— | — | @@ -7691,6 +7750,8 @@ |
7692 | 7751 | 'securepoll-invalid-rank' => 'Неправильне місце. Ви повинні вказати для кандидата місце від 1 до 999.', |
7693 | 7752 | 'securepoll-unranked-options' => 'Для деяких записів не зазначені місця. |
7694 | 7753 | Вам слід вказати місця від 1 до 999 для кожного запису.', |
| 7754 | + 'securepoll-invalid-score' => 'Оцінка повинна бути числом від $1 до $2.', |
| 7755 | + 'securepoll-unanswered-options' => 'Ви повинні дати відповідь на кожне питання.', |
7695 | 7756 | 'securepoll-remote-auth-error' => 'Помилка отримання інформації з сервера про ваш обліковий запис.', |
7696 | 7757 | 'securepoll-remote-parse-error' => 'Помилка інтерпретації відповіді від авторизації з сервера.', |
7697 | 7758 | 'securepoll-api-invalid-params' => 'Помилкові параметри.', |
— | — | @@ -7738,6 +7799,7 @@ |
7739 | 7800 | 'securepoll-submit-translate' => 'Оновити', |
7740 | 7801 | 'securepoll-language-label' => 'Вибір мови:', |
7741 | 7802 | 'securepoll-submit-select-lang' => 'Перекласти', |
| 7803 | + 'securepoll-entry-text' => 'Нижче наведений список голосувань.', |
7742 | 7804 | 'securepoll-header-title' => "Ім'я", |
7743 | 7805 | 'securepoll-header-start-date' => 'Дата початку', |
7744 | 7806 | 'securepoll-header-end-date' => 'Дата закінчення', |
— | — | @@ -7759,6 +7821,9 @@ |
7760 | 7822 | 'securepoll-no-upload' => 'Файл не був завантажений, неможливо підрахувати результати.', |
7761 | 7823 | 'securepoll-dump-corrupt' => 'Файл скиду (дампу) пошкоджений і не може бути обробленим.', |
7762 | 7824 | 'securepoll-tally-upload-error' => 'Помилка під час підрахунків у файлі скиду (дампу): $1', |
| 7825 | + 'securepoll-pairwise-victories' => 'Матриця попарних перемог', |
| 7826 | + 'securepoll-strength-matrix' => 'Матриця сил шляхів', |
| 7827 | + 'securepoll-ranks' => 'Остаточний рейтинг', |
7763 | 7828 | ); |
7764 | 7829 | |
7765 | 7830 | /** Urdu (اردو) |
— | — | @@ -7981,6 +8046,8 @@ |
7982 | 8047 | 'securepoll-invalid-rank' => 'Xếp hạng không hợp lệ. Bạn phải xếp hạng cho ứng viên trong khoảng từ 1 đến 999.', |
7983 | 8048 | 'securepoll-unranked-options' => 'Một số ứng viên chưa được xếp hạng. |
7984 | 8049 | Bạn phải xếp hạng từ 1 đến 999 cho tất cả các ứng viên.', |
| 8050 | + 'securepoll-invalid-score' => 'Số điểm phải nằm giữa $1 và $2.', |
| 8051 | + 'securepoll-unanswered-options' => 'Bạn phải cung cấp phản hồi cho mỗi câu hỏi.', |
7985 | 8052 | 'securepoll-remote-auth-error' => 'Lỗi khi truy xuất thông tin tài khoản của bạn từ máy chủ.', |
7986 | 8053 | 'securepoll-remote-parse-error' => 'Lỗi khi thông dịch phản hồi ủy quyền từ máy chủ.', |
7987 | 8054 | 'securepoll-api-invalid-params' => 'Thông số không hợp lệ.', |
— | — | @@ -8234,7 +8301,7 @@ |
8235 | 8302 | 'securepoll' => '安全投票', |
8236 | 8303 | 'securepoll-desc' => '选举和投票扩展', |
8237 | 8304 | 'securepoll-invalid-page' => '无效的子页面「<nowiki>$1</nowiki>」', |
8238 | | - 'securepoll-need-admin' => '您必须是管理员才能进行此操作。', |
| 8305 | + 'securepoll-need-admin' => '您必须是选举管理员才能进行此操作。', |
8239 | 8306 | 'securepoll-too-few-params' => '缺少子页面参数(无效链接)。', |
8240 | 8307 | 'securepoll-invalid-election' => '「$1」不是有效的选举投票编号。', |
8241 | 8308 | 'securepoll-welcome' => '<strong>欢迎$1!</strong>', |
— | — | @@ -8274,6 +8341,8 @@ |
8275 | 8342 | 'securepoll-unanswered-questions' => '您必须回答所有问题。', |
8276 | 8343 | 'securepoll-invalid-rank' => '评级无效。给候选人的评级分数必须在1到999之间。', |
8277 | 8344 | 'securepoll-unranked-options' => '部分选项尚未评级。所有选项均应评级,且分数应在1到999之间。', |
| 8345 | + 'securepoll-invalid-score' => '分数必须介于$1和$2之间。', |
| 8346 | + 'securepoll-unanswered-options' => '您必须回答每一个问题。', |
8278 | 8347 | 'securepoll-remote-auth-error' => '从服务器提取您的用户信息时出错。', |
8279 | 8348 | 'securepoll-remote-parse-error' => '服务器验证出错。', |
8280 | 8349 | 'securepoll-api-invalid-params' => '参数无效。', |
— | — | @@ -8320,6 +8389,7 @@ |
8321 | 8390 | 'securepoll-submit-translate' => '更新', |
8322 | 8391 | 'securepoll-language-label' => '选择语言:', |
8323 | 8392 | 'securepoll-submit-select-lang' => '翻译', |
| 8393 | + 'securepoll-entry-text' => '下面是所有选举的列表。', |
8324 | 8394 | 'securepoll-header-title' => '名称', |
8325 | 8395 | 'securepoll-header-start-date' => '开始日期', |
8326 | 8396 | 'securepoll-header-end-date' => '结束日期', |
Property changes on: branches/wmf-deployment/extensions/SecurePoll |
___________________________________________________________________ |
Modified: svn:mergeinfo |
8327 | 8397 | Merged /trunk/extensions/SecurePoll:r58282-58801 |