מעדיעוויקי:Gadget-DeleteRequest.js

ווערסיע פון 18:33, 15 פעברואר 2023 דורך תנא קמא (שמועס | ביישטייערונגען) (געשאַפן בלאַט מיט '←‏הסקריפט מוסיף לשוניות "מחיקה", "הגנה" ו"חסימה" על מנת שאפשר יהיה לבקש מחיקת דפים, הגנת דפים וחסימת משתמשים באמצעות דף בקשות ממפעילים.: if (mw.config.get("wgNamespaceNumber") + 1) // not a special page $(function () { function openDialog(code1, code2, code3, reasons, req) { var dialog = $("<div>") .html("סיבה: ") .di...')
(חילוק) → עלטערע ווערסיע | איצטיגע ווערסיע (חילוק) | נייערע ווערסיע ← (חילוק)

אַכטונג: נאכן היטן, ברויכט איר אפשר נאך אויסקרויזן דעם בראוזער'ס זאַפאַס צו זען די ענדערונגען.

  • פייערפוקס/סאפארי: האלט אראפ שיפט בשעת'ן דרוקן Reload, אדער דרוקט Ctrl-F5 אדער Ctrl-R (אויף א מאקינטאש ⌘-R)
  • גוגל כראם: דרוקט Ctrl-Shift-R (אויף א מאקינטאש ⌘-Shift-R)
  • אינטערנעט עקספלארער: האלט אראפ Ctrl בשעת'ן קליקן Refresh, אדער דרוקט Ctrl-F5
  • אפערע: גייט צו מעניו → שטעלונגען ( אפערע → פרעפערנצן אויף א מעק) און דערנאך צו פריוואטקייט & און זיכערהייט → רוימען בראוזער דאטא → בילדער און טעקעס אין זאפאס
