مدیاویکی:Common.js

از ویکیجو | دانشنامه آزاد پارسی
نسخهٔ تاریخ ‏۲ ژوئن ۲۰۲۶، ساعت ۱۹:۲۹ توسط Erfan (بحث | مشارکت‌ها) (فرم بازخورد سفارشی زیر مقالات)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید 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">سپاس از بازخورد شما! &#x1F33F;</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); }
})();