MediaWiki:Gadget-WordLinksHere.js

Матеріал з Вікіджерел

Увага: Після публікування слід очистити кеш браузера, щоб побачити зміни.

  • Firefox / Safari: тримайте Shift, коли натискаєте Оновити, або натисніть Ctrl-F5 чи Ctrl-Shift-R (⌘-R на Apple Mac)
  • Google Chrome: натисніть Ctrl-Shift-R (⌘-Shift-R на Apple Mac)
  • Internet Explorer / Edge: тримайте Ctrl, коли натискаєте Оновити, або натисніть Ctrl-F5
  • Opera: натисніть Ctrl-F5
// Формування розділу «Використання у творах» на сторінці слова
// Тільки для Категорія:Словник Вікіджерел, перші 15 творів
//
// uk.wikisource.org/wiki/User:Leh_Palych
//
$( document ).ready( function() {
	if( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
			return;
	}
	if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
			return;
	}

	var $cont = $( '#mw-content-text' );
	var $cat = $( 'div.printfooter' );

	mw.loader.using( [ 'mediawiki.api' ], function () {
			var api = new mw.Api();
			var params;
			var pagename = mw.config.get( 'wgPageName' );
			var needed_cat = 'Категорія:Словник Вікіджерел';
			
			params = {
				action: 'query',
				titles: pagename,
				prop: 'categories',
				cllimit: 20,
				clshow: '!hidden',
				format: 'json'
			};

			api.get( params ).done( function ( data ) {
				var pageid, present, pages, header;
				
				pages = data.query.pages;
				for (var id in pages) {
					pageid = id;
					break;
				}

				pages = pages[pageid].categories;
				present = false;
				for (var i in pages) {
					if( needed_cat === pages[i].title ) {
						present = true;
						break;
					}
				}

				if( present ) {
					mw.util.addCSS( '#ca-proofread-source { display: none !important; }' );
					header = document.getElementById('firstHeading');
					header.innerHTML = header.innerHTML.replace('(слово)','<span style="color:#999999; font-size:80%; font-style:italic">(слово)</span>');

					params = {
						action: 'query',
						titles: pagename,
						prop: 'linkshere',
						lhnamespace: 0,
						lhlimit: 15,
						lhshow: '!redirect',
						format: 'json'
					};
			
					api.get( params ).done( function ( data ) {
						var servername = mw.config.get('wgServer');
						var path = mw.config.get('wgArticlePath');
						path = path.replace('$1', '');

						var text, title, link, item;
						
						pages = data.query.pages;
						for (var id in pages) {
							pageid = id;
							break;
						}
                    	
                    	if(typeof pages[pageid].linkshere !== 'undefined'){
							text = '<br/><hr><div><h3>Використання у творах</h3><ul>';
							item = '<li> <a href="' + servername + path;

							pages = pages[pageid].linkshere;
							for (var i in pages) {
								title = pages[i].title;
								link = title.replace(/\?/g, '%3F');
   								text += item + link + '">'+title+'</a>';
							}

							text += '</ul></div>';

							if( $cat.length !== 0 ) {
								$cat.after( text );
							} else {
								$cont.after( text );
							}
                    	}
					} );  // API:LinksHere
				}
				
			} ); // API:Categories

	} );
});