[MediaWiki-commits] [Gerrit] Initial version of the extension - change (mediawiki...PageLanguage)

2013-10-06 Thread Liangent (Code Review)
Liangent has submitted this change and it was merged.

Change subject: Initial version of the extension
..


Initial version of the extension

Bug: 49588
Change-Id: Ib754e512b6923a043d93c565ea3af9c936409ca3
---
A PageLanguage.body.php
A PageLanguage.i18n.php
A PageLanguage.magic.php
A PageLanguage.php
4 files changed, 135 insertions(+), 0 deletions(-)

Approvals:
  Liangent: Verified; Looks good to me, approved



diff --git a/PageLanguage.body.php b/PageLanguage.body.php
new file mode 100644
index 000..f3f4583
--- /dev/null
+++ b/PageLanguage.body.php
@@ -0,0 +1,69 @@
+getPrefixedDBKey()] ) ) {
+   $pageLang = self::$cache[$title->getPrefixedDBKey()];
+   } elseif ( $title->getArticleID() > 0 ) {
+   $dbr = wfGetDB( DB_SLAVE );
+   $langCode = $dbr->selectField(
+   'page_props', 'pp_value', array(
+   'pp_page' => $title->getArticleID(),
+   'pp_propname' => 'pagelanguage',
+   ), __METHOD__
+   );
+
+   if ( $langCode !== false && Language::isValidCode( 
$langCode ) ) {
+   $pageLang = Language::factory( $langCode );
+   }
+   }
+
+   return true;
+   }
+
+   public static function onParserFirstCallInit( Parser $parser ) {
+   $parser->setFunctionHook( 'pagelanguage', 
'PageLanguage::funcPageLanguage', SFH_NO_HASH );
+
+   return true;
+   }
+
+   public static function funcPageLanguage( Parser $parser, $langCode, 
$uarg = '' ) {
+   static $magicWords = null;
+   if ( is_null( $magicWords ) ) {
+   $magicWords = new MagicWordArray( array( 
'pagelanguage_noerror', 'pagelanguage_noreplace' ) );
+   }
+   $arg = $magicWords->matchStartToEnd( $uarg );
+
+   $langCode = trim( $langCode );
+   if ( strlen( $langCode ) === 0 ) {
+   return '';
+   }
+
+   if ( Language::isValidCode( $langCode ) ) {
+   $lang = Language::factory( $langCode );
+   } else {
+   return '' .
+   wfMessage( 'pagelanguage-invalid' 
)->inContentLanguage()
+   ->params( wfEscapeWikiText( $langCode ) 
)->text() .
+   '';
+   }
+
+   $old = $parser->getOutput()->getProperty( 'pagelanguage' );
+   if ( $old === false || $arg !== 'pagelanguage_noreplace' ) {
+   $parser->getOutput()->setProperty( 'pagelanguage', 
$lang->getCode() );
+   self::$cache[$parser->getTitle()->getPrefixedDBKey()] = 
$lang;
+   }
+
+   if ( $old === false || $old === $lang->getCode() || $arg ) {
+   return '';
+   } else {
+   return '' .
+   wfMessage( 'pagelanguage-duplicate' 
)->inContentLanguage()->params(
+   wfEscapeWikiText( $old ), 
wfEscapeWikiText( $lang->getCode() ) )->text() .
+   '';
+   }
+   }
+}
diff --git a/PageLanguage.i18n.php b/PageLanguage.i18n.php
new file mode 100644
index 000..615e1bc
--- /dev/null
+++ b/PageLanguage.i18n.php
@@ -0,0 +1,27 @@
+ "Define page language per page",
+   'pagelanguage-invalid' => "'''Warning:''' Ignoring invalid language 
code \"$1\" for page language.",
+   'pagelanguage-duplicate' => "'''Warning:''' Page language \"$2\" 
overrides earlier page language \"$1\".",
+);
+
+/** Message documentation (Message documentation) */
+$messages['qqq'] = array(
+   'pagelanguage-desc' => '{{desc|name=Page 
Language|url=http://www.mediawiki.org/wiki/Extension:PageLanguage}}',
+   'pagelanguage-invalid' => 'Error message when an invalid language is 
used. $1 for the language code used.',
+   'pagelanguage-duplicate' => 'Error message when a different language is 
set overriding a previous one.
+
+Parameters:
+* $1: the language code set previously
+* $2: the language code being set now',
+);
diff --git a/PageLanguage.magic.php b/PageLanguage.magic.php
new file mode 100644
index 000..825bfc2
--- /dev/null
+++ b/PageLanguage.magic.php
@@ -0,0 +1,16 @@
+ array( 1, 'PAGELANGUAGE' ),
+   'pagelanguage_noerror' => array( 0, 'noerror' ),
+   'pagelanguage_noreplace' => array( 0, 'noreplace' ),
+);
diff --git a/PageLanguage.php b/PageLanguage.php
new file mode 100644
index 000..0b7d09c
--- /dev/null
+++ b/PageLanguage.php
@@ -0,0 +1,23 @@
+ __FILE__,
+   'name' => 'Page Language',
+   'author' => array( 'Liangent' ),
+   'url' => 'https:/

