[MediaWiki-commits] [Gerrit] Initial version of the extension - change (mediawiki...PageLanguage)
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)
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