לדלג לתוכן

משתמש:מ. רובין/הודעה למשתמש.js – הבדלי גרסאות

מתוך חב"דפדיה, אנציקלופדיה חב"דית חופשית
מ. רובין (שיחה | תרומות)
יצירת דף עם התוכן "// ==UserScript== // @name Disambig & Link Checker for Hamichlol // @description מציג אזהרות לקישורים לדפי פירושונים, הפניות ודפים אדומים בעריכת קוד מקור // @version 1.0 // @match https://chabadpedia.co.il/* // @grant none // ==/UserScript== (function () { if (mw.config.get('wgAction') !== 'edit' && mw.config.get('wgAction') !== 'submit') return; if (!document.querySel..."
 
מ. רובין (שיחה | תרומות)
אין תקציר עריכה
 
(גרסת ביניים אחת של אותו משתמש אינה מוצגת)
שורה 1: שורה 1:
// ==UserScript== // @name        Disambig & Link Checker for Hamichlol // @description  מציג אזהרות לקישורים לדפי פירושונים, הפניות ודפים אדומים בעריכת קוד מקור // @version      1.0 // @match        https://chabadpedia.co.il/* // @grant        none // ==/UserScript==
//<nowiki>
"use strict";
mw.loader.using(["mediawiki.util", "mediawiki.api", "mediawiki.Title"]).then(function () {
  const api = new mw.Api();
  var nameOfpage = mw.config
    .get("wgPageName")
    .replace(new RegExp("_", "g"), " ");
  var UserPage = false;
  var oldRevisionId = mw.config.get("wgDiffOldId"),
    newRevisionId = mw.config.get("wgDiffNewId"),
    user = $("#mw-diff-ntitle2 > a").text(),
    replay = "{{T|" + user + "|בקשר}}",
    difftext =
      "{{הבג|דף=" +
      nameOfpage +
      "|מספר הגרסה=" +
      newRevisionId +
      "|גרסה קודמת=" +
      oldRevisionId +
      "|כיתוב= לעריכה זו}}, ";


(function () { if (mw.config.get('wgAction') !== 'edit' && mw.config.get('wgAction') !== 'submit') return; if (!document.querySelector('#wpTextbox1')) return;
  function openMyDiffDialog() {
    var dialog = $(
      `<div>
  <div>כותרת ההודעה:</div>
  <div><textarea id="titleNote" rows="1"></textarea></div>
  <div>תוכן ההודעה:</div>
  <div><textarea id="textNote" rows="10"></textarea></div>
</div>`
    ).dialog({
      title: "כתיבת הודעה",
      open: function () {
        $("#textNote").val(replay + " " + difftext);
      },
      close: function () {
        dialog.remove();
      },
      buttons: [
        {
          text: "בשיחת המשתמש",


const textbox = document.querySelector('#wpTextbox1');
          click: function () {
const warningBox = document.createElement('div');
            UserPage = true;
warningBox.style.border = '1px solid #ccc';
            var addtext = $("#textNote")
warningBox.style.padding = '10px';
              .val()
warningBox.style.marginTop = '10px';
              .replace(`{{T|${user}|בקשר}}`, "בקשר");
warningBox.style.background = '#f9f9f9';
            let title = $("#titleNote").val()
warningBox.innerHTML = '<strong>בדיקת קישורים:</strong>';
              ? $("#titleNote").val()
textbox.parentNode.insertBefore(warningBox, textbox.nextSibling);
              : `[[${nameOfpage}]]`;
            wattsUp(addtext, title, UserPage);
            dialog.dialog("close");
          },
        },
        {
          text: "בשיחת הערך",


const linkRegex = /(.*?)(\||)/g;
          click: function () {
const text = textbox.value;
            UserPage = false;
const checkedLinks = new Set();
            var addtext = $("#textNote").val();
            var title = $("#titleNote").val();
            if (!title) {
              alert("חובה להזין כותרת מותאמת לנושא!");
              return;
            }
            wattsUp(addtext, title, UserPage);
            dialog.dialog("close");
          },
        },
        {
          text: "סגור",


let match;
          click: function () {
while ((match = linkRegex.exec(text)) !== null) {
            dialog.dialog("close");
    const fullLink = match[1].trim();
          },
    const linkTarget = fullLink.split('#')[0].split('/')[0];
        },
    if (checkedLinks.has(linkTarget)) continue;
      ],
    checkedLinks.add(linkTarget);
     });
     checkLink(linkTarget);
  }
}


function checkLink(title) {
  function wattsUp(addtext, title, UserPage) {
     const url = `/w/api.php?action=query&format=json&titles=${encodeURIComponent(title)}&redirects=1&origin=*`;
     var talkPage = UserPage
      ? "User talk:" + user
      : new mw.Title(mw.config.get("wgPageName")).getTalkPage().getPrefixedText();
    if (addtext === "" || addtext === null || addtext === undefined) {
      mw.notify("ההודעה לא נשלחה");
      return;
    }
    api
      .newSection(talkPage, title, addtext + " ~~~~")
      .done((data) => {
        if (data?.edit?.result === "Success") {
          mw.notify("ההודעה נשמרה בדף :" + talkPage, { type: "success" });
        }
      })
      .fail((error) => {
        if (error === "no-direct-editing") {
          var param = {
            action: "flow",
            submodule: "new-topic",
            page: talkPage,
            nttopic: title,
            token: mw.user.tokens.get("csrfToken"),
            ntcontent: addtext,
          };
          api
            .postWithEditToken(param)
            .done((data) => {
              if (data?.flow["new-topic"].status === "ok") {
                mw.notify("ההודעה נשמרה בדף :" + talkPage, { type: "success" });
              }
            })
            .fail(() => {
              mw.notify("ההודעה לא נשמרה", { type: "error" });
            });
        }
      });
  }


     fetch(url)
  if (mw.util.getParamValue("diff")) {
        .then(res => res.json())
     $("#mw-diff-ntitle1").append(
        .then(data => {
      " <b>(</b>",
            const pages = data.query.pages;
      $("<a>").html("<b>הודעה לעריכה</b>").click(openMyDiffDialog),
            const pageId = Object.keys(pages)[0];
      "<b>)</b> "
            const page =
    );
  }
});
//</nowiki>

גרסה אחרונה מ־14:18, 8 ביוני 2025

//<nowiki>
"use strict";
mw.loader.using(["mediawiki.util", "mediawiki.api", "mediawiki.Title"]).then(function () {
  const api = new mw.Api();
  var nameOfpage = mw.config
    .get("wgPageName")
    .replace(new RegExp("_", "g"), " ");
  var UserPage = false;
  var oldRevisionId = mw.config.get("wgDiffOldId"),
    newRevisionId = mw.config.get("wgDiffNewId"),
    user = $("#mw-diff-ntitle2 > a").text(),
    replay = "{{T|" + user + "|בקשר}}",
    difftext =
      "{{הבג|דף=" +
      nameOfpage +
      "|מספר הגרסה=" +
      newRevisionId +
      "|גרסה קודמת=" +
      oldRevisionId +
      "|כיתוב= לעריכה זו}}, ";

  function openMyDiffDialog() {
    var dialog = $(
      `<div>
	  	<div>כותרת ההודעה:</div>
	  	<div><textarea id="titleNote" rows="1"></textarea></div>
	  	<div>תוכן ההודעה:</div>
	  	<div><textarea id="textNote" rows="10"></textarea></div>
	</div>`
    ).dialog({
      title: "כתיבת הודעה",
      open: function () {
        $("#textNote").val(replay + " " + difftext);
      },
      close: function () {
        dialog.remove();
      },
      buttons: [
        {
          text: "בשיחת המשתמש",

          click: function () {
            UserPage = true;
            var addtext = $("#textNote")
              .val()
              .replace(`{{T|${user}|בקשר}}`, "בקשר");
            let title = $("#titleNote").val()
              ? $("#titleNote").val()
              : `[[${nameOfpage}]]`;
            wattsUp(addtext, title, UserPage);
            dialog.dialog("close");
          },
        },
        {
          text: "בשיחת הערך",

          click: function () {
            UserPage = false;
            var addtext = $("#textNote").val();
            var title = $("#titleNote").val();
            if (!title) {
              alert("חובה להזין כותרת מותאמת לנושא!");
              return;
            }
            wattsUp(addtext, title, UserPage);
            dialog.dialog("close");
          },
        },
        {
          text: "סגור",

          click: function () {
            dialog.dialog("close");
          },
        },
      ],
    });
  }

  function wattsUp(addtext, title, UserPage) {
    var talkPage = UserPage
      ? "User talk:" + user
      : new mw.Title(mw.config.get("wgPageName")).getTalkPage().getPrefixedText();
    if (addtext === "" || addtext === null || addtext === undefined) {
      mw.notify("ההודעה לא נשלחה");
      return;
    }
    api
      .newSection(talkPage, title, addtext + " ~~~~")
      .done((data) => {
        if (data?.edit?.result === "Success") {
          mw.notify("ההודעה נשמרה בדף :" + talkPage, { type: "success" });
        }
      })
      .fail((error) => {
        if (error === "no-direct-editing") {
          var param = {
            action: "flow",
            submodule: "new-topic",
            page: talkPage,
            nttopic: title,
            token: mw.user.tokens.get("csrfToken"),
            ntcontent: addtext,
          };
          api
            .postWithEditToken(param)
            .done((data) => {
              if (data?.flow["new-topic"].status === "ok") {
                mw.notify("ההודעה נשמרה בדף :" + talkPage, { type: "success" });
              }
            })
            .fail(() => {
              mw.notify("ההודעה לא נשמרה", { type: "error" });
            });
        }
      });
  }

  if (mw.util.getParamValue("diff")) {
    $("#mw-diff-ntitle1").append(
      " <b>(</b>",
      $("<a>").html("<b>הודעה לעריכה</b>").click(openMyDiffDialog),
      "<b>)</b> "
    );
  }
});
//</nowiki>