Diferencia entre revisiones de «MediaWiki:Gadget-Preview.js»
(Página creada con «// <nowiki> // ------------------------------------------------------------------------------------------------------------- // Shows a "preview" button next to each linke...») |
(Sin diferencias)
|
Revisión actual del 09:01 9 abr 2014
// <nowiki> // ------------------------------------------------------------------------------------------------------------- // Shows a "preview" button next to each linked article to get a preview of the article right next to the table. // Much thanks to User:Denny/articlePreview.js, from which I got the idea. // // Usage: Enable the gadget Preview in your preferences. // ------------------------------------------------------------------------------------------------------------- ( function ( mw, $ ) { "use strict"; if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) { return; } switch ( mw.config.get( 'wgUserLanguage' ) ) { case 'de': case 'de-at': case 'de-ch': case 'de-formal': mw.messages.set( { 'title' : 'Artikelvorschau', 'preview' : 'Vorschau', 'noarticle' : 'Du hast noch keinen Artikel ausgewählt.', 'readmore' : 'Weiterlesen', 'hide' : 'verstecken', 'show' : 'zeigen' } ); break; case 'bn': mw.messages.set( { 'title' : 'নিবন্ধ প্রাকদর্শন', 'preview' : 'প্রাকদর্শন', 'noarticle' : 'আপনি এখনও কোন নিবন্ধ নির্বাচন করেন নি।', 'readmore' : 'আরও পড়ুন', 'hide' : 'আড়াল করো', 'show' : 'দেখাও' } ); break; case 'cs': mw.messages.set( { 'title' : 'Náhled článku', 'preview' : 'náhled', 'noarticle' : 'Zatím není zvolen článek.', 'readmore' : 'Více', 'hide' : 'skryj', 'show' : 'ukaž' } ); break; case 'es': mw.messages.set( { 'title' : 'Previsualización del artículo', 'preview' : 'previsualizar', 'noarticle' : 'Aún no seleccionaste ningún artículo.', 'readmore' : 'Leer más', 'hide' : 'ocultar', 'show' : 'mostar' } ); break; case 'fa': mw.messages.set( { 'title' : 'پیشنمایش مقاله', 'preview' : 'پیشنمایش', 'noarticle' : 'شما هنوز مقالهای را انتخاب نکردهاید.', 'readmore' : 'مطالعهٔ بیشتر', 'hide' : 'پنهان', 'show' : 'نمایش' } ); break; case 'fi': mw.messages.set( { 'title' : 'Artikkelin esikatselu', 'preview' : 'esikatselu', 'noarticle' : 'Et ole vielä valinnut artikkelia.', 'readmore' : 'Lue lisää', 'hide' : 'piilota', 'show' : 'näytä' } ); break; case 'fr': mw.messages.set( { 'title' : 'Visualisation des articles', 'preview' : 'visualiser', 'noarticle' : 'Aucun article n\'est sélectionné.', 'readmore' : 'Lire la suite', 'hide' : 'masquer', 'show' : 'afficher' } ); break; case 'gl': mw.messages.set( { 'title' : 'Previsualización do artigo', 'preview' : 'previsualizar', 'noarticle' : 'Aínda non seleccionaches ningún artigo.', 'readmore' : 'Ler máis', 'hide' : 'ocultar', 'show' : 'amosar' } ); break; case 'hu': mw.messages.set( { 'title' : 'Cikk előnézete', 'preview' : 'előnézet', 'noarticle' : 'Nem választottál cikket.', 'readmore' : 'Tovább', 'hide' : 'elrejt', 'show' : 'mutat' } ); break; case 'id': mw.messages.set( { 'title' : 'Pratayang artikel', 'preview' : 'pratayang', 'noarticle' : 'Anda belum memilih artikel.', 'readmore' : 'Lebih lanjut', 'hide' : 'sembunyikan', 'show' : 'tunjukan' } ); break; case 'it': mw.messages.set( { 'title' : 'Anteprime della voce', 'preview' : 'anteprima', 'noarticle' : 'Non hai ancora selezionato una voce.', 'readmore' : 'Leggi tutto', 'hide' : 'nascondi', 'show' : 'mostra' } ); break; case 'ja': mw.messages.set( { 'title' : '記事のプレビュー', 'preview' : 'プレビュー', 'noarticle' : '記事が選択されていません', 'readmore' : '続きを読む', 'hide' : '非表示', 'show' : '表示' } ); break; case 'ko': mw.messages.set( { 'title' : '문서 미리 보기', 'preview' : '미리 보기', 'noarticle' : '아직 문서를 선택하지 않으셧습니다.', 'readmore' : '더 보기', 'hide' : '숨기기', 'show' : '보이기' } ); break; case 'min': mw.messages.set( { 'title' : 'Pratonton laman', 'preview' : 'pratonton', 'noarticle' : 'Sanak alum mamiliah laman.', 'readmore' : 'Labiah lanjuik', 'hide' : 'suruakan', 'show' : 'tunjuakan' } ); break; case 'nl': mw.messages.set( { 'title' : 'Voorbeeld van artikel', 'preview' : 'voorbeeld', 'noarticle' : 'Je hebt nog geen artikel geselecteerd.', 'readmore' : 'Meer lezen', 'hide' : 'Verbergen', 'show' : 'Tonen' } ); break; case 'zh': case 'zh-cn': case 'zh-hans': case 'zh-my': case 'zh-sg': mw.messages.set( { 'title' : '条目预览', 'preview' : '预览', 'noarticle' : '您尚未选择一个条目。', 'readmore' : '阅读更多', 'hide' : '隐藏', 'show' : '显示' } ); break; case 'zh-hant': case 'zh-hk': case 'zh-mo': case 'zh-tw': mw.messages.set( { 'title' : '條目預覽', 'preview' : '預覽', 'noarticle' : '您尚無選擇一個條目。', 'readmore' : '閱讀更多', 'hide' : '隱藏', 'show' : '顯示' } ); break; default: case 'en': mw.messages.set( { 'title' : 'Article preview', 'preview' : 'preview', 'noarticle' : 'You have not selected an article yet.', 'readmore' : 'Read more', 'hide' : 'hide', 'show' : 'show' } ); } /** * The cached previews. */ var cache = {}; /** * Initialising the links. */ function init() { var lang = mw.config.get( 'wgUserLanguage' ); var wiki = lang + 'wiki'; // Guess default wiki $( '.wb-widget-container' ).html( $( '<div>' ) .attr( { id: 'x-articlepreview', style: 'width: 35em; margin-left: 30px;' } ) .append( $( '<h3>' ) .text( mw.msg( 'title' ) ) ) .append( $( '<div>' ) .attr( 'id', 'x-articlepreview-content' ) .append( $( '<p>' ) .attr( 'style', 'font-style: italic;' ) .text( mw.msg( 'noarticle' ) ) ) ) ); if ( $( '.wb-sitelinks-link-' + wiki + ' a' ).text() ) { $( '#x-articlepreview-content p' ) .append( '<br> → ' ) .append( $( '<a>' ) .attr( 'href', '#' ) .text( $( '.wb-sitelinks-link-' + wiki + ' a' ).text() ) .click( function () { preview( wiki ); return false; } ) // </a> ); } $( document ) .on( 'mouseenter', '.wb-sitelinks tbody tr .wb-sitelinks-link', function () { var wiki = $( this ).parent().find( '.wb-sitelinks-siteid' ).text(); $( this ).append( $( '<span>' ) .append( $( '<a>' ) .attr( 'href', '#x-articlepreview' ) .css( 'float', $( this ).attr( 'dir' ) === 'rtl' ? 'left' : 'right' ) .text( mw.msg( 'preview' ) ) .click( function () { preview( wiki ); //return false; } ) ) ); } ) .on( 'mouseleave', '.wb-sitelinks tbody tr .wb-sitelinks-link', function () { $( this ).find( 'span' ).remove(); } ); } /** * Showing the preview got by an http request. Requests are cached. * * @param wiki the article's wiki */ function preview( wiki ) { console.log( 'wiki: ' + wiki ); var title = $( '.wb-sitelinks-link-' + wiki + ' a:eq(0)' ).text(); var site = wikibase.getSite( wiki ); var lang = site.getLanguage(); console.log( 'title: ' + title ); console.log( site ); if ( !title ) { return; } if ( cache.hasOwnProperty( wiki ) ) { showPreview( cache[wiki] ); } else { mw.loader.using( ['jquery.spinner'], function () { $( '#x-articlepreview-content' ).html( '' ); $.createSpinner( { size: 'small', type: 'block' } ).appendTo( '#x-articlepreview-content' ); $.getJSON( site.getApi() + '?callback=?', { action: 'query', prop: 'extracts', exintro: true, exchars: 1000, titles: title, format: 'json' }, function ( data ) { var $preview = $( '<span>' ) .css( 'float', lang.dir === 'ltr' ? 'right' : 'left' ) .append( '[' ) .append( $( '<a>' ) .attr( { href: '#', id: 'x-articlepreview-toggle' } ) .text( mw.msg( 'hide' ) ) // </a> ) .append( ']' ) .after( $( '<h4>' ) .attr( 'dir', lang.dir ) .attr( 'lang', lang.code ) .text( $( '.wb-sitelinks-sitename-' + wiki ).text() + ' ' ) .append( $( '<span>' ) .attr( 'dir', 'ltr' ) .attr( 'lang', 'en' ) .text( '(' + wiki + ')' ) ) ) .after( $( '<div>' ) .attr( { id: 'x-articlepreview-article', 'class': 'mw-content-' + lang.dir, dir: lang.dir, lang: lang.code } ) .html( data.query.pages[Object.keys( data.query.pages )[0]].extract.replace( /<\/p>(…|...)/, '…</p>' ) ) .append( $( '<p>' ) .append( $( '<a>' ) .attr( { 'href': site.getUrlTo( title ), 'title': wiki + ':' + title } ) .text( mw.msg( 'readmore' ) ) ) // </a> ) // </p> ); // </span> cache[wiki] = $preview; showPreview( $preview ); } ); } ); } } /** * Adds the preview to the document. * * @param preview the preview in html format */ function showPreview( preview ) { $( '#x-articlepreview-content' ).html( preview ); // toggle link $( '#x-articlepreview-toggle' ).toggle( function () { $( '#x-articlepreview-article' ).slideUp(); $( this ).text( mw.msg( 'show' ) ); }, function () { $( '#x-articlepreview-article' ).slideDown(); $( this ).text( mw.msg( 'hide' ) ); } ); } $( document ).ready( init ); } )( mediaWiki, jQuery ); // </nowiki>