مدیاویکی:Common.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
mw.loader.using('mediawiki.util', function () {
var ribbon = document.createElement("div");
ribbon.className = "ribbon";
document.body.appendChild(ribbon);
});
/* ===== Wikijoo custom feedback form (2026-06-01) ===== */
(function () {
try {
if (mw.config.get('wgNamespaceNumber') !== 0) { return; }
if (mw.config.get('wgAction') !== 'view') { return; }
if (mw.config.get('wgIsMainPage')) { return; }
if (!mw.config.get('wgArticleId')) { return; }
} catch (e) { return; }
function val(id) { var el = document.getElementById(id); return el ? el.value : ''; }
function build() {
var content = document.querySelector('.mw-parser-output');
if (!content || document.getElementById('wj-fb')) { return; }
var box = document.createElement('div');
box.className = 'wj-fb';
box.id = 'wj-fb';
box.innerHTML =
'<div class="wj-fb-title">به بهبود این صفحه کمک کنید</div>' +
'<div class="wj-fb-q">آیا آنچه را که دنبالش بودید یافتید؟</div>' +
'<div class="wj-fb-rate"><button type="button" data-r="1">بله</button><button type="button" data-r="0">خیر</button></div>' +
'<textarea id="wj-fb-comment" placeholder="نظر یا پیشنهاد شما دربارهٔ این صفحه (اختیاری)…"></textarea>' +
'<details class="wj-fb-contact"><summary>اطلاعات تماس (اختیاری) — اگر مایل به دریافت پاسخ هستید</summary>' +
'<div class="wj-fb-grid">' +
'<input id="wj-fb-name" type="text" placeholder="نام">' +
'<input id="wj-fb-family" type="text" placeholder="نام خانوادگی">' +
'<input id="wj-fb-email" type="email" placeholder="ایمیل">' +
'<input id="wj-fb-phone" type="tel" placeholder="شمارهٔ تماس">' +
'</div></details>' +
'<input class="wj-hp" type="text" id="wj-fb-hp" tabindex="-1" autocomplete="off" aria-hidden="true">' +
'<div class="wj-fb-actions"><button type="button" class="wj-fb-submit" id="wj-fb-submit">ثبت بازخورد</button>' +
'<span class="wj-fb-consent">با ارسال، با ذخیرهٔ این اطلاعات و تماس احتمالی موافقت میکنید.</span></div>' +
'<div class="wj-fb-done">سپاس از بازخورد شما! 🌿</div>';
content.appendChild(box);
var rating = '';
var rbtns = box.querySelectorAll('.wj-fb-rate button');
for (var i = 0; i < rbtns.length; i++) {
rbtns[i].addEventListener('click', function () {
rating = this.getAttribute('data-r');
for (var j = 0; j < rbtns.length; j++) { rbtns[j].classList.remove('sel'); }
this.classList.add('sel');
});
}
document.getElementById('wj-fb-submit').addEventListener('click', function () {
var comment = val('wj-fb-comment');
if (rating === '' && comment.replace(/\s/g, '') === '') {
alert('لطفاً «بله/خیر» را انتخاب کنید یا نظری بنویسید.');
return;
}
var btn = this; btn.disabled = true;
var fd = new FormData();
fd.append('rating', rating);
fd.append('comment', comment);
fd.append('name', val('wj-fb-name'));
fd.append('family', val('wj-fb-family'));
fd.append('email', val('wj-fb-email'));
fd.append('phone', val('wj-fb-phone'));
fd.append('website', val('wj-fb-hp'));
fd.append('page_id', mw.config.get('wgArticleId'));
fd.append('page_title', mw.config.get('wgPageName').replace(/_/g, ' '));
fetch('/wjfeedback.php', { method: 'POST', body: fd })
.then(function (r) { return r.json(); })
.then(function (d) {
if (d && d.ok) { box.className = 'wj-fb done'; }
else { btn.disabled = false; alert('خطا در ثبت بازخورد. لطفاً دوباره تلاش کنید.'); }
})
.catch(function () { btn.disabled = false; alert('خطا در ارتباط. لطفاً دوباره تلاش کنید.'); });
});
}
if (document.readyState !== 'loading') { build(); }
else { document.addEventListener('DOMContentLoaded', build); }
})();