[MediaWiki-commits] [Gerrit] Initial version of the extension - change (mediawiki...PageLanguage)

2013-06-15 Thread Liangent (Code Review)
Liangent has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/68852


Change subject: Initial version of the extension
..

Initial version of the extension

Bug: 49588
Change-Id: Ib754e512b6923a043d93c565ea3af9c936409ca3
---
A .gitignore
A .gitreview
A PageLanguage.body.php
A PageLanguage.i18n.php
A PageLanguage.magic.php
A PageLanguage.php
6 files changed, 135 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/PageLanguage 
refs/changes/52/68852/1

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000..98b092a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.svn
+*~
+*.kate-swp
+.*.swp
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 000..46e501f
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,5 @@
+[gerrit]
+host=gerrit.wikimedia.org
+port=29418
+project=mediawiki/extensions/PageLanguage.git
+defaultbranch=master
diff --git a/PageLanguage.body.php b/PageLanguage.body.php
new file mode 100644
index 000..b5b0219
--- /dev/null
+++ b/PageLanguage.body.php
@@ -0,0 +1,64 @@
+getArticleID() > 0 ) {
+   $dbr = wfGetDB( DB_SLAVE );
+   $langCode = $dbr->selectField(
+   'page_props', 'pp_value', array(
+   'pp_page' => $title->getArticleID(),
+   'pp_propname' => 'pagelanguage',
+   ), __METHOD__
+   );
+   if ( $langCode !== false ) {
+   try {
+   $lang = Language::factory( $langCode );
+   } catch ( MWException $e ) {
+   return true;
+   }
+   $pageLang = $lang;
+   }
+   }
+   return true;
+   }
+
+   public static function onParserFirstCallInit( Parser $parser ) {
+   $parser->setFunctionHook( 'pagelanguage', 
'PageLanguage::funcPageLanguage', SFH_NO_HASH );
+   return true;
+   }
+
+   public static function funcPageLanguage( Parser $parser, $langCode, 
$uarg = '' ) {
+   static $magicWords = null;
+   if ( is_null( $magicWords ) ) {
+   $magicWords = new MagicWordArray( array( 
'pagelanguage_noerror', 'pagelanguage_noreplace' ) );
+   }
+   $arg = $magicWords->matchStartToEnd( $uarg );
+
+   $langCode = trim( $langCode );
+   if ( strlen( $langCode ) == 0 ) {
+   return '';
+   }
+
+   try {
+   $lang = Language::factory( $langCode );
+   } catch ( MWException $e ) {
+   return '' .
+   wfMessage( 'pagelanguage-invalid' 
)->inContentLanguage()->params( $langCode )->escaped() .
+   '';
+   }
+
+   $old = $parser->getOutput()->getProperty( 'pagelanguage' );
+   if ( $old === false || $arg !== 'pagelanguage_noreplace' ) {
+   $parser->getOutput()->setProperty( 'pagelanguage', 
$lang->getCode() );
+   }
+
+   if ( $old === false || $old == $lang->getCode() || $arg ) {
+   return '';
+   } else {
+   return '' .
+   wfMessage( 'pagelanguage-duplicate' 
)->inContentLanguage()->params( $old, $lang->getCode() )->escaped() .
+   '';
+   }
+   }
+}
diff --git a/PageLanguage.i18n.php b/PageLanguage.i18n.php
new file mode 100644
index 000..69a59a3
--- /dev/null
+++ b/PageLanguage.i18n.php
@@ -0,0 +1,23 @@
+ "Define page language per page",
+   'pagelanguage-invalid' => "Warning: Ignoring invalid language code 
\"$1\" set for page language",
+   'pagelanguage-duplicate' => "Warning: Page language \"$2\" overrides 
earlier page language \"$1\".",
+);
+
+/** Message documentation (Message documentation) */
+$messages['qqq'] = array(
+   'pagelanguage-desc' => '{{desc|name=Page 
Language|url=http://www.mediawiki.org/wiki/Extension:PageLanguage}}',
+   'pagelanguage-invalid' => 'Error message when an invalid language is 
used. $1 for the language code used.',
+   'pagelanguage-duplicate' => 'Error message when a different language is 
set overriding a previous one. $1 is the old one and $2 is the new one.',
+);
diff --git a/PageLanguage.magic.php b/PageLanguage.magic.php
new file mode 100644
index 000..825bfc2
--- /dev/null
+++ b/PageLanguage.magic.php
@@ -0,0 +1,16 @@
+ array( 1, 'PAGELANGUAGE' ),
+   'pagelanguage_noerror' => array( 0, 'noerror' ),
+   'pagelanguage_noreplace' => array( 0, 'noreplace' ),
+);
diff