ব্যবহারকারী:মোহাম্মদ মারুফ/script-talk-creator.js
অবয়ব
লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন।
- অপেরা: Ctrl-F5 টিপুন।
(function () {
/*
****************************************
*** ব্যবহারকারী:মোহাম্মদ মারুফ/talk-creator.js: talk-creator module
****************************************
* Mode of invocation: create talk page
* Active on: only main namespace
* Config directives in: ব্যবহারকারী:মোহাম্মদ মারুফ/talk-creator.js
* creator: মোহাম্মদ মারুফ
* created on: 28 May, 2023
*/
if (
mw.config.get("wgNamespaceNumber") === 0 &&
mw.config.get("wgAction") === "view" &&
mw.config.get("wgArticleId") > 0 &&
location.href.indexOf("redirect=no") === -1
) {
const api = new mw.Api();
var pageName = mw.config.get("wgPageName").replace(/_/g, " ");
var talkPageName = "আলাপ:" + pageName;
api
.get({
action: "query",
titles: talkPageName,
format: "json",
prop: "info",
})
.done(function (data) {
creationLookOut(pageName, function (creator, milisec) {
if (data.query.pages[-1]) {
if (creator === mw.config.get("wgUserName")) {
api
.postWithToken("csrf", {
action: "edit",
title: talkPageName,
text: "{{আলাপ পাতা}}",
summary: "আলাপ পাতা তৈরি করা হয়েছে",
format: "json",
createonly: true,
})
.done(function () {
alert("আলাপ পাতা তৈরি হয়েছে");
})
.fail(function (data) {
console.log(data);
});
} else if (new Date().getTime() - milisec > 86400000) {
api
.postWithToken("csrf", {
action: "edit",
title: talkPageName,
text: "{{আলাপ পাতা}}",
summary: "আলাপ পাতা তৈরি করা হয়েছে",
format: "json",
createonly: true,
})
.done(function () {
addToWatchlist(3, pageName, function () {
alert("আলাপ পাতা তৈরি হয়েছে");
});
})
.fail(function (data) {
console.log(data);
});
}
}
});
})
.fail(function (data) {
console.log(data);
});
function creationLookOut(pagename, callback) {
var params = {
action: "query",
format: "json",
prop: "revisions",
titles: pagename,
formatversion: "2",
rvprop: "timestamp|user",
rvlimit: "1",
rvdir: "newer",
};
api
.get(params)
.then(function (data) {
var milisec = new Date(
data.query.pages[0].revisions[0].timestamp
).getTime();
callback(data.query.pages[0].revisions[0].user, milisec);
})
.fail(function (error) {
console.error(error);
});
}
function addToWatchlist(time, page, callback) {
var date = new Date(new Date().getTime() + time * 24 * 60 * 60 * 1000); //3 days
var params = {
action: "watch",
format: "json",
titles: page,
expiry: date.toISOString(),
};
api
.postWithToken("watch", params)
.done(function (data) {
callback(data);
})
.fail(function (error) {
console.error(error);
});
}
}
})();