משתמש:מקף/common.js/OScripts/DiffLink.js

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/*

ההעתקה והוספה בקלות של תבנית {{הבדל בין גרסאות}} בדפי השוואה
  *מופיע בראש הדף
  *ניתן ללחוץ להעתקה מהירה

להוספת הסקריפט העתיקו לדף הסקריפטים האישי שלכם 
  ([[מיוחד:הדף שלי/common.js]])
את הקוד:
  importScript('משתמש:מקף/common.js/OScripts/DiffLink.js');

*/
const pageName = mw.config.get("wgPageName").replaceAll(/_/g, " ");
const urlParams = new URLSearchParams(window.location.search);

let difCase = $(
  "h1#firstHeading:contains(הבדלי גרסאות), h1#firstHeading:contains(הבדלים בין גרסאות)"
).length;
let verCase = $("div#mw-revision-info:contains(גרסה מ־)").length;
let hisCase = (urlParams.get("action") === "history" || $(
  "h1#firstHeading:contains(היסטוריית הגרסאות של הדף), h1#firstHeading:contains(: היסטוריית גרסאות)"
).length);

console.info(difCase, verCase, hisCase)

if (difCase || verCase || hisCase) {
  mw.util.addCSS(`
#copy-link { border-radius: 2px; padding: 1px 1px; margin: 3px 5px; box-shadow: 2px 2px 5px #DDDDDD; width: max-content;}
#copy-link-template { border-radius: 5px; padding: 2px 0px; margin: 0 10px; background-color: #fafff2; transition: background-color 0.75s; }
#copy-link-template:hover { background-color: greenyellow; cursor: pointer; }
#mw-revision-nav { clear: both};
#contentSub2 { clear: both};
`);

  if (difCase || verCase) {
    let oldid = null;
    let newid = "";

    if (difCase) {
      newid = $("#mw-diff-ntitle1 a:first")
        .attr("href")
        .replace(/.*oldid=/, "");
      oldid = $("#mw-diff-otitle1 a:first").attr("href");
    }

    if (!oldid) { oldid = urlParams.get("oldid") || ""; }
    else { oldid = oldid.replace(/.*oldid=/, ""); }

    if (difCase) {
      const difText = `{{הבדל בין גרסאות|דף=${pageName}\t|מספר הגרסה=${newid}|גרסה קודמת=${oldid}\t|כיתוב=\t}}`;
      console.log(difText);
      $(".diff.diff-type-table").prepend(new_copyLink(difText));
    }

    if (verCase) {
      const verText = `{{קישור לגרסה|${pageName}\t|${oldid}\t|כותרת=\t}}`;
      console.log(verText);
      $("#mw-revision-info").after(new_copyLink(verText));
    }
  }
  if (hisCase) {
    const hisText = `[[מיוחד:PageHistory/${pageName}]]`;
    $("#mw-content-subtitle").append(new_copyLink(hisText)).css({ "display": "contents" });
    $(".mw-mf-title-wrapper").append(new_copyLink(hisText));
  }

  $("#copy-link-template").click(function () {
    if (mw.config.get("wgNamespaceNumber") + 1) {
      const diffTemplate = document.getElementById("copy-link-template");
      navigator.clipboard.writeText(diffTemplate.innerHTML);
      mw.notify(
        $('<a>')
          .append($('<a>', { href: mw.util.getUrl(":he:שיחת משתמש:מקף/common.js/OScripts/DiffLink.js"), })
            .append($("<strong>").text("✅\tהועתק ללוח")))
      );

      $(this).css({
        "text-shadow": "0 0 3px greenyellow",
        "font-weight": "bold",
      });
    }
  });
}

  function new_copyLink(copyText) {
    const copyLink = $("<div>", {
      id: "copy-link",
      dir: "rtl",
      style: "float:right; margin-block:auto;",
    }).html(
      '<span style="float:right;">לחצו להעתקה:</span><code id="copy-link-template">' +
      copyText +
      "</code>"
    );
    return copyLink;
  }