مدیاویکی:Gadget-EditHelper.js

از ویکی‌پدیا، دانشنامهٔ آزاد

نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاک‌سازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاک‌سازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکی‌پدیا:میانگیر مرورگرتان را خالی کنید را ببینید.

var errors = [
  { regex: /\/\/[^\s\n\|\}\]<\/]*?\/?([\s\n\|\}\]<]|$)/, message: "لطفاً از پیوند صفحهٔ اصلی یک سایت استفاده نکنید" },
  { regex: /ghatreh\.com/, message: "لطفاً از وب‌گاه قطره استفاده نکنید" }
];

function checkAndRaiseErrors(oldtext, text) {
console.log(oldtext, text);
  var regex, hasError = false, i;

  for (i = 0; i < errors.length; i = i + 1) {
    regex = errors[i].regex;
    if (!regex.test(oldtext) && regex.test(text)) {
      mw.notify($.parseHTML("اشکال در: " + text.match(regex)[0] + "<br><br>" + errors[i].message), { autoHide: false });
      hasError = true;
    }
  }

  return hasError;
}

function loadPage(title, callback) {
  new mw.Api().get({
    action: 'query',
    prop: 'revisions',
    titles: title,
    rvprop: 'content',
    format: 'json'
  }).done(function (data) {
    callback($.map(data.query.pages, function (value) { return value; })[0].revisions[0]['*']);
  });
}

var isOnceClicked = false;

$(function () {
  if (mw.config.get('wgAction') !== "edit" && mw.config.get('wgAction') !== "submit") { return; }
  loadPage(mw.config.get('wgPageName'), function (oldtext) {
    var wpSave = $('#wpSave');
    wpSave.click(function (e) {
      if (!isOnceClicked && checkAndRaiseErrors(oldtext, $('#wpTextbox1').val())) {
        e.preventDefault();
        onceClicked = true;
      }
    });
  });
});