MediaWiki:Common.js: Revizyonlar arasındaki fark
MediaWiki arayüz sayfası
More actions
C. Karakuş (mesaj | katkılar) Sayfa boşaltıldı Etiket: Boşaltma |
C. Karakuş (mesaj | katkılar) Değişiklik özeti yok |
||
| 1. satır: | 1. satır: | ||
/* Ana Sayfa Dinamik Son Değişiklikler Feed Motoru */ | |||
mw.loader.using(['mediawiki.api'], function () { | |||
$(document).ready(function () { | |||
var $feedContainer = $('#wiki-recent-js-feed'); | |||
if (!$feedContainer.length) return; // Eğer sayfada şablon yoksa çalıştırma | |||
var api = new mw.Api(); | |||
// 1. Adım: Son değişiklikleri API'den çek (Sadece Ana Maddeler - Namespace 0) | |||
api.get({ | |||
action: 'query', | |||
list: 'recentchanges', | |||
rcnamespace: 0, // Şablon, Özel, Kategori gibi teknik sayfaları eler | |||
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;">Henüz değişiklik yok.</div>'); | |||
return; | |||
} | |||
var titles = items.map(function (item) { return item.title; }); | |||
// 2. Adım: Bu maddelerin ana görsellerini (PageImages) topluca ç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 = {}; | |||
// Sayfa başlığı ile görsel URL'sini eşleştir | |||
for (var pageId in pages) { | |||
var p = pages[pageId]; | |||
if (p.thumbnail && p.thumbnail.source) { | |||
imageMap[p.title] = p.thumbnail.source; | |||
} | |||
} | |||
// 3. Adım: HTML Yapısını Hatasız İnşa Et | |||
var htmlOutput = ''; | |||
items.forEach(function (item) { | |||
var pageTitle = item.title; | |||
var pageLink = mw.util.getUrl(pageTitle); | |||
// Görsel varsa onu koy, yoksa varsayılan boş siyah görsel koy | |||
var imgUrl = imageMap[pageTitle] || 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="52" viewBox="0 0 80 52"><rect width="80" height="52" fill="%23111"/></svg>'; | |||
htmlOutput += '<div class="wiki-recent-row">' + | |||
'<div class="wiki-recent-text">' + | |||
'<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' + | |||
'</div>' + | |||
'<div class="wiki-recent-img-wrapper">' + | |||
'<a href="' + pageLink + '"><img src="' + imgUrl + '" alt="' + pageTitle + '"></a>' + | |||
'</div>' + | |||
'</div>'; | |||
}); | |||
$feedContainer.html(htmlOutput); | |||
}); | |||
}).fail(function () { | |||
$feedContainer.html('<div style="color:#888; padding:20px;">Yüklenirken hata oluştu.</div>'); | |||
}); | |||
}); | |||
}); | |||
07.07, 5 Temmuz 2026 tarihindeki hâli
/* Ana Sayfa Dinamik Son Değişiklikler Feed Motoru */
mw.loader.using(['mediawiki.api'], function () {
$(document).ready(function () {
var $feedContainer = $('#wiki-recent-js-feed');
if (!$feedContainer.length) return; // Eğer sayfada şablon yoksa çalıştırma
var api = new mw.Api();
// 1. Adım: Son değişiklikleri API'den çek (Sadece Ana Maddeler - Namespace 0)
api.get({
action: 'query',
list: 'recentchanges',
rcnamespace: 0, // Şablon, Özel, Kategori gibi teknik sayfaları eler
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;">Henüz değişiklik yok.</div>');
return;
}
var titles = items.map(function (item) { return item.title; });
// 2. Adım: Bu maddelerin ana görsellerini (PageImages) topluca ç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 = {};
// Sayfa başlığı ile görsel URL'sini eşleştir
for (var pageId in pages) {
var p = pages[pageId];
if (p.thumbnail && p.thumbnail.source) {
imageMap[p.title] = p.thumbnail.source;
}
}
// 3. Adım: HTML Yapısını Hatasız İnşa Et
var htmlOutput = '';
items.forEach(function (item) {
var pageTitle = item.title;
var pageLink = mw.util.getUrl(pageTitle);
// Görsel varsa onu koy, yoksa varsayılan boş siyah görsel koy
var imgUrl = imageMap[pageTitle] || 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="52" viewBox="0 0 80 52"><rect width="80" height="52" fill="%23111"/></svg>';
htmlOutput += '<div class="wiki-recent-row">' +
'<div class="wiki-recent-text">' +
'<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' +
'</div>' +
'<div class="wiki-recent-img-wrapper">' +
'<a href="' + pageLink + '"><img src="' + imgUrl + '" alt="' + pageTitle + '"></a>' +
'</div>' +
'</div>';
});
$feedContainer.html(htmlOutput);
});
}).fail(function () {
$feedContainer.html('<div style="color:#888; padding:20px;">Yüklenirken hata oluştu.</div>');
});
});
});