بەکارھێنەر:Sakura emad/mediawiki:test.js
ڕواڵەت
بەڵگەنامەی ئەم سکریپتی بەکارھێنەرە دەتوانرێت لە بەکارھێنەر:Sakura emad/mediawiki:test زیاد بکرێت. |
// <nowiki>
(function($) {
/*
****************************************
*** friendlytalkback.js: Talkback module
****************************************
* Mode of invocation: Tab ("TB")
* Active on: Existing user talk pages
* Config directives in: FriendlyConfig
*/
const Twinkle = {
talkback: {},
addPortletLink(callback, text, id, tooltip) {
// Add portlet link function implementation
// Assuming this is already implemented
},
getPref(prefName) {
// Placeholder for getting preference
return ""; // Assuming this returns the user's preferences
},
getFriendlyPref(prefName) {
// Placeholder for getting friendly preference
return ""; // Assuming this returns the user's friendly preferences
}
};
Twinkle.talkback.init = function() {
if (!mw.config.get('wgRelevantUserName')) {
return;
}
Twinkle.addPortletLink(Twinkle.talkback.callback, "وەڵامدانەوە", "friendly-talkback", "وەڵامدانەوەی ئاسان");
};
Twinkle.talkback.callback = function() {
const userName = mw.config.get('wgRelevantUserName');
const currentUserName = mw.config.get("wgUserName");
if (userName === currentUserName && !confirm("تۆ خەریکە وەڵامی خۆت دەدەیتەوە، دڵنیایت دەتەوێت بەردەوام بیت؟")) {
return;
}
const Window = new Morebits.simpleWindow(600, 350);
Window.setTitle("وەڵامدانەوە");
Window.setScriptName("توینکڵ");
Window.addFooterLink("لەبارەی وەڵامدانەوە", "داڕێژە:وەڵام بۆ");
Window.addFooterLink("یارمەتیی توینکڵ", "وپ:تو/DOC#وەڵامدانەوە");
const form = new Morebits.quickForm(callback_evaluate);
form.append({
type: "radio",
name: "tbtarget",
list: [
{ label: "وەڵامدانەوە: پەڕەی لێدوانەکەم", value: "mytalk", checked: "true" },
{ label: "وەڵامدانەوە: پەڕەی لێدوانی بەکارھێنەرێکی تر", value: "usertalk" },
{ label: "وەڵامدانەوە: پەڕەی تر", value: "other" },
{ label: "\«تکایە ببینە\»", value: "see" },
{ label: "ھۆشداری تەختەی ئاگاداری", value: "notice" },
{ label: "\«ئیمەیڵت ھەیە\»", value: "mail" }
],
event: callback_change_target
});
form.append({
type: "field",
label: "ناوچەی کار",
name: "work_area"
});
form.append({ type: "submit", label: 'ناردن' });
const result = form.render();
Window.setContent(result);
Window.display();
// Trigger change event
const evt = new Event("change");
result.tbtarget[0].dispatchEvent(evt);
// Check whether the user has opted out from talkback
const query = {
action: 'query',
prop: 'extlinks',
titles: mw.config.get('wgPageName'),
elquery: 'userjs.invalid/noTalkback',
ellimit: '1'
};
const wpapi = new Morebits.wiki.api("بەدەستھێنانی حاڵەتی دەرچوون لە بەدەستھێنانی وەڵامدانەوە", query, Twinkle.talkback.callback.optoutStatus);
wpapi.post();
};
Twinkle.talkback.optout = null;
Twinkle.talkback.callback.optoutStatus = function(apiobj) {
const xml = apiobj.getXML();
const $el = $(xml).find('el');
if ($el.length) {
Twinkle.talkback.optout = `${mw.config.get('wgRelevantUserName')} حەز ناکات بەم جۆرە وەڵامی بدرێتەوە`;
const url = $el.text();
if (url.indexOf("reason=") > -1) {
Twinkle.talkback.optout += `: ${decodeURIComponent(url.substring(url.indexOf("reason=") + 7))}.`;
} else {
Twinkle.talkback.optout += ".";
}
} else {
Twinkle.talkback.optout = false;
}
const $status = $("#twinkle-talkback-optout-message");
if ($status.length && Twinkle.talkback.optout) {
$status.text(Twinkle.talkback.optout);
}
};
let prev_page = "";
let prev_section = "";
let prev_message = "";
const callback_change_target = function(e) {
const value = e.target.value;
const root = e.target.form;
const old_area = Morebits.quickForm.getElements(root, "work_area")[0];
if (root.section) {
prev_section = root.section.value;
}
if (root.message) {
prev_message = root.message.value;
}
if (root.page) {
prev_page = root.page.value;
}
const work_area = new Morebits.quickForm.element({
type: "field",
label: "زانیاریی وەڵامدانەوە",
name: "work_area"
});
switch (value) {
case "mytalk":
default:
work_area.append({
type: "div",
label: "",
style: "color: red",
id: "twinkle-talkback-optout-message"
});
work_area.append({
type: "input",
name: "section",
label: "بەشی بەستەردراو (دڵخواز)",
tooltip: "ئەو بەشەی پەیامەکەت تێدا نووسیوە. ئەگەر بە واڵایی بەجێی بھێڵیت ھیچ بەشێک بەستەر نادرێت.",
value: prev_section
});
break;
case "usertalk":
work_area.append({
type: "div",
label: "",
style: "color: red",
id: "twinkle-talkback-optout-message"
});
work_area.append({
type: "input",
name: "page",
label: "بەکارھێنەر",
tooltip: "ناوی ئەو بەکارھێنەرەی لەسەر پەڕەی وتووێژەکەی پەیامت داناوە.",
value: prev_page
});
work_area.append({
type: "input",
name: "section",
label: "بەستەری بەش (دڵخواز)",
tooltip: "ئەو بەشەی پەیامەکەت تێدا نووسیوە. ئەگەر بە واڵایی بەجێی بھێڵیت ھیچ بەشێک بەستەر نادرێت",
value: prev_section
});
break;
case "notice":
const noticeboard = work_area.append({
type: "select",
name: "noticeboard",
label: "تەختەی ئاگاداری:",
event: function(e) {
if (e.target.value === "afchd") {
Morebits.quickForm.overrideElementLabel(e.target.form.section, "ناونیشانی درافت (بەبێ پێشگر): ");
Morebits.quickForm.setElementTooltipVisibility(e.target.form.section, false);
} else {
Morebits.quickForm.resetElementLabel(e.target.form.section);
Morebits.quickForm.setElementTooltipVisibility(e.target.form.section, true);
}
}
});
noticeboard.append({
type: "option",
label: "وپ:تب (تەختەی ئاگاداریی بەڕێوەبەران)",
value: "an"
});
noticeboard.append({
type: "option",
label: "وپ:تب٣ (تەختەی ئاگاداریی بەڕێوەبەران/شەڕە دەستکاری)",
value: "an3"
});
noticeboard.append({
type: "option",
label: "وپ:تبڕ (تەختەی ئاگاداریی بەڕێوەبەران/ڕووداوەکان)",
selected: true,
value: "ani"
});
noticeboard.append({
type: "option",
label: "وپ:وبدمز (داخوازی دروستکردنی وتار/مێزی زانیاری/Help desk)",
value: "afchd"
});
noticeboard.append({
type: "option",
label: "وپ:قە (وتووێژی ھەڵبژاردنی بەڕێوەبەر)",
value: "bn"
});
work_area.append({
type: "input",
name: "section",
label: "بەستەری بەش (دڵخواز)",
tooltip: "ئەو بەشەی پەیامەکەت تێدا نووسیوە. ئەگەر بە واڵایی بەجێی بھێڵیت ھیچ بەشێک بەستەر نادرێت",
value: prev_section
});
break;
case "see":
work_area.append({
type: "input",
name: "page",
label: "پەڕە",
tooltip: "پەڕەیەکی دیاری کراو.",
value: prev_page
});
work_area.append({
type: "input",
name: "section",
label: "بەستەری بەش (دڵخواز)",
tooltip: "ئەو بەشەی پەیامەکەت تێدا نووسیوە. ئەگەر بە واڵایی بەجێی بھێڵیت ھیچ بەشێک بەستەر نادرێت",
value: prev_section
});
work_area.append({
type: "textarea",
name: "message",
label: "پەیام (دڵخواز)",
tooltip: "ناردنی پەیامێکی دڵخواز."
});
break;
case "mail":
work_area.append({
type: "div",
label: "تکایە زانیاری دیاریکراوی خۆی بەکارھێنەر تێبینەوە"
});
work_area.append({
type: "textarea",
name: "message",
label: "پەیام",
tooltip: "پەیامێکی دڵخواز.",
value: prev_message
});
break;
case "other":
work_area.append({
type: "input",
name: "page",
label: "پەڕە",
tooltip: "پەڕەیەکی دیاری کراو.",
value: prev_page
});
work_area.append({
type: "input",
name: "section",
label: "بەستەری بەش (دڵخواز)",
tooltip: "ئەو بەشەی پەیامەکەت تێدا نووسیوە. ئەگەر بە واڵایی بەجێی بھێڵیت ھیچ بەشێک بەستەر نادرێت",
value: prev_section
});
work_area.append({
type: "textarea",
name: "message",
label: "پەیام (دڵخواز)",
tooltip: "پەیامێکی دڵخواز.",
value: prev_message
});
break;
}
root.replaceChild(work_area.render(), old_area);
if (Twinkle.talkback.optout) {
$("#twinkle-talkback-optout-message").text(Twinkle.talkback.optout);
}
};
const callback_evaluate = function(e) {
const form = e.target;
const value = form.tbtarget.value;
let pageName, section, message;
let editSummary, talkPageMessage, link;
const username = mw.config.get("wgRelevantUserName");
const usertalk = `User talk:${username}`;
const mytalk = `User talk:${mw.config.get("wgUserName")}`;
const talkLink = (section) => `[[${form.page.value}#${section}|پەیامەکەت]]`;
const noticeboardLinks = {
an: `[[Wikipedia:Administrators' noticeboard#${form.section.value}|پەیامەکەت]]`,
an3: `[[Wikipedia:Administrators' noticeboard/Edit warring#${form.section.value}|پەیامەکەت]]`,
ani: `[[Wikipedia:Administrators' noticeboard/Incidents#${form.section.value}|پەیامەکەت]]`,
afchd: `[[Wikipedia:Help desk#${form.section.value}|پەیامەکەت]]`,
bn: `[[Wikipedia:Bureaucrats' noticeboard#${form.section.value}|پەیامەکەت]]`
};
if (value === "mytalk") {
pageName = mytalk;
section = form.section.value;
editSummary = "وەڵامدانەوە.";
talkPageMessage = `== وەڵامدانەوە ==\n{{جاوبەخشی|${username}}}، تۆ بەتەواوی لە پەڕەی وتووێژەکەم وەڵامی تۆ داناوە [[:${mytalk}#${section}|پەیامەکەت]]. ~~~~`;
} else if (value === "usertalk") {
pageName = usertalk;
section = form.section.value;
editSummary = `وەڵامدانەوە لە پەڕەی لێدوانی بەکارھێنەرەکی تر.`;
talkPageMessage = `== وەڵامدانەوە ==\n{{جاوبەخشی|${username}}}، تۆ بەتەواوی لە پەڕەی وتووێژەکەم وەڵامی تۆ داناوە ${talkLink(section)}. ~~~~`;
} else if (value === "notice") {
pageName = usertalk;
section = form.section.value;
const noticeboard = form.noticeboard.value;
editSummary = `وەڵامدانەوە لە ${noticeboard} تەختەی ئاگاداری.`;
talkPageMessage = `== وەڵامدانەوە ==\n{{جاوبەخشی|${username}}}، تۆ بەتەواوی لە ${noticeboard} وەڵامی تۆ داناوە ${noticeboardLinks[noticeboard]}. ~~~~`;
} else if (value === "see") {
pageName = usertalk;
section = form.section.value;
message = form.message.value;
editSummary = `تکایە ببینەیەک لە پەڕەی دیاری کراو.`;
talkPageMessage = `== تکایە ببینە ==\n{{جاوبەخشی|${username}}}، تکایە بەڵامەکەت لە پەڕەیەکی دیاری کراو داناوە ${talkLink(section)}. ~~~~\n${message}`;
} else if (value === "mail") {
pageName = usertalk;
message = form.message.value;
editSummary = `وەڵامدانەوەی ئیمەیڵ.`;
talkPageMessage = `== وەڵامدانەوەی ئیمەیڵ ==\n{{جاوبەخشی|${username}}}، ئیمەیڵێکی دڵخواز داناوە. ~~~~\n${message}`;
} else if (value === "other") {
pageName = usertalk;
section = form.section.value;
message = form.message.value;
editSummary = `وەڵامدانەوە لە پەڕەی دیاری کراو.`;
talkPageMessage = `== وەڵامدانەوە ==\n{{جاوبەخشی|${username}}}، تۆ بەتەواوی لە پەڕەی دیاری کراو وەڵامی تۆ داناوە ${talkLink(section)}. ~~~~\n${message}`;
}
Morebits.wiki.actionCompleted.redirect = pageName;
Morebits.wiki.actionCompleted.notice = `وەڵامدانەوەی تۆ لە پەڕەی ${pageName} نووسرا.`;
const page = new Morebits.wiki.page(pageName, `وەڵامدانەوە بۆ ${username}`);
page.setEditSummary(editSummary);
page.setAppendText(talkPageMessage);
page.setCreateOption("recreate");
page.setWatchlist(Twinkle.getPref("watchTalkback"));
page.setFollowRedirect(true);
page.append();
};
Twinkle.talkback.init();
})(jQuery);
// </nowiki>