ব্যবহারকারী:Yahya/MoveDiscussion.js
লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন।
- অপেরা: Ctrl-F5 টিপুন।
// <nowiki>
mw.loader.using([ 'oojs-ui', 'mediawiki.api' ]).then(function () {
if (mw.config.get('wgNamespaceNumber') < 0) return; // Do not load on special pages
// Utility function to get the current Bangla month and year
function getBanglaMonthYear() {
const date = new Date();
const banglaMonths = [
'জানুয়ারি', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন',
'জুলাই', 'অগাস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর',
];
const banglaDigits = ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'];
const month = banglaMonths[date.getMonth()];
const year = date.getFullYear()
.toString()
.split('')
.map((digit) => banglaDigits[parseInt(digit, 10)])
.join('');
return `${month} ${year}`;
}
// Function to get the page creator
function getPageCreator(pageTitle) {
return new mw.Api()
.get({
action: 'query',
prop: 'revisions',
titles: pageTitle,
rvlimit: 1,
rvdir: 'newer',
rvprop: 'user',
})
.then((data) => {
const pages = data.query.pages;
const pageId = Object.keys(pages)[0];
const page = pages[pageId];
const revisions = page.revisions;
const user = revisions[0].user;
return user;
});
}
// Function to display the popup
function showPopup() {
const windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
// Define a process dialog
function MyDialog(config) {
MyDialog.super.call(this, config);
}
OO.inheritClass(MyDialog, OO.ui.ProcessDialog);
MyDialog.static.name = 'myDialog';
MyDialog.static.title = 'স্থানান্তর আলোচনা শুরু করুন'; // Start Move Discussion
MyDialog.static.actions = [
{ action: 'save', label: 'জমা দিন', flags: ['primary', 'progressive'] }, // Submit
{ action: 'cancel', label: 'বাতিল করুন', flags: 'safe' }, // Cancel
];
MyDialog.prototype.initialize = function () {
MyDialog.super.prototype.initialize.apply(this, arguments);
// Create input fields
this.targetPageInput = new OO.ui.TextInputWidget({
placeholder: 'লক্ষ্যকৃত পাতার নাম লিখুন...', // Enter the targeted page name
});
this.textbox = new OO.ui.TextInputWidget({
placeholder: 'আপনার স্থানান্তর আলোচনার বার্তা এখানে লিখুন...', // Your move discussion text here
multiline: true,
rows: 10, // Make this input larger
});
// Create field layouts
this.fieldset = new OO.ui.FieldsetLayout();
this.fieldset.addItems([
new OO.ui.FieldLayout(this.targetPageInput, {
label: 'যে নামে স্থানান্তর করা প্রয়োজন', // Targeted Page Name
align: 'top',
}),
new OO.ui.FieldLayout(this.textbox, {
label: 'কেন নাম পরিবর্তন করা প্রয়োজন?', // Discussion Message
align: 'top',
}),
]);
// Add content to the dialog
this.content = new OO.ui.PanelLayout({
padded: true,
expanded: false,
});
this.content.$element.append(this.fieldset.$element);
this.$body.append(this.content.$element);
};
MyDialog.prototype.getActionProcess = function (action) {
if (action === 'save') {
return new OO.ui.Process(() => {
const targetPageName = this.targetPageInput.getValue();
const text = this.textbox.getValue();
if (!targetPageName.trim()) {
OO.ui.alert('অনুগ্রহ করে যে নামে স্থানান্তর করতে চান তার নাম লিখুন!'); // Please enter the targeted page name!
return;
}
if (!text.trim()) {
OO.ui.alert('অনুগ্রহ করে ব্যাখ্যা করুন কেন নাম পরিবর্তন করা দরকার!'); // Please enter a valid discussion text!
return;
}
// Call the function to add the move discussion
addMoveDiscussion(text, targetPageName);
windowManager.closeWindow(this);
});
} else if (action === 'cancel') {
return new OO.ui.Process(() => {
windowManager.closeWindow(this);
});
}
return MyDialog.super.prototype.getActionProcess.call(this, action);
};
windowManager.addWindows([new MyDialog()]);
// Open the dialog
windowManager.openWindow('myDialog');
}
// Function to add the move discussion
function addMoveDiscussion(text, targetPageName) {
const pageTitle = mw.config.get('wgPageName').replace(/_/g, ' ');
const moveDiscussionPage = `উইকিপিডিয়া:স্থানান্তরের অনুরোধ/বর্তমান আলোচনা`;
const artPage = `${pageTitle}`;
const sectionText = `== [[:${pageTitle}]] ==\n* লক্ষ্যকৃত নাম: [[:${targetPageName}]]\n${text} ~~~~`;
// Add text to Move Discussion page
new mw.Api()
.postWithEditToken({
action: 'edit',
title: moveDiscussionPage,
appendtext: `\n\n${sectionText}`,
summary: 'স্থানান্তর আলোচনা শুরু করা হয়েছে ([[ব্যবহারকারী:Yahya/MoveDiscussion.js|স্ক্রিপ্ট]])',
})
.then(() => {
// Add the template to the talk page
return new mw.Api().postWithEditToken({
action: 'edit',
title: artPage,
prependtext: `\n\n{{শিরোনাম বিজ্ঞপ্তি|1=${targetPageName}}}`,
summary: 'স্থানান্তর আলোচনা টেমপ্লেট যোগ করা হয়েছে ([[ব্যবহারকারী:Yahya/MoveDiscussion.js|স্ক্রিপ্ট]])',
});
})
.then(() => {
// Get page creator and notify them
return getPageCreator(pageTitle).then((creator) => {
const userTalkPage = 'User talk:' + creator;
const messageHeading = getBanglaMonthYear();
const messageText = `একজন ব্যবহারকারী আপনার তৈরি করা [[${pageTitle}]] নিবন্ধটির নাম পরিবর্তন করা প্রয়োজন বলে মনে করছেন। তাই তিনি [[উইকিপিডিয়া:পুনঃনামকরণ/বর্তমান আলোচনা#${pageTitle}|উইকিপিডিয়া:পুনঃনামকরণ]] পাতায় একটি আলোচনা শুরু করেছেন। অনুগ্রহ করে আলোচনাটিতে অংশগ্রহণ করুন। ~~~~`;
return new mw.Api().postWithEditToken({
action: 'edit',
title: userTalkPage,
section: 'new',
sectiontitle: messageHeading,
text: messageText,
summary: 'স্থানান্তর আলোচনার বিজ্ঞপ্তি ([[ব্যবহারকারী:Yahya/MoveDiscussion.js|স্ক্রিপ্ট]])',
});
});
})
.done(() => {
OO.ui.alert('স্থানান্তর আলোচনা সফলভাবে শুরু হয়েছে এবং নিবন্ধ প্রণেতাকে এ ব্যাপারে জানানো হয়েছে!'); // Move discussion started successfully and the page creator has been notified!
})
.fail((error) => {
console.error(error);
OO.ui.alert('স্থানান্তর আলোচনা শুরু করতে একটি ত্রুটি ঘটেছে।'); // An error occurred while starting the move discussion.
});
}
// Add the link to the toolbar
mw.util.addPortletLink(
'p-tb', // Target: "Tools" menu
'#', // Dummy link
'স্থানান্তর আলোচনা শুরু করুন', // Link text
'ca-start-move-discussion', // Unique ID
'এই পাতার জন্য একটি স্থানান্তর আলোচনা শুরু করুন।' // Tooltip
);
// Attach event to the link
$('#ca-start-move-discussion').on('click', (e) => {
e.preventDefault();
showPopup();
});
})();
// </nowiki>