User:Fomafix/MediaWiki:Gadget-SitelinkCheck.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
( function ( mw, $, wbt ) {
var debug = mw.util.getParamValue( 'sitelinkcheck' );
if ( debug ) alert( wbt.id );
var i18nData = {
'en': {
/* general */
'check sitelink': 'Check sitelink',
'intro': 'Check whether a specific site link is already in use. If so you will get the item, otherwise you can create the item.',
/* Labels */
'lang': 'Lang',
'title': 'Title',
'check': 'Check',
'exit': 'Exit',
'create': 'Create',
'importinterwikis': 'Import interwiki links',
'addlabels': 'Automatically add labels',
/* Messages */
'found': '$1 is linking to $2.',
'nothing found': 'Nothing found linking to $1.',
'redirect': 'The page $1 is redirecting to $2.',
'missing': 'The page $1 does not exist.',
'success': 'The item was successfully created.',
'missing lang': 'The lang must be given.',
'missing title': 'The title must be given.'
},
'bn': {
/* general */
'check sitelink': 'সাইটসংযোগ পরীক্ষা',
'intro': 'একটি নির্দিষ্ট সাইট সংযোগ ইতিমধ্যে ব্যবহার করা হয়েছে কিনা তা পরীক্ষা করুন। যদি তৈরি হয়ে থাকে তাহলে আপনি আইটেমটি পাবেন, অন্যথায় আপনি নতুন একটি আইটেম তৈরি করুন।',
/* Labels */
'lang': 'ভাষা',
'title': 'শিরোনাম',
'check': 'পরীক্ষা করো',
'exit': 'প্রস্থান',
'create': 'তৈরি করো',
'importinterwikis': 'আন্তঃউইকি সংযোগ আমদানি করো',
'addlabels': 'স্বয়ংক্রিয়ভাবে লেবেল যোগ করো',
/* Messages */
'found': '$2 - $1 এর সাথে সংযুক্ত।',
'nothing found': '$1 -এর সাথে সংযুক্ত করা এমন কিছু পাওয়া যায়নি।',
'redirect': '$1 পাতাটি $2 -এ পুনঃনির্দেশিত।',
'missing': '$1 পাতাটি বিদ্যমান নয়।',
'success': 'আইটেমটি সফলভাবে তৈরি হয়েছে।',
'missing lang': 'ভাষা (কোড) অবশ্যই দেওয়া লাগবে।',
'missing title': 'শিরোনাম অবশ্যই দেওয়া লাগবে।'
},
'cs': {
/* general */
'check sitelink': 'Zkontroluj odkazy',
'intro': 'Zkontroluje, zda je specifický odkaz již někde použit. Pokud ano, odkáže na něj, jinak umožní vytvořit novou položku.',
/* Labels */
'lang': 'Jazyk',
'title': 'Název',
'check': 'Zkontroluj',
'exit': 'Konec',
'create': 'Vytvoř',
'importinterwikis': 'Importuj interwiki',
'addlabels': 'Automaticky přidej štítky',
/* Messages */
'found': '$1 odkazuje na $2.',
'nothing found': 'Na #1 nic neodkazuje.',
'redirect': 'Stránka $1 je přesměrovaná na $2.',
'missing': 'Stránka $1 neexistuje.',
'success': 'Položka byla úspěšně vytvořena.',
'missing lang': 'Jazyk musí být zadán.',
'missing title': 'Název musí být zadán.'
},
'es': {
'check sitelink': 'Comprobar los enlaces de un sitio',
'intro': 'Comprobar si el enlace de un sitio específico ya está en uso. En este caso obtendrás el elemento, en caso contrario, podrás crear el elemento.',
'lang': 'Idioma',
'title': 'Título',
'check': 'Comprobar',
'exit': 'Salir',
'create': 'Crear',
'importinterwikis': 'Importar enlaces interwiki',
'addlabels': 'Añadir las etiquetas automáticamente',
'found': '$1 contiene el enlace $2.',
'nothing found': 'Ningún elemento enlaza con $1.',
'redirect': 'La página $1 redirige a $2.',
'missing': 'La página $1 no existe.',
'success': 'Se creó el elemento satisfactoriamente.',
'missing lang': 'Tienes que proporcionar un idioma.',
'missing title': 'Tienes que proporcionar un título.'
},
'ca': {
'check sitelink': 'Verifica l’enllaç',
'intro': 'Verifica si ja s’utilitza un enllaç web cap a un lloc específic. En aquest cas obtindreu l’element, si no podreu crear-lo.',
'lang': 'Idioma',
'title': 'Títol',
'check': 'Verifica',
'exit': 'Tanca',
'nothing found': 'Cap pàgina trobada amb $1.',
'found': '$1 conté l’enllaç $2.',
'create': 'Crea',
'addlabels': 'Afegeix automàticament una etiqueta'
},
'de': {
'check sitelink': 'Websitelink überprüfen',
'intro': 'Prüfe, ob ein bestimmter Websitelink bereits benutzt wird. Wenn ja, bekommst du das Datenelement, sonst kannst du ein neues Datenelement erstellen.',
'lang': 'Sprache',
'title': 'Titel',
'check': 'Überprüfen',
'exit': 'Schließen',
'nothing found': 'Es wurde nichts gefunden, das auf $1 verlinkt.',
'found': '$1 verlinkt auf $2.',
'create': 'Erstellen',
'addlabels': 'Automatisch Bezeichnungen ergänzen',
'importinterwikis': 'Websitelink importieren',
'redirect': 'Die Seite $1 leitet nach $2 weiter.',
'missing': 'Es gibt die Seite $1 nicht.',
'success': 'Das Datenelement wurde erfolgreich erstellt.'
},
'fa': {
'check sitelink': 'بازبینی پیوند وبگاه',
'intro': 'چک کنید شاید پیوند به وبگاه موجود باشد، در این صورت آیتم را خواهید یافت وگرنه میتوانید آیتم را بسازید.',
'lang': 'زبان',
'title': 'عنوان',
'check': 'بازبینی',
'exit': 'خروج',
'create': 'ایجاد',
'importinterwikis': 'درونریزی میانویکیها',
'addlabels': 'افزودن برچسب به صورت خودکار',
'found': '$1 به $2 پیوند دارد.',
'nothing found': 'موردی یافت نشد که به $1 پیوند شدهباشد.',
'redirect': 'صفحهٔ $1 به $2 تغییر مسیر است.',
'missing': 'صفحهٔ $1 وجود ندارد.',
'success': 'آیتم با موفقیت ساخته شد.',
'missing lang': 'زبان باید مشخص شود.',
'missing title': 'عنوان باید مشخص شود.'
},
'fi': {
'check sitelink': 'Tarkista sivustolinkki',
'intro': 'Tarkista onko tietty sivustolinkki jo käytössä. Jos näin on, siirryt kohteeseen. Muussa tapauksessa voit luoda uuden kohteen.',
'lang': 'Kieli',
'title': 'Nimi',
'check': 'Tarkista',
'exit': 'Sulje',
'create': 'Luo',
'importinterwikis': 'Tuo kielilinkit',
'addlabels': 'Lisää automaattisesti nimet',
'found': '$1 on linkitetty sivuun $2.',
'nothing found': 'Ei löytynyt linkkejä sivuun $1.',
'redirect': 'Sivu $1 on uudelleenohjaus sivuun $2.',
'missing': 'Sivua $1 ei löydy.',
'success': 'Kohde luotu onnistuneesti.',
'missing lang': 'Kieli täytyy antaa.',
'missing title': 'Nimi täytyy antaa.'
},
'fr': {
/* general */
'check sitelink': 'Vérifier le lien',
'intro': 'Ce gadget permet de vérifier si un article de Wikipédia est déjà lié à un élément de Wikidata, et dans l\'hypothèse négative, de créer un nouvel élément.',
/* Labels */
'lang': 'Langue',
'title': 'Titre',
'check': 'Vérifier',
'exit': 'Quitter',
'create': 'Créer',
'importinterwikis': 'Importer les liens interwikis',
'addlabels': 'Ajouter automatiquement les libellés',
/* Messages */
'found': '$1 est lié avec $2.',
'nothing found': 'Aucun lien trouvé pour $1.',
'redirect': 'La page $1 redirige vers $2.',
'missing': 'La page $1 n\'existe pas.',
'success': 'L\'élément a bien été créé',
'missing lang': 'La langue doit être renseignée',
'missing title': 'Le titre doit être renseigné.'
},
'gl': {
'check sitelink': 'Comprobar as ligazóns dun sitio',
'intro': 'Comprobar se a ligazón dun sitio específico xa está en uso. Neste caso obterás o elemento, en caso contrario, poderás crear o elemento.',
'lang': 'Idioma',
'title': 'Título',
'check': 'Comprobar',
'exit': 'Saír',
'create': 'Crear',
'importinterwikis': 'Importar as ligazóns interwiki',
'addlabels': 'Engadir as etiquetas automaticamente',
'found': '$1 contén a ligazón $2.',
'nothing found': 'Ningún elemento liga con $1.',
'redirect': 'A páxina $1 redirixe a $2.',
'missing': 'A páxina $1 non existe.',
'success': 'Creouse o elemento satisfactoriamente.',
'missing lang': 'Tes que proporcionar un idioma.',
'missing title': 'Tes que proporcionar un título.'
},
'id': {
'check sitelink': 'Cek interwiki',
'intro': 'Cek apakah interwiki yang dimaksud sudah digunakan. Jika sudah, Anda akan menemukan item. Jika belum, Anda akan membuat item baru.',
'lang': 'Bahasa',
'title': 'Judul',
'check': 'Cek',
'exit': 'Keluar',
'create': 'Buat',
'importinterwikis': 'Impor pranala interwiki',
'addlabels': 'Otomatis menambahkan label',
'found': '$1 terkait pada $2.',
'nothing found': 'Tidak ada yang terkait pada $1.',
'redirect': 'Halaman $1 dialihkan pada $2.',
'missing': 'Halaman $1 tidak ada.',
'success': 'Item berhasil dibuat.',
'missing lang': 'Harus ada kode bahasa.',
'missing title': 'Harus ada judul halaman.'
},
'ja': {
'check sitelink': 'サイトリンクをチェック',
'intro': '特定のサイトリンクが使用済みかどうかチェックできます。使用済みであればその項目へのリンクが表示され、未使用であればその項目を作成できます。',
'lang': '言語コード',
'title': 'ページ名',
'check': 'チェック',
'exit': '終了',
'create': '作成',
'importinterwikis': '言語間リンクを移入する',
'addlabels': 'ラベルを自動的に追加する',
'found': '$1 が $2 にリンクしています。',
'nothing found': '$1 にリンクしている項目はありません。',
'redirect': 'ページ $1 は $2 に転送されています。',
'missing': 'ページ $1 は存在しません。',
'success': '項目の作成に成功しました。',
'missing lang': '言語コードは必須です。',
'missing title': 'ページ名は必須です。'
},
'ko': {
/* general */
'check sitelink': '사이트링크 확인',
'intro': '각 언어 위키백과의 문서가 위키데이터의 어떤 항목에 연결되어 있는지 확인합니다.',
/* Labels */
'lang': '언어',
'title': '제목',
'check': '확인',
'exit': '닫기',
'create': '생성',
'importinterwikis': '사이트링크 추가',
'addlabels': '자동적으로 레이블 삽입',
/* Messages */
'found': '$1 은 $2 에 링크되어 있습니다.',
'nothing found': '$1 에 연결되어 있는 항목을 찾지 못했습니다.',
'redirect': '$ 1 문서는 존재하지 않습니다.',
'missing': 'T항목이 성공적으로 만들어졌습니다.',
'success': '항목이 성공적으로 만들어졌습니다.',
'missing lang': '언어를 입력하셔야 합니다.',
'missing title': '제목을 입력하셔야 합니다.'
},
'ku': {
'check sitelink': 'Înterwîkiyan his bike',
'intro': 'His bike ka înterwîkiyek tê bi kar anîn.Heke belê, tê jixwe elementê bibînî, heke na yekî biafirîne',
'lang': 'Ziman',
'title': 'Sernav',
'check': 'Kontrol bike',
'exit': 'Derkeve',
'create': 'Biafirîne',
'importinterwikis': 'Înterwîkiyan ji derve bîne',
'addlabels': 'Nîşanan otomatîk lê zêde bike',
'found': '$1 contiene el enlace $2.',
'nothing found': 'Ningún elemento enlaza con $1.',
'redirect': 'Rûpel $1 beralî $2 dike.',
'missing': 'Rûpel $1 tune ye.',
'success': 'Element hate afirandin.',
'missing lang': 'Ziman divê bê dayîn.',
'missing title': 'Sernav divê bê dayîn.'
},
'min': {
'check sitelink': 'Cek interwiki',
'intro': 'Cek apokah interwiki nan dimakasuik alah digunoan. Kok alah, Sanak ka basobok jo item. Kok alun, Sanak akan mambuek item baru.',
'lang': 'Bahaso',
'title': 'Judul',
'check': 'Cek',
'exit': 'Kalua',
'create': 'Buek',
'importinterwikis': 'Impor pautan interwiki',
'addlabels': 'Otomatis manambahan label',
'found': '$1 takaik pado $2.',
'nothing found': 'Indak ado nan takaik ka $1.',
'redirect': 'Laman $1 dialiahkan ka $2.',
'missing': 'Laman $1 indak ado.',
'success': 'Item barasil dibuek.',
'missing lang': 'Harus ado kode bahaso.',
'missing title': 'Harus ado judul laman.'
},
'mk': {
/* general */
'check sitelink': 'Check sitelink',
'intro': 'Проверка дали веќе се користи извесна врска до мрежно место. Ако ја има, тогаш ќе го добиете предметот. Во спротивно, можете да го создадете.',
/* Labels */
'lang': 'Јазик',
'title': 'Наслов',
'check': 'Провери',
'exit': 'Излези',
'create': 'Создај',
'importinterwikis': 'Увоз на меѓувики-врски',
'addlabels': 'Автоматски додај етикети',
/* Messages */
'found': '$1 води до $2.',
'nothing found': 'Не најдов ништо што води до $1.',
'redirect': 'Страницата $1 пренасочува кон $2.',
'missing': 'Страницата $1 не постои.',
'success': 'Предметот е успешно создаден.',
'missing lang': 'Мора да зададете јазик.',
'missing title': 'Мора да зададете наслов.'
},
'nl': {
'check sitelink': 'Siteverwijzing controleren',
'intro': 'Controleren of een siteverwijzing al in gebruik is. Als het in gebruik is dan krijg je het item, zo niet, dan kan je deze aanmaken.',
/* Labels */
'lang': 'Taal',
'title': 'Titel',
'check': 'Controleren',
'exit': 'Sluiten',
'create': 'Aanmaken',
'importinterwikis': 'Interwiki verwijzingen importeren',
'addlabels': 'Automatisch labels toevoegen',
'found': '$1 linkt naar $2.',
'nothing found': 'Er linkt niets naar $1.',
'redirect': 'De pagina $1 verwijst door naar $2.',
'missing': 'De pagina $1 bestaat niet.',
'success': 'Het item is succesvol aangemaakt',
'missing lang': 'De taal moet worden aangegeven.',
'missing title': 'De titel moet worden gegeven.'
},
'ru': {
'check sitelink': 'Проверить ссылки',
'intro': 'Проверьте, используется ли уже определённая ссылка на сайт. Если это так, вы получите соответствующий элемент, в противном случае вы сможете его создать.',
'lang': 'Язык',
'title': 'Название',
'check': 'Проверить',
'exit': 'Выход',
'create': 'Создать',
'importinterwikis': 'Импортировать интервики-ссылки',
'addlabels': 'Автоматически добавить метки',
'found': '$1 ссылается на $2.',
'nothing found': 'Не найдены ссылки на $1.',
'redirect': 'Страница $1 перенаправляет на $2.',
'missing': 'Страница $1 не существует.',
'success': 'Элемент успешно создан.',
'missing lang': 'Нужно указать язык.',
'missing title': 'Нужно указать название.'
},
'zh': {
'check sitelink': '检查站点链接',
'intro': '检查指定站点的链接,如果链接已存在的话会给出相应的项目,不存在的话您可以创建此项目。',
'lang': '语言',
'title': '标题',
'check': '检查',
'exit': '退出',
'create': '创建',
'importinterwikis': '导入跨语言链接',
'addlabels': '自动添加标签',
'found': '$1 链接至 $2。',
'nothing found': '未找到链接至 $1 的项目。',
'redirect': '页面 $1 重定向至 $2。',
'missing': '页面 $1 不存在。',
'success': '已成功创建项目。'
},
'zh-hans': {
'check sitelink': '检查站点链接',
'intro': '检查指定站点的链接,如果链接已存在的话会给出相应的项目,不存在的话您可以创建此项目。',
'lang': '语言',
'title': '标题',
'check': '检查',
'exit': '退出',
'create': '创建',
'importinterwikis': '导入跨语言链接',
'addlabels': '自动添加标签',
'found': '$1 链接至 $2。',
'nothing found': '未找到链接至 $1 的项目。',
'redirect': '页面 $1 重定向至 $2。',
'missing': '页面 $1 不存在。',
'success': '已成功创建项目。'
},
'zh-hant': {
'check sitelink': '檢查站點連結',
'intro': '檢楂指定站點的連結,如果連結已存在的話會給出相應的項目,不存在的話您可以創建此項目。',
'lang': '語言',
'title': '標題',
'check': '檢查',
'exit': '退出',
'create': '創建',
'importinterwikis': '導入跨語言連結',
'addlabels': '自動添加標籤',
'found': '$1 連結至 $2。',
'nothing found': '未找到連結至 $1 的項目。',
'redirect': '頁面 $1 重定向至 $2。',
'missing': '頁面 $1 不存在。',
'success': '已成功創建項目。'
}
};
var i18nSite = {
/*These language codes have other codes as their interwiki codes */
'zh-hans': 'zh',
'zh-hant': 'zh'
};
var lang = mw.config.get( 'wgUserLanguage' );
var langParam;
if ( lang in i18nSite ) {
langParam = i18nSite[lang];
} else {
langParam = lang;
}
if ( !( lang in i18nData ) ) {
lang = 'en';
}
var urlLang = mw.util.getParamValue( 'site' );
if ( urlLang !== null ) {
langParam = urlLang.substr( 0, urlLang.length - 4 );
}
var titleParam = '';
var urlTitle = mw.util.getParamValue( 'page' );
if ( urlTitle !== null ) {
titleParam = urlTitle;
}
if ( mw.util.getParamValue( 'createitem' ) === 'success' && wbt.id ) {
mw.notify( i18n( 'success' ) );
}
function i18n( key ) {
var msg;
if ( i18nData[ lang ][ key ] ) {
msg = i18nData[ lang ][ key ];
}
else if ( key in i18nData[ 'en' ] ) {
msg = i18nData[ 'en' ][ key ];
}
else {
msg = '<' + key + '>';
}
for ( var i = 1; i < arguments.length; i++ ) {
msg = msg.replace( new RegExp( '\\$' + i, 'g' ), arguments[i] );
}
msg = jqueryMsg( msg );
return msg.substr( 1, msg.length - 2 );
}
function init() {
mw.loader.using( [ 'jquery.ui' ], function () {
var $form = $( '<div>' )
.attr( 'id', 'sitelink' )
.append(
$( '<form>' )
.submit( check )
.append(
$( '<fieldset>' )
.attr( 'id', 'sitelink-form' )
.append(
$( '<legend>' )
.text( i18n( 'check sitelink' ) )
) // </legend>
.append(
$( '<p>' )
.attr( 'id', 'sitelink-intro' )
.text( i18n( 'intro' ) )
) // </p>
.append(
$( '<p>' )
.append(
$( '<label>' )
.attr( {
'for' : 'sitelink-lang',
'class' : 'sitelink-label'
} )
.text( i18n( 'lang' ) + ': ' )
)
.append(
$( '<input>' )
.attr( {
'type' : 'text',
'id' : 'sitelink-lang',
'class' : 'sitelink-input',
'value' : langParam
} )
)
) // </p>
.append(
$( '<p>' )
.append(
$( '<label>' )
.attr( {
'for' : 'sitelink-title',
'class' : 'sitelink-label'
} )
.text( i18n( 'title' ) + ': ' )
)
.append(
$( '<input>' )
.attr( {
'type' : 'text',
'id' : 'sitelink-title',
'class' : 'sitelink-input',
'value' : titleParam
} )
)
) // </p>
) // </fieldset>
) // </form>
.append(
$( '<p>' )
.attr( 'id', 'sitelink-result' )
); // </div>
var contentForm = $( $form ).appendTo( '#content' );
contentForm.dialog( {
title: '<img src="//upload.wikimedia.org/wikipedia/commons/thumb/2/29/Symbol_question_green.svg/200px-Symbol_question_green.svg.png" width="20" alt="?" title="?" style="margin-right: 1.5em;">' + i18n( 'check sitelink' ),
autoOpen: false,
modal: true,
width: 500,
buttons: [ {
id: 'sitelink-button-check',
text: i18n( 'check' ),
click: check
}, {
id: 'sitelink-button-exit',
text: i18n( 'exit' ),
click: function () {
$( '#sitelink' ).dialog( 'close' );
}
} ]
} );
} );
var portletLink = mw.util.addPortletLink( 'p-tb', '#', i18n( 'check sitelink' ), 't-sitelink', i18n( 'check sitelink' ) );
$( portletLink ).click( show );
$( '#wb-createentity-submit' ).after(
$( '<a>' )
.attr( {
'id': 'sitelink-createentity',
'href': '#'
} )
.text( i18n( 'check sitelink' ) )
.click( show )
);
}
function show() {
$( '#sitelink-result' ).html( '' );
$( '#sitelink-title' ).attr( 'value', titleParam );
$( '#sitelink' ).dialog( 'open' );
$( '#sitelink-title' ).focus();
return false;
}
function check() {
var lang = $( '#sitelink-lang' ).attr( 'value' );
var title = $( '#sitelink-title' ).attr( 'value' );
if ( debug ) alert( 'lang: ' + lang );
if ( debug ) alert( 'title: ' + title );
if ( !lang ) {
error( i18n( 'missing lang' ) );
return;
}
if ( !title ) {
error( i18n( 'missing title' ) );
return;
}
createSpinner();
$.ajax( {
url: '//' + lang + '.wikipedia.org/w/api.php',
data: {
'format': 'json',
'action': 'query',
'prop': 'pageprops',
'titles': title,
'redirects': 'redirects'
},
dataType: 'jsonp'
} )
.done( function ( data ) {
var prefix = '[[' + lang + ':';
if ( data.error ) {
error( data.error.info );
}
else if ( !data.query ) {
error( i18n( 'api-error' ) );
}
else if ( data.query.pages['-1'] ) {
error( i18n( 'missing', prefix + data.query.pages['-1'].title + ']]' ) );
}
else if ( data.query.redirects ) {
var redirect = data.query.redirects[0];
error( i18n( 'redirect', prefix + redirect.from + ']]', prefix + redirect.to + ']]' ) );
}
else {
searchItem( lang, title );
}
} )
.fail( function () {
error( i18n( 'api-error' ) );
} );
}
function searchItem( lang, title ) {
$.ajax( {
type: 'POST',
url: mw.util.wikiScript( 'api' ),
data: {
'action': 'wbgetentities',
'format': 'json',
'sites': lang + 'wiki',
'titles': title
}
} )
.done( function ( data ) {
var id = getKey( data.entities );
var $message;
if ( id === '-1' ) {
$message = $( '<p>' ).append( i18n( 'nothing found', '[[' + lang + ':' + title + ']]' ) );
if ( !mw.user.isAnon() ) {
$message.after(
$( '<p>' )
.append(
$( '<input>' )
.attr( {
type: 'checkbox',
id: 'sitelink-importinterwikis'
} )
) // </input>
.append(
$( '<label>' )
.attr( 'for', 'sitelink-importinterwikis' )
.text( i18n( 'importinterwikis' ) )
) // </label>
// </p>
.after(
$( '<p>' )
.append(
$( '<input>' )
.attr( {
type: 'checkbox',
id: 'sitelink-addlabels'
} )
) // </input>
.append(
$( '<label>' )
.attr( 'for', 'sitelink-addlabels' )
.text( i18n( 'addlabels' ) )
) // </label>
) // </p>
.after(
$( '<p>' )
.append(
$( '<button>' )
.attr( {
type: 'button',
id: 'sitelink-createitem',
'class': 'ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only',
role: 'button'
} )
.click( function () {
// create Item
var addlabels = $( '#sitelink-addlabels' ).is( ':checked' );
var importinterwikis = $( '#sitelink-importinterwikis' ).is( ':checked' );
createSpinner();
work( lang, title, addlabels, importinterwikis );
} )
.append(
$( '<span>' )
.attr( 'class', 'ui-button-text' )
.text( i18n( 'create' ) )
) // </span>
) // </button>
) // </p>
);
}
}
else {
id = 'Q' + id.substr( 1 );
$message = $( '<p>' ).append( i18n( 'found', '[[' + id + ']]', '[[' + lang + ':' + title + ']]' ) );
}
$( '#sitelink-result' ).html( $message );
} )
.fail( function () {
error( i18n( 'api-error' ) );
} );
}
function success( data ) {
window.location.href = mw.config.get( 'wgArticlePath' ).replace( '$1', data.entity.id.toUpperCase() ) + '?createitem=success';
}
function error( msg ) {
$( '#sitelink-result' ).html( msg );
}
function createSpinner() {
$( '#sitelink-result' ).html( '<div id="sitelink-spinner" />' );
$.createSpinner( {
size: 'large',
type: 'block',
id: 'sitelink-spinner'
} ).replaceAll( '#sitelink-spinner' );
}
function work( lang, title, addlabels, importinterwikis ) {
var summary = '[[:' + lang + ':' + title + ']] ([[MediaWiki talk:Gadget-SitelinkCheck.js|SC]])';
var data = { sitelinks: {} };
var site = lang.replace( /-/g, '_' ) + 'wiki';
data['sitelinks'][site] = {
'site': site,
'title': title
};
if ( addlabels ) {
if ( debug ) alert( 'addlabels' );
data['labels'] = {};
data['labels'][lang] = {
language: lang,
value: title.replace( /\(.*\)/g, '' ) // regex
};
}
if ( importinterwikis ) {
if ( debug ) alert( 'importinterwikis' );
wbt.getInterwikiLinks( lang, title, function ( links ) {
for ( var lang in links ) {
var title = links[lang];
var site = lang.replace( /-/g, '_' ) + 'wiki';
data['sitelinks'][site] = {
'site': site,
'title': title
};
if ( addlabels ) {
data['labels'][lang] = {
language: lang,
value: title.replace( /\(.*\)/g, '' ) // regex
};
}
}
if ( debug ) alert( JSON.stringify( data ) );
wbt.createItem( data, summary, success, error );
}, error );
}
else {
if ( debug ) alert( JSON.stringify( data ) );
wbt.createItem( data, summary, success, error );
}
}
function getKey( data ) {
for ( var prop in data )
return prop;
}
$( document ).ready( init );
} )( mediaWiki, jQuery, wikibaseTools );