مدیاویکی:Common.js: تفاوت میان نسخهها
(بازنویسی تمیز Common.js (رفع ریدایرکت ناخواسته + دکمهٔ شب/روز)) |
(فرم بازخورد سفارشی زیر مقالات) |
||
| (یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
| خط ۵: | خط ۵: | ||
}); | }); | ||
/* ===== Wikijoo | /* ===== Wikijoo custom feedback form (2026-06-01) ===== */ | ||
(function () { | (function () { | ||
try { | |||
if (mw.config.get('wgNamespaceNumber') !== 0) { return; } | |||
var | if (mw.config.get('wgAction') !== 'view') { return; } | ||
if ( | 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') { | if (document.readyState !== 'loading') { build(); } | ||
else { document.addEventListener('DOMContentLoaded', | else { document.addEventListener('DOMContentLoaded', build); } | ||
})(); | })(); | ||
نسخهٔ کنونی تا ۲ ژوئن ۲۰۲۶، ساعت ۱۹:۲۹
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); }
})();