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 |
||
| 1. satır: | 1. satır: | ||
// ========================================================================== | // ========================================================================== | ||
// KIZILBASHICA JAVASCRIPT DOSYASI (ALINTI & | // KIZILBASHICA JAVASCRIPT DOSYASI (ALINTI, YAZARLAR & ULTRA OPTİMİZE SÜRÜM) | ||
// ========================================================================== | // ========================================================================== | ||
(function ($, mw) { | |||
'use strict'; | |||
// Ortak ayarlar | |||
var ns = mw.config.get('wgNamespaceNumber'); | var ns = mw.config.get('wgNamespaceNumber'); | ||
var pageName = mw.config.get('wgTitle'); | var pageName = mw.config.get('wgTitle'); | ||
var baseUrl = mw.config.get('wgArticlePath') || '/wiki/$1'; | var baseUrl = mw.config.get('wgArticlePath') || '/wiki/$1'; | ||
var urlParams = new URLSearchParams(window.location.search); | var urlParams = new URLSearchParams(window.location.search); | ||
var isEditing = urlParams.has('action') && (urlParams.get('action') === 'edit' || urlParams.get('action') === 'submit'); | var isEditing = urlParams.has('action') && (urlParams.get('action') === 'edit' || urlParams.get('action') === 'submit'); | ||
var cdxClasses = 'citizen-cdx-button--size-large cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet'; | |||
// 1. | // ---------------------------------------------------------------------- | ||
// 1. ALINTI / OKU BUTON DÖNÜŞTÜRMELERİ VE DİNAMİK İKONLAR | |||
// ---------------------------------------------------------------------- | |||
mw.hook('wikipage.content').add(function () { | |||
// --- Normal Maddeler (ns: 0) --- | |||
if (ns === 0) { | |||
var mainTalkLink = $('#ca-talk a, .citizen-section-talk a, a[href*="Tart%C4%B1%C5%9Fma:"], a[href*="Talk:"]'); | |||
if (mainTalkLink.length > 0 && !mainTalkLink.hasClass('kb-processed')) { | |||
var citePageUrl = baseUrl.replace('$1', 'Kaynak:' + encodeURIComponent(pageName)); | |||
mainTalkLink.addClass('kb-processed').replaceWith( | |||
'<a href="' + citePageUrl + '" class="' + cdxClasses + '">' + | |||
'<span class="citizen-ui-icon mw-ui-icon-quotes mw-ui-icon-wikimedia-quotes"></span> ' + | |||
'<span>Alıntı</span>' + | |||
'</a>' | |||
); | |||
} | |||
// Yapışkan Başlık (Sticky Header) için Alıntı Dönüşümü | |||
var stickyTalkBtn = document.getElementById('ca-talk-sticky-header'); | |||
if (stickyTalkBtn && !stickyTalkBtn.classList.contains('kb-processed')) { | |||
stickyTalkBtn.classList.add('kb-processed'); | |||
var iconSpan = stickyTalkBtn.querySelector('.citizen-ui-icon'); | |||
if (iconSpan) iconSpan.className = 'citizen-ui-icon mw-ui-icon-quotes mw-ui-icon-wikimedia-quotes'; | |||
var textSpan = stickyTalkBtn.querySelector('span:not(.citizen-ui-icon)'); | |||
' | if (textSpan) textSpan.textContent = 'Alıntı'; | ||
' | } | ||
' | |||
} | } | ||
// | // --- Kaynak Ad Alanı (ns: 3000) --- | ||
if ( | if (ns === 3000) { | ||
var sourceTalkLink = $('#ca-talk a, .citizen-section-talk a, a[href*="Kaynak_tart%C4%B1%C5%9Fma:"]'); | |||
if (sourceTalkLink.length > 0 && !sourceTalkLink.hasClass('kb-processed')) { | |||
var mainPageUrl = baseUrl.replace('$1', encodeURIComponent(pageName)); | |||
sourceTalkLink.addClass('kb-processed').replaceWith( | |||
'<a href="' + mainPageUrl + '" class="' + cdxClasses + '">' + | |||
'<span class="citizen-ui-icon mw-ui-icon-eye mw-ui-icon-wikimedia-eye"></span> ' + | |||
'<span>Oku</span>' + | |||
'</a>' | |||
); | |||
} | |||
// Kaynak Arayüzü Şablonu Render Etme (Boş Sayfalarda) | |||
if (!isEditing && (mw.config.get('wgArticleId') === 0 || $('.noarticletext, .mw-noarticletext').length > 0)) { | |||
var container = $('#mw-content-text'); | var container = $('#mw-content-text'); | ||
container.html('<div id="loading-cite" style="color: var(--kb-text-sub); font-style: italic; padding: 10px;">Kaynak arayüzü yükleniyor...</div>'); | if (container.length && !container.hasClass('kb-loaded')) { | ||
container.addClass('kb-loaded'); | |||
$('.noarticletext, .mw-noarticletext').hide(); | |||
container.html('<div id="loading-cite" style="color: var(--kb-text-sub); font-style: italic; padding: 10px;">Kaynak arayüzü yükleniyor...</div>'); | |||
$.ajax({ | |||
url: mw.util.wikiScript('api'), | |||
data: { action: 'parse', text: '{{AlıntıYap|madde=' + pageName + '}}', contentmodel: 'wikitext', format: 'json' }, | |||
success: function (data) { | |||
if (data && data.parse && data.parse.text) { | |||
container.html(data.parse.text['*']); | |||
} | |||
} | } | ||
}); | |||
} | |||
} | |||
} | |||
// --- Yan Menü (Drawer) İkonları --- | |||
var drawerIcons = { | |||
'n-Dizin': 'mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet', | |||
'n-Kısaltmalar': 'mw-ui-icon-recentChanges mw-ui-icon-wikimedia-recentChanges', | |||
'n-Kılavuz': 'mw-ui-icon-article mw-ui-icon-wikimedia-article', | |||
'n-Ansiklopedi-hakkında': 'mw-ui-icon-infoFilled mw-ui-icon-wikimedia-infoFilled' | |||
}; | |||
Object.keys(drawerIcons).forEach(function (id) { | |||
var item = document.getElementById(id); | |||
if (item && !item.querySelector('.citizen-ui-icon')) { | |||
var link = item.querySelector('a'); | |||
if (link) { | |||
var icon = document.createElement('span'); | |||
icon.className = 'citizen-ui-icon ' + drawerIcons[id]; | |||
link.insertBefore(icon, link.firstChild); | |||
} | |||
} | |||
}); | |||
// --- Yazarlar Kartı Oluşturma --- | |||
var $yazarKaynagi = $('#sayfa-yazarlari'); | |||
var $target = $('#citizen-sidebar-lastmod'); | |||
if ($yazarKaynagi.length && $target.length && !$('#citizen-sidebar-yazarlar').length) { | |||
var satirlar = $yazarKaynagi.html().split(/<br\s*\/?>|\n/i); | |||
var gecerliYazarlar = []; | |||
satirlar.forEach(function (satir) { | |||
var duzMetin = satir.replace(/<\/?[^>]+(>|$)/g, "").trim(); | |||
if (duzMetin !== "") gecerliYazarlar.push(satir.trim()); | |||
}); | |||
if (gecerliYazarlar.length > 0) { | |||
var baslikMetni = gecerliYazarlar.length > 1 ? 'Yazarlar' : 'Yazar'; | |||
var $yazarKarti = $('<nav>', { 'id': 'citizen-sidebar-yazarlar', 'class': 'citizen-menu mw-portlet' }); | |||
var $yazarBaslik = $('<div>', { 'class': 'citizen-menu__heading', 'text': baslikMetni }); | |||
var $yazarIcerik = $('<div>', { 'class': 'citizen-menu__content' }); | |||
var $ul = $('<ul>', { 'class': 'citizen-menu__content-list' }); | |||
gecerliYazarlar.forEach(function (yazar) { | |||
var $li = $('<li>', { 'class': 'mw-list-item' }); | |||
var $tempDiv = $('<div>').html(yazar); | |||
var $orijinalLink = $tempDiv.find('a').first(); | |||
var $yazarElementi; | |||
if ($orijinalLink.length > 0) { | |||
$yazarElementi = $orijinalLink.clone().addClass(cdxClasses); | |||
var metin = $yazarElementi.text(); | |||
$yazarElementi.html('') | |||
.append($('<span>', { 'class': 'citizen-ui-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar' })) | |||
.append($('<span>').text(metin)); | |||
} else { | |||
$yazarElementi = $('<a>', { | |||
'class': cdxClasses, | |||
'style': 'cursor: default; pointer-events: none; color: inherit;' | |||
}) | |||
.append($('<span>', { 'class': 'citizen-ui-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar' })) | |||
.append($('<span>').html(yazar)); | |||
} | } | ||
$li.append($yazarElementi); | |||
$ul.append($li); | |||
}); | }); | ||
$yazarIcerik.append($ul); | |||
$yazarKarti.append($yazarBaslik).append($yazarIcerik); | |||
$target.after($yazarKarti); | |||
} | } | ||
} | } | ||
} | }); | ||
// ---------------------------------------------------------------------- | |||
// 2. DİNAMİK GÖZLEMCİ (KOMUT PALETİ TÜRKÇELEŞTİRME & ZAR BUTONU) | |||
// ---------------------------------------------------------------------- | |||
var observer = new MutationObserver(function (mutations) { | |||
// Sonsuz döngüyü engellemek için gözlemciyi geçici olarak durduruyoruz | |||
observer.disconnect(); | |||
// | // Son Değişiklikler başlığı sabitleme | ||
document.querySelectorAll('.citizen-menu__heading').forEach(function (heading) { | |||
if (heading.textContent.trim() === 'Last modified') { | |||
heading.textContent = 'Son değişiklikler'; | |||
} | |||
if (heading.textContent.trim() === 'Last modified') heading.textContent = 'Son değişiklikler'; | |||
}); | }); | ||
var palette = document.querySelector('.citizen-command-palette'); | |||
if (palette) { | if (palette) { | ||
var inputArea = palette.querySelector('.citizen-command-palette-header__input-area'); | |||
if (inputArea && !palette.querySelector('#citizen-custom-random-btn')) { | |||
var randomBtn = document.createElement('div'); | |||
randomBtn.id = 'citizen-custom-random-btn'; | randomBtn.id = 'citizen-custom-random-btn'; | ||
randomBtn.title = 'Rastgele Sayfa Getir'; | randomBtn.title = 'Rastgele Sayfa Getir'; | ||
randomBtn.innerHTML = '<span class="citizen-ui-icon mw-ui-icon-wikimedia-die"></span>'; | randomBtn.innerHTML = '<span class="citizen-ui-icon mw-ui-icon-wikimedia-die"></span>'; | ||
randomBtn.addEventListener('click', function() { | randomBtn.addEventListener('click', function () { | ||
window.location.href = | window.location.href = baseUrl.replace('$1', 'Özel:Rastgele'); | ||
}); | }); | ||
inputArea.appendChild(randomBtn); | inputArea.appendChild(randomBtn); | ||
} | } | ||
palette.querySelectorAll('*').forEach(el | palette.querySelectorAll('*').forEach(function (el) { | ||
if (el.childNodes.length === 1 && el.textContent.trim() === 'Recent') el.textContent = 'Son Aramalar'; | if (el.childNodes.length === 1 && el.textContent.trim() === 'Recent') { | ||
el.textContent = 'Son Aramalar'; | |||
} | |||
}); | }); | ||
palette.querySelectorAll('[class*="badge"], [class*="item-badge"]').forEach(badge | palette.querySelectorAll('[class*="badge"], [class*="item-badge"]').forEach(function (badge) { | ||
var txt = badge.textContent.trim(); | |||
else if ( | if (txt === 'Page') badge.innerHTML = 'Sayfa'; | ||
else if (txt === 'Action') badge.innerHTML = 'Eylem'; | |||
}); | }); | ||
palette.querySelectorAll('[class*="description"]').forEach(desc | palette.querySelectorAll('[class*="description"]').forEach(function (desc) { | ||
if (desc.textContent.trim() === 'Create or edit page') desc.textContent = 'Sayfa oluştur veya düzenle'; | if (desc.textContent.trim() === 'Create or edit page') { | ||
desc.textContent = 'Sayfa oluştur veya düzenle'; | |||
} | |||
}); | }); | ||
var note = palette.querySelector('[class*="footer-note"]'); | |||
if (note) { | if (note) { | ||
if (note.innerHTML.includes('all commands')) note.innerHTML = 'Tüm komutlar için <code>/</code> yazın'; | if (note.innerHTML.includes('all commands')) note.innerHTML = 'Tüm komutlar için <code>/</code> yazın'; | ||
| 114. satır: | 201. satır: | ||
} | } | ||
palette.querySelectorAll('[class*="keyboard-hint"]').forEach(hint | palette.querySelectorAll('[class*="keyboard-hint"]').forEach(function (hint) { | ||
var label = hint.querySelector('[class*="label"]'); | |||
if (label) { | if (label) { | ||
var txt = label.textContent.trim(); | var txt = label.textContent.trim(); | ||
| 125. satır: | 212. satır: | ||
}); | }); | ||
} | } | ||
// Değişiklikler bittikten sonra gözlemciyi yeniden başlatıyoruz | |||
observeContext(); | |||
}); | }); | ||
function observeContext() { | |||
observer.observe(document.body, { childList: true, subtree: true }); | |||
} | } | ||
$(document).ready(function () { | $(document).ready(function () { | ||
observeContext(); | |||
}); | |||
})(jQuery, mediaWiki); | |||
12.32, 9 Temmuz 2026 tarihindeki hâli
// ==========================================================================
// KIZILBASHICA JAVASCRIPT DOSYASI (ALINTI, YAZARLAR & ULTRA OPTİMİZE SÜRÜM)
// ==========================================================================
(function ($, mw) {
'use strict';
// Ortak ayarlar
var ns = mw.config.get('wgNamespaceNumber');
var pageName = mw.config.get('wgTitle');
var baseUrl = mw.config.get('wgArticlePath') || '/wiki/$1';
var urlParams = new URLSearchParams(window.location.search);
var isEditing = urlParams.has('action') && (urlParams.get('action') === 'edit' || urlParams.get('action') === 'submit');
var cdxClasses = 'citizen-cdx-button--size-large cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet';
// ----------------------------------------------------------------------
// 1. ALINTI / OKU BUTON DÖNÜŞTÜRMELERİ VE DİNAMİK İKONLAR
// ----------------------------------------------------------------------
mw.hook('wikipage.content').add(function () {
// --- Normal Maddeler (ns: 0) ---
if (ns === 0) {
var mainTalkLink = $('#ca-talk a, .citizen-section-talk a, a[href*="Tart%C4%B1%C5%9Fma:"], a[href*="Talk:"]');
if (mainTalkLink.length > 0 && !mainTalkLink.hasClass('kb-processed')) {
var citePageUrl = baseUrl.replace('$1', 'Kaynak:' + encodeURIComponent(pageName));
mainTalkLink.addClass('kb-processed').replaceWith(
'<a href="' + citePageUrl + '" class="' + cdxClasses + '">' +
'<span class="citizen-ui-icon mw-ui-icon-quotes mw-ui-icon-wikimedia-quotes"></span> ' +
'<span>Alıntı</span>' +
'</a>'
);
}
// Yapışkan Başlık (Sticky Header) için Alıntı Dönüşümü
var stickyTalkBtn = document.getElementById('ca-talk-sticky-header');
if (stickyTalkBtn && !stickyTalkBtn.classList.contains('kb-processed')) {
stickyTalkBtn.classList.add('kb-processed');
var iconSpan = stickyTalkBtn.querySelector('.citizen-ui-icon');
if (iconSpan) iconSpan.className = 'citizen-ui-icon mw-ui-icon-quotes mw-ui-icon-wikimedia-quotes';
var textSpan = stickyTalkBtn.querySelector('span:not(.citizen-ui-icon)');
if (textSpan) textSpan.textContent = 'Alıntı';
}
}
// --- Kaynak Ad Alanı (ns: 3000) ---
if (ns === 3000) {
var sourceTalkLink = $('#ca-talk a, .citizen-section-talk a, a[href*="Kaynak_tart%C4%B1%C5%9Fma:"]');
if (sourceTalkLink.length > 0 && !sourceTalkLink.hasClass('kb-processed')) {
var mainPageUrl = baseUrl.replace('$1', encodeURIComponent(pageName));
sourceTalkLink.addClass('kb-processed').replaceWith(
'<a href="' + mainPageUrl + '" class="' + cdxClasses + '">' +
'<span class="citizen-ui-icon mw-ui-icon-eye mw-ui-icon-wikimedia-eye"></span> ' +
'<span>Oku</span>' +
'</a>'
);
}
// Kaynak Arayüzü Şablonu Render Etme (Boş Sayfalarda)
if (!isEditing && (mw.config.get('wgArticleId') === 0 || $('.noarticletext, .mw-noarticletext').length > 0)) {
var container = $('#mw-content-text');
if (container.length && !container.hasClass('kb-loaded')) {
container.addClass('kb-loaded');
$('.noarticletext, .mw-noarticletext').hide();
container.html('<div id="loading-cite" style="color: var(--kb-text-sub); font-style: italic; padding: 10px;">Kaynak arayüzü yükleniyor...</div>');
$.ajax({
url: mw.util.wikiScript('api'),
data: { action: 'parse', text: '{{AlıntıYap|madde=' + pageName + '}}', contentmodel: 'wikitext', format: 'json' },
success: function (data) {
if (data && data.parse && data.parse.text) {
container.html(data.parse.text['*']);
}
}
});
}
}
}
// --- Yan Menü (Drawer) İkonları ---
var drawerIcons = {
'n-Dizin': 'mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet',
'n-Kısaltmalar': 'mw-ui-icon-recentChanges mw-ui-icon-wikimedia-recentChanges',
'n-Kılavuz': 'mw-ui-icon-article mw-ui-icon-wikimedia-article',
'n-Ansiklopedi-hakkında': 'mw-ui-icon-infoFilled mw-ui-icon-wikimedia-infoFilled'
};
Object.keys(drawerIcons).forEach(function (id) {
var item = document.getElementById(id);
if (item && !item.querySelector('.citizen-ui-icon')) {
var link = item.querySelector('a');
if (link) {
var icon = document.createElement('span');
icon.className = 'citizen-ui-icon ' + drawerIcons[id];
link.insertBefore(icon, link.firstChild);
}
}
});
// --- Yazarlar Kartı Oluşturma ---
var $yazarKaynagi = $('#sayfa-yazarlari');
var $target = $('#citizen-sidebar-lastmod');
if ($yazarKaynagi.length && $target.length && !$('#citizen-sidebar-yazarlar').length) {
var satirlar = $yazarKaynagi.html().split(/<br\s*\/?>|\n/i);
var gecerliYazarlar = [];
satirlar.forEach(function (satir) {
var duzMetin = satir.replace(/<\/?[^>]+(>|$)/g, "").trim();
if (duzMetin !== "") gecerliYazarlar.push(satir.trim());
});
if (gecerliYazarlar.length > 0) {
var baslikMetni = gecerliYazarlar.length > 1 ? 'Yazarlar' : 'Yazar';
var $yazarKarti = $('<nav>', { 'id': 'citizen-sidebar-yazarlar', 'class': 'citizen-menu mw-portlet' });
var $yazarBaslik = $('<div>', { 'class': 'citizen-menu__heading', 'text': baslikMetni });
var $yazarIcerik = $('<div>', { 'class': 'citizen-menu__content' });
var $ul = $('<ul>', { 'class': 'citizen-menu__content-list' });
gecerliYazarlar.forEach(function (yazar) {
var $li = $('<li>', { 'class': 'mw-list-item' });
var $tempDiv = $('<div>').html(yazar);
var $orijinalLink = $tempDiv.find('a').first();
var $yazarElementi;
if ($orijinalLink.length > 0) {
$yazarElementi = $orijinalLink.clone().addClass(cdxClasses);
var metin = $yazarElementi.text();
$yazarElementi.html('')
.append($('<span>', { 'class': 'citizen-ui-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar' }))
.append($('<span>').text(metin));
} else {
$yazarElementi = $('<a>', {
'class': cdxClasses,
'style': 'cursor: default; pointer-events: none; color: inherit;'
})
.append($('<span>', { 'class': 'citizen-ui-icon mw-ui-icon-userAvatar mw-ui-icon-wikimedia-userAvatar' }))
.append($('<span>').html(yazar));
}
$li.append($yazarElementi);
$ul.append($li);
});
$yazarIcerik.append($ul);
$yazarKarti.append($yazarBaslik).append($yazarIcerik);
$target.after($yazarKarti);
}
}
});
// ----------------------------------------------------------------------
// 2. DİNAMİK GÖZLEMCİ (KOMUT PALETİ TÜRKÇELEŞTİRME & ZAR BUTONU)
// ----------------------------------------------------------------------
var observer = new MutationObserver(function (mutations) {
// Sonsuz döngüyü engellemek için gözlemciyi geçici olarak durduruyoruz
observer.disconnect();
// Son Değişiklikler başlığı sabitleme
document.querySelectorAll('.citizen-menu__heading').forEach(function (heading) {
if (heading.textContent.trim() === 'Last modified') {
heading.textContent = 'Son değişiklikler';
}
});
var palette = document.querySelector('.citizen-command-palette');
if (palette) {
var inputArea = palette.querySelector('.citizen-command-palette-header__input-area');
if (inputArea && !palette.querySelector('#citizen-custom-random-btn')) {
var randomBtn = document.createElement('div');
randomBtn.id = 'citizen-custom-random-btn';
randomBtn.title = 'Rastgele Sayfa Getir';
randomBtn.innerHTML = '<span class="citizen-ui-icon mw-ui-icon-wikimedia-die"></span>';
randomBtn.addEventListener('click', function () {
window.location.href = baseUrl.replace('$1', 'Özel:Rastgele');
});
inputArea.appendChild(randomBtn);
}
palette.querySelectorAll('*').forEach(function (el) {
if (el.childNodes.length === 1 && el.textContent.trim() === 'Recent') {
el.textContent = 'Son Aramalar';
}
});
palette.querySelectorAll('[class*="badge"], [class*="item-badge"]').forEach(function (badge) {
var txt = badge.textContent.trim();
if (txt === 'Page') badge.innerHTML = 'Sayfa';
else if (txt === 'Action') badge.innerHTML = 'Eylem';
});
palette.querySelectorAll('[class*="description"]').forEach(function (desc) {
if (desc.textContent.trim() === 'Create or edit page') {
desc.textContent = 'Sayfa oluştur veya düzenle';
}
});
var note = palette.querySelector('[class*="footer-note"]');
if (note) {
if (note.innerHTML.includes('all commands')) note.innerHTML = 'Tüm komutlar için <code>/</code> yazın';
else if (note.innerHTML.includes('namespace')) note.innerHTML = 'Ad alanlarında aramak için <code>:</code> yazın';
else if (note.innerHTML.includes('for users')) note.innerHTML = 'Kullanıcıları aramak için <code>@</code> yazın';
else if (note.innerHTML.includes('for templates')) note.innerHTML = 'Şablonları aramak için <code>{{</code> yazın';
}
palette.querySelectorAll('[class*="keyboard-hint"]').forEach(function (hint) {
var label = hint.querySelector('[class*="label"]');
if (label) {
var txt = label.textContent.trim();
if (txt === 'Select') label.textContent = 'Seç';
else if (txt === 'Navigate') label.textContent = 'Gezin';
else if (txt === 'Actions') label.textContent = 'Eylemler';
else if (txt === 'Close') label.textContent = 'Kapat';
}
});
}
// Değişiklikler bittikten sonra gözlemciyi yeniden başlatıyoruz
observeContext();
});
function observeContext() {
observer.observe(document.body, { childList: true, subtree: true });
}
$(document).ready(function () {
observeContext();
});
})(jQuery, mediaWiki);