/* הסקריפט מוסיף לשוניות "מחיקה", "הגנה" ו"חסימה" על מנת שאפשר יהיה לבקש מחיקת דפים, הגנת דפים וחסימת משתמשים באמצעות דף בקשות ממפעילים. */
if (mw.config.get("wgNamespaceNumber") + 1)
  // not a special page
  $(function () {
    function openDialog(code1, code2, code3, reasons, req) {
      var dialog = $("<div>")
        .html("סיבה: ")
        .dialog({ title: "בקשה ל" + req });
      var select = $("<select>").append($("<option>").append("אחר"));
      dialog.append(select);
      for (var id in reasons) {
        select.append($("<option>").append(reasons[id]));
      }
      var input = $("<input>");
      dialog.append($("<br>"), "סיבה אחרת/נוספת: ", input);
      input.focus();
      $(dialog).keypress(function (event) {
        if (event.key == "Enter") {
          var value = input["0"].value,
            selectValue = select["0"].value;
          if (value === "" && selectValue == "אחר") {
            alert("לא מולאה סיבה");
          } else if (value !== "" && selectValue == "אחר") {
            code1(value);
          } else if (
            value === "" &&
            selectValue != "אחר" &&
            selectValue != "משחית כבד"
          ) {
            code2(selectValue);
          } else if (
            value !== "" &&
            selectValue !== "אחר" &&
            selectValue != "משחית כבד"
          ) {
            code3(value, selectValue);
          } else if (selectValue == "משחית כבד") {
            $.post(
              mw.util.wikiScript("api"),
              {
                action: "emailuser",
                format: "json",
                target: "משתמש:לחסום",
                subject: mw.config.get("wgRelevantUserName"),
                text: "משחית כבד",
                ccme: 1,
                token: mw.user.tokens.get("csrfToken"),
                utf8: 1,
              },
              function (data) {
                if (data && data.emailuser && data.emailuser.result) {
                  mw.notify("הודעת אימייל נשלחה בהצלחה");
                }
              }
            );
          }
          dialog.dialog("close");
        }
      });
      dialog.dialog("option", "buttons", {
        ביצוע: function () {
          var value = input["0"].value,
            selectValue = select["0"].value;
          if (value === "" && selectValue == "אחר") {
            alert("לא מולאה סיבה");
          } else if (value !== "" && selectValue == "אחר") {
            code1(value);
          } else if (
            value === "" &&
            selectValue != "אחר" &&
            selectValue != "משחית כבד"
          ) {
            code2(selectValue);
          } else if (
            value !== "" &&
            selectValue !== "אחר" &&
            selectValue != "משחית כבד"
          ) {
            code3(value, selectValue);
          } else if (selectValue === "משחית כבד") {
            $.post(
              mw.util.wikiScript("api"),
              {
                action: "emailuser",
                format: "json",
                target: "משתמש:לחסום",
                subject: mw.config.get("wgRelevantUserName"),
                text: "משחית כבד",
                ccme: 1,
                token: mw.user.tokens.get("csrfToken"),
                utf8: 1,
              },
              function (data) {
                if (data && data.emailuser && data.emailuser.result) {
                  mw.notify("הודעת אימייל נשלחה בהצלחה");
                }
              }
            );
          }
          dialog.dialog("close");
        },
        סגירה: function () {
          dialog.dialog("close");
        },
      });
    }

    function save(title, summary, content, section, next) {
      var param = {
        action: "edit",
        title: title,
        summary: summary
          .replace(
            /replaceParam/g,
            mw.config.get("wgPageName").replace(/_/g, " ")
          )
          .replace(/replaceUser/g, mw.config.get("wgRelevantUserName")),
        token: mw.user.tokens.get("csrfToken"),
        section: section || "0",
        appendtext: content,
        format: "json",
      };
      $.post(mw.util.wikiScript("api"), param, function (data) {
        if (data && data.error)
          mw.notify("שגיאה בשמירה: " + (data.error.info || "שגיאה לא ידועה"));
        else if (
          data &&
          data.edit &&
          data.edit.result == "Success" &&
          typeof next == "function"
        )
          next();
      });
    }

    function saveDelete(selectValue, message) {
      save(
        "המכלול:בקשות ממפעילים",
        "/* בקשות מחיקה */ [[replaceParam]]",
        "\n\n* " + message.replace(/reason/g, selectValue),
        1,
        function () {
          mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
        }
      );
    }

    function checkAndSaveDelete(selectValue, message) {
      new mw.Api()
        .get({
          action: "query",
          prop: "linkshere",
          titles: mw.config.get("wgPageName"),
          indexpageids: 1,
        })
        .done(function (d) {
          d = d.query;
          if (d && d.pageids && d.pageids.length) {
            d = d.pages[d.pageids[0]];
            if (d.linkshere && d.linkshere.length > 0) {
              mw.loader.using("oojs-ui", function () {
                var linkUrl = new mw.Title(
                  "מיוחד:דפים_המקושרים_לכאן/" + mw.config.get("wgPageName")
                ).getUrl();
                OO.ui
                  .confirm(
                    $("<div>").html(
                      "יש " +
                        d.linkshere.length +
                        ' +<a href="' +
                        linkUrl +
                        '">קישורים לדף</a>, האם הם נבדקו לפני בקשת המחיקה?'
                    )
                  )
                  .done(function (confirmed) {
                    if (confirmed) {
                      saveDelete(selectValue, message);
                    } else {
                      mw.notify("נא לבדוק את הקישורים לפני הבקשה.");
                    }
                  });
              });
            } else {
              saveDelete(selectValue, message);
            }
          } else {
            saveDelete(selectValue, message);
          }
        });
    }

    function checkRequestDuplication() {
      var requestChecker = new $.Deferred();
      new mw.Api()
        .get({
          action: "query",
          prop: "links",
          titles: "המכלול:בקשות ממפעילים",
          pltitles: mw.config.get("wgPageName"),
          indexpageids: 1,
        })
        .done(function (d) {
          d = d.query;
          if (d && d.pageids && d.pageids.length) {
            d = d.pages[d.pageids[0]];
            if (d.links && d.links.length > 0) {
              if (
                !confirm(
                  "הדף כבר מוזכר בבקשות ממפעילים. האם לשלוח בכל זאת את הבקשה?"
                )
              ) {
                requestChecker.reject(
                  "הדף כבר מוזכר בבקשות ממפעילים. הבקשה לא בוצעה"
                );
                return;
              }
            }
          }
          requestChecker.resolve();
        });
      return requestChecker;
    }

    function addMenuItem(caption, tooltip, message, accessKey) {
      var a = mw.util.addPortletLink(
        "p-cactions",
        "#",
        caption,
        "",
        tooltip
          .replace(
            /replaceParam/g,
            mw.config.get("wgPageName").replace(/_/g, " ")
          )
          .replace(/replaceUser/g, mw.config.get("wgRelevantUserName")),
        accessKey || ""
      );
      $(a).click(function () {
        checkRequestDuplication()
          .fail(function (err) {
            mw.notify(err);
          })
          .done(function () {
            if (message.match(/reason/)) {
              message += " ~~" + "~~";
            } else {
              message += " – reason ~~" + "~~";
            }
            message = message
              .replace(
                /replaceParam/g,
                mw.config.get("wgPageName").replace(/_/g, " ")
              )
              .replace(/replaceUser/g, mw.config.get("wgRelevantUserName"));
            switch (caption) {
              case "בקשת מחיקה":
                openDialog(
                  function (value) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות מחיקה */ [[replaceParam]]",
                      "\n\n* " + message.replace(/reason/g, value),
                      1,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (selectValue) {
                    checkAndSaveDelete(selectValue, message);
                  },
                  function (value, selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות מחיקה */ [[replaceParam]]",
                      "\n\n* " +
                        message.replace(/reason/g, selectValue + ": " + value),
                      1,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  [
                    "הבל",
                    "מילוני/אולטרה קצרמר",
                    "הפניה בדפי שיחה",
                    "הפניה בקטגוריה",
                    "הפניה מיותרת",
                    "הפניה שגויה",
                    "נמחק בוויקיפדיה העברית",
                    "לא אנציקלופדי",
                    "פרסומת",
                    "שגוי/טעות",
                    "לבקשת הכותב",
                    "הועבר למרחב טיוטה",
                    "הועבר למרחב המשתמש",
                    "הועבר למרחב הערכים",
                  ],
                  "מחוק את הדף"
                );
                break;
              case "בקשת חסימה":
                openDialog(
                  function (value) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות חסימה / הסרת חסימה */ [[משתמש:replaceUser|replaceUser]] ([[שיחת משתמש:replaceUser|ש]]|[[מיוחד:תרומות/replaceUser|ת]]|[[מיוחד:חסימה/replaceUser|ח]])",
                      "\n\n* " + message.replace(/reason/g, value),
                      2,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות חסימה / הסרת חסימה */ [[משתמש:replaceUser|replaceUser]] ([[שיחת משתמש:replaceUser|ש]]|[[מיוחד:תרומות/replaceUser|ת]]|[[מיוחד:חסימה/replaceUser|ח]])",
                      "\n\n* " + message.replace(/reason/g, selectValue),
                      2,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (value, selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות חסימה / הסרת חסימה */ [[משתמש:replaceUser|replaceUser]] ([[שיחת משתמש:replaceUser|ש]]|[[מיוחד:תרומות/replaceUser|ת]]|[[מיוחד:חסימה/replaceUser|ח]])",
                      "\n\n* " +
                        message.replace(/reason/g, selectValue + ": " + value),
                      2,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  [
                    "השחתה לאחר אזהרה",
                    "קללות או גסויות",
                    "הפרעה",
                    "כניסה למלחמת עריכה",
                    "העלאת הבלים או ערכים חסרי תוכן",
                    "הסרת תוכן מדפים",
                    "משחית כבד",
                    "שם משתמש לא מקובל",
                    "לא בא/ה לתרום",
                    "Upload spam",
                  ],
                  "חסום את המשתמש"
                );
                break;
              case "בקשת הגנה":
              case "שינוי הגנה":
                openDialog(
                  function (value) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות הגנה / הסרת הגנה */ [[replaceParam]]",
                      "\n\n* " + message.replace(/reason/g, value),
                      3,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות הגנה / הסרת הגנה */ [[replaceParam]]",
                      "\n\n* " + message.replace(/reason/g, selectValue),
                      3,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (value, selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות הגנה / הסרת הגנה */ [[replaceParam]]",
                      "\n\n* " +
                        message.replace(/reason/g, selectValue + ": " + value),
                      3,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  ["השחתות רבות", "אקטואלי", "טרול/חסום", "מלחמת עריכה"],
                  "הגן על הדף"
                );
                break;
              case "הסתרת גרסה":
                openDialog(
                  function (value) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות מחיקת גרסאות מסוימות */ הסתרת גרסה",
                      "\n\n* " + message.replace(/reason/g, value),
                      4,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות מחיקת גרסאות מסוימות */ הסתרת גרסה",
                      "\n\n* " + message.replace(/reason/g, selectValue),
                      4,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  function (value, selectValue) {
                    save(
                      "המכלול:בקשות ממפעילים",
                      "/* בקשות מחיקת גרסאות מסוימות */ הסתרת גרסה",
                      "\n\n* " +
                        message.replace(/reason/g, selectValue + ": " + value),
                      4,
                      function () {
                        mw.notify("בקשתך נשמרה בדף הבקשות מהמפעילים");
                      }
                    );
                  },
                  [
                    "תוכן פוגעני",
                    "תמונה לא ראויה",
                    "תוכן בלתי ראוי",
                    "לשון הרע/כבוד תח",
                    "הוסרה תבנית סינון",
                  ],
                  "הסתיר את הגרסה"
                );
                break;
            }
          });
      });
    }
    var ca =
      $.inArray(mw.config.get("wgNamespaceNumber"), [6, 14]) + 1 ? ":" : "";
    var pageName = mw.config.get("wgPageName").replace(/_/g, " ");
    if ($("#t-contributions").length) {
      addMenuItem(
        "בקשת חסימה",
        "בקשה לחסום את replaceUser",
        "{{לחסום|replaceUser}}",
        "]"
      );
    }
    var pageLink = $(".redirectMsg").length
      ? "{{ללא הפניה|replaceParam}}"
      : "[[" + ca + "replaceParam]]";
    var protectTemplate = $(".redirectMsg").length
      ? "{{בקשת הגנה|replaceParam|reason|הפניה=כן}}"
      : "{{בקשת הגנה|replaceParam|reason}}";
    if (
      mw.config.get("wgRestrictionEdit") &&
      mw.config.get("wgRestrictionEdit").length === 0
    )
      addMenuItem(
        "בקשת הגנה",
        "בקשה להגן על הדף replaceParam",
        protectTemplate,
        "="
      );
    else
      addMenuItem(
        "שינוי הגנה",
        "בקשה לשנות את ההגנה על הדף replaceParam",
        protectTemplate,
        "="
      );

    var deleteTemplate = $(".redirectMsg").length
      ? "{{בקשת מחיקה|replaceParam|reason|הפניה=כן}}"
      : "{{בקשת מחיקה|replaceParam|reason}}";
    if (!mw.util.getParamValue("redlink"))
      addMenuItem(
        "בקשת מחיקה",
        "בקשה למחוק את הדף replaceParam",
        deleteTemplate,
        "d"
      );
    if (mw.util.getParamValue("oldid") && mw.util.getParamValue("diff"))
      addMenuItem(
        "הסתרת גרסה",
        "בקשה להסתיר את הגרסה " + mw.util.getParamValue("diff"),
        "{{הבדל|" +
          mw.config.get("wgPageName") +
          "|" +
          mw.util.getParamValue("diff") +
          "|" +
          mw.util.getParamValue("oldid") +
          "|טקסט=גרסה זו}} ב[[" +
          ca +
          mw.config.get("wgPageName").replace(/_/g, " ") +
          "]]",
        "["
      );
    $(document).trigger("new-portlet-link");
  });