MediaWiki:Common.js: Revizyonlar arasındaki fark
MediaWiki arayüz sayfası
More actions
C. Karakuş (mesaj | katkılar) Değişiklik özeti yok |
C. Karakuş (mesaj | katkılar) Değişiklik özeti yok |
||
| 73. satır: | 73. satır: | ||
}); | }); | ||
}); | }); | ||
/* Arama | /* Arama Paleti Her Açıldığında Rastgele Sayfa Butonunu Yeniden Oluşturan Kesin Çözüm */ | ||
$( function () { | $( function () { | ||
// Butonu ekleyen fonksiyon | |||
function injectRandomButton() { | |||
var $inputArea = $( '.citizen-command-palette-header__input-area' ); | var $inputArea = $( '.citizen-command-palette-header__input-area' ); | ||
if ( $inputArea.length ) { | if ( $inputArea.length && !$( '#citizen-custom-random-btn' ).length ) { | ||
var randomBtn = $( '<a>' ) | |||
.attr( { | |||
id: 'citizen-custom-random-btn', | |||
href: '/m/Özel:Rastgele', | |||
title: 'Rastgele Sayfa Getir' | |||
} ) | |||
.html( '<span class="citizen-ui-icon mw-ui-icon-die mw-ui-icon-wikimedia-die"></span>' ); | |||
$inputArea.append( randomBtn ); | |||
} | |||
} | |||
// Sayfa ilk yüklendiğinde eğer palet açıksa ekle | |||
injectRandomButton(); | |||
// Vue.js element silme/ekleme hareketlerini (DOM değişikliklerini) sürekli izleyen gözlemci | |||
var observer = new MutationObserver( function ( mutations ) { | |||
mutations.forEach( function ( mutation ) { | |||
if ( mutation.addedNodes.length ) { | |||
injectRandomButton(); | |||
} | } | ||
} | } ); | ||
}, | } ); | ||
// Bütün sayfayı ve dinamik açılan pencereleri izlemeye al | |||
observer.observe( document.body, { | |||
childList: true, | |||
subtree: true | |||
} ); | |||
} ); | } ); | ||
10.29, 7 Temmuz 2026 tarihindeki hâli
/* Ana Sayfa Son Değişiklikler Feed Motoru - Tıklayınız İbareli Sürüm */
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {
$(document).ready(function () {
var $feedContainer = $('#wiki-recent-js-feed');
if (!$feedContainer.length) return;
var api = new mw.Api();
// Sadece ana maddeleri (Namespace 0) listeler
api.get({
action: 'query',
list: 'recentchanges',
rcnamespace: 0,
rclimit: 5,
rctype: 'edit|new',
format: 'json'
}).done(function (data) {
var items = data.query.recentchanges;
if (!items || items.length === 0) {
$feedContainer.html('<div style="color:#666; padding:20px; text-align:center;">Henüz bir değişiklik bulunmuyor.</div>');
return;
}
var titles = items.map(function (item) { return item.title; });
// Sayfa görsellerini çek
api.get({
action: 'query',
titles: titles.join('|'),
prop: 'pageimages',
piprop: 'thumbnail',
pithumbsize: 160,
format: 'json'
}).done(function (imgData) {
var pages = imgData.query.pages;
var imageMap = {};
for (var pageId in pages) {
var p = pages[pageId];
if (p.thumbnail && p.thumbnail.source) {
imageMap[p.title] = p.thumbnail.source;
}
}
var htmlOutput = '';
items.forEach(function (item) {
var pageTitle = item.title;
var pageLink = mw.util.getUrl(pageTitle);
var imgUrl = imageMap[pageTitle];
htmlOutput += '<div class="wiki-recent-row">' +
'<div class="wiki-recent-text">' +
'<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' +
'<div class="wiki-recent-subtext"><a href="' + pageLink + '">Okumak için tıklayınız</a></div>' +
'</div>' +
'<div class="wiki-recent-img-wrapper">';
if (imgUrl) {
htmlOutput += '<a href="' + pageLink + '"><img src="' + imgUrl + '" alt="' + pageTitle + '"></a>';
} else {
htmlOutput += '<a href="' + pageLink + '"><div class="wiki-recent-empty-thumb"></div></a>';
}
htmlOutput += '</div></div>';
});
$feedContainer.html(htmlOutput);
});
}).fail(function () {
$feedContainer.html('<div style="color:#888; padding:20px; text-align:center;">Akış yüklenirken bir sorun oluştu.</div>');
});
});
});
/* Arama Paleti Her Açıldığında Rastgele Sayfa Butonunu Yeniden Oluşturan Kesin Çözüm */
$( function () {
// Butonu ekleyen fonksiyon
function injectRandomButton() {
var $inputArea = $( '.citizen-command-palette-header__input-area' );
if ( $inputArea.length && !$( '#citizen-custom-random-btn' ).length ) {
var randomBtn = $( '<a>' )
.attr( {
id: 'citizen-custom-random-btn',
href: '/m/Özel:Rastgele',
title: 'Rastgele Sayfa Getir'
} )
.html( '<span class="citizen-ui-icon mw-ui-icon-die mw-ui-icon-wikimedia-die"></span>' );
$inputArea.append( randomBtn );
}
}
// Sayfa ilk yüklendiğinde eğer palet açıksa ekle
injectRandomButton();
// Vue.js element silme/ekleme hareketlerini (DOM değişikliklerini) sürekli izleyen gözlemci
var observer = new MutationObserver( function ( mutations ) {
mutations.forEach( function ( mutation ) {
if ( mutation.addedNodes.length ) {
injectRandomButton();
}
} );
} );
// Bütün sayfayı ve dinamik açılan pencereleri izlemeye al
observer.observe( document.body, {
childList: true,
subtree: true
} );
} );