MediaViki:FAForm.js
Qeyd: Dəyişiklikləri yayımladıqdan sonra etdiyiniz dəyişikliklərin görünməsi üçün brauzerinizin keşinin təmizlənməsi lazım ola bilər.
- Firefox / Safari: Reload düyməsinə basılı tutarkən Shift düyməsinə basın, və ya Ctrl+F5 və ya Ctrl+R (Mac üçün ⌘-R )
- Google Chrome: Ctrl-Shift-R (Mac üçün ⌘-Shift-R)
- Edge: Ctrl düyməsini basılı tutarkən Refresh düyməsinə basın, və ya sadəcə Ctrl+F5.
/* <nowiki> */
$(function() {
if (mw.config.get("wgPageName") !== "Vikipediya:Qiymətləndirmə") {
return;
}
mw.loader.using([
"mediawiki.api",
"mediawiki.widgets",
"mediawiki.util",
"oojs-ui-core",
"oojs-ui-windows",
]).then(function() {
var api = new mw.Api();
var requestPageTitle = "Vikipediya:Qiymətləndirmə";
var articleNameInput,
contributorNameInput,
radioSelect,
radioSelectedValue;
function ArticleStatusDialog(config) {
ArticleStatusDialog.super.call(this, config);
}
OO.inheritClass(ArticleStatusDialog, OO.ui.ProcessDialog);
ArticleStatusDialog.static.name = "articleStatusDialog";
ArticleStatusDialog.static.title = "Qiymətləndirmə";
ArticleStatusDialog.static.actions = [{
action: "save",
label: "Təqdim et",
flags: ["primary", "progressive"],
},
{
label: "İmtina",
flags: "safe"
},
];
ArticleStatusDialog.prototype.initialize = function() {
ArticleStatusDialog.super.prototype.initialize.apply(this, arguments);
var headerTitle = new OO.ui.MessageWidget({
type: "notice",
inline: true,
label: new OO.ui.HtmlSnippet(
'<small>Aşağıdakı formanı dolduraraq səhifəyə müvafiq statusun verilməsi üçün qiymətləndirməyə təqdim edə bilərsiniz.<br>Daxili keçidlərə, şablonlara ehtiyac yoxdur.<br><span color:red;>Səhifəni təqdim etdikdən sonra müzakirənin qiymətləndirmə səhifəsindəki düzgün başlığa yerləşdirildiyindən əmin olun.</span></small>'
),
});
articleNameInput = new OO.ui.TextInputWidget({
showMissing: false,
required: true,
placeholder: "Səhifənin adını daxil edin (keçidsiz)",
});
contributorNameInput = new OO.ui.TextInputWidget({
showMissing: false,
required: true,
placeholder: "İstifadəçinin adını daxil edin (keçidsiz)",
});
var fieldset = new OO.ui.FieldsetLayout();
fieldset.addItems([
new OO.ui.FieldLayout(articleNameInput, {
label: "Səhifənin adı:",
align: "top",
}),
new OO.ui.FieldLayout(contributorNameInput, {
label: "İstifadəçinin adı:",
align: "top",
}),
]);
// Səhifə statusları
var options = [
{ data: "sm", label: "Seçilmiş məqalə" },
{ data: "ym", label: "Yaxşı məqalə" },
{ data: "ss", label: "Seçilmiş siyahı" },
];
radioSelect = new OO.ui.RadioSelectWidget({
items: options.map(function(option) {
return new OO.ui.RadioOptionWidget(option);
}),
});
this.content = new OO.ui.PanelLayout({
padded: true,
expanded: false,
});
this.content.$element.append(
headerTitle.$element,
"<br><hr><br>",
fieldset.$element,
radioSelect.$element
);
this.$body.append(this.content.$element);
};
function formatContributorNames(names) {
var nameList = names.split(",").map(function(name) {
return name.trim();
});
return nameList.map(function(name) {
return "{{istifadəçi|" + name + "}}";
}).join(", ");
}
ArticleStatusDialog.prototype.getActionProcess = function(action) {
var dialog = this;
if (action) {
return new OO.ui.Process(function() {
if (!articleNameInput.getValue()) {
mw.notify("Səhifənin adını qeyd etməlisiniz!", {type: "error",});
return;
}
if (!contributorNameInput.getValue()) {
mw.notify("İstifadəçinin adını qeyd etməlisiniz!", {type: "error",});
return;
}
if (!radioSelect.findSelectedItem()) {mw.notify("Statusu seçməlisiniz!", {type: "error"});
return;
}
var articleName = articleNameInput.getValue();
var contributorName = formatContributorNames(contributorNameInput.getValue());
if (!articleName.includes("[[")) {
articleName = "[[" + articleName + "]]";
}
radioSelectedValue = radioSelect.findSelectedItem().getData();
var editPage;
if (radioSelectedValue === "sm") {
editPage = "Vikipediya:Qiymətləndirmə/sm";
} else if (radioSelectedValue === "ym") {
editPage = "Vikipediya:Qiymətləndirmə/ym";
} else if (radioSelectedValue === "ss") {
editPage = "Vikipediya:Qiymətləndirmə/ss";
}
api.edit(editPage, function() {
return {
text: radioSelectedValue === "sm" ?
"Seçilmiş məqalə" : radioSelectedValue === "ym" ?
"Yaxşı məqalə" : "Seçilmiş siyahı",
};
});
api.edit(requestPageTitle, function() {
return {
appendtext: "\n\n" + addArticleDiscussion(),
summary: "Yeni səhifə əlavə edildi: " + articleName,
};
}).then(function() {
addToNominations(articleName);
window.location.href = getStatusPage(radioSelectedValue) + articleName;
});
dialog.close({action: action});
mw.notify("Səhifə uğurla əlavə edildi! Zəhmət olmasa, gözləyin.", {
type: "success",
});
});
}
return ArticleStatusDialog.super.prototype.getActionProcess.call(this, action);
};
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
var dialog = new ArticleStatusDialog();
windowManager.addWindows([dialog]);
windowManager.openWindow(dialog);
function addArticleDiscussion() {
var articleName = articleNameInput.getValue();
var contributorName = formatContributorNames(contributorNameInput.getValue());
if (!articleName.includes("[[") && !articleName.includes("]]")) {
articleName = "[[" + articleName + "]]";
}
var outputText = "== " + articleName + " ==\n";
outputText += ": {{kiçik|'''Məqalə üzərində işləyən(lər):''' " + contributorName + "}}\n";
outputText += ": {{kiçik|'''Təqdim olunduğu tarix:''' {{subst:CURRENTDAY}} {{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}" + "}}\n";
outputText += ": {{kiçik|'''İcraçı:'''}}" + '<span style="font-size:85%">~~~</span>\n';
outputText += "<!-- Şərhlərinizi bu sətirdən aşağıda qeyd edin -->" + '\n';
api.postWithToken("csrf", {
action: "edit",
title: getStatusPage(radioSelectedValue) + "/" + articleNameInput.getValue(),
appendtext: outputText,
summary: articleName + " əlavə edilir",
format: "json",
}).done(function() {
addToNominations(articleName);
});
}
function getStatusPage(status) {
var pages = {
ym: "Vikipediya:Yaxşı_məqalələr",
sm: "Vikipediya:Seçilmiş_məqalələr",
ss: "Vikipediya:Seçilmiş_siyahılar",
};
return pages[status];
}
function addToNominations(articleName) {
if (!articleName.includes("[[") && !articleName.includes("]]")) {
articleName = "[[" + articleName + "]]";
}
api.postWithToken("csrf", {
action: "edit",
title: getStatusPage(radioSelectedValue),
appendtext: "\n{{/" + articleNameInput.getValue() + "}}",
summary: articleName + " əlavə edilir",
format: "json",
}).done(function() {
window.location = '/wiki/' + getStatusPage(radioSelectedValue) + '/' + articleNameInput.getValue();
});
}
});
});
/* </nowiki> */