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 0000000..98b092a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.svn
+*~
+*.kate-swp
+.*.swp
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..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 0000000..b5b0219
--- /dev/null
+++ b/PageLanguage.body.php
@@ -0,0 +1,64 @@
+<?php
+
+class PageLanguage {
+
+       public static function onPageContentLanguage( Title $title, &$pageLang 
) {
+               if ( $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 ) {
+                               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 '<span class="error">' .
+                               wfMessage( 'pagelanguage-invalid' 
)->inContentLanguage()->params( $langCode )->escaped() .
+                               '</span>';
+               }
+
+               $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 '<span class="error">' .
+                               wfMessage( 'pagelanguage-duplicate' 
)->inContentLanguage()->params( $old, $lang->getCode() )->escaped() .
+                               '</span>';
+               }
+       }
+}
diff --git a/PageLanguage.i18n.php b/PageLanguage.i18n.php
new file mode 100644
index 0000000..69a59a3
--- /dev/null
+++ b/PageLanguage.i18n.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * Internationalisation file for PageLanguage extension.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English */
+$messages['en'] = array(
+       'pagelanguage-desc' => "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 0000000..825bfc2
--- /dev/null
+++ b/PageLanguage.magic.php
@@ -0,0 +1,16 @@
+<?php
+/**
+* Internationalisation file for PageLanguage extension.
+*
+* @file
+* @ingroup Extensions
+*/
+
+$magicWords = array();
+
+/** English (English) */
+$magicWords['en'] = array(
+       'pagelanguage' => 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 0000000..0b7d09c
--- /dev/null
+++ b/PageLanguage.php
@@ -0,0 +1,23 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+       die( 'Not a valid entry point' );
+}
+
+$wgExtensionCredits['other'][] = array(
+       'path' => __FILE__,
+       'name' => 'Page Language',
+       'author' => array( 'Liangent' ),
+       'url' => 'https://www.mediawiki.org/wiki/Extension:PageLanguage',
+       'descriptionmsg' => 'pagelanguage-desc',
+);
+
+$dir = __DIR__;
+
+$wgAutoloadClasses['PageLanguage'] = "$dir/PageLanguage.body.php";
+
+$wgExtensionMessagesFiles['PageLanguage'] =  "$dir/PageLanguage.i18n.php";
+$wgExtensionMessagesFiles['PageLanguageMagic'] =  
"$dir/PageLanguage.magic.php";
+
+$wgHooks['PageContentLanguage'][] = 'PageLanguage::onPageContentLanguage';
+$wgHooks['ParserFirstCallInit'][] = 'PageLanguage::onParserFirstCallInit';

-- 
To view, visit https://gerrit.wikimedia.org/r/68852
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib754e512b6923a043d93c565ea3af9c936409ca3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/PageLanguage
Gerrit-Branch: master
Gerrit-Owner: Liangent <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to