MediaWiki:Gadget-Adiutor-DEL.js
Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.
- Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
- Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
- Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
- Opera: Nyomj Ctrl–F5-öt
/*
* Adiutor: Adiutor enables versatile editing options and modules to assist a variety of user actions to enhance the Wikipedia editing experience.
* Author: Vikipolimer
* Learn more at: https://meta.wikimedia.org/wiki/Adiutor
* Licensing and Attribution: Licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
* Module: Admin delete page module
*/
/* <nowiki> */
// Get essential configuration from MediaWiki
var mwConfig = mw.config.get(["skin", "wgAction", "wgArticleId", "wgPageName", "wgNamespaceNumber", "wgTitle", "wgUserGroups", "wgUserName", "wgUserEditCount", "wgUserRegistration", "wgCanonicalNamespace"]);
// Create an API instance
var api = new mw.Api();
// Get user options from Adiutor configuration
var adiutorUserOptions = JSON.parse(mw.user.options.get('userjs-adiutor'));
var params = {};
// Sayfa mevcudiyetini kontrol et
api.get({
action: "query",
format: "json",
titles: mwConfig.wgPageName
}).done(function(data) {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
if(pageId !== "-1") {
api.get({
action: 'query',
list: 'logevents',
leaction: 'delete/delete',
letprop: 'delete',
letitle: mwConfig.wgPageName
}).done(function(data) {
if(data.query.logevents) {
revDelCount = data.query.logevents.length;
} else {
revDelCount = 0;
}
api.get({
action: 'query',
prop: 'revisions',
titles: 'MediaWiki:Gadget-Adiutor.json',
rvprop: 'content',
formatversion: 2
}).done(function(data) {
var content = data.query.pages[0].revisions[0].content;
var jsonData = JSON.parse(content);
var speedyDeletionReasons = jsonData[1].adiutorSpeedyDeletionReasons;
function csdAdminProcessDialog(config) {
csdAdminProcessDialog.super.call(this, config);
}
OO.inheritClass(csdAdminProcessDialog, OO.ui.ProcessDialog);
csdAdminProcessDialog.static.title = mwConfig.wgPageName;
csdAdminProcessDialog.static.name = 'csdAdminProcessDialog';
// An action set that uses modes ('edit' and 'help' mode, in this example).
csdAdminProcessDialog.static.actions = [{
action: 'continue',
modes: 'edit',
label: mw.msg('confirm-action'),
flags: ['primary', 'destructive']
}, {
action: 'help',
modes: 'edit',
label: mw.msg('help')
}, {
modes: 'edit',
label: mw.msg('cancel'),
flags: 'safe'
}];
csdAdminProcessDialog.prototype.initialize = function() {
csdAdminProcessDialog.super.prototype.initialize.apply(this, arguments);
var i, reason, checkboxWidget, fieldLayout;
selectedNamespaceForGeneral = null;
for(i = 0; i < speedyDeletionReasons.length; i++) {
if(speedyDeletionReasons[i].namespace === 'cleaning') {
selectedNamespaceForGeneral = {
name: speedyDeletionReasons[i].name,
reasons: speedyDeletionReasons[i].reasons
};
break;
}
}
copyVioInput = new OO.ui.TextInputWidget({
placeholder: mw.msg('copyright-infringing-page'),
value: '',
icon: 'link',
data: 'COV',
classes: ['adiutor-copvio-input'],
});
copyVioInput.$element.css({
'margin-top': '10px',
'margin-bottom': '10px'
});
copyVioInput.$element.hide();
isCopyVio = false;
GeneralReasons = new OO.ui.FieldsetLayout({
label: selectedNamespaceForGeneral.name
});
for(i = 0; i < selectedNamespaceForGeneral.reasons.length; i++) {
reason = selectedNamespaceForGeneral.reasons[i];
checkboxWidget = new OO.ui.CheckboxInputWidget({
value: reason.value,
data: reason.data,
selected: false
});
if(reason.value === 'G9') {
fieldLayout = new OO.ui.FieldLayout(checkboxWidget, {
label: reason.label,
align: 'inline',
help: reason.help
});
fieldLayout.$element.append(copyVioInput.$element);
copyVioInput.$element.hide(); // Hide it initially
} else {
fieldLayout = new OO.ui.FieldLayout(checkboxWidget, {
label: reason.label,
align: 'inline',
help: reason.help
});
}
GeneralReasons.addItems([fieldLayout]);
}
selectedNamespaceForOthersOne = null;
for(i = 0; i < speedyDeletionReasons.length; i++) {
if(speedyDeletionReasons[i].namespace === 'other_one') {
selectedNamespaceForOthersOne = {
name: speedyDeletionReasons[i].name,
reasons: speedyDeletionReasons[i].reasons
};
break;
}
}
OthersOneReasons = new OO.ui.FieldsetLayout({
label: selectedNamespaceForOthersOne.name
});
for(i = 0; i < selectedNamespaceForOthersOne.reasons.length; i++) {
reason = selectedNamespaceForOthersOne.reasons[i];
checkboxWidget = new OO.ui.CheckboxInputWidget({
value: reason.value,
data: reason.data,
selected: false
});
fieldLayout = new OO.ui.FieldLayout(checkboxWidget, {
label: reason.label,
align: 'inline',
help: reason.help
});
OthersOneReasons.addItems([fieldLayout]);
}
selectedNamespaceForOthers = null;
for(i = 0; i < speedyDeletionReasons.length; i++) {
if(speedyDeletionReasons[i].namespace === 'other') {
selectedNamespaceForOthers = {
name: speedyDeletionReasons[i].name,
reasons: speedyDeletionReasons[i].reasons
};
break;
}
}
OtherReasons = new OO.ui.FieldsetLayout({
label: selectedNamespaceForOthers.name
});
for(i = 0; i < selectedNamespaceForOthers.reasons.length; i++) {
reason = selectedNamespaceForOthers.reasons[i];
checkboxWidget = new OO.ui.CheckboxInputWidget({
value: reason.value,
data: reason.data,
selected: false
});
fieldLayout = new OO.ui.FieldLayout(checkboxWidget, {
label: reason.label,
align: 'inline',
help: reason.help
});
OtherReasons.addItems([fieldLayout]);
}
GeneralReasons.$element.on('click', function(item) {
if(item.target.value === 'G9') {
copyVioInput.$element.show();
}
});
DeletionOptions = new OO.ui.FieldsetLayout({
label: mw.msg('other-options'),
});
DeletionOptions.addItems([
new OO.ui.FieldLayout(new OO.ui.CheckboxInputWidget({
selected: false,
value: 'recreationProrection'
}), {
label: new OO.ui.deferMsg('protect-against-rebuilding'),
help: new OO.ui.deferMsg('protect-against-rebuilding-help'),
align: 'inline'
}),
new OO.ui.FieldLayout(new OO.ui.CheckboxInputWidget({
selected: adiutorUserOptions.speedyDeletion.csdSendMessageToCreator,
value: 'informCreator'
}), {
label: new OO.ui.deferMsg('afd-inform-creator'),
help: new OO.ui.deferMsg('afd-inform-creator-help'),
align: 'inline'
})
]);
var headerTitle = new OO.ui.MessageWidget({
type: 'notice',
inline: true,
label: new OO.ui.deferMsg('csd-header-title')
});
var headerTitleDescription = new OO.ui.LabelWidget({
label: new OO.ui.deferMsg('csd-header-description')
});
headerTitleDescription.$element.css({
'margin-top': '10px',
'padding-left': '30px',
'margin-bottom': '10px'
});
var left_panel = new OO.ui.PanelLayout({
$content: [OthersOneReasons.$element, OtherReasons.$element],
classes: ['one'],
scrollable: false,
});
var right_panel = new OO.ui.PanelLayout({
$content: [GeneralReasons.$element],
classes: ['two'],
scrollable: false,
});
var stack = new OO.ui.StackLayout({
items: [left_panel, right_panel],
continuous: true,
classes: ['adiutor-csd-modal-container']
});
this.panel1 = new OO.ui.PanelLayout({
padded: true,
expanded: false,
classes: ['adiutor-csd-modal-container-panel-1']
});
if(revDelCount >= "1") {
var deletionMessage = mw.msg('page-deletion-count-warning', revDelCount);
var deletionMessageWithLink = deletionMessage.replace(/\$2/g, '<a href="/wiki/Special:Log?type=delete&user=&page=' + mwConfig.wgPageName + '">' + mw.msg('log') + '</a>');
var HeaderBarRevDel = new OO.ui.MessageWidget({
type: 'warning',
label: new OO.ui.HtmlSnippet(deletionMessageWithLink)
});
HeaderBarRevDel.$element.css({
'margin-bottom': '20px',
});
this.panel1.$element.append(HeaderBarRevDel.$element, stack.$element);
} else {
this.panel1.$element.append(stack.$element);
}
this.stackLayout = new OO.ui.StackLayout({
items: [this.panel1],
classes: ['adiutor-csd-modal-container-user-panel']
});
this.$body.append(this.stackLayout.$element);
};
var CSDReasons = [];
csdAdminProcessDialog.prototype.getSetupProcess = function(data) {
return csdAdminProcessDialog.super.prototype.getSetupProcess.call(this, data).next(function() {
this.actions.setMode('edit');
}, this);
};
csdAdminProcessDialog.prototype.getActionProcess = function(action) {
if(action === 'help') {
this.actions.setMode('help');
window.open('https://meta.wikimedia.org/wiki/Adiutor', '_blank');
} else if(action === 'back') {
this.actions.setMode('edit');
this.stackLayout.setItem(this.panel1);
} else if(action === 'continue') {
var dialog = this;
return new OO.ui.Process(function() {
var CSDReason;
var CSDSummary;
var CSDOptions = [];
OthersOneReasons.items.forEach(function(Reason) {
if(Reason.fieldWidget.selected) {
CSDReasons.push({
value: Reason.fieldWidget.value,
data: Reason.fieldWidget.data,
selected: Reason.fieldWidget.selected
});
}
});
OtherReasons.items.forEach(function(Reason) {
if(Reason.fieldWidget.selected) {
CSDReasons.push({
value: Reason.fieldWidget.value,
data: Reason.fieldWidget.data,
selected: Reason.fieldWidget.selected
});
}
});
GeneralReasons.items.forEach(function(Reason) {
if(Reason.fieldWidget.selected) {
CSDReasons.push({
value: Reason.fieldWidget.value,
data: Reason.fieldWidget.data,
selected: Reason.fieldWidget.selected
});
}
});
if(CSDReasons.length > 0) {
var SaltCSDSummary = '';
if(copyVioInput.value != "") {
CopVioURL = '|url=' + copyVioInput.value;
} else {
CopVioURL = "";
}
if(CSDReasons.length > 1) {
var SaltCSDReason = '{{azonnali|';
var i = 0;
var keys = Object.keys(CSDReasons);
for(i = 0; i < keys.length; i++) {
if(i > 0) SaltCSDReason += (i < keys.length - 1) ? ', ' : ' and ';
SaltCSDReason += CSDReasons[keys[i]].data;
}
for(i = 0; i < keys.length; i++) {
if(i > 0) SaltCSDSummary += (i < keys.length - 1) ? ', ' : ' and ';
SaltCSDSummary += CSDReasons[keys[i]].data;
}
CSDReason = SaltCSDReason + CopVioURL + '| – ~~~~}}';
CSDSummary = 'A lap gyors törlését az ' + SaltCSDSummary + ' indok(ok) alapján kéri.';
} else {
CSDReason = '{{azonnali|' + CSDReasons[0].data + CopVioURL + '| – ~~~~}}';
CSDSummary = CSDReasons[0].data + ' indokával kéri a lap gyors törlését.';
SaltCSDSummary = CSDReasons[0].data;
}
//Şablon ekleme fonksyionu çağır
DeletionOptions.items.forEach(function(Option) {
if(Option.fieldWidget.selected) {
CSDOptions.push({
value: Option.fieldWidget.value,
selected: Option.fieldWidget.selected
});
}
});
CSDOptions.forEach(function(Option) {
if(Option.value === "recreationProrection") {
CSDReason = CSDReason + "\n" + '{{Salt}}';
}
if(Option.value === "informCreator") {
getCreator().then(function(data) {
var Author = data.query.pages[mw.config.get('wgArticleId')].revisions[0].user;
if(!mw.util.isIPAddress(Author)) {
var message = '{{subst:HS-Bildirim|1=' + mwConfig.wgPageName.replace(/_/g, " ") + '|2=' + SaltCSDSummary + '}}';
sendMessageToAuthor(Author, message);
}
});
}
});
api.postWithToken('csrf', {
action: 'delete',
title: mwConfig.wgPageName,
reason: CSDSummary,
tags: 'Adiutor',
format: 'json'
}).done(function() {
api.postWithToken('csrf', {
action: 'delete',
title: "Vita:" + mwConfig.wgPageName,
reason: 'Törölték a törölt oldal beszélgetőoldalát',
tags: 'Adiutor',
format: 'json'
}).done(function() {});
dialog.close();
location.reload();
});
dialog.close();
} else {
var messageDialog = new OO.ui.MessageDialog();
var windowManager = new OO.ui.WindowManager();
$(document.body).append(windowManager.$element);
windowManager.addWindows([messageDialog]);
windowManager.openWindow(messageDialog, {
title: mw.msg('warning'),
message: mw.msg('select-speedy-deletion-reason')
});
}
});
}
return csdAdminProcessDialog.super.prototype.getActionProcess.call(this, action);
};
var CsdWindowManager = new OO.ui.WindowManager();
$(document.body).append(CsdWindowManager.$element);
var dialog = new csdAdminProcessDialog({
size: 'larger',
classes: 'adiutor-user-dashboard-admin-csd-reason-dialog'
});
CsdWindowManager.addWindows([dialog]);
CsdWindowManager.openWindow(dialog);
});
});
} else {
// Sayfa mevcut değilse, hata mesajı göster
alert(mw.msg('page-not-found'));
}
}).catch(error => {
console.error("API error:", error);
});
/* </nowiki> */