میڈیاویکی:Gadget-wikiEdCounters.js
یاددہانی: محفوظ کرنے کے بعد تازہ ترین تبدیلیوں کو دیکھنے کے لیے آپ کو اپنے براؤزر کا کیش صاف کرنا ہوگا۔
- فائرفاکس/ سفاری: جب Reload پر کلک کریں تو Shift دبا کر رکھیں، یا Ctrl-F5 یا Ctrl-R دبائیں (Mac پر R- )
- گوگل کروم: Ctrl-Shift-R دبائیں (Mac پر Shift-R-⌘)
- انٹرنیٹ ایکسپلورر: جب Refresh پر کلک کریں تو Ctrl یا Ctrl-F5 دبائیں
- اوپیرا: Tools → Preferences میں جائیں اور کیش صاف کریں
شاید اس اسکرپٹ کی دستاویزی تفصیلات میڈیاویکی:Gadget-wikiEdCounters پر، اور متعاقب .css صفحہ میڈیاویکی:Gadget-wikiEdCounters.css پر موجود ہیں۔ |
// کاوشِ Yethrosh (2024ء)
mw.loader.using(['mediawiki.api', 'mediawiki.util', 'jquery'], function () {
$(function () {
const textBox = document.getElementById('wpTextbox1');
const summaryLabel = document.getElementById('wpSummaryLabel');
if (!textBox) {
return;
}
// تمام عناصر کی یکساں کلاس
const counterClass = 'counters';
// کاؤنٹر کا ایچ ٹی ایم ایل عنصر بنایا جا رہا ہے
const createCounter = function (id, label) {
const counter = document.createElement('p');
counter.classList.add(counterClass);
counter.id = id;
summaryLabel.insertBefore(counter, summaryLabel.lastChild);
counter.innerHTML = `${label}: 0`;
return counter;
};
// حروف کی تعداد
const charCounter = createCounter('charCounter', 'حروف کی تعداد');
const updateCharCounter = function () {
const cleanedText = textBox.value.replace(/[ \t\n*#=\[\]\|{}]+/g, '');
charCounter.innerHTML = `حروف کی تعداد: ${cleanedText.length}`;
};
updateCharCounter();
textBox.addEventListener('keyup', updateCharCounter);
// الفاظ کی تعداد
const wordCounter = createCounter('wordCounter', 'الفاظ کی تعداد');
const updateWordCounter = function () {
const text = textBox.value.trim();
const words = text === '' ? [] : text.split(/\s+/);
const excludeChars = ['.', ':', '"', '۔', '،', "'", '\\', '/', ',', '+', '|', '=', '_', '-', '%', '{', '}', '(', ')', '[', ']', '#', '*', '~', '?', '!', '<', '>', '@'];
const wordCount = words.filter(word => !excludeChars.includes(word)).length;
wordCounter.innerHTML = `الفاظ کی تعداد: ${wordCount}`;
};
updateWordCounter();
textBox.addEventListener('keyup', updateWordCounter);
// سطروں کی تعداد
const lineCounter = createCounter('lineCounter', 'سطروں کی تعداد');
const updateLineCounter = function () {
const text = textBox.value;
const lines = text.split('\n').filter(line => line.trim() !== '');
lineCounter.innerHTML = `سطروں کی تعداد: ${lines.length}`;
};
updateLineCounter();
textBox.addEventListener('keyup', updateLineCounter);
// روابط کی تعداد
const linkCounter = createCounter('linkCounter', 'روابط کی تعداد');
const updateLinkCounter = function () {
const text = textBox.value;
const regex = /\[\[(.*?)(\|.*?)?\]\]/g;
const matches = text.match(regex);
linkCounter.innerHTML = `روابط کی تعداد: ${matches ? matches.length : 0}`;
};
updateLinkCounter();
textBox.addEventListener('keyup', updateLinkCounter);
// سرخ روابط کی تعداد
const missingPagesCounter = createCounter('missingPagesCounter', 'سرخ روابط کی تعداد');
// ماخوذ از https://www.mediawiki.org/wiki/API:Links#MediaWiki_JS_2
const fetchMissingPages = function () {
return new Promise((resolve, reject) => {
const pageName = mw.config.get('wgPageName');
const params = {
action: 'query',
generator: 'links',
titles: pageName,
gpllimit: 'max',
format: 'json'
};
mwapi = new mw.Api();
mwapi.get(params).done(function (data) {
const pages = data.query.pages;
let missingPages = [];
for (const p in pages) {
if (pages[p].hasOwnProperty('missing')) {
missingPages.push(pages[p].title);
}
}
resolve(missingPages);
}).fail(function (error) {
reject(error);
});
});
};
const updateMissingPagesCounter = function () {
fetchMissingPages().then(missingPages => {
missingPagesCounter.innerHTML = `سرخ روابط کی تعداد: ${missingPages.length}`;
}).catch(error => {
console.error('Error fetching missing pages:', error);
});
};
updateMissingPagesCounter();
textBox.addEventListener('keyup', updateMissingPagesCounter);
// سانچوں کی تعداد
const templateCounter = createCounter('templateCounter', 'سانچوں کی تعداد');
const updateTemplateCounter = function () {
const text = textBox.value;
const regex = /\{\{(.*?)(\|.*?)?\}\}/g;
const matches = text.match(regex);
templateCounter.innerHTML = `سانچوں کی تعداد: ${matches ? matches.length : 0}`;
};
updateTemplateCounter();
textBox.addEventListener('keyup', updateTemplateCounter);
// زمروں کی تعداد
const categoryCounter = createCounter('categoryCounter', 'زمروں کی تعداد');
const updateCatCounter = function () {
const text = textBox.value;
const regex = /\[\[زمرہ\:(.*?)(\|.*?)?\]\]/g;
const matches = text.match(regex);
categoryCounter.innerHTML = `زمروں کی تعداد: ${matches ? matches.length : 0}`;
};
updateCatCounter();
textBox.addEventListener('keyup', updateCatCounter);
});
});