משתמש:רובין בוט/הפניות.js

מתוך חב"דציטוט, מאגר ציטוטים חב"דים
גרסה מתאריך 09:40, 18 באוגוסט 2025 מאת מ. רובין (שיחה | תרומות)
(הבדל) → הגרסה הקודמת | הגרסה האחרונה (הבדל) | הגרסה הבאה ← (הבדל)
קפיצה לניווט קפיצה לחיפוש

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
mw.loader.using(["jquery.spinner", "mediawiki.diff.styles", "mediawiki.api"]).then(() => {

  // פונקציה לשליפת הפניות מחב"דפדיה
  function getAll() {
    var PageNameLocal = mw.config.get("wgPageName");

    var checkParams = {
      action: "query",
      format: "json",
      prop: "linkshere",
      indexpageids: 1,
      lhprop: "title",
      lhshow: "redirect",
      lhnamespace: "0",
      lhlimit: "max",
      titles: decodeURIComponent(PageNameLocal),
      origin: "*",
    };

    var apiEndpoint = "https://chabadpedia.com/w/api.php";

    $.ajax({
      url: apiEndpoint,
      data: checkParams,
      dataType: "json",
    })
    .done(function (result) {
      if (!result || !result.query) return;

      var pages = result.query.pages[result.query.pageids[0]];
      if (!pages.linkshere) return;

      for (var l of pages.linkshere) {
        var oneRedirect = l.title;
        checkChabadTzitut(oneRedirect);
      }
    });
  }

  // בדיקה אם ההפניה קיימת בציטוט
  function checkChabadTzitut(oneRedirect) {
    fetch(
      "https://zitut.chabadpedia.com/w/api.php?action=query&prop=info|revisions&titles=" +
        encodeURIComponent(oneRedirect) +
        "&indexpageids=true&rvlimit=1&rvprop=size|ids&format=json&origin=*"
    )
    .then((response) => response.json())
    .then(function (result) {
      if (result && result.query) {
        if (result.query.pageids[0] == "-1") {
          // לא קיים בציטוט → מייבא
          saveChabadTzitut(oneRedirect);
        }
      }
    });
  }

  // שמירה בציטוט
  function saveChabadTzitut(page) {
    var apiEndpoint =
      "https://chabadpedia.com/w/api.php?action=parse&page=" +
      encodeURIComponent(page) +
      "&format=json&prop=wikitext&origin=*";

    fetch(apiEndpoint)
      .then((response) => response.json())
      .then(function (result) {
        if (result && result.parse) {
          var textpage = result.parse.wikitext["*"];
          var red = decodeURIComponent(result.parse.title);

          if (confirm("ההפניה הבאה קיימת בחב\"דפדיה:\n " + red + "\nלייבא לחב\"דציטוט?")) {
            $.post(
              "https://zitut.chabadpedia.com/w/api.php",
              {
                action: "edit",
                format: "json",
                tags: "ייבוא-הפניות",
                bot: 1,
                watchlist: "nochange",
                recreate: false,
                title: result.parse.title,
                text: textpage,
                token: mw.user.tokens.get("csrfToken"),
              },
              function (data) {
                if (data && data.edit) {
                  mw.notify("ייבוא ההפניה \"" + decodeURIComponent(data.edit["title"]) + "\" הושלם בהצלחה");
                } else {
                  console.log(data);
                }
              }
            );
          }
        }
      })
      .catch((error) =>
        mw.notify("אירעה שגיאה בייבוא ההפניה. תיאור השגיאה הוא: " + error)
      );
  }

  // הפעלה
  if (
    mw.config.get("wgArticleId") > 0 &&
    mw.config.get("wgNamespaceNumber") === 0 &&
    mw.config.get("wgPageName") != "עמוד_ראשי" &&
    mw.config.get("wgAction") === "view" &&
    location.href.indexOf("&diff") == -1
  ) {
    getAll();
  }

});