לדלג לתוכן

משתמש:מוטי בוט/ניסוי2.js

מתוך המכלול, האנציקלופדיה היהודית

לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
$("#wpSave").click(function () {
  var summary = document.querySelector("#wpSummary").value;
  var summaryIdkon = /עדכון מוויקיפדיה/;
  var summaryExisting = summaryIdkon.test(summary);
  if (summaryExisting) {
    listEdits();
  }
});

function listEdits() {
  const pageName = mw.config.get("wgPageName");
  const rcstart = new Date(Date.now() - 7890000000).toISOString();

  new mw.Api()
    .get({
            list: "recentchanges",
      rclimit: 100,
      rcshow: "!patrolled",
      rctype: "edit|new",
      rcstart: rcstart,
      rcdir: "newer",
      rcprop: "ids",
      rctitle: pageName,
    })
    .done((data) => {
      const unpatrolledRevs = data.query.recentchanges.length;

      if (unpatrolledRevs < 1) {
        return;
} else {
        var approval = confirm(
          "קיימות בדף זה גרסאות שלא נבדקו\nתרצה לסמנן כבדוקות?"
        );
      }
      if (approval) {
        const rcids = data.query.recentchanges.map((item) => item.rcid);
        const cokIds = rcids.join();
        setCookie("cookiePatrol", `${pageName}.${cokIds}`, 1);
      }
    });
}

var cookies = document.cookie;
var cookie = /cookiePatrol/;
var existingCookie = cookie.test(cookies);

if (existingCookie) {
  console.table(cookies);
  var pageNameCookie = cookies.replace(
    /(?:(?:^|.*;\s*)cookiePatrol\s*\=\s*([^;]*).*$)|^.*$/,
    "$1"
  );
  pageNameCookie = pageNameCookie.replace(/_/g, " ");
  //patrolEdits(pageNameCookie);
}

function patrolEdits(pageName) {
  let numEdits = 0;

  new mw.Api()
    .get({
      action: "query",
      format: "json",
      list: "recentchanges",
      rcprop: "ids|patrolled",
      rclimit: 100,
      rctype: "edit|new",
      rctitle: pageName,
    })
    .done(function (data) {
      const edits = data.query.recentchanges;

      for (const edit of edits) {
        if (!edit.patrolled) {
          patrol(edit.rcid);
          numEdits++;
        }
      }

      if (numEdits === 0) {
        // No edits were patrolled
      } else if (numEdits === 1) {
        mw.notify(`One edit on ${pageName} has been patrolled.`);
      } else {
        mw.notify(`${numEdits} edits on ${pageName} have been patrolled.`);
      }
    });
}

function patrol(rcid) {
  console.time(rcid);
  
  const params = {
    action: "patrol",
    rcid,
    format: "json",
  };
  
  const api = new mw.Api();
  api.postWithToken("patrol", params)
    .done(function (data) {
      console.table(data);
      console.timeEnd(rcid);
    });
}

function setCookie(cname, cvalue, exdays) {
  const d = new Date();
  d.setTime(d.getTime() + exdays * 60 * 1000);
  let expires = "expires=" + d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}