From: Trevor Parscal Date: Tue, 26 Oct 2010 23:40:26 +0000 (+0000) Subject: Introducing mediaWiki.language, and mediaWiki.message which are modeled after their... X-Git-Tag: 1.31.0-rc.0~34284 X-Git-Url: http://git.cyclocoop.org/data/%24oldEdit?a=commitdiff_plain;h=77d71f743d8a444be28ef9c85b38fa59cf0d655d;p=lhc%2Fweb%2Fwiklou.git Introducing mediaWiki.language, and mediaWiki.message which are modeled after their PHP counterparts Language and wfMessage respectively. --- diff --git a/resources/Resources.php b/resources/Resources.php index d53f33f32b..757822ab6c 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -317,21 +317,71 @@ return array( 'debugRaw' => false ) ), 'mediawiki.specials.preferences' => new ResourceLoaderFileModule( array( - 'scripts' => 'resources/mediawiki/mediawiki.specials.preferences.js', + 'scripts' => 'resources/mediawiki.specials/mediawiki.specials.preferences.js', ) ), 'mediawiki.specials.search' => new ResourceLoaderFileModule( array( - 'scripts' => 'resources/mediawiki/mediawiki.specials.search.js', + 'scripts' => 'resources/mediawiki.specials/mediawiki.specials.search.js', ) ), 'mediawiki.views.history' => new ResourceLoaderFileModule( array( - 'scripts' => 'resources/mediawiki/mediawiki.views.history.js', + 'scripts' => 'resources/mediawiki.views/mediawiki.views.history.js', 'dependencies' => 'mediawiki.legacy.history', ) ), + 'mediawiki.language' => new ResourceLoaderFileModule( array( + 'scripts' => 'resources/mediawiki.language/mediawiki.language.js', + 'languageScripts' => array( + 'am' => 'resources/mediawiki.language/languages/am.js', + 'ar' => 'resources/mediawiki.language/languages/ar.js', + 'bat-smg' => 'resources/mediawiki.language/languages/bat-smg.js', + 'be' => 'resources/mediawiki.language/languages/be.js', + 'be-tarask' => 'resources/mediawiki.language/languages/be-tarask.js', + 'bh' => 'resources/mediawiki.language/languages/bh.js', + 'bs' => 'resources/mediawiki.language/languages/bs.js', + 'cs' => 'resources/mediawiki.language/languages/cs.js', + 'cu' => 'resources/mediawiki.language/languages/cu.js', + 'cy' => 'resources/mediawiki.language/languages/cy.js', + 'dsb' => 'resources/mediawiki.language/languages/dsb.js', + 'fr' => 'resources/mediawiki.language/languages/fr.js', + 'ga' => 'resources/mediawiki.language/languages/ga.js', + 'gd' => 'resources/mediawiki.language/languages/gd.js', + 'gv' => 'resources/mediawiki.language/languages/gv.js', + 'he' => 'resources/mediawiki.language/languages/he.js', + 'hi' => 'resources/mediawiki.language/languages/hi.js', + 'hr' => 'resources/mediawiki.language/languages/hr.js', + 'hsb' => 'resources/mediawiki.language/languages/hsb.js', + 'hy' => 'resources/mediawiki.language/languages/hy.js', + 'ksh' => 'resources/mediawiki.language/languages/ksh.js', + 'ln' => 'resources/mediawiki.language/languages/ln.js', + 'lt' => 'resources/mediawiki.language/languages/lt.js', + 'lv' => 'resources/mediawiki.language/languages/lv.js', + 'mg' => 'resources/mediawiki.language/languages/mg.js', + 'mk' => 'resources/mediawiki.language/languages/mk.js', + 'mo' => 'resources/mediawiki.language/languages/mo.js', + 'mt' => 'resources/mediawiki.language/languages/mt.js', + 'nso' => 'resources/mediawiki.language/languages/nso.js', + 'pl' => 'resources/mediawiki.language/languages/pl.js', + 'pt-br' => 'resources/mediawiki.language/languages/pt-br.js', + 'ro' => 'resources/mediawiki.language/languages/ro.js', + 'ru' => 'resources/mediawiki.language/languages/ru.js', + 'se' => 'resources/mediawiki.language/languages/se.js', + 'sh' => 'resources/mediawiki.language/languages/sh.js', + 'sk' => 'resources/mediawiki.language/languages/sk.js', + 'sl' => 'resources/mediawiki.language/languages/sl.js', + 'sma' => 'resources/mediawiki.language/languages/sma.js', + 'sr-ec' => 'resources/mediawiki.language/languages/sr-ec.js', + 'sr-el' => 'resources/mediawiki.language/languages/sr-el.js', + 'sr' => 'resources/mediawiki.language/languages/sr.js', + 'ti' => 'resources/mediawiki.language/languages/ti.js', + 'tl' => 'resources/mediawiki.language/languages/tl.js', + 'uk' => 'resources/mediawiki.language/languages/uk.js', + 'wa' => 'resources/mediawiki.language/languages/wa.js', + ), + ) ), 'mediawiki.util' => new ResourceLoaderFileModule( array( - 'scripts' => 'resources/mediawiki/mediawiki.util.js', - 'debugScripts' => 'resources/mediawiki/mediawiki.utiltest.js', + 'scripts' => 'resources/mediawiki.util/mediawiki.util.js', + 'debugScripts' => 'resources/mediawiki.util/mediawiki.util.test.js', ) ), - /* MediaWiki Legacy */ + /* mediawiki Legacy */ 'mediawiki.legacy.ajax' => new ResourceLoaderFileModule( array( 'scripts' => 'skins/common/ajax.js', @@ -430,6 +480,7 @@ return array( ) ), 'mediawiki.legacy.wikibits' => new ResourceLoaderFileModule( array( 'scripts' => 'skins/common/wikibits.js', + 'dependencies' => 'mediawiki.language', 'messages' => array( 'showtoc', 'hidetoc' ), ) ), 'mediawiki.legacy.wikiprintable' => new ResourceLoaderFileModule( array( diff --git a/resources/mediawiki.language/languages/am.js b/resources/mediawiki.language/languages/am.js new file mode 100644 index 0000000000..9e1f4dead7 --- /dev/null +++ b/resources/mediawiki.language/languages/am.js @@ -0,0 +1,8 @@ +/** + * Amharic (አማርኛ) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/ar.js b/resources/mediawiki.language/languages/ar.js new file mode 100644 index 0000000000..62a7eac280 --- /dev/null +++ b/resources/mediawiki.language/languages/ar.js @@ -0,0 +1,38 @@ +/** + * Arabic (العربية) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 6 ); + if ( count == 0 ) { + return forms[0]; + } + if ( count == 1 ) { + return forms[1]; + } + if ( count == 2 ) { + return forms[2]; + } + if ( count % 100 >= 3 && count % 100 <= 10 ) { + return forms[3]; + } + if ( count % 100 >= 11 && count % 100 <= 99 ) { + return forms[4]; + } + return forms[5]; +} + +mediaWiki.language.digitTransformTable = { + '0': '٠', // ٠ + '1': 'Ÿ°', // ١ + '2': 'Ÿ¢', // ٢ + '3': 'Ÿ£', // ٣ + '4': '٤', // ٤ + '5': 'Ÿ•', // ٥ + '6': '٦', // ٦ + '7': 'Ÿß', // ٧ + '8': 'Ÿ®', // ٨ + '9': 'Ÿ©', // ٩ + '.': 'Ÿ´', // ٫ wrong table ? + ',': '٬' // ٬ +}; diff --git a/resources/mediawiki.language/languages/bat-smg.js b/resources/mediawiki.language/languages/bat-smg.js new file mode 100644 index 0000000000..ad807863ce --- /dev/null +++ b/resources/mediawiki.language/languages/bat-smg.js @@ -0,0 +1,18 @@ +/** + * Samogitian (≈Ωemaitėška) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + count = Math.abs( count ); + if ( count === 0 || ( count % 100 === 0 || ( count % 100 >= 10 && count % 100 < 20 ) ) ) { + return forms[2]; + } + if ( count % 10 === 1 ) { + return forms[0]; + } + if ( count % 10 === 2 ) { + return forms[1]; + } + return forms[3]; +} diff --git a/resources/mediawiki.language/languages/be-tarask.js b/resources/mediawiki.language/languages/be-tarask.js new file mode 100644 index 0000000000..a2bd9cffb6 --- /dev/null +++ b/resources/mediawiki.language/languages/be-tarask.js @@ -0,0 +1,23 @@ +/** + * Belarusian in Taraškievica orthography (–ë–µ–ª–∞—Ä—É—Å–∫–∞—è —Ç–∞—Ä–∞—à–∫–µ–≤—ñ—Ü–∞) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length === 2 ) { + return count == 1 ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/be.js b/resources/mediawiki.language/languages/be.js new file mode 100644 index 0000000000..675c8f1c51 --- /dev/null +++ b/resources/mediawiki.language/languages/be.js @@ -0,0 +1,20 @@ +/** + * Belarusian normative (–ë–µ–ª–∞—Ä—É—Å–∫–∞—è –º–æ–≤–∞) language functions + */ + +mediaWiki.language.convertPlural = function convertPlural( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/bh.js b/resources/mediawiki.language/languages/bh.js new file mode 100644 index 0000000000..d67c5130a6 --- /dev/null +++ b/resources/mediawiki.language/languages/bh.js @@ -0,0 +1,8 @@ +/** + * Bihari (भोजपुरी) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/bs.js b/resources/mediawiki.language/languages/bs.js new file mode 100644 index 0000000000..87d756e60c --- /dev/null +++ b/resources/mediawiki.language/languages/bs.js @@ -0,0 +1,20 @@ +/** + * Bosnian (bosanski) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/cs.js b/resources/mediawiki.language/languages/cs.js new file mode 100644 index 0000000000..0e1837f72b --- /dev/null +++ b/resources/mediawiki.language/languages/cs.js @@ -0,0 +1,19 @@ +/** + * Czech (čeština [subst.], česk√Ω [adj.], česky [adv.]) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + switch ( count ) { + case 1: + return forms[0]; + break; + case 2: + case 3: + case 4: + return forms[1]; + break; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/cu.js b/resources/mediawiki.language/languages/cu.js new file mode 100644 index 0000000000..2f051895f6 --- /dev/null +++ b/resources/mediawiki.language/languages/cu.js @@ -0,0 +1,18 @@ +/** + * Old Church Slavonic (—®–∑—ã–∫—ä —Å–ª–æ–≤—£–Ω—å—Å–∫—ä) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + return forms[1]; + case 3: + case 4: + return forms[2]; + default: + return forms[3]; + } +} diff --git a/resources/mediawiki.language/languages/cy.js b/resources/mediawiki.language/languages/cy.js new file mode 100644 index 0000000000..19a3994a74 --- /dev/null +++ b/resources/mediawiki.language/languages/cy.js @@ -0,0 +1,15 @@ +/** + * Welsh (Cymraeg) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 6 ); + count = Math.abs( count ); + if ( count >= 0 && count <= 3 ) { + return forms[count]; + } + if ( count == 6 ) { + return forms[4]; + } + return forms[5]; +} diff --git a/resources/mediawiki.language/languages/dsb.js b/resources/mediawiki.language/languages/dsb.js new file mode 100644 index 0000000000..e1239e539d --- /dev/null +++ b/resources/mediawiki.language/languages/dsb.js @@ -0,0 +1,18 @@ +/** + * Lower Sorbian (Dolnoserbski) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + switch ( Math.abs( count ) % 100 ) { + case 1: + return forms[0]; + case 2: + return forms[1]; + case 3: + case 4: + return forms[2]; + default: + return forms[3]; + } +} diff --git a/resources/mediawiki.language/languages/fr.js b/resources/mediawiki.language/languages/fr.js new file mode 100644 index 0000000000..13a86c429a --- /dev/null +++ b/resources/mediawiki.language/languages/fr.js @@ -0,0 +1,8 @@ +/** + * French (Français) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/ga.js b/resources/mediawiki.language/languages/ga.js new file mode 100644 index 0000000000..1a53e281fa --- /dev/null +++ b/resources/mediawiki.language/languages/ga.js @@ -0,0 +1,14 @@ +/** + * Irish (Gaeilge) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 2 ) { + return forms[1]; + } + return forms[2]; +} diff --git a/resources/mediawiki.language/languages/gd.js b/resources/mediawiki.language/languages/gd.js new file mode 100644 index 0000000000..21160d2af5 --- /dev/null +++ b/resources/mediawiki.language/languages/gd.js @@ -0,0 +1,18 @@ +/** + * Scots Gaelic (Gàidhlig) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + count = Math.abs( count ); + if ( count === 1 ) { + return forms[0]; + } + if ( count === 2 ) { + return forms[1]; + } + if ( count >= 3 && count <= 10 ) { + return forms[2]; + } + return forms[3]; +} diff --git a/resources/mediawiki.language/languages/gv.js b/resources/mediawiki.language/languages/gv.js new file mode 100644 index 0000000000..774614708f --- /dev/null +++ b/resources/mediawiki.language/languages/gv.js @@ -0,0 +1,18 @@ +/** + * Manx (Gaelg) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + if ( count > 0 && ( count % 20 ) === 0 ) { + return forms[0]; + } + switch ( count % 10 ) { + case 1: + return forms[1]; + case 2: + return forms[2]; + default: + return forms[3]; + } +} diff --git a/resources/mediawiki.language/languages/he.js b/resources/mediawiki.language/languages/he.js new file mode 100644 index 0000000000..a96a918d92 --- /dev/null +++ b/resources/mediawiki.language/languages/he.js @@ -0,0 +1,14 @@ +/** + * Hebrew (עברית) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 2 && forms[2] ) { + return forms[2]; + } + return forms[1]; +} diff --git a/resources/mediawiki.language/languages/hi.js b/resources/mediawiki.language/languages/hi.js new file mode 100644 index 0000000000..7df2cac170 --- /dev/null +++ b/resources/mediawiki.language/languages/hi.js @@ -0,0 +1,8 @@ +/** + * Hindi (हिन्दी) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/hr.js b/resources/mediawiki.language/languages/hr.js new file mode 100644 index 0000000000..27a0886ed2 --- /dev/null +++ b/resources/mediawiki.language/languages/hr.js @@ -0,0 +1,20 @@ +/** + * Croatian (hrvatski) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/hsb.js b/resources/mediawiki.language/languages/hsb.js new file mode 100644 index 0000000000..e3bb9c42fd --- /dev/null +++ b/resources/mediawiki.language/languages/hsb.js @@ -0,0 +1,18 @@ +/** + * Upper Sorbian (Hornjoserbsce) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + switch ( Math.abs( count ) % 100 ) { + case 1: + return forms[0]; + case 2: + return forms[1]; + case 3: + case 4: + return forms[2]; + default: + return forms[3]; + } +} diff --git a/resources/mediawiki.language/languages/hy.js b/resources/mediawiki.language/languages/hy.js new file mode 100644 index 0000000000..6ec0580265 --- /dev/null +++ b/resources/mediawiki.language/languages/hy.js @@ -0,0 +1,8 @@ +/** + * Armenian (Հայերեն) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( Math.abs( count ) <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/ksh.js b/resources/mediawiki.language/languages/ksh.js new file mode 100644 index 0000000000..de46ae7df3 --- /dev/null +++ b/resources/mediawiki.language/languages/ksh.js @@ -0,0 +1,14 @@ +/** + * Ripuarian (Ripoarƒósh) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 0 ) { + return forms[2]; + } + return forms[1]; +} diff --git a/resources/mediawiki.language/languages/ln.js b/resources/mediawiki.language/languages/ln.js new file mode 100644 index 0000000000..d0c9fddfab --- /dev/null +++ b/resources/mediawiki.language/languages/ln.js @@ -0,0 +1,8 @@ +/** + * Lingala (Lingála) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/lt.js b/resources/mediawiki.language/languages/lt.js new file mode 100644 index 0000000000..6b92466a28 --- /dev/null +++ b/resources/mediawiki.language/languages/lt.js @@ -0,0 +1,17 @@ +/** + * Lithuanian (Lietuvi≈≥) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length == 2 ) { + return count == 1 ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count % 10 == 1 && count % 100 != 11 ) { + return forms[0]; + } + if ( count % 10 >= 2 && ( count % 100 < 10 || count % 100 >= 20 ) ) { + return forms[1]; + } + return forms[2]; +} diff --git a/resources/mediawiki.language/languages/lv.js b/resources/mediawiki.language/languages/lv.js new file mode 100644 index 0000000000..d1f595cbca --- /dev/null +++ b/resources/mediawiki.language/languages/lv.js @@ -0,0 +1,8 @@ +/** + * Latvian (Latviešu) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( ( count % 10 == 1 ) && ( count % 100 != 11 ) ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/mg.js b/resources/mediawiki.language/languages/mg.js new file mode 100644 index 0000000000..27b833eb46 --- /dev/null +++ b/resources/mediawiki.language/languages/mg.js @@ -0,0 +1,8 @@ +/** + * Malagasy (Malagasy) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/mk.js b/resources/mediawiki.language/languages/mk.js new file mode 100644 index 0000000000..0a8abf1624 --- /dev/null +++ b/resources/mediawiki.language/languages/mk.js @@ -0,0 +1,8 @@ +/** + * Macedonian (Македонски) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count % 10 === 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/mo.js b/resources/mediawiki.language/languages/mo.js new file mode 100644 index 0000000000..c27b955dd6 --- /dev/null +++ b/resources/mediawiki.language/languages/mo.js @@ -0,0 +1,14 @@ +/** + * Moldavian (Молдовеняскэ) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 0 || count % 100 < 20 ) { + return forms[1]; + } + return forms[2]; +} diff --git a/resources/mediawiki.language/languages/mt.js b/resources/mediawiki.language/languages/mt.js new file mode 100644 index 0000000000..1e27383e88 --- /dev/null +++ b/resources/mediawiki.language/languages/mt.js @@ -0,0 +1,17 @@ +/** + * Maltese (Malti) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 0 || ( count % 100 > 1 && count % 100 < 11 ) ) { + return forms[1]; + } + if ( count % 100 > 10 && count % 100 < 20 ) { + return forms[2]; + } + return forms[3]; +} diff --git a/resources/mediawiki.language/languages/nso.js b/resources/mediawiki.language/languages/nso.js new file mode 100644 index 0000000000..dac6b6c368 --- /dev/null +++ b/resources/mediawiki.language/languages/nso.js @@ -0,0 +1,8 @@ +/** + * Northern Sotho (Sesotho sa Leboa) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/pl.js b/resources/mediawiki.language/languages/pl.js new file mode 100644 index 0000000000..4deb76d446 --- /dev/null +++ b/resources/mediawiki.language/languages/pl.js @@ -0,0 +1,21 @@ +/** + * Polish (polski) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + count = Math.abs( count ); + if ( count == 1 ) { + return forms[0]; + } + switch ( count % 10 ) { + case 2: + case 3: + case 4: + if ( count / 10 % 10 != 1 ) { + return forms[1]; + } + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/pt-br.js b/resources/mediawiki.language/languages/pt-br.js new file mode 100644 index 0000000000..ea511c1540 --- /dev/null +++ b/resources/mediawiki.language/languages/pt-br.js @@ -0,0 +1,8 @@ +/** + * Brazilian Portugese (Portuguêsi do Brasil) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/ro.js b/resources/mediawiki.language/languages/ro.js new file mode 100644 index 0000000000..9ab350c805 --- /dev/null +++ b/resources/mediawiki.language/languages/ro.js @@ -0,0 +1,14 @@ +/** + * Romanian (Română) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 0 || count % 100 < 20 ) { + return forms[1]; + } + return forms[2]; +} diff --git a/resources/mediawiki.language/languages/ru.js b/resources/mediawiki.language/languages/ru.js new file mode 100644 index 0000000000..9da0394346 --- /dev/null +++ b/resources/mediawiki.language/languages/ru.js @@ -0,0 +1,23 @@ +/** + * Russian (—Ä—É—Å—Å–∫–∏–π —è–∑—ã–∫) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length === 2 ) { + return count == 1 ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/se.js b/resources/mediawiki.language/languages/se.js new file mode 100644 index 0000000000..002644ff5d --- /dev/null +++ b/resources/mediawiki.language/languages/se.js @@ -0,0 +1,17 @@ +/** + * Northern Sami (Sámegiella) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( count == 0 ) { + return ''; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[1]; + } + if ( count == 2 ) { + return forms[2]; + } + return '' +} diff --git a/resources/mediawiki.language/languages/sh.js b/resources/mediawiki.language/languages/sh.js new file mode 100644 index 0000000000..49af56c9eb --- /dev/null +++ b/resources/mediawiki.language/languages/sh.js @@ -0,0 +1,23 @@ +/** + * Serbo-Croatian (Srpskohrvatski / Српскохрватски) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length === 2 ) { + return count == 1 ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/sk.js b/resources/mediawiki.language/languages/sk.js new file mode 100644 index 0000000000..1acd2ecb4f --- /dev/null +++ b/resources/mediawiki.language/languages/sk.js @@ -0,0 +1,14 @@ +/** + * Slovak (Slovenčina) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count == 1 ) { + return forms[0]; + } + if ( count == 2 || count == 3 || count == 4 ) { + return forms[1]; + } + return forms[2]; +} diff --git a/resources/mediawiki.language/languages/sl.js b/resources/mediawiki.language/languages/sl.js new file mode 100644 index 0000000000..27557d4741 --- /dev/null +++ b/resources/mediawiki.language/languages/sl.js @@ -0,0 +1,20 @@ +/** + * Slovenian (Slovenščina) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 5 ); + if ( count % 100 == 1 ) { + return forms[0]; + } + if ( count % 100 == 2 ) { + return forms[1]; + } + if ( count % 100 == 3 || count % 100 == 4 ) { + return forms[2]; + } + if ( count != 0 ) { + return forms[3]; + } + return forms[4]; +} diff --git a/resources/mediawiki.language/languages/sma.js b/resources/mediawiki.language/languages/sma.js new file mode 100644 index 0000000000..59c1dcfe21 --- /dev/null +++ b/resources/mediawiki.language/languages/sma.js @@ -0,0 +1,14 @@ +/** + * Southern Sami (Åarjelsaemien) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 4 ); + if ( count == 1 ) { + return forms[1]; + } + if ( count == 2 ) { + return forms[2]; + } + return forms[3]; +} diff --git a/resources/mediawiki.language/languages/sr-ec.js b/resources/mediawiki.language/languages/sr-ec.js new file mode 100644 index 0000000000..7b92bf6369 --- /dev/null +++ b/resources/mediawiki.language/languages/sr-ec.js @@ -0,0 +1,20 @@ +/** + * Serbian (cyrillic script) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/sr-el.js b/resources/mediawiki.language/languages/sr-el.js new file mode 100644 index 0000000000..f8189f3da5 --- /dev/null +++ b/resources/mediawiki.language/languages/sr-el.js @@ -0,0 +1,20 @@ +/** + * Serbian (latin script) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/sr.js b/resources/mediawiki.language/languages/sr.js new file mode 100644 index 0000000000..25cdc8a20d --- /dev/null +++ b/resources/mediawiki.language/languages/sr.js @@ -0,0 +1,23 @@ +/** + * Serbian (Српски / Srpski) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length === 2 ) { + return ( count == 1 ) ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +}; diff --git a/resources/mediawiki.language/languages/ti.js b/resources/mediawiki.language/languages/ti.js new file mode 100644 index 0000000000..ca81a319f4 --- /dev/null +++ b/resources/mediawiki.language/languages/ti.js @@ -0,0 +1,8 @@ +/** + * Tigrinya (ትግርኛ) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural(forms, 2); + return (count <= 1) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/tl.js b/resources/mediawiki.language/languages/tl.js new file mode 100644 index 0000000000..317d57896e --- /dev/null +++ b/resources/mediawiki.language/languages/tl.js @@ -0,0 +1,7 @@ +/** + * Tagalog (Tagalog) language functions + */ +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/languages/uk.js b/resources/mediawiki.language/languages/uk.js new file mode 100644 index 0000000000..651e655262 --- /dev/null +++ b/resources/mediawiki.language/languages/uk.js @@ -0,0 +1,23 @@ +/** + * Ukrainian (—É–∫—Ä–∞—ó–Ω—Å—å–∫–∞ –º–æ–≤–∞) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + if ( forms.length === 2 ) { + return count == 1 ? forms[0] : forms[1]; + } + forms = mediaWiki.language.preConvertPlural( forms, 3 ); + if ( count > 10 && Math.floor( ( count % 100 ) / 10 ) == 1 ) { + return forms[2]; + } + switch ( count % 10 ) { + case 1: + return forms[0]; + case 2: + case 3: + case 4: + return forms[1]; + default: + return forms[2]; + } +} diff --git a/resources/mediawiki.language/languages/wa.js b/resources/mediawiki.language/languages/wa.js new file mode 100644 index 0000000000..c58989c8be --- /dev/null +++ b/resources/mediawiki.language/languages/wa.js @@ -0,0 +1,8 @@ +/** + * Walloon (Walon) language functions + */ + +mediaWiki.language.convertPlural = function( count, forms ) { + forms = mediaWiki.language.preConvertPlural( forms, 2 ); + return ( count <= 1 ) ? forms[0] : forms[1]; +} diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js new file mode 100644 index 0000000000..0c895097f9 --- /dev/null +++ b/resources/mediawiki.language/mediawiki.language.js @@ -0,0 +1,99 @@ +/** + * Base language object + * + * Localized Language support attempts to mirror some of the functionality of Language.php in MediaWiki. This object + * contains methods for loading and transforming message text. + */ + +mediaWiki.language = { + /** + * Process the PLURAL template substitution + * + * @param {object} template Template object + * @format template + * { + * 'title': [title of template], + * 'parameters': [template parameters] + * } + * @example {{Template:title|params}} + */ + 'procPLURAL': function( template ) { + if( template.title && template.parameters && mediaWiki.language.convertPlural) { + // Check if we have forms to replace + if ( template.parameters.length == 0 ) { + return ''; + } + // Restore the count into a Number ( if it got converted earlier ) + var count = mediaWiki.language.convertNumber( template.title, true ); + // Do convertPlural call + return mediaWiki.language.convertPlural( parseInt( count ), template.parameters ); + } + // Could not process plural return first form or nothing + if( template.parameters[0] ) { + return template.parameters[0]; + } + return ''; + }, + /** + * Plural form transformations, needed for some languages. + * + * @param {integer} count Non-localized quantifier + * @param {array} forms List of plural forms + * @return {string} Correct form for quantifier in this language + */ + 'convertPlural': function( count, forms ){ + if ( !forms || forms.length == 0 ) { + return ''; + } + return ( parseInt( count ) == 1 ) ? forms[0] : forms[1]; + }, + /** + * Pads an array to a specific length by copying the last one element. + * + * @param {array} forms Number of forms given to convertPlural + * @param {integer} count Number of forms required + * @return {array} Padded array of forms + */ + 'preConvertPlural': function( forms, count ) { + while ( forms.length < count ) { + forms.push( forms[ forms.length-1 ] ); + } + return forms; + }, + /** + * Converts a number using digitTransformTable. + * + * @param {number} number Value to be converted + * @param {boolean} integer Convert the return value to an integer + */ + 'convertNumber': function( number, integer ) { + if ( !mediaWiki.language.digitTransformTable ) { + return number; + } + // Set the target Transform table: + var transformTable = mediaWiki.language.digitTransformTable; + // Check if the "restore" to Latin number flag is set: + if ( integer ) { + if ( parseInt( number ) == number ) { + return number; + } + var tmp = []; + for ( var i in transformTable ) { + tmp[ transformTable[ i ] ] = i; + } + transformTable = tmp; + } + var numberString = '' + number; + var convertedNumber = ''; + for ( var i = 0; i < numberString.length; i++ ) { + if ( transformTable[ numberString[i] ] ) { + convertedNumber += transformTable[numberString[i]]; + } else { + convertedNumber += numberString[i]; + } + } + return integer ? parseInt( convertedNumber) : convertedNumber; + }, + // Digit Transform Table, populated by language classes where applicable + 'digitTransformTable': null +}; diff --git a/resources/mediawiki.specials/mediawiki.specials.preferences.js b/resources/mediawiki.specials/mediawiki.specials.preferences.js new file mode 100644 index 0000000000..e6760fc862 --- /dev/null +++ b/resources/mediawiki.specials/mediawiki.specials.preferences.js @@ -0,0 +1,40 @@ +/* + * JavaScript for Special:Preferences + */ + +$( '#prefsubmit' ).attr( 'id', 'prefcontrol' ); +$( '#preferences' ) + .addClass( 'jsprefs' ) + .before( $( '' ) ) + .children( 'fieldset' ) + .hide() + .addClass( 'prefsection' ) + .children( 'legend' ) + .addClass( 'mainLegend' ) + .each( function( i ) { + $(this).parent().attr( 'id', 'prefsection-' + i ); + if ( i === 0 ) { + $(this).parent().show(); + } + $( '#preftoc' ).append( + $( '
  • ' ) + .addClass( i === 0 ? 'selected' : null ) + .append( + $( '') + .text( $(this).text() ) + .attr( 'href', '#prefsection-' + i ) + .mousedown( function( e ) { + $(this).parent().parent().find( 'li' ).removeClass( 'selected' ); + $(this).parent().addClass( 'selected' ); + e.preventDefault(); + return false; + } ) + .click( function( e ) { + $( '#preferences > fieldset' ).hide(); + $( '#prefsection-' + i ).show(); + e.preventDefault(); + return false; + } ) + ) + ); + } ); diff --git a/resources/mediawiki.specials/mediawiki.specials.search.js b/resources/mediawiki.specials/mediawiki.specials.search.js new file mode 100644 index 0000000000..1b56857b86 --- /dev/null +++ b/resources/mediawiki.specials/mediawiki.specials.search.js @@ -0,0 +1,8 @@ +/* + * JavaScript for Specical:Search + */ + +// Emulate HTML5 autofocus behavior in non HTML5 compliant browsers +if ( !( 'autofocus' in document.createElement( 'input' ) ) ) { + $( 'input[autofocus]' ).focus(); +} diff --git a/resources/mediawiki.util/mediawiki.util.js b/resources/mediawiki.util/mediawiki.util.js new file mode 100644 index 0000000000..f7a67742c2 --- /dev/null +++ b/resources/mediawiki.util/mediawiki.util.js @@ -0,0 +1,314 @@ +/* + * Utilities + */ + +(function ($, mw) { + + mediaWiki.util = { + + /* Initialisation */ + 'initialised' : false, + 'init' : function () { + if (this.initialised === false) { + this.initialised = true; + + // Set tooltipAccessKeyPrefix + if (is_opera) { + this.tooltipAccessKeyPrefix = 'shift-esc-'; + } else if (is_chrome) { + this.tooltipAccessKeyPrefix = is_chrome_mac ? 'ctrl-option-' : 'alt-'; + } else if (!is_safari_win && is_safari && webkit_version > 526) { + this.tooltipAccessKeyPrefix = 'ctrl-alt-'; + } else if (!is_safari_win && + (is_safari || clientPC.indexOf('mac') !== -1 || clientPC.indexOf('konqueror') !== -1)) { + this.tooltipAccessKeyPrefix = 'ctrl-'; + } else if (is_ff2) { + this.tooltipAccessKeyPrefix = 'alt-shift-'; + } + + // Setup CheckboxShiftClick + $.fn.enableCheckboxShiftClick = function () { + var prevCheckbox = null; + var $box = this; + $box.click(function (e) { + if (prevCheckbox !== null && e.shiftKey) { + $box.slice( + Math.min($box.index(prevCheckbox), $box.index(e.target)), + Math.max($box.index(prevCheckbox), $box.index(e.target)) + 1 + ).attr({checked: e.target.checked ? 'checked' : ''}); + } + prevCheckbox = e.target; + }); + return $box; + }; + + // Prototype enhancements + if (typeof String.prototype.ucFirst === 'undefined') { + String.prototype.ucFirst = function () { + return this.substr(0, 1).toUpperCase() + this.substr(1, this.length); + }; + } + + // Any initialisation after the DOM is ready + $(function () { + + // Enable CheckboxShiftClick + $('input[type=checkbox]:not(.noshiftselect)').enableCheckboxShiftClick(); + + // Fill bodyContant var + if ($('#bodyContent').length) { + mw.util.$content = $('#bodyContent'); + } else if ($('#article').length) { + mw.util.$content = $('#article'); + } else { + mw.util.$content = $('#content'); + } + }); + + + return true; + } + return false; + }, + + /* Main body */ + + /** + * Encodes the string like PHP's rawurlencode + * + * @param String str string to be encoded + */ + 'rawurlencode' : function (str) { + str = (str + '').toString(); + return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28') + .replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/~/g, '%7E'); + }, + + /** + * Encode pagetitles for use in a URL + * We want / and : to be included as literal characters in our title URLs + * as they otherwise fatally break the title + * + * @param String str string to be encoded + */ + 'wikiUrlencode' : function (str) { + return this.rawurlencode(str).replace(/%20/g, '_').replace(/%3A/g, ':').replace(/%2F/g, '/'); + }, + + /** + * Get the full url to a pagename + * + * @param String str pagename to link to + */ + 'getWikilink' : function (str) { + return wgServer + wgArticlePath.replace('$1', this.wikiUrlencode(str)); + }, + + /** + * Check is a variable is empty. Support for strings, booleans, arrays and objects. + * String "0" is considered empty. String containing only whitespace (ie. " ") is considered not empty. + * + * @param Mixed v the variable to check for empty ness + */ + 'isEmpty' : function (v) { + var key; + if (v === "" || v === 0 || v === "0" || v === null || v === false || typeof v === 'undefined') { + return true; + } + if (v.length === 0) { + return true; + } + if (typeof v === 'object') { + for (key in v) { + return false; + } + return true; + } + return false; + }, + + + /** + * Grabs the url parameter value for the given parameter + * Returns null if not found + * + * @param String param paramter name + * @param String url url to search through (optional) + */ + 'getParamValue' : function (param, url) { + url = url ? url : document.location.href; + var re = new RegExp('[^#]*[&?]' + param + '=([^&#]*)'); // Get last match, stop at hash + var m = re.exec(url); + if (m && m.length > 1) { + return decodeURIComponent(m[1]); + } + return null; + }, + + /** + * Converts special characters to their HTML entities + * + * @param String str text to escape + * @param Bool quotes if true escapes single and double quotes aswell (by default false) + */ + 'htmlEscape' : function (str, quotes) { + str = $('
    ').text(str).html(); + if (typeof quotes === 'undefined') { + quotes = false; + } + if (quotes === true) { + str = str.replace(/'/g, ''').replace(/"/g, '"'); + } + return str; + }, + + /** + * Converts HTML entities back to text + * + * @param String str text to unescape + */ + 'htmlUnescape' : function (str) { + return $('
    ').html(str).text(); + }, + + // Access key prefix + // will be re-defined based on browser/operating system detection in mw.util.init() + 'tooltipAccessKeyPrefix' : 'alt-', + + // Regex to match accesskey tooltips + 'tooltipAccessKeyRegexp': /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/, + + /** + * Add the appropriate prefix to the accesskey shown in the tooltip. + * If the nodeList parameter is given, only those nodes are updated; + * otherwise, all the nodes that will probably have accesskeys by + * default are updated. + * + * @param Mixed nodeList jQuery object, or array of elements + */ + 'updateTooltipAccessKeys' : function (nodeList) { + var $nodes; + if (nodeList instanceof jQuery) { + $nodes = nodeList; + } else if (nodeList) { + $nodes = $(nodeList); + } else { + // Rather than scanning all links, just + $('#column-one a, #mw-head a, #mw-panel a, #p-logo a'); + + // these are rare enough that no such optimization is needed + this.updateTooltipAccessKeys($('input')); + this.updateTooltipAccessKeys($('label')); + return; + } + + $nodes.each(function (i) { + var tip = $(this).attr('title'); + if (!!tip && mw.util.tooltipAccessKeyRegexp.exec(tip)) { + tip = tip.replace(mw.util.tooltipAccessKeyRegexp, '[' + mw.util.tooltipAccessKeyPrefix + "$5]"); + $(this).attr('title', tip); + } + }); + }, + + // jQuery object that refers to the page-content element + // Populated by init() + '$content' : null, + + + /** + * Add a link to a portlet menu on the page, such as: + * + * p-cactions (Content actions), p-personal (Personal tools), p-navigation (Navigation), p-tb (Toolbox) + * + * The first three paramters are required, others are optionals. Though + * providing an id and tooltip is recommended. + * + * By default the new link will be added to the end of the list. To add the link before a given existing item, + * pass the DOM node (document.getElementById('foobar') or the jQuery-selector ('#foobar') of that item. + * + * @example mw.util.addPortletLink('p-tb', 'http://mediawiki.org/', 'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org ', 'm', '#t-print') + * + * @param String portlet id of the target portlet ('p-cactions' or 'p-personal' etc.) + * @param String href link URL + * @param String text link text (will be automatically lowercased by CSS for p-cactions in Monobook) + * @param String id id of the new item, should be unique and preferably have the appropriate prefix ('ca-', 'pt-', 'n-' or 't-') + * @param String tooltip text to show when hovering over the link, without accesskey suffix + * @param String accesskey accesskey to activate this link (one character, try to avoid conflicts. Use $('[accesskey=x').get() in the console to see if 'x' is already used. + * @param mixed nextnode DOM node or jQuery-selector of the item that the new item should be added before, should be another item in the same list will be ignored if not the so + * + * @return Node the DOM node of the new item (a LI element, or A element for older skins) or null + */ + 'addPortletLink' : function (portlet, href, text, id, tooltip, accesskey, nextnode) { + var $link = $('').attr('href', href).text(text); + + // Some skins don't have portlets + // Just add it to the bottom of their 'sidebar' element ignoring the specified portlet target + switch (skin) { + case 'standard' : + case 'cologneblue' : + $("#quickbar").append($link.after('
    ')); + return $link.get(0); + case 'nostalgia' : + $("#searchform").before($link).before(' | '); + return $link.get(0); + default : // chick, modern, monobook, myskin, simple, vector... + + var $portlet = $('#' + portlet); + if ($portlet.length === 0) { + return null; + } + var $ul = $portlet.find('ul').eq(0); + if ($ul.length === 0) { + if ($portlet.find('div').length === 0) { + $portlet.append('