John Erling Blad has submitted this change and it was merged. Change subject: Add fywiki sort order and allow custom order in settings ......................................................................
Add fywiki sort order and allow custom order in settings Change-Id: I07c3448b253330a2f834e48e565dd0eb28aa45d9 --- M client/config/WikibaseClient.default.php M client/includes/InterwikiSorter.php M client/tests/phpunit/includes/InterwikiSorterTest.php M docs/options.wiki 4 files changed, 51 insertions(+), 15 deletions(-) Approvals: John Erling Blad: Verified; Looks good to me, approved diff --git a/client/config/WikibaseClient.default.php b/client/config/WikibaseClient.default.php index c2da880..1a564c1 100644 --- a/client/config/WikibaseClient.default.php +++ b/client/config/WikibaseClient.default.php @@ -62,7 +62,7 @@ /** * @todo this is a bit wikimedia-specific and need to find a better place for this stuff, - * such as mediawiki-config or somewhere. + * such as mediawiki-config, mediawiki messages for custom orders, or somewhere. * * alphabetic and alphabetic revised come from: * http://meta.wikimedia.org/w/index.php?title=MediaWiki:Interwiki_config-sorting_order-native-languagename @@ -151,5 +151,32 @@ 'tk', 'tw', 'udm', 'uk', 'ur', 'ug', 'za', 'vec', 'vep', 'vo', 'fiu-vro', 'wa', 'vls', 'war', 'wo', 'wuu', 'ts', 'xmf', 'yi', 'yo', 'diq', 'zea', 'zh', 'zh-tw', 'zh-cn', 'zh-classical', 'zh-yue', 'bat-smg' - ) + ), + 'alphabetic_fy' => array( + 'aa', 'ab', 'ace', 'af', 'ay', 'ak', 'als', 'am', 'an', 'ang', 'ar', 'arc', + 'arz', 'as', 'ast', 'av', 'az', 'ba', 'bar', 'bat-smg', 'bcl', 'be', 'be-x-old', + 'bg', 'bh', 'bi', 'bjn', 'bm', 'bn', 'bo', 'bpy', 'br', 'bs', 'bug', 'bxr', + 'ca', 'cbk-zam', 'cdo', 'ce', 'ceb', 'ch', 'chy', 'cho', 'chr', 'cy', 'ckb', + 'co', 'cr', 'crh', 'cs', 'csb', 'cu', 'cv', 'da', 'de', 'diq', 'dk', 'dsb', 'dv', + 'dz', 'ee', 'el', 'eml', 'en', 'eo', 'es', 'et', 'eu', 'ext', 'fa', 'ff', 'fi', + 'fy', 'fiu-vro', 'fj', 'fo', 'fr', 'frp', 'frr', 'fur', 'ga', 'gag', 'gan', 'gd', + 'gl', 'glk', 'gn', 'got', 'gu', 'gv', 'ha', 'hak', 'haw', 'he', 'hi', 'hy', + 'hif', 'ho', 'hr', 'hsb', 'ht', 'hu', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'yi', + 'ik', 'ilo', 'io', 'yo', 'is', 'it', 'iu', 'ja', 'jbo', 'jv', 'ka', 'kaa', 'kab', + 'kbd', 'kg', 'ki', 'ky', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'koi', 'kr', 'krc', + 'ks', 'ksh', 'ku', 'kv', 'kw', 'la', 'lad', 'lb', 'lbe', 'lez', 'lg', 'li', + 'lij', 'lmo', 'ln', 'lo', 'lt', 'ltg', 'lv', 'map-bms', 'mdf', 'mg', 'mh', 'mhr', + 'mi', 'my', 'min', 'myv', 'mk', 'ml', 'mn', 'mo', 'mr', 'mrj', 'ms', 'mt', 'mus', + 'mwl', 'mzn', 'na', 'nah', 'nan', 'nap', 'nds', 'nds-nl', 'ne', 'new', 'ng', 'ny', + 'nl', 'nn', 'no', 'nov', 'nrm', 'nso', 'nv', 'oc', 'om', 'or', 'os', 'pa', 'pag', + 'pam', 'pap', 'pcd', 'pdc', 'pfl', 'pi', 'pih', 'pl', 'pms', 'pnb', 'pnt', 'ps', + 'pt', 'qu', 'rm', 'rmy', 'rn', 'ro', 'roa-rup', 'roa-tara', 'ru', 'rue', 'rw', + 'sa', 'sah', 'sc', 'scn', 'sco', 'sd', 'se', 'sg', 'sh', 'shi', 'si', 'simple', + 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'srn', 'ss', 'st', 'stq', 'su', 'sv', + 'sw', 'szl', 'ta', 'te', 'tet', 'tg', 'th', 'ti', 'ty', 'tk', 'tl', 'tn', 'to', + 'tokipona', 'tp', 'tpi', 'tr', 'ts', 'tt', 'tum', 'tw', 'udm', 'ug', 'uk', 'ur', + 'uz', 've', 'vec', 'vep', 'vi', 'vls', 'vo', 'wa', 'war', 'wo', 'wuu', 'xal', + 'xh', 'xmf', 'za', 'zea', 'zh', 'zh-classical', 'zh-cn', 'zh-yue', 'zh-min-nan', + 'zh-tw', 'zu' + ), ); diff --git a/client/includes/InterwikiSorter.php b/client/includes/InterwikiSorter.php index 7313bb8..f4955be 100644 --- a/client/includes/InterwikiSorter.php +++ b/client/includes/InterwikiSorter.php @@ -123,26 +123,29 @@ * * @return array */ - protected function buildSortOrder( $sort, array $sortOrders, $sortPrepend ) { + protected function buildSortOrder( $sort, array $sortOrders, array $sortPrepend ) { + if ( !array_key_exists( 'alphabetic', $sortOrders ) ) { + throw new \MWException( 'alphabetic interwiki sorting order is missing from Wikibase Client settings.' ); + } + $sortOrder = $sortOrders['alphabetic']; if ( $sort === 'alphabetic' ) { // do nothing - } else if ( $sort === 'alphabetic_revised' ) { - $sortOrder = $sortOrders['alphabetic_revised']; - } else if ( $sort === 'alphabetic_sr' ) { - $sortOrder = $sortOrders['alphabetic_sr']; } else if ( $sort === 'code' ) { - // default code sort order sort( $sortOrder ); } else { - // something went wrong but we can use default order - trigger_error( __CLASS__ - . ' : invalid sort order specified for interwiki links.', E_USER_WARNING ); - sort( $sortOrder ); + if ( array_key_exists( $sort, $sortOrders ) ) { + $sortOrder = $sortOrders[$sort]; + } else { + // something went wrong but we can use default order + trigger_error( __CLASS__ + . ' : invalid or unknown sort order specified for interwiki links.', E_USER_WARNING ); + sort( $sortOrder ); + } } - if( !empty( $sortPrepend ) ) { + if ( $sortPrepend !== array() ) { $sortOrder = array_unique( array_merge( $sortPrepend, $sortOrder ) ); } diff --git a/client/tests/phpunit/includes/InterwikiSorterTest.php b/client/tests/phpunit/includes/InterwikiSorterTest.php index 04f319f..2a6f28b 100644 --- a/client/tests/phpunit/includes/InterwikiSorterTest.php +++ b/client/tests/phpunit/includes/InterwikiSorterTest.php @@ -37,7 +37,8 @@ return array( 'alphabetic' => array( 'ar', 'de', 'en', 'fr', 'ks', 'rn', 'ky', 'hu', 'ja', 'pt' ), 'alphabetic_revised' => array( 'ar', 'de', 'en', 'fr', 'ks', 'ky', 'rn', 'hu', 'ja', 'pt' ), - 'alphabetic_sr' => array( 'ar', 'de', 'en', 'fr', 'ky', 'rn', 'ks', 'ja', 'hu', 'pt' ) + 'alphabetic_sr' => array( 'ar', 'de', 'en', 'fr', 'ky', 'rn', 'ks', 'ja', 'hu', 'pt' ), + 'mycustomorder' => array( 'de', 'ja', 'pt', 'hu', 'en' ), ); } @@ -85,7 +86,11 @@ array( $links, 'alphabetic_revised', $sortOrders, array( 'hu' ), array( 'hu', 'ar', 'de', 'en', 'fr', 'ks', 'ky', 'rn', 'ja', 'pt' ) - ) + ), + array( + array( 'ja', 'de', 'pt', 'en', 'hu' ), 'mycustomorder', $sortOrders, array(), + $sortOrders['mycustomorder'] + ), ); } diff --git a/docs/options.wiki b/docs/options.wiki index e383cba..705b763 100644 --- a/docs/options.wiki +++ b/docs/options.wiki @@ -73,6 +73,7 @@ :;<code>'none'</code>: Don't sort. Basically, the order of the links is not guaranteed. '''Deprecated''' and dysfunctional. : Default is <code>'code'</code>. ;sortPrepend: List of language codes to put on top of the language links in the side bar. Default: <code>array()</code>. '''Note''': this may change to use global wiki IDs instead of language codes in the future. +;interwikiSortOrder: Specify a custom sort order for interwiki links; default options provided include alphabetic, code, alphabetic revised, alphabetic_sr, and alphabetic_fy. ;alwaysSort: Sort links from wikitext even if <code><nowiki>{{noexternallanglinks:*}}</nowiki></code> is used. Default: <code>true</code>. ;siteGlobalID: This site's global ID (e.g. <code>'itwiki'</code>), as used in the sites table. Default: <code>$wgDBname</code>. ;siteLocalID: This site's local ID resp. language code (e.g. <code>'it'</code>). Default: <code>$wgLanguageCode</code>. '''Note:''' this setting will be removed once we can take this information from the sites table. -- To view, visit https://gerrit.wikimedia.org/r/52417 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I07c3448b253330a2f834e48e565dd0eb28aa45d9 Gerrit-PatchSet: 5 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de> Gerrit-Reviewer: John Erling Blad <john.b...@wikimedia.de> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits