משתמש:מוטי בוט/ערך.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
$(document).ready(function () {
if (
mw.config.get("wgNamespaceNumber") === 0 && //מרחב ראשי בלבד
mw.config.get("wgArticleId") === 0 &&//דפים לא קיימים (אין מזהה)
mw.config.get("aspaklaryaLockdown") !== "create"
) {
var PageName = mw.config
.get("wgPageName")
.replace(/^רבי_/, "")
.replace(/^הרב_/, "")
.replace(/_/g, " ")
.replace(/ה"קדושה"/g, "הקדושה")
.replace(/ה"קדוש"/g, "הקדוש")
.replace(/ה"קדושים"/g, "הקדושים")
.replace(/אישיות מהתנ"ך/g, "דמות מקראית");
var actionExecuted = false;
var veryNewPage = false;
const date = Date.parse(new Date());
const rvend = new Date(date - 1209600000).toISOString();
var api = new mw.Api();
var foreignApi = new mw.ForeignApi(mw.user.options.get("userjs-import-source") === "direct" ? "https://he.wikipedia.org/w/api.php" : "https://import.hamichlol.org.il/", {
anonymous: true,
});
const queryParams = {
action: "query",
prop: "info|revisions",
titles: PageName,
utf8: 1,
rvprop: "timestamp",
rvlimit: 25,
rvdir: "newer",
tllimit: "1"
};
foreignApi
.get(queryParams)
.done(function (response) {
if (!response.query.pages["-1"]) {
const page = Object.values(response.query.pages)[0];
const date = Date.parse(rvend) > Date.parse(page.revisions[0].timestamp);
if (page.revisions.length < 25 && !date) {
veryNewPage = true;
}
var titleBlack = checTitleInList(PageName);
console.log(titleBlack);
var $div = $("<div>", {
class: "centered-content",
html:
'<p class="text-center">הדף קיים בוויקיפדיה העברית</p>'
});
// אם אין מזהה - לא קיים
if (mw.config.get("wgUserGroups").indexOf("aspaklaryaEditor") !== -1) {
addElement($div);
} else if (mw.config.get("wgUserGroups").indexOf("wikimport") !== -1 && !titleBlack) {
addElement($div);
} else if (typeof titleBlack === "string") {
$div.html('<p class="text-center">הדף קיים בוויקיפדיה העברית, אך לא ניתן לייבאו משום ש' + titleBlack + "</p>")
addElement($div)
} else if (titleBlack === false) {
checkExistingRequest(PageName, function (requestExists) {
if (requestExists) {
var $div = $("<div>", {
class: "centered-content",
html: '<p class="text-center">קיימת בקשת ייבוא עבור ערך זה</p>'
});
addElement($div);
return;
}
//לשאר קריאה לפונקציה להוספת אלמנט מתאים
initializePage();
});
}
}
});
}
// שליחת בקשת עריכה לבקשת יבוא ערך עם שם הדף
function postRequest() {
if (actionExecuted) {
console.log("actionExecuted", actionExecuted);
mw.notify(" לא ניתן לשלוח בקשה חוזרת");
return;
} else {
actionExecuted = true;
post();
}
}
function post() {
var param = {
sectiontitle: "[[" + PageName + "]]",
title: "המכלול:בקשת ייבוא ערך",
text: "תודה! ~~" + "~~",
};
api
.newSection(param.title, param.sectiontitle, param.text)
.done(function () {
mw.notify("הבקשה נשמרה בהצלחה!", { type: "success" });
})
.fail(function () {
mw.notify("הבקשה לא נשמרה! תוכלו לבקש בהמכלול:בקשת ערך", {
type: "error",
});
});
}
function checkExistingRequest(pageName, callback) {
api
.get({
action: 'query',
titles: 'המכלול:בקשת ייבוא ערך',
prop: 'links',
pllimit: 'max'
})
.done(function (response) {
var pages = response.query.pages;
var pageId = Object.keys(pages)[0];
var links = pages[pageId].links || [];
var requestExists = links.some(function (link) {
return link.title === pageName;
});
callback(requestExists);
})
.fail(function () {
callback(false);
});
}
//יצירת והוספת אלמנט הודעה על קיום הערך בויקיפדיה ואפשרות לבקשת ייבוא
function initializePage() {
let rootMassge = '<p class="text-center">דף זה קיים בוויקיפדיה העברית וטרם יובא למכלול</p>' +
'<p class="text-center">באפשרותכם להוסיפו לרשימת ההמתנה ולזרז את הטיפול בו</p>';
if (veryNewPage) {
rootMassge = '<p class="text-center">דף זה נוצר לאחרונה בויקיפדיה העברית וטרם יובא למכלול</p>' +
'<p class="text-center>מומלץ להמתין עוד מספר ימים עד להשלמת עריכתו</p>' +
'<p class="text-center>אם בכל זאת תרצו לזרז את הייבוא לחצו למטה</p>'
}
rootMassge += '<p class="text-center">יודגש כי בהתאם לכללי נקיות התוכן באתר ייתכן וביצוע בקשתכם יתעכב או לא יתבצע בזמן הקרוב';
// אלמנט ראשי עם מסגרת וטקסט
var $centeredContent = $("<div>", {
class: "centered-content",
html:
rootMassge
});
// אלמנט הודעה לאנונימיים על שמירת ה-IP
// אלמנט כפתור
var $button = $("<button>", {
id: "Ask-Not-Existing-button",
class: "mw-ui-button mw-ui-progressive",
text: "שלח בקשה",
});
$centeredContent.append($button);
addElement($centeredContent);
setTimeout(function () {
$button.click(function () {
// האזנה ללחיצה על הכפתור וקריאה לפונקצית שליחת הבקשה
postRequest();
});
}, 102)
}
function addElement(element) {
console.log("element", element);
var $warning = $("<p>", {
html: "<b>שימו לב:</b> כתובת ה-IP שלכם תופיע בדף הבקשות, תוכל ליצור חשבון לצורך הגשת הבקשה ולהימנע מפרסום הכתובת",
class: "text-center",
});
if (mw.user.isAnon()) {
var $button = $(element.find("button"));
if ($button.length > 0) {
$button.before($warning);
}
setTimeout(function () {
$("#bodyContent").empty().append(element);
}, 100)
} else {
setTimeout(function () {
$("#firstHeading").after(element);
}, 100)
}
}
function checTitleInList(title) {
var blackListObject = require("./Ask-Not-Existing.json");
var utf8ToCodeURI = require("./Ask-Not-Existing-blackList.js");
var blackList = blackListObject.list.map(function (item) {
return utf8ToCodeURI(item);
});
var blackListMessage = blackListObject.messages;
for (var i = 0; i < blackList.length; i++) {
if (new RegExp(blackList[i]).test(title)) {
if (blackListMessage[utf8ToCodeURI(blackList[i], "utf8")]) {
return utf8ToCodeURI(blackListMessage[utf8ToCodeURI(blackList[i], "utf8")]);
} else {
return true;
}
}
}
return false;
}
});
require("./Ask-Not-Existing-blackList.js");