* Improve i18n (use formatNum for all numbers, add dir & lang attribute)

* Change td to th elements for titles (this also makes the sort script work again)
* General whitespace fixes
This commit is contained in:
Robin Pepermans 2011-11-28 16:34:58 +00:00
parent 95e51b5958
commit 21da2d00f6
3 changed files with 62 additions and 46 deletions

View file

@ -17,7 +17,7 @@ $messages['en'] = array(
Scores calculated in this manner weight edit diversity over edit volume. Scores calculated in this manner weight edit diversity over edit volume.
Basically, this score measures primarily unique pages edited, with consideration for high edit volume - assumed to be a higher quality page.", Basically, this score measures primarily unique pages edited, with consideration for high edit volume - assumed to be a higher quality page.",
'contributionscores-top' => '(Top $1)', 'contributionscores-top' => '(Top $1)',
'contributionscores-days' => 'Last {{PLURAL:$1|day|$1 days}}', 'contributionscores-days' => 'Last {{PLURAL:$1|day|$2 days}}',
'contributionscores-allrevisions' => 'All time', 'contributionscores-allrevisions' => 'All time',
'contributionscores-score' => 'Score', 'contributionscores-score' => 'Score',
'contributionscores-pages' => 'Pages', 'contributionscores-pages' => 'Pages',
@ -42,7 +42,7 @@ $messages['qqq'] = array(
:COUNT(rev_id) AS rev_count :COUNT(rev_id) AS rev_count
:page_count+SQRT(rev_count-page_count)*2 AS wiki_rank', :page_count+SQRT(rev_count-page_count)*2 AS wiki_rank',
'contributionscores-top' => 'Second part of the headings of [[Special:ContributionScores]]. PLURAL is supported but not used by the English original message.', 'contributionscores-top' => 'Second part of the headings of [[Special:ContributionScores]]. PLURAL is supported but not used by the English original message.',
'contributionscores-days' => 'Heading of [[Special:ContributionScores]].', 'contributionscores-days' => 'Heading of [[Special:ContributionScores]]. Parameter $1 is the number of days for PLURAL use; $2 is a localized number.',
'contributionscores-allrevisions' => 'Used as a header of [[Special:ContributionScores]]', 'contributionscores-allrevisions' => 'Used as a header of [[Special:ContributionScores]]',
'contributionscores-pages' => '{{Identical|Pages}}', 'contributionscores-pages' => '{{Identical|Pages}}',
'contributionscores-username' => '{{Identical|Username}}', 'contributionscores-username' => '{{Identical|Username}}',

View file

@ -11,11 +11,11 @@ if (!defined('MEDIAWIKI')) {
$wgExtensionCredits['specialpage'][] = array( $wgExtensionCredits['specialpage'][] = array(
'path' => __FILE__, 'path' => __FILE__,
'name'=>'Contribution Scores', 'name' => 'Contribution Scores',
'url'=>'http://www.mediawiki.org/wiki/Extension:Contribution_Scores', 'url' => 'http://www.mediawiki.org/wiki/Extension:Contribution_Scores',
'author'=>'Tim Laqua', 'author' => 'Tim Laqua',
'descriptionmsg' => 'contributionscores-desc', 'descriptionmsg' => 'contributionscores-desc',
'version'=>'1.11' 'version' => '1.12'
); );
define( 'CONTRIBUTIONSCORES_PATH', dirname( __FILE__ ) ); define( 'CONTRIBUTIONSCORES_PATH', dirname( __FILE__ ) );

View file

@ -31,9 +31,9 @@ class ContributionScores extends IncludableSpecialPage {
* @return HTML Table representing the requested Contribution Scores. * @return HTML Table representing the requested Contribution Scores.
*/ */
function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) { function genContributionScoreTable( $days, $limit, $title = null, $options = 'none' ) {
global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgUser; global $wgContribScoreIgnoreBots, $wgContribScoreIgnoreBlockedUsers, $wgUser, $wgLang;
$opts = explode(',', strtolower($options)); $opts = explode( ',', strtolower( $options ) );
$dbr = wfGetDB( DB_SLAVE ); $dbr = wfGetDB( DB_SLAVE );
@ -89,24 +89,24 @@ class ContributionScores extends IncludableSpecialPage {
"ORDER BY wiki_rank DESC " . "ORDER BY wiki_rank DESC " .
"LIMIT $limit"; "LIMIT $limit";
$res = $dbr->query($sql); $res = $dbr->query( $sql );
$sortable = in_array('nosort', $opts) ? '' : ' sortable'; $sortable = in_array( 'nosort', $opts ) ? '' : ' sortable';
$output = "<table class=\"wikitable contributionscores plainlinks{$sortable}\" >\n". $output = "<table class=\"wikitable contributionscores plainlinks{$sortable}\" >\n".
"<tr class='header'>\n". "<tr class='header'>\n".
"<td>" . wfMsgHtml( 'contributionscores-score' ) . "</td>\n" . "<th>" . wfMsgHtml( 'contributionscores-score' ) . "</th>\n" .
"<td>" . wfMsgHtml( 'contributionscores-pages' ) . "</td>\n" . "<th>" . wfMsgHtml( 'contributionscores-pages' ) . "</th>\n" .
"<td>" . wfMsgHtml( 'contributionscores-changes' ) . "</td>\n" . "<th>" . wfMsgHtml( 'contributionscores-changes' ) . "</th>\n" .
"<td>" . wfMsgHtml( 'contributionscores-username' ) . "</td>\n"; "<th>" . wfMsgHtml( 'contributionscores-username' ) . "</th>\n";
$skin = $wgUser->getSkin(); $skin = $wgUser->getSkin();
$altrow = ''; $altrow = '';
foreach ( $res as $row ) { foreach ( $res as $row ) {
$output .= "</tr><tr class='{$altrow}'>\n<td class='content'>" . $output .= "</tr><tr class='{$altrow}'>\n<td class='content'>" .
round($row->wiki_rank,0) . "\n</td><td class='content'>" . $wgLang->formatNum( round( $row->wiki_rank, 0 ) ) . "\n</td><td class='content'>" .
$row->page_count . "\n</td><td class='content'>" . $wgLang->formatNum( $row->page_count ) . "\n</td><td class='content'>" .
$row->rev_count . "\n</td><td class='content'>" . $wgLang->formatNum( $row->rev_count ) . "\n</td><td class='content'>" .
$skin->userLink( $row->user_id, $row->user_name ); $skin->userLink( $row->user_id, $row->user_name );
# Option to not display user tools # Option to not display user tools
@ -115,7 +115,7 @@ class ContributionScores extends IncludableSpecialPage {
$output .= "</td>\n"; $output .= "</td>\n";
if ( $altrow == '' && empty($sortable) ) if ( $altrow == '' && empty( $sortable ) )
$altrow = 'odd '; $altrow = 'odd ';
else else
$altrow = ''; $altrow = '';
@ -124,14 +124,15 @@ class ContributionScores extends IncludableSpecialPage {
$dbr->freeResult( $res ); $dbr->freeResult( $res );
if ( !empty( $title ) ) if ( !empty( $title ) )
$output = "<table cellspacing='0' cellpadding='0' class='contributionscores-wrapper'>\n". $output = Html::rawElement( 'table', array( 'cellspacing' => 0, 'cellpadding' => 0,
'class' => 'contributionscores-wrapper', 'lang' => $wgLang->getCode(), 'dir' => $wgLang->getDir() ),
"\n".
"<tr>\n". "<tr>\n".
"<td style='padding: 0px;'>{$title}</td>\n". "<td style='padding: 0px;'>{$title}</td>\n".
"</tr>\n". "</tr>\n".
"<tr>\n". "<tr>\n".
"<td style='padding: 0px;'>{$output}</td>\n". "<td style='padding: 0px;'>{$output}</td>\n".
"</tr>\n". "</tr>\n" );
"</table>";
return $output; return $output;
} }
@ -147,62 +148,77 @@ class ContributionScores extends IncludableSpecialPage {
return true; return true;
} }
/**
* Called when being included on a normal wiki page.
* Cache is disabled so it can depend on the user language.
* @param $par
*/
function showInclude( $par ) { function showInclude( $par ) {
global $wgOut; global $wgOut, $wgLang;
$days = null; $days = null;
$limit = null; $limit = null;
$options = 'none'; $options = 'none';
if ( !empty( $par ) ) { if ( !empty( $par ) ) {
$params = explode('/', $par); $params = explode('/', $par );
$limit = intval( $params[0] ); $limit = intval( $params[0] );
if ( isset( $params[1] ) ) if ( isset( $params[1] ) ) {
$days = intval( $params[1] ); $days = intval( $params[1] );
}
if ( isset( $params[2] ) )
if ( isset( $params[2] ) ) {
$options = $params[2]; $options = $params[2];
}
} }
if ( empty( $limit ) || $limit < 1 || $limit > CONTRIBUTIONSCORES_MAXINCLUDELIMIT ) if ( empty( $limit ) || $limit < 1 || $limit > CONTRIBUTIONSCORES_MAXINCLUDELIMIT ) {
$limit = 10; $limit = 10;
if ( is_null( $days ) || $days < 0 ) }
if ( is_null( $days ) || $days < 0 ) {
$days = 7; $days = 7;
}
if ( $days > 0 ) { if ( $days > 0 ) {
$reportTitle = wfMsgExt( 'contributionscores-days', 'parsemag', $days ); $reportTitle = wfMsgExt( 'contributionscores-days', 'parsemag', $days, $wgLang->formatNum( $days ) );
} else { } else {
$reportTitle = wfMsg( 'contributionscores-allrevisions' ); $reportTitle = wfMsg( 'contributionscores-allrevisions' );
} }
$reportTitle .= " " . wfMsgExt( 'contributionscores-top', 'parsemag', $limit ); $reportTitle .= " " . wfMsgExt( 'contributionscores-top', 'parsemag', $wgLang->formatNum( $limit ) );
$title = Xml::element( 'h4', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n"; $title = Xml::element( 'h4', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n";
$wgOut->addHTML( $this->genContributionScoreTable( $days, $limit, $title, $options ) ); $wgOut->addHTML( $this->genContributionScoreTable( $days, $limit, $title, $options ) );
} }
/**
* Show the special page
*/
function showPage() { function showPage() {
global $wgOut, $wgContribScoreReports; global $wgOut, $wgLang, $wgContribScoreReports;
if (!is_array($wgContribScoreReports)) { if ( !is_array( $wgContribScoreReports ) ) {
$wgContribScoreReports = array( $wgContribScoreReports = array(
array(7,50), array( 7, 50 ),
array(30,50), array( 30, 50 ),
array(0,50)); array( 0, 50 )
);
} }
$wgOut->addWikiMsg( 'contributionscores-info' ); $wgOut->addWikiMsg( 'contributionscores-info' );
foreach ( $wgContribScoreReports as $scoreReport) { foreach ( $wgContribScoreReports as $scoreReport ) {
if ( $scoreReport[0] > 0 ) { $days = $scoreReport[0];
$reportTitle = wfMsgExt( 'contributionscores-days', 'parsemag', $scoreReport[0] ); $revs = $scoreReport[1];
if ( $days > 0 ) {
$reportTitle = wfMsgExt( 'contributionscores-days', 'parsemag', $days, $wgLang->formatNum( $days ) );
} else { } else {
$reportTitle = wfMsg( 'contributionscores-allrevisions' ); $reportTitle = wfMsg( 'contributionscores-allrevisions' );
} }
$reportTitle .= " " . wfMsgExt('contributionscores-top', 'parsemag', $scoreReport[1] ); $reportTitle .= " " . wfMsgExt('contributionscores-top', 'parsemag', $wgLang->formatNum( $revs ) );
$title = Xml::element( 'h2', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n"; $title = Xml::element( 'h2', array( 'class' => 'contributionscores-title' ), $reportTitle ) . "\n";
$wgOut->addHTML( $title ); $wgOut->addHTML( $title );
$wgOut->addHTML( $this->genContributionScoreTable( $scoreReport[0], $scoreReport[1] ) ); $wgOut->addHTML( $this->genContributionScoreTable( $days, $revs ) );
} }
} }
} }