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