"प्रयोगकर्ता:SM7/test.js" का संशोधनहरू बिचको अन्तर

Content deleted Content added
removed test script
चिनो: प्रतिस्थापित
+ twinkle speedy
 
पङ्क्ति १:
//Please do not delete
// <nowiki>
 
 
(function($) {
 
 
/*
****************************************
*** twinklespeedy.js: CSD module
****************************************
* Mode of invocation: Tab ("शीमे")
* Active on: Non-special, existing pages
*
* NOTE FOR DEVELOPERS:
* If adding a new criterion, add it to the appropriate places at the top of
* twinkleconfig.js. Also check out the default values of the CSD preferences
* in twinkle.js, and add your new criterion to those if you think it would be
* good.
*/
 
Twinkle.speedy = function twinklespeedy() {
// Disable on:
// * special pages
// * non-existent pages
if (mw.config.get('wgNamespaceNumber') < 0 || !mw.config.get('wgArticleId')) {
return;
}
 
Twinkle.addPortletLink(Twinkle.speedy.callback, 'शीमे', 'tw-csd', Morebits.userIsSysop ? 'वि:शीमे अनुसार पृष्ठ मेटाउनुहोस्' : 'वि:शीमे अनुसार शीघ्र मेटाउन अनुरोध गर्नुहोस्');
};
 
// This function is run when the CSD tab/header link is clicked
Twinkle.speedy.callback = function twinklespeedyCallback() {
Twinkle.speedy.initDialog(Morebits.userIsSysop ? Twinkle.speedy.callback.evaluateSysop : Twinkle.speedy.callback.evaluateUser, true);
};
 
// Used by unlink feature
Twinkle.speedy.dialog = null;
// Used throughout
Twinkle.speedy.hasCSD = !!$('#delete-reason').length;
 
// The speedy criteria list can be in one of several modes
Twinkle.speedy.mode = {
sysopSingleSubmit: 1, // radio buttons, no subgroups, submit when "Submit" button is clicked
sysopRadioClick: 2, // radio buttons, no subgroups, submit when a radio button is clicked
sysopMultipleSubmit: 3, // check boxes, subgroups, "Submit" button already present
sysopMultipleRadioClick: 4, // check boxes, subgroups, need to add a "Submit" button
userMultipleSubmit: 5, // check boxes, subgroups, "Submit" button already pressent
userMultipleRadioClick: 6, // check boxes, subgroups, need to add a "Submit" button
userSingleSubmit: 7, // radio buttons, subgroups, submit when "Submit" button is clicked
userSingleRadioClick: 8, // radio buttons, subgroups, submit when a radio button is clicked
 
// are we in "delete page" mode?
// (sysops can access both "delete page" [sysop] and "tag page only" [user] modes)
isSysop: function twinklespeedyModeIsSysop(mode) {
return mode === Twinkle.speedy.mode.sysopSingleSubmit ||
mode === Twinkle.speedy.mode.sysopMultipleSubmit ||
mode === Twinkle.speedy.mode.sysopRadioClick ||
mode === Twinkle.speedy.mode.sysopMultipleRadioClick;
},
// do we have a "Submit" button once the form is created?
hasSubmitButton: function twinklespeedyModeHasSubmitButton(mode) {
return mode === Twinkle.speedy.mode.sysopSingleSubmit ||
mode === Twinkle.speedy.mode.sysopMultipleSubmit ||
mode === Twinkle.speedy.mode.sysopMultipleRadioClick ||
mode === Twinkle.speedy.mode.userMultipleSubmit ||
mode === Twinkle.speedy.mode.userMultipleRadioClick ||
mode === Twinkle.speedy.mode.userSingleSubmit;
},
// is db-multiple the outcome here?
isMultiple: function twinklespeedyModeIsMultiple(mode) {
return mode === Twinkle.speedy.mode.userMultipleSubmit ||
mode === Twinkle.speedy.mode.sysopMultipleSubmit ||
mode === Twinkle.speedy.mode.userMultipleRadioClick ||
mode === Twinkle.speedy.mode.sysopMultipleRadioClick;
}
};
 
// Prepares the speedy deletion dialog and displays it
Twinkle.speedy.initDialog = function twinklespeedyInitDialog(callbackfunc) {
var dialog;
Twinkle.speedy.dialog = new Morebits.simpleWindow(Twinkle.getPref('speedyWindowWidth'), Twinkle.getPref('speedyWindowHeight'));
dialog = Twinkle.speedy.dialog;
dialog.setTitle('शीघ्र मेट्नुपर्ने मापदण्ड छान्नुहोस्');
dialog.setScriptName('ट्विङ्कल');
dialog.addFooterLink('शीघ्र मेट्नुपर्ने आधार', 'वि:शीमे');
dialog.addFooterLink('ट्विङ्कल सहायता', 'वि:ट्विङ्कल/दस्तावेज#शीघ्र');
 
var form = new Morebits.quickForm(callbackfunc, Twinkle.getPref('speedySelectionStyle') === 'radioClick' ? 'change' : null);
if (Morebits.userIsSysop) {
form.append({
type: 'checkbox',
list: [
{
label: 'पृष्ठ चिह्नित मात्र गर्ने, नमेटाउने',
value: 'tag_only',
name: 'tag_only',
tooltip: 'तपाईँ भर्खरै मेटाउनुको सट्टा, यसलाई चिह्नित गर्न चाहानुहुन्छ भने',
checked: !(Twinkle.speedy.hasCSD || Twinkle.getPref('deleteSysopDefaultToDelete')),
event: function(event) {
var cForm = event.target.form;
var cChecked = event.target.checked;
// enable talk page checkbox
if (cForm.talkpage) {
cForm.talkpage.checked = !cChecked && Twinkle.getPref('deleteTalkPageOnDelete');
}
// enable redirects checkbox
cForm.redirects.checked = !cChecked;
// enable delete multiple
cForm.delmultiple.checked = false;
// enable notify checkbox
cForm.notify.checked = cChecked;
// enable deletion notification checkbox
cForm.warnusertalk.checked = !cChecked && !Twinkle.speedy.hasCSD;
// enable multiple
cForm.multiple.checked = false;
// enable requesting creation protection
cForm.salting.checked = false;
 
Twinkle.speedy.callback.modeChanged(cForm);
 
event.stopPropagation();
}
}
]
});
 
var deleteOptions = form.append({
type: 'div',
name: 'delete_options'
});
deleteOptions.append({
type: 'header',
label: 'मेटाउने-सम्बन्धित विकल्पहरू'
});
if (mw.config.get('wgNamespaceNumber') % 2 === 0 && (mw.config.get('wgNamespaceNumber') !== 2 || (/\//).test(mw.config.get('wgTitle')))) { // hide option for user pages, to avoid accidentally deleting user talk page
deleteOptions.append({
type: 'checkbox',
list: [
{
label: 'वार्ता पृष्ठ पनि मेटाउनुहोस्',
value: 'talkpage',
name: 'talkpage',
tooltip: "यो विकल्पले पृष्ठको वार्ता पृष्ठलाई मेट्दछ। यदि तपाइँ मापदण्ड फा८ छान्नुहुन्छ भने (कमन्समा सारिएको), यो विकल्पलाई बेवास्ता गरिन्छ र वार्ता पृष्ठलाई *मेटाइदैन*।",
checked: Twinkle.getPref('deleteTalkPageOnDelete'),
event: function(event) {
event.stopPropagation();
}
}
]
});
}
deleteOptions.append({
type: 'checkbox',
list: [
{
label: 'सबै अनुप्रेषणहरू पनि मेटाउनुहोस्',
value: 'redirects',
name: 'redirects',
tooltip: 'यस विकल्पले आगमनका अतिरिक्त सबै अनुप्रेषणहरू मेटाउँछ। प्रक्रियागत कदमका लागि (जस्तै सार्ने/समायोजन गर्ने) यो विकल्प बेवास्ता गर्नुहोस्।',
checked: Twinkle.getPref('deleteRedirectsOnDelete'),
event: function(event) {
event.stopPropagation();
}
}
]
});
deleteOptions.append({
type: 'checkbox',
list: [
{
label: 'विभिन्न मापदण्ड अन्तर्गत मेटाउनुहोस्',
value: 'delmultiple',
name: 'delmultiple',
tooltip: 'जब चयन गरिन्छ, तपाईँ पृष्ठमा लागू हुने धेरै मापदण्डहरू चयन गर्न सक्नुहुन्छ। उदाहरण को लागि सा११ र ले७ लेखका लागि साझा संयोजन हो।',
event: function(event) {
Twinkle.speedy.callback.modeChanged(event.target.form);
event.stopPropagation();
}
}
]
});
deleteOptions.append({
type: 'checkbox',
list: [
{
label: 'यदि सम्भव भए पृष्ठ सृजनाकर्तालाई सूचित गर्नुहोस्',
value: 'warnusertalk',
name: 'warnusertalk',
tooltip: 'एक अधिसूचना ढाँचा सृजनाकर्ताको वार्ता पृष्ठमा राखिनेछ, यदि तपाईँसँग तपाईँको ट्विङ्कलको प्राथमिकता अधिसूचना सक्षम छ भने ' +
'तपाईँले रोज्नु भएको मापदण्डको लागि र यो बक्स जाँच गरिएको भए। सृजनाकर्तालाई स्वागत पनि गर्न सकिन्छ।',
checked: !Twinkle.speedy.hasCSD,
event: function(event) {
event.stopPropagation();
}
}
]
});
}
 
var tagOptions = form.append({
type: 'div',
name: 'tag_options'
});
 
if (Morebits.userIsSysop) {
tagOptions.append({
type: 'header',
label: 'चिनो-सम्बन्धित विकल्पहरू'
});
}
 
tagOptions.append({
type: 'checkbox',
list: [
{
label: 'यदि सम्भव भए पृष्ठ सृजनाकर्तालाई सूचित गर्नुहोस्',
value: 'notify',
name: 'notify',
tooltip: 'एक अधिसूचना ढाँचा सृजनाकर्ताको वार्ता पृष्ठमा राखिनेछ, यदि तपाईँसँग तपाईँको ट्विङ्कलको प्राथमिकता अधिसूचना सक्षम छ भने ' +
'तपाईँले रोज्नु भएको मापदण्डको लागि र यो बक्स जाँच गरिएको भए। सृजनाकर्तालाई स्वागत पनि गर्न सकिन्छ।',
checked: !Morebits.userIsSysop || !(Twinkle.speedy.hasCSD || Twinkle.getPref('deleteSysopDefaultToDelete')),
event: function(event) {
event.stopPropagation();
}
}
]
});
tagOptions.append({
type: 'checkbox',
list: [
{
label: 'सृजना सुरक्षा साथै (सल्टिङ) चिनो',
value: 'salting',
name: 'salting',
tooltip: 'जब छनौट गरिन्छ, शीध्र मेटाउने चिनोका साथै मेटाउने प्रशासकले सृजना सुरक्षा गर्न एक {{salt}} चिनो लागू गर्नुहुनेछ। यदि यो पृष्ठ बारम्बार पुनः सृजना गरिएको भने मात्र चयन गर्नुहोस्।',
event: function(event) {
event.stopPropagation();
}
}
]
});
tagOptions.append({
type: 'checkbox',
list: [
{
label: 'विभिन्न मापदण्डसँग चिनो लगाउनुहोस्',
value: 'multiple',
name: 'multiple',
tooltip: 'चयन गर्दा, तपाईँले पृष्ठमा लागू हुने धेरै मापदण्डहरू चयन गर्न सक्नुहुनेछ। उदाहरणका लागि, सा११ र ले७ जो लेखहरूको लागि एक साधारण संयोजन हो।',
event: function(event) {
Twinkle.speedy.callback.modeChanged(event.target.form);
event.stopPropagation();
}
}
]
});
 
form.append({
type: 'div',
name: 'work_area',
label: 'शीमे मोड्युल आरम्भ गर्न असफल भयो। कृपया फेरि प्रयास गर्नुहोस्, वा मुद्दाको बारेमा ट्विङ्कल विकासकर्ताहरूलाई बताउनुहोस्।'
});
 
if (Twinkle.getPref('speedySelectionStyle') !== 'radioClick') {
form.append({ type: 'submit', className: 'tw-speedy-submit' }); // Renamed in modeChanged
}
 
var result = form.render();
dialog.setContent(result);
dialog.display();
 
Twinkle.speedy.callback.modeChanged(result);
};
 
Twinkle.speedy.callback.getMode = function twinklespeedyCallbackGetMode(form) {
var mode = Twinkle.speedy.mode.userSingleSubmit;
if (form.tag_only && !form.tag_only.checked) {
if (form.delmultiple.checked) {
mode = Twinkle.speedy.mode.sysopMultipleSubmit;
} else {
mode = Twinkle.speedy.mode.sysopSingleSubmit;
}
} else {
if (form.multiple.checked) {
mode = Twinkle.speedy.mode.userMultipleSubmit;
} else {
mode = Twinkle.speedy.mode.userSingleSubmit;
}
}
if (Twinkle.getPref('speedySelectionStyle') === 'radioClick') {
mode++;
}
 
return mode;
};
 
Twinkle.speedy.callback.modeChanged = function twinklespeedyCallbackModeChanged(form) {
var namespace = mw.config.get('wgNamespaceNumber');
 
// first figure out what mode we're in
var mode = Twinkle.speedy.callback.getMode(form);
var isSysopMode = Twinkle.speedy.mode.isSysop(mode);
 
if (isSysopMode) {
$('[name=delete_options]').show();
$('[name=tag_options]').hide();
$('button.tw-speedy-submit').text('पृष्ठ मेटाउने');
} else {
$('[name=delete_options]').hide();
$('[name=tag_options]').show();
$('button.tw-speedy-submit').text('पृष्ठमा चिनो लगाउने');
}
 
var work_area = new Morebits.quickForm.element({
type: 'div',
name: 'work_area'
});
 
if (mode === Twinkle.speedy.mode.userMultipleRadioClick || mode === Twinkle.speedy.mode.sysopMultipleRadioClick) {
var evaluateType = isSysopMode ? 'evaluateSysop' : 'evaluateUser';
 
work_area.append({
type: 'div',
label: 'मापदण्ड छनौट गरेपछि, निम्न चयन गर्नुहोस्:'
});
work_area.append({
type: 'button',
name: 'submit-multiple',
label: isSysopMode ? 'पृष्ठ मेटाउने' : 'पृष्ठमा चिनो लगाउने',
event: function(event) {
Twinkle.speedy.callback[evaluateType](event);
event.stopPropagation();
}
});
}
 
var radioOrCheckbox = Twinkle.speedy.mode.isMultiple(mode) ? 'checkbox' : 'radio';
 
if (isSysopMode && !Twinkle.speedy.mode.isMultiple(mode)) {
work_area.append({ type: 'header', label: 'अनुकूलन कारण' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.customRationale, mode) });
}
 
if (namespace % 2 === 1 && namespace !== 3) {
// show db-talk on talk pages, but not user talk pages
work_area.append({ type: 'header', label: 'वार्ता पृष्ठहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.talkList, mode) });
}
 
if (!mw.config.get('wgIsRedirect')) {
switch (namespace) {
case 0: // article
case 1: // talk
work_area.append({ type: 'header', label: 'लेखहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.articleList, mode) });
break;
 
case 2: // user
case 3: // user talk
work_area.append({ type: 'header', label: 'प्रयोगकर्ता पृष्ठहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.userList, mode) });
break;
 
case 6: // file
case 7: // file talk
work_area.append({ type: 'header', label: 'फाइलहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.fileList, mode) });
if (!isSysopMode) {
work_area.append({ type: 'div', label: 'शीमे फा४ (कुनै लाइसेन्स नभएको), फा५ (अनाथ उचित उपयोग), फा६ (उचित उपयोग तर्क नभएको), र फा११ (अनुमति नभएको) को लागि चिह्नित गर्न ट्विङ्कलको "डीआई" ट्याब प्रयोग गरी गर्न सकिन्छ।' });
}
break;
 
case 10: // template
case 11: // template talk
work_area.append({ type: 'header', label: 'ढाँचाहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.templateList, mode) });
break;
 
case 14: // category
case 15: // category talk
work_area.append({ type: 'header', label: 'श्रेणीहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.categoryList, mode) });
break;
 
case 100: // portal
case 101: // portal talk
work_area.append({ type: 'header', label: 'पोर्टलहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.portalList, mode) });
break;
 
default:
break;
}
} else {
if (namespace === 2 || namespace === 3) {
work_area.append({ type: 'header', label: 'प्रयोगकर्ता पृष्ठहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.userList, mode) });
}
work_area.append({ type: 'header', label: 'अनुप्रेषणहरू' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(Twinkle.speedy.redirectList, mode) });
}
 
var generalCriteria = Twinkle.speedy.generalList;
 
// custom rationale lives under general criteria when tagging
if (!isSysopMode) {
generalCriteria = Twinkle.speedy.customRationale.concat(generalCriteria);
}
work_area.append({ type: 'header', label: 'सामान्य मापदण्ड' });
work_area.append({ type: radioOrCheckbox, name: 'csd', list: Twinkle.speedy.generateCsdList(generalCriteria, mode) });
 
var old_area = Morebits.quickForm.getElements(form, 'work_area')[0];
form.replaceChild(work_area.render(), old_area);
 
// if sysop, check if CSD is already on the page and fill in custom rationale
if (isSysopMode && Twinkle.speedy.hasCSD) {
var customOption = $('input[name=csd][value=reason]')[0];
if (customOption) {
if (Twinkle.getPref('speedySelectionStyle') !== 'radioClick') {
// force listeners to re-init
customOption.click();
customOption.parentNode.appendChild(customOption.subgroup);
}
customOption.subgroup.querySelector('input').value = decodeURIComponent($('#delete-reason').text()).replace(/\+/g, ' ');
}
}
};
 
Twinkle.speedy.generateCsdList = function twinklespeedyGenerateCsdList(list, mode) {
// mode switches
var isSysopMode = Twinkle.speedy.mode.isSysop(mode);
var multiple = Twinkle.speedy.mode.isMultiple(mode);
var hasSubmitButton = Twinkle.speedy.mode.hasSubmitButton(mode);
var pageNamespace = mw.config.get('wgNamespaceNumber');
 
var openSubgroupHandler = function(e) {
$(e.target.form).find('input').prop('disabled', true);
$(e.target.form).children().css('color', 'gray');
$(e.target).parent().css('color', 'black').find('input').prop('disabled', false);
$(e.target).parent().find('input:text')[0].focus();
e.stopPropagation();
};
var submitSubgroupHandler = function(e) {
var evaluateType = Twinkle.speedy.mode.isSysop(mode) ? 'evaluateSysop' : 'evaluateUser';
Twinkle.speedy.callback[evaluateType](e);
e.stopPropagation();
};
 
return $.map(list, function(critElement) {
var criterion = $.extend({}, critElement);
 
if (multiple) {
if (criterion.hideWhenMultiple) {
return null;
}
if (criterion.hideSubgroupWhenMultiple) {
criterion.subgroup = null;
}
} else {
if (criterion.hideWhenSingle) {
return null;
}
if (criterion.hideSubgroupWhenSingle) {
criterion.subgroup = null;
}
}
 
if (isSysopMode) {
if (criterion.hideWhenSysop) {
return null;
}
if (criterion.hideSubgroupWhenSysop) {
criterion.subgroup = null;
}
} else {
if (criterion.hideWhenUser) {
return null;
}
if (criterion.hideSubgroupWhenUser) {
criterion.subgroup = null;
}
}
 
if (mw.config.get('wgIsRedirect') && criterion.hideWhenRedirect) {
return null;
}
 
if (criterion.showInNamespaces && criterion.showInNamespaces.indexOf(pageNamespace) < 0) {
return null;
}
if (criterion.hideInNamespaces && criterion.hideInNamespaces.indexOf(pageNamespace) > -1) {
return null;
}
 
if (criterion.subgroup && !hasSubmitButton) {
if (Array.isArray(criterion.subgroup)) {
criterion.subgroup = criterion.subgroup.concat({
type: 'button',
name: 'submit',
label: isSysopMode ? 'पृष्ठ मेटाउने' : 'पृष्ठमा चिनो लगाउने',
event: submitSubgroupHandler
});
} else {
criterion.subgroup = [
criterion.subgroup,
{
type: 'button',
name: 'submit', // ends up being called "csd.submit" so this is OK
label: isSysopMode ? 'पृष्ठ मेटाउने' : 'पृष्ठमा चिनो लगाउने',
event: submitSubgroupHandler
}
];
}
// FIXME: does this do anything?
criterion.event = openSubgroupHandler;
}
 
return criterion;
});
};
 
Twinkle.speedy.customRationale = [
{
label: 'अनुकूलन कारण' + (Morebits.userIsSysop ? ' (मेटाउने अनुकूलन कारण)' : ' {{शीमे}} ढाँचाको प्रयोग'),
value: 'reason',
tooltip: '{{शीमे}} "मेटाउने किनभने"को छोटो रूप हो। कम्तिमा अन्य हटाउने मापदण्ड मध्ये एक अझै पनि पृष्ठमा लागू हुनुपर्दछ, र तपाईँले आफ्नो तर्कमा यो उल्लेख गर्नुपर्दछ। यो "सबै-समेटने" होईन जब तपाइँले कुनै पनि मापदण्ड फेला पार्न सक्नुहुन्न।',
subgroup: {
name: 'reason_1',
type: 'input',
label: 'कारण: ',
size: 60
},
hideWhenMultiple: true
}
];
 
Twinkle.speedy.talkList = [
{
label: 'सा८: कुनै सम्बन्धित विषय पृष्ठ बिनाका वार्ता पृष्ठहरू',
value: 'talk',
tooltip: 'प्रयोगकर्ता वार्तापृष्ठहरू, कुराकानी अभिलेख पृष्ठहरू, भविष्यका लागि जानकारी लेख, आदि जस्ता उपयोगी पृष्ठहरू यस मापदण्दमा पर्दैनन्।'
}
];
 
Twinkle.speedy.fileList = [
{
label: 'फा१: अनावश्यक फाइल',
value: 'redundantimage',
tooltip: 'यो मापदण्ड अन्तर्गत अनावश्यक/प्रयुक्त/निरर्थक/व्यर्थ प्रतिलिपि वा कम रिजोल्युसन प्रतिलिपिहरू जुन अर्को विकिपिडियामा फाइलको प्रयोग भइसकेको फाइलहरूमा लागू हुन्छ । यसले विकिमीडिया कमन्समा रहेका छविहरू समावेश गर्दैन; यसका लागि, {{subst:ncd|Image:newname.ext}} वा {{subst:ncd}} चिनोहरू लगाउनु उपयुक्त हुन्छ।',
subgroup: {
name: 'redundantimage_filename',
type: 'input',
label: 'फाइल यसमा अनावश्यक छ: ',
tooltip: 'उपसर्ग "फाइल:" छोड्न सकिन्छ।'
}
},
{
label: 'फा२: निरर्थक, छुटेको र खाली फाइलहरू',
value: 'noimage',
tooltip: 'यस प्रकारको फाईल मेट्नु अघि प्रमाणीकरण गर्नुहोस् कि मीडियाविकि इन्जिनले यसको पुनःआकार थम्बनेल पूर्वावलोकन गरेर पढ्न सक्दैन। यसले कमन्स फाइलहरूको लागि खाली (अर्थात सामग्री नभएको) फाइल वर्णन पृष्ठहरू समावेश गर्दछ'
},
{
label: 'फा२: अनावश्यक र कमन्समा फाइल विवरण रहेको',
value: 'fpcfail',
tooltip: 'सम्बन्धित स्थानीय सामग्री बिना, र कमन्समा फाइल विवरण पृष्ठको रूपमा मात्र होस्ट गरिएको एक छवि।',
hideWhenMultiple: true
},
{
label: 'फा३: अनुचित अनुमतिपत्र',
value: 'noncom',
tooltip: 'यो मापदण्ड अन्तर्गत गैर-व्यावसायिक उपयोगका तस्वीरहरू (जस्तै गैर-व्यावसायिक क्रिएटिव कमन्स अनुमतिपत्र) मा चिनो लगाउन प्रयोग गरिन्छ। "अनुमतिको साथ प्रयोग", "विकिपिडिया प्रयोगका लागि मात्र", आदिले जब सम्म तिनीहरूले जिएफडिएलको संस्करणहरू १.३ भन्दा पहिलेका अनुमतिपत्र गैर-रहित सामग्रीको प्रयोगको लागि सीमित स्तरहरू पालन गर्दैनन् यिनीहरूलाई पनि मेट्न सकिन्छ।'
},
{
label: 'फा४: इजाजतपत्र जानकारीको कमी',
value: 'unksource',
tooltip: 'यो मापदण्ड अन्तर्गत मिडिया फाइलहरूमा प्रतिलिपि अधिकार स्थितिको प्रमाणिकरण गर्ने आवश्यक इजाजतपत्रको जानकारी सात दिन भित्र पनि नभएको खण्डमा लागू हुन्छ। प्रशासकहरूले यस मापदण्ड अन्तर्गत पर्ने अपलोड सारांश, फाइल सूचना पृष्ठ र तस्वीर स्रोतको लागि हटाउनुभन्दा पहिले जाँच गर्नुपर्छ।',
hideWhenUser: true
},
{
label: 'फा५: प्रयोग नगरिएको गैर-मुक्त प्रतिलिपि अधिकार फाइल',
value: 'f5',
tooltip: 'यो मापदण्ड अन्तर्गत नि:शुल्क इजाजतपत्र वा सार्वजनिक डोमेन नरहि कुनैपनि लेखमा प्रयोग नभएका तस्बिरहरू तथा अन्य मिडियाहरूमा लागू हुन्छ। यो सात दिन भन्दा बढीको लागि अनाथ भएको पहिचान पछि मेटिने छ । मिडिया फाइलहरूको प्रयोग मेटाइएको लेखमा भएको छ भने तुरुन्तै मेटिने छ भने यसमा मिडिया फाइलहरूको अघिल्लो संशोधन समावेश हुन्छ। अन्य लेखका लागि अपलोड गरिएको छविहरूको उचित अपवादहरू सृजना गर्न सकिन्छ।',
hideWhenUser: true
},
{
label: 'फा६: गैर-मुक्त उपयोग तर्क छुटेको',
value: 'norat',
tooltip: 'यो मापदण्ड अन्तर्गत उचित प्रयोगको दावी भएका तर प्रयोगको तर्क नभएका गैर-मुक्त फाइलहरूमा लागू हुन्छ। यो सात दिन भन्दा बढी प्रयोगको तर्क नभएका गैर-मुक्त फाइलहरूको पहिचान पछि मेटिने छ। बोइलरप्लेटले उचित उपयोग मापदण्डहरू सेटअप गर्ने प्रतिलिपि ट्याग तर्कको आधार बनाउँदैन। यो मापदण्डले तर्कको प्रयोगको स्थितिमा लागू नगरि विवाद सृजना गर्दछ।',
hideWhenUser: true
},
{
label: 'फा७: अवैध उचित-प्रयोग दावी',
value: 'badfairuse', // same as below
tooltip: 'गैर-मुक्त तस्बिर वा मिडियाहरू स्पष्ट रूपमा गैर-मुक्त ट्याग (जस्तै {{Non-free logo}} नक्कली फोटोमा राखिएमा) तुरुन्तै मेटाउन सकिन्छन्।',
subgroup: {
name: 'badfairuse_rationale',
type: 'input',
label: 'वैकल्पिक व्याख्या: ',
size: 60
}
},
{
label: 'फा७: गैर-मुक्त सामग्री स्पष्ट रूपमा निष्पक्ष-प्रयोग चिह्नित गरिएको',
value: 'badfairuse', // same as above
tooltip: 'गैर-मुक्त सामग्री स्पष्ट रूपमा निष्पक्ष-प्रयोग ट्याग गरिएको। गैर-मुक्त फाइल व्यापारिक स्रोतबाट, (जस्तै सम्बद्ध प्रेस, गेटी) लिइएको, जहाँ फाइल आफै विषयको स्रोत नभएको।',
subgroup: {
name: 'badfairuse_rationale',
type: 'input',
label: 'वैकल्पिक व्याख्या: ',
size: 60
},
hideWhenMultiple: true
},
{
label: 'फा८: तस्बिर विकिमीडिया कमन्समा समान प्रतिलिपिहरूको रूपमा उपलब्ध',
value: 'commons',
tooltip: 'निम्न शर्तहरू पूरा गरेमा: १: कमन्स संस्करण एउटै फाईल ढाँचामा छ र उही वा उच्च गुण/रिजोल्युसन भएमा। २: तस्बिरको इजाजतपत्र र स्रोत स्थिति उचित सन्देह भन्दा बाहिर छ र लाइसेन्स निसन्देह कमन्समा स्वीकार गरिएमा। ३: प्रतिनिधित्व गरिएको कलात्मक कार्यको निर्माताको मृत्युको नाम र मिति फाइलद्वारा उल्लेख गरेमा वा अन्य मुक्त इजाजत पत्र दिइएको साक्ष्य स्पष्ट भएमा। अज्ञात छ भने, वर्णन पृष्ठले अज्ञात स्थिति स्थापित प्रमाण प्रदान गरेको सुनिश्चित गर्नुहोस्। ४: यो पहिलो कुन देशमा प्रकाशित भएको थियो। ५: तस्बिरलाई {{Do not move to Commons}} र {{Keep local}} चिन्ह नलगाइएमा । ६: {{C-uploaded}} तस्बिरहरू मुख्य पेजमा नभएमा शीघ्र हटाइन्छ।',
subgroup: {
name: 'commons_filename',
type: 'input',
label: 'कमन्सको फाइलनाम: ',
value: Morebits.pageNameNorm,
tooltip: 'यदि फाईलको नाम कमन्समा एउटै भएमा यहाँको यो नाम खाली छोड्न सकिन्छ। "फाइल:" उपसर्ग छोड्न सकिन्छ।'
},
hideWhenMultiple: true
},
{
label: 'फा९: स्पष्ट प्रतिलिपि अधिकार उल्लङ्घन',
value: 'imgcopyvio',
tooltip: 'यो स्पष्ट रूपमा गैर-मुक्त तस्बिरहरू (वा अन्य मिडिया फाइलहरू) मा लागू हुन्छ जुन अपलोडर द्वारा उचित-प्रयोग दावी गरिएका छैनन्। एक यूआरएल वा अन्य चित्र कहाँबाट ल्याइएको हो उल्लेख हुनुपर्छ। यसमा एक विश्वसनीय दावीमा समावेश भएका तस्बिरहरू जुन मालिकले तिनीहरूलाई विकिपिडिया-संगत गैर-मुक्त इजाजतपत्र अन्तर्गत जारी गरेको छ। स्पष्ट उल्लङ्घनहरूलाई {{Db-filecopyvio}} साथ ट्याग गरिनु पर्छ। अस्पष्ट प्रतिलिपि अधिकार उल्लङ्घनको बारेमा विकिपिडिया:फाइल सम्बन्धि छलफलहरूमा छलफल गरिनेछ।',
subgroup: [
{
name: 'imgcopyvio_url',
type: 'input',
label: 'प्रतिलिपि उल्लङ्घन स्रोतको URL, "http://" सहित। यदि तपाइँ युआरएल प्रदान गर्न सक्नुहुन्न भने, कृपया "शीमे फा९" प्रयोग नगर्नुहोस्। (अपवाद: गैर-इन्टरनेट स्रोतहरूको प्रतिलिपि उल्लङ्घनको लागि बाकस खाली छोड्नुहोस्।) ',
size: 60
},
{
name: 'imgcopyvio_rationale',
type: 'input',
label: 'गैर-इन्टरनेट प्रतिलिपि उल्लङ्घनको कारण: ',
size: 60
}
]
},
{
label: 'फा१०: बेकार गैर-मीडिया फाइल',
value: 'badfiletype',
tooltip: 'यो मापदण्ड कुनै पनि लेखमा प्रयोग नगरिएका तस्बिर, ध्वनि, भिडियो फाइलहरूको लागि हो; र लेखमा कुनै अपरिहार्य प्रयोग छैन। ध्यान दिनुहोस् कि निम्न: .doc, .pdf, .ps, .html, .rtf, .txt, .xls, and .zip फाईलहरू तस्बिर, वा भिडियो होइनन्। चित्र, ध्वनि, र भिडियो फाइलहरूको उदाहरणहरू निम्न: .jpg, .gif, .png, .svg, .mpg, र .wav. हुन्। यो मेटाईनु पर्ने फाईलहरूको एक विस्तृत सूची होइन, न त एक्स्टेन्सन एक्लै मात्र मेटाउनको लागि पर्याप्त कारण हो; यो मापदण्ड फाइल सामग्रीमा आधारित छ।'
},
{
label: 'फा११: अनुमतिको कुनै प्रमाण नभएको',
value: 'nopermission',
tooltip: 'यदि एक अपलोडरले एक इजाजतपत्र निर्दिष्ट गरि स्रोत/प्रतिलिपि अधिकार धारकको रूपमा तेस्रो पक्षको पनि नाम दिएको छ तर तेस्रो पक्षले वास्तवमा सहमति नगरेको भए, त्यस्ता फाइलहरू अपलोडरलाई दिइएको सात दिनको अधिसूचना पछि मेटाइने छन्।',
hideWhenUser: true
},
{
label: 'सा८: एक फाइल विवरण पृष्ठ जुन कुनै फाईलसँग मेल नखाएको',
value: 'imagepage',
tooltip: 'यो फाईल नभएसम्म मात्र प्रयोगको लागि हो । भ्रष्ट फाइलहरू, र फाईलहरूको लागि स्थानीय विवरण पृष्ठहरू कमन्समा भएमा, अ२; क्रस-नामस्थान अनुप्रेषणहरू भएमा अ३; विकिमीडिया कमन्समा पहिले देखि सोहि नामले रहेको फाइलमाथि अनुप्रेषण भएमा सा६ को प्रयोग हुन्छ।'
}
];
 
Twinkle.speedy.articleList = [
{
label: 'ले१: कुनै प्रसङ्ग नभएको। लेखको विषय पहिचान गर्न पर्याप्त प्रसङ्ग कमी।',
value: 'nocontext',
tooltip: 'उदाहरण: "उहाँ रातो कारको साथ हास्यास्पद मानिस हुनुहुन्छ। उसले मानिसहरूलाई हसाँउनुहुन्छ। "यो एकदम छोटो लेखहरूमा मात्र लागू हुन्छ। प्रसङ्ग सामग्री भन्दा भिन्न छ, तल ले३ मा वर्णन गरिएको छ।'
},
{
label: 'ले२: अर्को विकिमीडिया परियोजनामा अवस्थित विदेशी भाषा लेखहरू',
value: 'foreign',
tooltip: 'यदि लेख अर्को परियोजनामा अवस्थित नभएमा, ढाँचा {{नेपाली भाषा होइन}} प्रयोग गर्नु पर्छ। गैर-नेपाली भाषाका सबै लेखहरू जुन यो मापदण्ड पूरा गर्दैनन् (र शीघ्र मेटाउनको लागि कुनै अन्य मापदण्ड पूरा गर्दैनन्) भने समीक्षा र सम्भव अनुवाद आवश्यक पृष्ठमा सूचीबद्ध गरिनु पर्छ।',
subgroup: {
name: 'foreign_source',
type: 'input',
label: 'विदेशी भाषा अन्तरविकि सूत्र: ',
tooltip: 'उदाहरणका लागि, en:Nepal'
}
},
{
label: 'ले३: कुनै सामग्री नभएको',
value: 'nocontent',
tooltip: 'लेखमा धोखापूर्ण र गलत जानकारी समावेस गरेर बनाइएको पृष्ठ वा कुनै सामग्री नभएको वा मात्रै बाहिरी सूत्र, श्रेणी पद, यो पनि हेर्नुहोस खण्ड, शीर्षकसँग मिल्दोजुल्दो सामग्री वा अभद्र लेखाई, ढाँचा र चित्र राखिएका लेखहरूमा लागू हुन्छ। यसमा अस्पष्ट पृष्ठहरू समावेश छैनन्'
},
{
label: 'ले५: अर्को परियोजनामा भएको लेख',
value: 'transwiki',
tooltip: 'यो मापदण्ड पहिले नै ट्रान्सवाइज्ड, (उदाहरणार्थ, विक्शनरी वा विकिस्रोत)मा समावेश गरिएको वा शब्दकोश परिभाषामा समावेश गरिसकिएको लेख वा पहिले नै अर्को परियोजनामा भएको लेखहरूमा लागू हुन्छ।',
subgroup: {
name: 'transwiki_location',
type: 'input',
label: 'जहाँ पृष्ठ ट्रान्सविकि गरिएको सूत्र: ',
tooltip: 'उदाहरण को लागि, https://ne.wiktionary.org/wiki/ट्विङ्कल वा [[विक्सनरी:ट्विङ्कल]]'
}
},
{
label: 'ले७: महत्वहीन व्यक्तिहरू, समूहहरू, कम्पनीहरू, वेब सामग्री, व्यक्तिगत जनावरहरू, वा संगठित घटनाहरू',
value: 'a7',
tooltip: 'एक वास्तविक व्यक्ति, व्यक्तिको समूह, ब्यान्ड, क्लब, कम्पनी, वेब सामग्री, व्यक्तिगत जनावर, भ्रमण, वा पार्टीको बारेमा लेख जुन यस विषयको महत्त्व वा उल्लेखनीयतालाई जोड दिदैन। यदि विवादास्पद, वा अघिल्लो एएफडीको परिणाम लेख राखिएको भए, यसको सट्टामा लेख एएफडीको लागि मनोनयन गर्नुपर्छ',
hideWhenSingle: true
},
{
label: 'ले७: महत्वहीन व्यक्ति',
value: 'person',
tooltip: 'एक वास्तविक व्यक्तिको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन सङ्गीतकार, वा सङ्गीतिक दल',
value: 'band',
tooltip: 'एक ब्यान्ड, गायक, सङ्गीतकार, वा सङ्गीतिक भेलाको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन क्लब',
value: 'club',
tooltip: 'एक क्लब, समाज वा समूहको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन कम्पनी वा सङ्गठन',
value: 'corp',
tooltip: 'एक कम्पनी, निगम वा सङ्गठनको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन वेबसाइट वा वेब सामग्री',
value: 'web',
tooltip: 'एक वेबसाइट, ब्लग, वेब फोरम, वेबकमिक, पोडकास्ट, ब्राउजर खेल, वा समान वेब सामग्रीको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन व्यक्तिगत जनावर',
value: 'animal',
tooltip: 'घरपालुवा जनावरको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले७: महत्वहीन आयोजित घटना',
value: 'event',
tooltip: 'भ्रमण, समारोह, बैठक, पार्टी, आदिको बारेमा रहेको र लेखले विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको',
hideWhenMultiple: true
},
{
label: 'ले९: महत्वहीन सङ्गीतिक रेकर्डिङ जहाँ कलाकारको लेख अवस्थित नभएको',
value: 'a9',
tooltip: 'लेख साङ्गीतिक रेकर्डिङ वा साङ्गीतिक रेकर्डिङहरूको सूचीको बारेमा रहेको तथा विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको, र जहाँ कलाकार स्वयमको बारेमा लेख नभएको वा मेटाइसकिएको'
},
{
label: 'ले१०: हालसालै सृजित लेख जसले विद्यमान शीर्षकको नक्कल गरेको',
value: 'a10',
tooltip: 'हालसालै सृजित लेख जसमा विस्तारको कुनै प्रासङ्गिक पृष्ठ इतिहास, विवरण, वा विद्यमान विषयको सुधार जानकारी नभएको',
subgroup: {
name: 'a10_article',
type: 'input',
label: 'नक्कल गरिएको लेख: '
}
},
{
label: 'ले११: विषय महत्त्वपूर्ण नभएको स्पष्ट आविष्कार',
value: 'madeup',
tooltip: 'लेख सृजनाकर्ता वा उनीहरूले व्यक्तिगत रूपमा चिनेका कसैको बारेमा लेखिएको, र यस विषयको महत्त्व वा विश्वसनीयतालाई नदर्साएको'
}
];
 
Twinkle.speedy.categoryList = [
{
label: 'श्रे१: रित्ता श्रेणीहरू',
value: 'catempty',
tooltip: 'यो मापदण्ड कम्तीमा सात दिन सम्म रित्ता रहेका श्रेणीहरूमा लागू हुन्छ। बहुविकल्पी श्रेणी, अनुप्रेषित श्रेणी, प्रमुख लेख श्रेणी, छलफल विकिपिडिया:श्रेणी सम्बन्धि छलफलहरू अन्तर्गतका श्रेणीहरू (छलफलहरू), वा परियोजनाका अक्सर समय-समयमा रित्ता हुन सक्ने श्रेणीहरू यस मापदण्डमा लागू हुँदैनन्। त्यस्ता श्रेणीहरू मेटाउनबाट रोक्न पृष्ठको शीर्ष मा {{Possibly empty category}} ढाँचा राख्नुहोस्।'
},
{
label: 'सा८: मेटाइएका वा ढाँचाद्वारा पुन:आबद्ध गरिएका श्रेणीहरू',
value: 'templatecat',
tooltip: 'एक ढाँचाद्वारा आबद्ध श्रेणी जुन हुँदै नभएको, मेटिएको, वा मेटाउनको लागी हालै चिह्नित गरिएको। यसले हाल प्रयोगमा रहेका श्रेणीहरूलाई समावेश गर्दैन।'
},
{
label: 'सा८: गैर-अवस्थित लक्ष्यहरूमा गरिएको अनुप्रेषण',
value: 'redirnone',
tooltip: 'यसले परियोजनाको लागि उपयोगी हुने कुनै पनि पृष्ठलाई, र विशेष रूपमा: मेटाउने छलफलहरू जुन अन्य ठाउँमा आबद्ध नभएका, प्रयोगकर्ता र प्रयोगकर्ता वार्ता पृष्ठहरू, वार्ता पृष्ठ अभिलेखहरू, वैधानिक लक्ष्यहरूमा परिवर्तन गर्न सकिने अनुप्रेषणहरू, र फाइल पृष्ठहरू वा वार्ता पृष्ठहरू विकिमिडिया कमन्समा अवस्थित फाइलहरू समावेश गर्दैन।',
hideWhenMultiple: true
}
];
 
Twinkle.speedy.userList = [
{
label: 'प्र१: प्रयोगकर्ताको अनुरोध',
value: 'userreq',
tooltip: 'एक प्रयोगकर्ता पृष्ठ वा उपपृष्ठ जुन प्रयोगकर्ताद्वारा हटाउन अनुरोध गरिएको। केहि दुर्लभ मामिलाहरूमा त्यहाँ पृष्ठ कायम राख्न प्रशासनिक आवश्यकता हुन सक्छ। साथै, कहिलेकाँही, मुख्य प्रयोगकर्ता पृष्ठहरू साथै मेटाईनेछ। पूर्ण निर्देशन र दिशानिर्देशहरूको लागि विकिपिडिया:प्रयोगकर्ता पृष्ठ हेर्नुहोस्',
subgroup: mw.config.get('wgNamespaceNumber') === 3 && mw.config.get('wgTitle').indexOf('/') === -1 ? {
name: 'userreq_rationale',
type: 'input',
label: 'यो प्रयोगकर्ताको वार्ता पृष्ठ हटाइने कारण, व्याख्या अनिवार्य: ',
tooltip: 'प्रयोगकर्ता वार्ता पृष्ठहरू मात्र अत्यधिक असाधारण परिस्थितिहरूमा मेटाइन्छन्।',
size: 60
} : null,
hideSubgroupWhenMultiple: true
},
{
label: 'प्र२: अस्तित्वहीन प्रयोगकर्ता',
value: 'nouser',
tooltip: 'अवस्थित नभएका/अस्तित्वहीन प्रयोगकर्ताहरूको प्रयोगकर्ता पृष्ठहरू यहाँ हेर्नुहोस् (Special:Listusers) मा यो मापदण्ड लागू हुन्छ।'
},
{
label: 'प्र३: गैर-मुक्त ग्यालरीहरू',
value: 'gallery',
tooltip: 'प्रयोगकर्तास्थानमा ग्यालरीहरू प्रायः वा पूर्णतया "उचित-उपयोग" वा गैर-मुक्त तस्बिरहरू समावेश हुन्छन्। विकिपिडियाको गैर-मुक्त सामग्री नीतिले प्रयोगकर्ता-स्थानमा गैर-रहित सामग्रीको प्रयोगलाई निषेध गर्दछ, प्रयोगकर्ताले अपलोड गरेको सार्वजनिक डोमेनका सामग्री वा गैर-मुक्त इजाजतपत्र अन्तर्गत पनि अस्वीकार्य हुन्छन्।',
hideWhenRedirect: true
},
{
label: 'प्र५: स्पष्ट वि:वेबहोस्टहोइन उल्लङ्घन',
value: 'notwebhost',
tooltip: 'प्रयोगकर्ता-स्थानमा भएका लेख, सूचना, छलफल, र/वा विकिपिडियाका लक्ष्यहरूसँग नमिल्ने गतिविधिहरू, जहाँ प्रयोगकर्ता स्वयमले प्रयोगकर्ता पृष्ठ बाहेक अरू कुनैपनि सम्पादन गरेको छैन वा सम्भावित मस्यौदाहरू र प्रयोगकर्ता पृष्ठहरू अपवाद हुन्।',
hideWhenRedirect: true
},
{
label: 'सा११: एक प्रचारात्मक प्रयोगकर्ता नाम अन्तर्गतको प्रयोगकर्ता पृष्ठ',
value: 'spamuser',
tooltip: 'प्रयोगकर्ता पृष्ठ विज्ञापन वा प्रचारको लागि मात्र प्रयोग भइरहेको, एक प्रयोगकर्ता नामको प्रचार वा सम्बद्ध इकाईको विज्ञापन गरिएको। नोट गर्नुहोस् कि केवल एक कम्पनी वा उत्पादन विषयको पृष्ठ प्रयोगकर्तास्थानमा भएमात्रैले प्रयोगकर्ता पृष्ठ मेटाउन योग्य हुँदैन। यदि एक प्रयोगकर्ता पृष्ठ प्रचारात्मक हो तर प्रयोगकर्ता नाम हैन भने नियमित सा११ अन्तर्गत चिह्नित गर्नुहोस्।',
hideWhenMultiple: true,
hideWhenRedirect: true
},
{
label: 'सा१३: लेख सृजनाको अस्वीकृत/पेश नगरिएको मस्यौदा, जसलाई ६ महिना सम्म पनि सम्पादन नगरिएको',
value: 'afc',
tooltip: 'या त मस्यौदा नामस्थानको एक पृष्ठ, लेख सृजनाको अस्वीकृत/पेश नगरिएको प्रयोगकर्ता स्थानको लेख, वा लेख विजार्ड पाठ बाहेक सामग्री नभएको कुनै नामस्थानको मस्यौदा जुन ६ महिना सम्म पनि सम्पादन नगरिएको (बोट सम्पादनहरू बाहेक)।',
hideWhenMultiple: true,
hideWhenRedirect: true
}
];
 
Twinkle.speedy.templateList = [
{
label: 'ढाँ२: स्थापित नीतिको स्पष्ट गलत बयान गरिएका ढाँचाहरू',
value: 'policy',
tooltip: 'यसमा शीघ्र मेटाउने मापदण्ड भित्र नपर्ने मुद्दाहरू र लेखहरूमा ढाँचाहरू प्रयोगको अस्वीकृति समावेश छन्',
subgroup: {
name: 'policy_rationale',
type: 'input',
label: 'वैकल्पिक व्याख्या: ',
size: 60
},
hideSubgroupWhenSysop: true
},
{
label: 'ढाँ३: प्रतिलिपि ढाँचाहरू वा कठोर परिस्थितिहरू',
value: 'duplicatetemplate',
tooltip: 'अर्को ढाँचाको महत्वपूर्ण प्रतिलिपिहरू, वा ढाँचाको कठोर परिस्थितिहरू जहाँ एउटा ढाँचाको कार्यक्षमता अन्य ढाँचाद्वारा प्रदान गर्ने ढाँचालाई शीघ्र मेटाउन चिह्नित गरिएको सात दिन पछि मेटिनेछ',
subgroup: {
name: 'duplicatetemplate_2',
type: 'input',
label: 'यो ढाँचाको प्रतिलिपि: ',
tooltip: 'उपसर्ग "ढाँचा:" आवश्यक छैन।'
},
hideWhenMultiple: true
}
];
 
Twinkle.speedy.portalList = [
{
label: 'पो१: पोर्टल पृष्ठ लेख बनेमा शीघ्र मेटाउनको लागि योग्य हुनेछ',
value: 'p1',
tooltip: 'तपाईँले लेख मापदण्ड (ले१, ले३, ले७, वा ले१०) निर्दिष्ट गर्नुपर्छ जुन यस अवस्थामा लागू हुन्छ।',
subgroup: {
name: 'p1_criterion',
type: 'input',
label: 'लागू हुँने लेख मापदण्ड: '
}
},
{
label: 'पो२: अल्पसङ्ख्यक पोर्टल (तीन भन्दा थोरै गैर-अपूर्ण लेखहरू)',
value: 'emptyportal',
tooltip: 'एक विषयमा आधारित पोर्टल, जहाँ उक्त पोर्टलको शीर्षकको केवल अपूर्ण शीर्ष लेख वा तीन भन्दा थोरै गैर-अपूर्ण लेखहरू।'
}
];
 
Twinkle.speedy.generalList = [
{
label: 'सा१: स्पष्ट अर्थहीन, पूर्ण विशुद्ध पाठ, अस्पष्ट उच्चारण सहितका निरर्थक सामग्री वा ईतिहास।',
value: 'nonsense',
tooltip: 'यसमा नराम्रो लेखन, पक्षपातपूर्ण व्याख्यान, अश्लील टिप्पणी, बर्बरता, काल्पनिक सामग्री, नेपालीमा नलेखिएको सामग्री, खराब अनुवाद गरिएको सामग्री, अकल्पनीय सिद्धान्तहरू, वा भ्रमहरू समावेश हुँदैन। छोटकरीमा भन्नुपर्दा, यदि तपाईँ यसलाई बुझ्न सक्नुहुन्छ भने, सा१ लागू हुँदैन।',
hideInNamespaces: [ 2 ] // प्रयोगकर्ता नामस्थानमा लागू हुँदैन
},
{
label: 'सा२: परिक्षण पृष्ठ',
value: 'test',
tooltip: 'एउटा पृष्ठ सम्पादन वा अन्य विकिपिडिया कार्यहरू परीक्षण गर्न सृजना गरिएको। प्रयोगकर्ता नामस्थानका पृष्ठहरू, न त वैध तर प्रयोग नभएको वा नक्कल ढाँचाहरूमा लागू हुँदैन (जे होस् मापदण्ड ढाँ३ लागू हुन सक्छ)।',
hideInNamespaces: [ 2 ] // प्रयोगकर्ता नामस्थानमा लागू हुँदैन
},
{
label: 'सा३: शुद्ध बर्बरता',
value: 'vandalism',
tooltip: 'शुद्ध बर्बरता (पृष्ठ सार्दा छोडिएका अनुप्रेषण सहितका बर्बरता)'
},
{
label: 'सा३: स्पष्ट छल वा भ्रम',
value: 'hoax',
tooltip: 'बर्बरताको दृष्टिकोणले प्रबल तथा स्पष्ट भ्रम',
hideWhenMultiple: true
},
{
label: 'सा४: छलफल गरेर मेटिसकिएको पृष्ठको पुनर्निर्माण',
value: 'repost',
tooltip: 'एक पृष्ठ जुन मेटाउने छलफलको माध्यमबाट पहिल्यै मेटाइएको, मेटाईएको संस्करणसँग ठ्याक्कै मिल्दो, र कुनै परिवर्तनले सामग्री मेटिएको कारणलाई सम्बोधन गर्न नसकेको। यो धारा "हटाइएको समीक्षा" को परिणामस्वरूप हटाइएको सामग्रीमा "प्रयोगकर्ताकृत" गरिएको सामग्रीमा लागू हुँदैन, वा यदि पहिले मेटाउने प्रस्तावहरू गरिएको थियो वा शीघ्र मेटाइहरू, यद्यपि यो अन्तिम अवस्थामा, अन्य शीघ्र हटाउने मापदण्ड भने अझै पनि लागू हुन सक्छ।',
subgroup: {
name: 'repost_xfd',
type: 'input',
label: 'पृष्ठ मेटाउने छलफल: ',
tooltip: '"विकिपिडिया:" सँग सुरू हुनुपर्छ',
size: 60
}
},
{
label: 'सा५: निषेधित वा अवरोधित प्रयोगकर्ताद्वारा सृजना गरिएको',
value: 'banned',
tooltip: 'निषेधित वा अवरोधित प्रयोगकर्ताद्वारा बनाइएको पृष्ठ वा अरूद्वारा ठोस सम्पादनहरू बिनै अवरोधित प्रयोगकर्ताको उल्लङ्घन',
subgroup: {
name: 'banned_user',
type: 'input',
label: 'निषेधित प्रयोगकर्ताको नाम (उपलब्ध भएमा): ',
tooltip: '"प्रयोगकर्ता:" सँग सुरू गर्नुहुँदैन'
}
},
{
label: 'सा६: सार्ने',
value: 'move',
tooltip: 'एक अनुप्रेषण उल्टाउने जस्ता अविवादास्पद कार्यको लागि बाटो खुलाउन',
subgroup: [
{
name: 'move_page',
type: 'input',
label: 'पृष्ठ यस नाममा सारिनुपर्ने: '
},
{
name: 'move_reason',
type: 'input',
label: 'कारण: ',
size: 60
}
],
hideWhenMultiple: true
},
{
label: 'सा६: पृहनी',
value: 'xfd',
tooltip: ' मेटाउने छलफलमा पृष्ठ मेटाउन सहमति पुगेको, तर अझै नमेटिएको',
subgroup: {
name: 'xfd_fullvotepage',
type: 'input',
label: 'मेटाउने छलफल भएको पृष्ठ: ',
tooltip: '"विकिपिडिया:" को साथ सुरू हुनुपर्दछ',
size: 40
},
hideWhenMultiple: true
},
{
label: 'सा६: प्रतिलिपि-साभार-गरि पृष्ठ सार्न ',
value: 'copypaste',
tooltip: 'यो केवल प्रतिलिपि-साभार गरि पृष्ठ सार्नको लागि बाटो खुलाउन अस्थायी रूपमा मेटाउन आवश्यकका लागि लागू हुन्छ ',
subgroup: {
name: 'copypaste_sourcepage',
type: 'input',
label: 'प्रतिलिपि साभार गरिएको मूल पृष्ठ: '
},
hideWhenMultiple: true
},
{
label: 'सा६: प्राविधिक तथा गैर-विवादास्पद सफाइ',
value: 'g6',
tooltip: 'अन्य नियमित मर्मत कार्यहरू',
subgroup: {
name: 'g6_rationale',
type: 'input',
label: 'कारण: ',
size: 60
}
},
{
label: 'सा७: लेखकद्वारा पृष्ठ मेट्न अनुरोध',
value: 'author',
tooltip: 'केवल पर्याप्त सामग्रीको लेखकले मेटाउन अनुरोध गरेको र/वा पृष्ठ राम्रो नियतले खाली गरिएको। यदि लेखकले पृष्ठ खाली गर्दछ भने, यसलाई मेटाउने अनुरोधको रूपमा पनि लिन सकिन्छ।',
subgroup: {
name: 'author_rationale',
type: 'input',
label: 'वैकल्पिक व्याख्या: ',
tooltip: 'सम्भवतः लेखकले मेटाउने अनुरोध कहाँ सूत्रित गरेको छ',
size: 60
},
hideSubgroupWhenSysop: true
},
{
label: 'सा८: हुँदै नभएको, मेटिसकिएको पृष्ठमा आश्रित पृष्ठ',
value: 'g8',
tooltip: 'जस्तै कुनै सम्बन्धित पृष्ठ बिनाका वार्ता पृष्ठहरू; कुनै अभिभावक पृष्ठ बिना उपपृष्ठहरू; सम्बन्धित फाइल बिना फाइल पृष्ठहरू; गैर-अस्तित्वहीन लक्ष्यहरूका अनुप्रेषणहरू; वा मेटिएको ढाँचाहरूद्वारा पुन: आबद्ध गरिएका श्रेणीहरू। विकिपिडियाको लागि उपयोगी पृष्ठहरू, जस्तै प्रयोगकर्ता उपपृष्ठहरू र वार्ता पृष्ठहरू, वार्ता पृष्ठ अभिलेखहरू, भविष्यको लेखका लागि जानकारी, लेख सृजनाका मस्यौदाहरू, आदि यो मापदण्डमा पर्दैनन्।',
subgroup: {
name: 'g8_rationale',
type: 'input',
label: 'वैकल्पिक व्याख्या: ',
size: 60
},
hideSubgroupWhenSysop: true
},
{
label: 'सा८: हुँदै नभएको पृष्ठको उपपृष्ठ',
value: 'subpage',
tooltip: 'विकिपिडियाको लागि उपयोगी पृष्ठहरू, जस्तै प्रयोगकर्ता उपपृष्ठहरू र वार्ता पृष्ठहरू, वार्ता पृष्ठ अभिलेखहरू, भविष्यको लेखका लागि जानकारी, लेख सृजनाका मस्यौदाहरू, आदि यो मापदण्डमा पर्दैनन्।',
hideWhenMultiple: true,
hideInNamespaces: [ 0, 6, 8 ] // मुख्य, फाइल, र मिडीयाविकि-स्थानमा लुकाउनुहोस्
},
{
label: 'सा१०: आक्रमण पृष्ठ',
value: 'attack',
tooltip: 'एक खास उद्देश्य नभई आफ्नो विषय अथवा केहि अन्य निकायको अपमान, निराशा वा धम्की दिने पृष्ठ। यसले मानहानि, कानूनी धम्की, कुनै व्यक्तिलाई धम्काउने वा तर्साउने उद्देश्यले लेखिएको, वा एक जीवित व्यक्तिको जीवनी जुन पूर्ण नकारात्मक तथा स्रोतहीन, जहाँ लेख उल्टाउन इतिहासमा कुनै तटस्थ संस्करण पनि नभएका जस्ता कुराहरूलाई जनाउदछ। त्यस्ता पृष्ठहरू मेटाउने प्रशासकहरूले मेटाउने सारांशमा पृष्ठको सामग्री उद्धृत गर्नु हुँदैन!'
},
{
label: 'सा१०: स्रोतहीन र पूर्ण नकारात्मक जीमाजी',
value: 'negublp',
tooltip: 'एक स्रोतहीन तथा पूर्ण नकारात्मक जीवित व्यक्तिको जीवनी बारेको लेख, जहाँ उल्टाउन इतिहासमा कुनै तटस्थ संस्करण नभएको।',
hideWhenMultiple: true
},
{
label: 'सा११: अनावश्यक प्रचारबाजी वा प्रसार',
value: 'spam',
tooltip: 'हालको संस्करणमा यसले संस्था, व्यक्ति, उत्पादन, वा विचार प्रवर्धन वा प्रचार मात्र गर्दछ, र ज्ञानकोश बन्नको लागि मौलिक पुनर्लेखन चाहिन्छ। यद्यपि कम्पनी, संगठन, वा उत्पादन पृष्ठको विषय हो भन्ने तथ्य मात्रले, आफ्नै मापदण्ड अनुसार, यो पृष्ठ यस मापदण्डको आधारमा मेटाउन योग्य हुँदैन। न त यो मापदण्ड प्रचारात्मक सामग्री हटाएपछि पर्याप्त ज्ञानकोश सामग्री रहने ठाँउमा लागू हुन्छ; यस अवस्थामा कृपया प्रचारात्मक सामग्री आफैंले हटाउनुहोस्, वा अरूलाई सचेत गराउन {{advert}} चिनो थप्नुहोस्।'
},
{
label: 'सा१२: स्पष्ट प्रतिलिपि अधिकार उल्लङ्घन',
value: 'copyvio',
tooltip: 'या त: (१) पृष्ठमा राखिएको सामग्रीले प्रतिलिपि अधिकार उल्लङ्घन गरेको; (२) यो मापदण्ड त्यस्ता पृष्ठहरूमाथि लागू हुन्छ जुन पृष्ठमा सोझै कुनै व्यावसायिक वेबसाइट, ब्लग अथवा पत्रिकाबाट सामग्री कपी गरेर राखिएको हुन्छ।; वा (३) यदि अन्य कुनै सा१२ मा मापदण्ड जोड्नुपरेमा {{Db-multiple}} ढाँचाको प्रयोग गर्नुपर्नेछ जसले गर्दा हामी प्रतिलिपि अधिकारको अनुमतिमा समय खेर नफाली पृष्ठ मेट्न सकियोस।',
subgroup: [
{
name: 'copyvio_url',
type: 'input',
label: 'यूआरएल (यदि उपलब्ध भएमा): ',
tooltip: 'यदि सामग्री अनलाइनबाट प्रतिलिपि गरिएको थियो भने, "http://" वा "https://" प्रोटोकल सहित यूआरएल यहाँ राख्नुहोस्।',
size: 60
},
{
name: 'copyvio_url2',
type: 'input',
label: 'थप यूआरएल: ',
tooltip: 'वैकल्पिक। "http: //" वा "https: //" को साथ सुरू हुनुपर्छ',
size: 60
},
{
name: 'copyvio_url3',
type: 'input',
label: 'थप यूआरएल: ',
tooltip: 'वैकल्पिक। "http: //" वा "https: //" को साथ सुरू हुनुपर्छ',
size: 60
}
]
},
{
label: 'सा१३: ६ महिना बढीको मस्यौदा नामस्थानको पृष्ठ वा लेख सृजनाको प्रयोगकर्ता स्थानको लेख',
value: 'afc',
tooltip: 'या त मस्यौदा नामस्थानको एक पृष्ठ, लेख सृजनाको अस्वीकृत/पेश नगरिएको प्रयोगकर्ता स्थानको लेख, वा लेख विजार्ड पाठ बाहेक सामग्री नभएको कुनै नामस्थानको मस्यौदा जुन ६ महिना सम्म पनि सम्पादन नगरिएको',
hideWhenRedirect: true,
showInNamespaces: [2, 118] // प्रयोगकर्ता, मस्यौदा नामस्थानहरू मात्र
},
{
label: 'सा१४: अनावश्यक अस्पष्ट पृष्ठहरू',
value: 'disambig',
tooltip: 'अस्पष्ट पृष्ठहरू अथवा यसको शीर्षकको बावजूद विकिपिडियामा अवस्थित नगन्य पृष्ठहरू'
}
];
 
Twinkle.speedy.redirectList = [
{
label: 'अ२: श्रेणी:, ढाँचा:, विकिपिडिया:, मद्दत: र पोर्टल: नामस्थान बाहेक मुख्य/लेख नामस्थानबाट अन्य कुनै नामस्थानमा गरिएको अनुप्रेषण',
value: 'rediruser',
tooltip: 'यसमा विकिपिडियाका सङ्क्षिप्त रूप-नामस्थानहरू समावेश हुँदैनन्। यदि यो पृष्ठ सार्दाको नतिजा हो भने, अनुप्रेषण मेटाउनु अघि एक वा दुई दिन पर्खनुहोस्।',
showInNamespaces: [ 0 ]
},
{
label: 'अ३: लेखन् त्रुटि',
value: 'redirtypo',
tooltip: 'यद्यपि, सामान्य गलत हिज्जे, व्याकरण/भाषा वा गलत नामका कारणले सृजना भएको, लेख सारिएको, जसको परिणाम स्वरूप लेख पुन:सृजना भएको अनुप्रेषित पृष्ठहरूमा लागू हुन्छ।'
},
{
label: 'अ४: कमन्स पृष्ठसँग मेल खाने फाइल नामस्थानमा गरिएको अनुप्रेषण',
value: 'redircom',
tooltip: 'अनुप्रेषणसँग आउने सूत्रहरू हुनुहुँदैन (जबसम्म सूत्रहरू फाइलको लागि स्पष्ट नभएसम्म वा कमन्समा अनुप्रेषण नहुँदासम्म)।',
showInNamespaces: [ 6 ]
},
{
label: 'सा६: गलतस्थानको अस्पष्ट पृष्ठको अनुप्रेषण',
value: 'movedab',
tooltip: 'यो केवल अस्पष्ट पृष्ठहरूको अन्तमा (स्पष्टता) हुँने अनुप्रेषणको लागि लागू हुन्छ जहाँ प्राथमिक शीर्षक अवस्थित हुँदैन।',
hideWhenMultiple: true
},
{
label: 'सा८: गैर-अस्तित्वहीन लक्ष्यका अनुप्रेषणहरू',
value: 'redirnone',
tooltip: 'विकिपिडियाको लागि उपयोगी पृष्ठहरू, जस्तै प्रयोगकर्ता उपपृष्ठहरू र वार्ता पृष्ठहरू, वार्ता पृष्ठ अभिलेखहरू, भविष्यको लेखका लागि जानकारी, लेख सृजनाका मस्यौदाहरू, आदि यो मापदण्डमा पर्दैनन्।',
hideWhenMultiple: true
}
];
 
Twinkle.speedy.normalizeHash = {
'reason': 'शीमे',
'nonsense': 'सा१',
'test': 'सा२',
'vandalism': 'सा३',
'hoax': 'सा३',
'repost': 'सा४',
'banned': 'सा५',
'move': 'सा६',
'xfd': 'सा६',
'movedab': 'सा६',
'copypaste': 'सा६',
'g6': 'सा६',
'author': 'सा७',
'g8': 'सा८',
'talk': 'सा८',
'subpage': 'सा८',
'redirnone': 'सा८',
'templatecat': 'सा८',
'imagepage': 'सा८',
'attack': 'सा१०',
'negublp': 'सा१०',
'spam': 'सा११',
'spamuser': 'सा११',
'copyvio': 'सा१२',
'afc': 'सा१३',
'disambig': 'सा१४',
'nocontext': 'ले१',
'foreign': 'ले२',
'nocontent': 'ले३',
'transwiki': 'ले५',
'a7': 'ले७',
'person': 'ले७',
'corp': 'ले७',
'web': 'ले७',
'band': 'ले७',
'club': 'ले७',
'animal': 'ले७',
'event': 'ले७',
'a9': 'ले९',
'a10': 'ले१०',
'madeup': 'ले१२',
'rediruser': 'अ२',
'redirtypo': 'अ३',
'redircom': 'अ४',
'redundantimage': 'फा१',
'noimage': 'फा२',
'fpcfail': 'फा२',
'noncom': 'फा३',
'unksource': 'फा४',
'unfree': 'फा५',
'f5': 'फा५',
'norat': 'फा६',
'badfairuse': 'फा७',
'commons': 'फा८',
'imgcopyvio': 'फा९',
'badfiletype': 'फा१०',
'nopermission': 'फा११',
'catempty': 'श्रे१',
'userreq': 'प्र१',
'nouser': 'प्र२',
'gallery': 'प्र३',
'notwebhost': 'प्र५',
'policy': 'ढाँ२',
'duplicatetemplate': 'ढाँ३',
'p1': 'पो१',
'emptyportal': 'पो२'
};
 
Twinkle.speedy.callbacks = {
getTemplateCodeAndParams: function(params) {
var code, parameters, i;
if (params.normalizeds.length > 1) {
code = '{{db-multiple';
params.utparams = {};
$.each(params.normalizeds, function(index, norm) {
code += '|' + norm.toUpperCase();
parameters = params.templateParams[index] || [];
for (var i in parameters) {
if (typeof parameters[i] === 'string' && !parseInt(i, 10)) { // skip numeric parameters - {{db-multiple}} doesn't understand them
code += '|' + i + '=' + parameters[i];
}
}
$.extend(params.utparams, Twinkle.speedy.getUserTalkParameters(norm, parameters));
});
code += '}}';
} else {
parameters = params.templateParams[0] || [];
code = '{{db-' + params.values[0];
for (i in parameters) {
if (typeof parameters[i] === 'string') {
code += '|' + i + '=' + parameters[i];
}
}
if (params.usertalk) {
code += '|help=off';
}
code += '}}';
params.utparams = Twinkle.speedy.getUserTalkParameters(params.normalizeds[0], parameters);
}
 
return [code, params.utparams];
},
 
parseWikitext: function(wikitext, callback) {
var query = {
action: 'parse',
prop: 'text',
pst: 'true',
text: wikitext,
contentmodel: 'wikitext',
title: mw.config.get('wgPageName')
};
 
var statusIndicator = new Morebits.status('मेटाउने सारांश निर्माण गर्दै');
var api = new Morebits.wiki.api('मेटाउने ढाँचा पदवर्णन गर्दै', query, function(apiObj) {
var reason = decodeURIComponent($(apiObj.getXML().querySelector('text').childNodes[0].nodeValue).find('#delete-reason').text()).replace(/\+/g, ' ');
if (!reason) {
statusIndicator.warn('मेटाउने ढाँचाबाट सारांश उत्पन्न गर्न असमर्थ');
} else {
statusIndicator.info('complete');
}
callback(reason);
}, statusIndicator);
api.post();
},
 
noteToCreator: function(pageobj) {
var params = pageobj.getCallbackParameters();
var initialContrib = pageobj.getCreator();
 
// disallow notifying yourself
if (initialContrib === mw.config.get('wgUserName')) {
Morebits.status.warn('तपाईँले नै यो (' + initialContrib + ') पृष्ठ सृजना गर्नुभयो; प्रयोगकर्ता सूचना रद्द गर्दै');
initialContrib = null;
 
// don't notify users when their user talk page is nominated/deleted
} else if (initialContrib === mw.config.get('wgTitle') && mw.config.get('wgNamespaceNumber') === 3) {
Morebits.status.warn('प्रारम्भिक योगदानकर्तालाई सूचित गर्दै: यो प्रयोगकर्ताले आफ्नै प्रयोगकर्ता वार्ता पृष्ठ सृजना गर्दैहुनुहुन्छ; सूचना रद्द गर्दै');
initialContrib = null;
 
// quick hack to prevent excessive unwanted notifications, per request. Should actually be configurable on recipient page...
} else if ((initialContrib === 'Cyberbot I' || initialContrib === 'SoxBot') && params.normalizeds[0] === 'f2') {
Morebits.status.warn('प्रारम्भिक योगदानकर्तालाई सूचित गर्दै: पृष्ठ बोटद्वारा प्रक्रियागत बनाइयो; सूचना रद्द गर्दै');
initialContrib = null;
 
// Check for already existing tags
} else if (Twinkle.speedy.hasCSD && params.warnUser && !confirm('पृष्ठसँग मेटाउने सम्बन्धित चिनो छ, र यसैले सृजनाकर्तालाई सूचित गरिएको हुन सक्छ। के तपाईँ तिनीहरूलाई यो मेटाईका लागि सूचित गर्न चाहानुहुन्छ?')) {
Morebits.status.info('प्रारम्भिक योगदानकर्तालाई सूचित गर्दै', 'प्रयोगकर्ताद्वारा रद्द गरियो; सूचना रद्द गर्दै।');
initialContrib = null;
}
 
if (initialContrib) {
var usertalkpage = new Morebits.wiki.page('User talk:' + initialContrib, 'प्रारम्भिक योगदानकर्तालाई सूचित गर्दै (' + initialContrib + ')'),
notifytext, i, editsummary;
 
// special cases: "db" and "db-multiple"
if (params.normalizeds.length > 1) {
notifytext = '\n{{subst:db-' + (params.warnUser ? 'deleted' : 'notice') + '-multiple|1=' + Morebits.pageNameNorm;
var count = 2;
$.each(params.normalizeds, function(index, norm) {
notifytext += '|' + count++ + '=' + norm.toUpperCase();
});
} else if (params.normalizeds[0] === 'db') {
notifytext = '\n{{subst:db-reason-' + (params.warnUser ? 'deleted' : 'notice') + '|1=' + Morebits.pageNameNorm;
} else {
notifytext = '\n{{subst:db-csd-' + (params.warnUser ? 'deleted' : 'notice') + '-custom|1=';
if (params.values[0] === 'copypaste') {
notifytext += params.templateParams[0].sourcepage;
} else {
notifytext += Morebits.pageNameNorm;
}
notifytext += '|2=' + params.values[0];
}
 
for (i in params.utparams) {
if (typeof params.utparams[i] === 'string') {
notifytext += '|' + i + '=' + params.utparams[i];
}
}
notifytext += (params.welcomeuser ? '' : '|nowelcome=yes') + '}} ~~~~';
 
editsummary = 'अधिसूचना: शीघ्र मेटाउने' + (params.warnUser ? '' : ' नामाङ्कन');
if (params.normalizeds.indexOf('g10') === -1) { // no article name in summary for G10 taggings
editsummary += ' [[:' + Morebits.pageNameNorm + ']]।';
} else {
editsummary += ' एक आक्रमण पृष्ठ।';
}
 
usertalkpage.setAppendText(notifytext);
usertalkpage.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
usertalkpage.setCreateOption('recreate');
usertalkpage.setFollowRedirect(true);
usertalkpage.append(function onNotifySuccess() {
// add this nomination to the user's userspace log, if the user has enabled it
if (params.lognomination) {
Twinkle.speedy.callbacks.user.addToLog(params, initialContrib);
}
}, function onNotifyError() {
// if user could not be notified, log nomination without mentioning that notification was sent
if (params.lognomination) {
Twinkle.speedy.callbacks.user.addToLog(params, null);
}
});
} else if (params.lognomination) {
// log nomination even if the user notification wasn't sent
Twinkle.speedy.callbacks.user.addToLog(params, null);
}
},
 
sysop: {
main: function(params) {
var reason;
if (!params.normalizeds.length && params.normalizeds[0] === 'db') {
reason = prompt('मेटाउनको लागि सारांश हाल्नुहोस्, जुन मेटाउने लगमा प्रविष्टि हुनेछ:', '');
Twinkle.speedy.callbacks.sysop.deletePage(reason, params);
} else {
var code = Twinkle.speedy.callbacks.getTemplateCodeAndParams(params)[0];
Twinkle.speedy.callbacks.parseWikitext(code, function(reason) {
if (params.promptForSummary) {
reason = prompt('मेटाउनको लागि सारांश हाल्नुहोस्, वा स्वचालित रूपमा उत्पन्न भएको स्वीकार गर्न ठीक थिच्नुहोस्।', reason);
}
Twinkle.speedy.callbacks.sysop.deletePage(reason, params);
});
}
},
deletePage: function(reason, params) {
var thispage = new Morebits.wiki.page(mw.config.get('wgPageName'), 'पृष्ठ मेटाउँदै');
 
if (reason === null) {
return Morebits.status.error('कारण माग्दै', 'प्रयोगकर्ताद्वारा रद्द गरियो');
} else if (!reason || !reason.replace(/^\s*/, '').replace(/\s*$/, '')) {
return Morebits.status.error('कारण माग्दै', "तपाईँले एउटा दिनुभएन। मलाई थाहा छैन... प्रशासकहरू र उनीहरूको उदासीन एन्टिक्सको साथ के... मैले छाडिदिए...");
}
 
var deleteMain = function(callback) {
thispage.setEditSummary(reason + Twinkle.getPref('deletionSummaryAd'));
thispage.deletePage(function() {
thispage.getStatusElement().info('done');
typeof callback === 'function' && callback();
Twinkle.speedy.callbacks.sysop.deleteTalk(params);
});
};
 
// look up initial contributor. If prompting user for deletion reason, just display a link.
// Otherwise open the talk page directly
if (params.warnUser) {
thispage.setCallbackParameters(params);
thispage.lookupCreation(function(pageobj) {
deleteMain(function() {
Twinkle.speedy.callbacks.noteToCreator(pageobj);
});
});
} else {
deleteMain();
}
},
deleteTalk: function(params) {
// delete talk page
if (params.deleteTalkPage &&
params.normalized !== 'f8' &&
document.getElementById('ca-talk').className !== 'new') {
var talkpage = new Morebits.wiki.page(mw.config.get('wgFormattedNamespaces')[mw.config.get('wgNamespaceNumber') + 1] + ':' + mw.config.get('wgTitle'), 'वार्ता पृष्ठ मेटाइँदै');
talkpage.setEditSummary('[[वि:शीमे#सा८|सा८]]: मेटाइएको पृष्ठको वार्ता पृष्ठ "' + Morebits.pageNameNorm + '"' + Twinkle.getPref('deletionSummaryAd'));
talkpage.deletePage();
// this is ugly, but because of the architecture of wiki.api, it is needed
// (otherwise success/failure messages for the previous action would be suppressed)
window.setTimeout(function() {
Twinkle.speedy.callbacks.sysop.deleteRedirects(params);
}, 1800);
} else {
Twinkle.speedy.callbacks.sysop.deleteRedirects(params);
}
},
deleteRedirects: function(params) {
// delete redirects
if (params.deleteRedirects) {
var query = {
'action': 'query',
'titles': mw.config.get('wgPageName'),
'prop': 'redirects',
'rdlimit': 'max' // 500 is max for normal users, 5000 for bots and sysops
};
var wikipedia_api = new Morebits.wiki.api('अनुप्रेषणहरूको सूची प्राप्त गर्दै...', query, Twinkle.speedy.callbacks.sysop.deleteRedirectsMain,
new Morebits.status('अनुप्रेषित पृष्ठ मेटाइँदै'));
wikipedia_api.params = params;
wikipedia_api.post();
}
 
// promote Unlink tool
var $link, $bigtext;
if (mw.config.get('wgNamespaceNumber') === 6 && params.normalized !== 'f8') {
$link = $('<a/>', {
'href': '#',
'text': 'सूत्रतोड उपकरणमा जान यहाँ क्लिक गर्नुहोस्',
'css': { 'fontSize': '130%', 'fontWeight': 'bold' },
'click': function() {
Morebits.wiki.actionCompleted.redirect = null;
Twinkle.speedy.dialog.close();
Twinkle.unlink.callback('मेटाइएका फाइलहरूको उपयोग र/वा सूत्रहरू हटाउँदै ' + Morebits.pageNameNorm);
}
});
$bigtext = $('<span/>', {
'text': 'अगाडीकोसूत्रलाई हटाउन र फाइल उपयोगका उदाहरणहरू हटाउन',
'css': { 'fontSize': '130%', 'fontWeight': 'bold' }
});
Morebits.status.info($bigtext[0], $link[0]);
} else if (params.normalized !== 'f8') {
$link = $('<a/>', {
'href': '#',
'text': 'सूत्रतोड उपकरणमा जान यहाँ क्लिक गर्नुहोस्',
'css': { 'fontSize': '130%', 'fontWeight': 'bold' },
'click': function() {
Morebits.wiki.actionCompleted.redirect = null;
Twinkle.speedy.dialog.close();
Twinkle.unlink.callback('मेटाइएको पृष्ठको सूत्र हटाउँदै ' + Morebits.pageNameNorm);
}
});
$bigtext = $('<span/>', {
'text': 'अगाडीकोसूत्रलाई हटाउन',
'css': { 'fontSize': '130%', 'fontWeight': 'bold' }
});
Morebits.status.info($bigtext[0], $link[0]);
}
},
deleteRedirectsMain: function(apiobj) {
var xmlDoc = apiobj.getXML();
var $snapshot = $(xmlDoc).find('redirects rd');
var total = $snapshot.length;
var statusIndicator = apiobj.statelem;
 
if (!total) {
statusIndicator.status('कुनै अनुप्रेषण फेला परेन');
return;
}
 
statusIndicator.status('0%');
 
var current = 0;
var onsuccess = function(apiobjInner) {
var now = parseInt(100 * ++current / total, 10) + '%';
statusIndicator.update(now);
apiobjInner.statelem.unlink();
if (current >= total) {
statusIndicator.info(now + ' (completed)');
Morebits.wiki.removeCheckpoint();
}
};
 
Morebits.wiki.addCheckpoint();
 
$snapshot.each(function(key, value) {
var title = $(value).attr('title');
var page = new Morebits.wiki.page(title, 'मेटाउँदै अनुप्रेषण "' + title + '"');
page.setEditSummary('[[वि:शीमे#सा८|सा८]]: मेटाइएको पृष्ठको अनुप्रेषण "' + Morebits.pageNameNorm + '"' + Twinkle.getPref('deletionSummaryAd'));
page.deletePage(onsuccess);
});
}
},
 
user: {
main: function(pageobj) {
var statelem = pageobj.getStatusElement();
 
// defaults to /doc for lua modules, which may not exist
if (!pageobj.exists() && mw.config.get('wgPageContentModel') !== 'Scribunto') {
statelem.error("यस्तो देखिन्छ कि पृष्ठ अवस्थित छैन; हुनसक्छ यो पहिले नै हटाईएको छ");
return;
}
 
var text = pageobj.getPageText();
var params = pageobj.getCallbackParameters();
 
statelem.status('पृष्ठमा चिनोहरूको लागि जाँच गर्दै...');
 
// check for existing deletion tags
var tag = /(?:\{\{\s*(db|delete|db-.*?|speedy deletion-.*?)(?:\s*\||\s*\}\}))/.exec(text);
// This won't make use of the db-multiple template but it probably should
if (tag && !confirm('पहिले नै पृष्ठमा {{' + tag[1] + '}} राखिएको छ। के तपाईँ अझै शीघ्र मेटाउने ढाँचा थप्न चाहानुहुन्छ?')) {
return;
}
 
var xfd = /\{\{((?:article for deletion|proposed deletion|prod blp|template for discussion)\/dated|[cfm]fd\b)/i.exec(text) || /#invoke:(RfD)/.exec(text);
if (xfd && !confirm('मेटाउने सम्बद्ध ढाँचा {{' + xfd[1] + '}} पृष्ठमा फेला पर्यो। के तपाईँ अझै शीघ्र मेटाउने ढाँचा थप्न चाहानुहुन्छ?')) {
return;
}
 
// given the params, builds the template and also adds the user talk page parameters to the params that were passed in
// returns => [<string> wikitext, <object> utparams]
var buildData = Twinkle.speedy.callbacks.getTemplateCodeAndParams(params),
code = buildData[0];
params.utparams = buildData[1];
 
// curate/patrol the page
if (Twinkle.getPref('markSpeedyPagesAsPatrolled')) {
pageobj.triage();
}
 
// Wrap SD template in noinclude tags if we are in template space.
// Won't work with userboxes in userspace, or any other transcluded page outside template space
if (mw.config.get('wgNamespaceNumber') === 10) { // Template:
code = '<noinclude>' + code + '</noinclude>';
}
 
// Remove tags that become superfluous with this action
text = text.replace(/\{\{\s*([Uu]serspace draft)\s*(\|(?:\{\{[^{}]*\}\}|[^{}])*)?\}\}\s*/g, '');
if (mw.config.get('wgNamespaceNumber') === 6) {
// remove "move to Commons" tag - deletion-tagged files cannot be moved to Commons
text = text.replace(/\{\{(mtc|(copy |move )?to ?commons|move to wikimedia commons|copy to wikimedia commons)[^}]*\}\}/gi, '');
}
 
if (params.requestsalt) {
if (params.normalizeds.indexOf('g10') === -1) {
code = code + '\n{{salt}}';
} else {
code = '{{salt}}\n' + code;
}
}
 
// Generate edit summary for edit
var editsummary;
if (params.normalizeds.length > 1) {
editsummary = 'शीघ्र मेटाउन अनुरोध गरिँदै (';
$.each(params.normalizeds, function(index, norm) {
editsummary += '[[वि:शीमे#' + norm.toUpperCase() + '|शीमे ' + norm.toUpperCase() + ']], ';
});
editsummary = editsummary.substr(0, editsummary.length - 2); // remove trailing comma
editsummary += ').';
} else if (params.normalizeds[0] === 'db') {
editsummary = 'कारणका साथ [[वि:शीमे|शीघ्र मेटाउन]] अनुरोध गरिँदै "' + params.templateParams[0]['1'] + '"।';
} else {
editsummary = 'शीघ्र मेटाउन अनुरोध गरिँदै ([[वि:शीमे#' + params.normalizeds[0].toUpperCase() + '|शीमे ' + params.normalizeds[0].toUpperCase() + ']])।';
}
 
pageobj.setPageText(code + (params.normalizeds.indexOf('g10') !== -1 ? '' : '\n' + text)); // cause attack pages to be blanked
pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
pageobj.setWatchlist(params.watch);
if (params.scribunto) {
pageobj.setCreateOption('recreate'); // Module /doc might not exist
if (params.watch) {
// Watch module in addition to /doc subpage
var watch_query = {
action: 'watch',
titles: mw.config.get('wgPageName'),
token: mw.user.tokens.get('watchToken')
};
new Morebits.wiki.api('मोड्युललाई अवलोकन सूचीमा थप्दै', watch_query).post();
}
}
pageobj.save(Twinkle.speedy.callbacks.user.tagComplete);
},
 
tagComplete: function(pageobj) {
var params = pageobj.getCallbackParameters();
 
// Notification to first contributor, will also log nomination to the user's userspace log
if (params.usertalk) {
var thispage = new Morebits.wiki.page(Morebits.pageNameNorm);
thispage.setCallbackParameters(params);
thispage.lookupCreation(Twinkle.speedy.callbacks.noteToCreator);
// or, if not notifying, add this nomination to the user's userspace log without the initial contributor's name
} else if (params.lognomination) {
Twinkle.speedy.callbacks.user.addToLog(params, null);
}
},
 
// note: this code is also invoked from twinkleimage
// the params used are:
// for CSD: params.values, params.normalizeds (note: normalizeds is an array)
// for DI: params.fromDI = true, params.templatename, params.normalized (note: normalized is a string)
addToLog: function(params, initialContrib) {
var wikipedia_page = new Morebits.wiki.page('User:' + mw.config.get('wgUserName') + '/' + Twinkle.getPref('speedyLogPageName'), 'Adding entry to userspace log');
params.logInitialContrib = initialContrib;
wikipedia_page.setCallbackParameters(params);
wikipedia_page.load(Twinkle.speedy.callbacks.user.saveLog);
},
 
saveLog: function(pageobj) {
var text = pageobj.getPageText();
var params = pageobj.getCallbackParameters();
 
var appendText = '';
 
// add blurb if log page doesn't exist
if (!pageobj.exists()) {
appendText +=
"यो [[वि:ट्विङ्कल|ट्विङ्कल]]को शीमे मोड्युल प्रयोग गरि यस प्रयोगकर्ताद्वारा बनाईएको सबै [[वि:शीमे|शीघ्र हटाउने]] नामाङ्कनहरूको लग हो।\n\n" +
'यदि तपाइँ अब यो लग राख्न चाहनुहुन्न भने, यसलाई [[विकिपिडिया:ट्विङ्कल/अभिरुचिहरू|अभिरुचि सूची]] प्रयोग गरेर बन्द गर्न सक्नुहुनेछ, र ' +
'यस पृष्ठलाई [[वि:शीमे#प्र१|शीमे प्र१]] अन्तर्गत शीघ्र मेटाउनको लागि नामाङ्कन गर्नुहोस्।';
if (Morebits.userIsSysop) {
appendText += '\n\nयो लगले ट्विङ्कलको प्रयोग गरी शीघ्र मेटाइएका लग ट्रयाक गर्दैन।';
}
}
 
// create monthly header
var date = new Morebits.date(pageobj.getLoadTime());
if (!date.monthHeaderRegex().test(text)) {
appendText += '\n\n' + date.monthHeader(3);
}
 
var formatParamLog = function(normalize, csdparam, input) {
if ((normalize === 'सा४' && csdparam === 'xfd') ||
(normalize === 'सा६' && csdparam === 'page') ||
(normalize === 'सा६' && csdparam === 'fullvotepage') ||
(normalize === 'सा६' && csdparam === 'sourcepage') ||
(normalize === 'ले२' && csdparam === 'source') ||
(normalize === 'ले१०' && csdparam === 'article') ||
(normalize === 'फा१' && csdparam === 'filename') ||
(normalize === 'फा५' && csdparam === 'replacement')) {
input = '[[:' + input + ']]';
} else if (normalize === 'सा५' && csdparam === 'user') {
input = '[[:User:' + input + ']]';
} else if (normalize === 'सा१२' && csdparam.lastIndexOf('url', 0) === 0 && input.lastIndexOf('http', 0) === 0) {
input = '[' + input + ' ' + input + ']';
} else if (normalize === 'ढाँ३' && csdparam === 'template') {
input = '[[:Template:' + input + ']]';
} else if (normalize === 'फा८' && csdparam === 'filename') {
input = '[[commons:' + input + ']]';
} else if (normalize === 'पो१' && csdparam === 'criterion') {
input = '[[वि:शीमे#' + input + ']]';
}
return ' {' + normalize + ' ' + csdparam + ': ' + input + '}';
};
 
var extraInfo = '';
 
// If a logged file is deleted but exists on commons, the wikilink will be blue, so provide a link to the log
var fileLogLink = mw.config.get('wgNamespaceNumber') === 6 ? ' ([{{fullurl:Special:Log|page=' + mw.util.wikiUrlencode(mw.config.get('wgPageName')) + '}} लग])' : '';
 
var editsummary = 'शीघ्र मेटाउने नामाङ्कनको लग बनाउँदै';
appendText += '\n# [[:' + Morebits.pageNameNorm;
 
if (params.fromDI) {
appendText += ']]' + fileLogLink + ': डीआई [[वि:शीमे#' + params.normalized.toUpperCase() + '|शीमे ' + params.normalized.toUpperCase() + ']] ({{tl|di-' + params.templatename + '}})';
// The params data structure when coming from DI is quite different,
// so this hardcodes the only interesting items worth logging
['reason', 'replacement', 'source'].forEach(function(item) {
if (params[item]) {
extraInfo += formatParamLog(params.normalized.toUpperCase(), item, params[item]);
return false;
}
});
editsummary += ' [[:' + Morebits.pageNameNorm + ']]।';
} else {
if (params.normalizeds.indexOf('g10') === -1) { // no article name in log for G10 taggings
appendText += ']]' + fileLogLink + ': ';
editsummary += ' [[:' + Morebits.pageNameNorm + ']]।';
} else {
appendText += '|यो]] आक्रमण पृष्ठ' + fileLogLink + ': ';
editsummary += ' एक आक्रमण पृष्ठ।';
}
if (params.normalizeds.length > 1) {
appendText += 'multiple criteria (';
$.each(params.normalizeds, function(index, norm) {
appendText += '[[वि:शीमे#' + norm.toUpperCase() + '|' + norm.toUpperCase() + ']], ';
});
appendText = appendText.substr(0, appendText.length - 2); // remove trailing comma
appendText += ')';
} else if (params.normalizeds[0] === 'db') {
appendText += '{{tl|db-reason}}';
} else {
appendText += '[[वि:शीमे#' + params.normalizeds[0].toUpperCase() + '|शीमे ' + params.normalizeds[0].toUpperCase() + ']] ({{tl|db-' + params.values[0] + '}})';
}
 
// If params is "empty" it will still be full of empty arrays, but ask anyway
if (params.templateParams) {
// Treat custom rationale individually
if (params.normalizeds[0] && params.normalizeds[0] === 'db') {
extraInfo += formatParamLog('अनुकूलन', 'rationale', params.templateParams[0]['1']);
} else {
params.templateParams.forEach(function(item, index) {
var keys = Object.keys(item);
if (keys[0] !== undefined && keys[0].length > 0) {
// Second loop required since some items (G12, F9) may have multiple keys
keys.forEach(function(key, keyIndex) {
if (keys[keyIndex] === 'blanked' || keys[keyIndex] === 'ts') {
return true; // Not worth logging
}
extraInfo += formatParamLog(params.normalizeds[index].toUpperCase(), keys[keyIndex], item[key]);
});
}
});
}
}
}
 
if (params.requestsalt) {
appendText += '; निर्माण संरक्षण (साल्टिङ) अनुरोध गरिएको';
}
if (extraInfo) {
appendText += '; थप जानकारी:' + extraInfo;
}
if (params.logInitialContrib) {
appendText += '; सूचित गरियो {{user|1=' + params.logInitialContrib + '}}';
}
appendText += ' ~~~~~\n';
 
pageobj.setAppendText(appendText);
pageobj.setEditSummary(editsummary + Twinkle.getPref('summaryAd'));
pageobj.setCreateOption('recreate');
pageobj.append();
}
}
};
 
// validate subgroups in the form passed into the speedy deletion tag
Twinkle.speedy.getParameters = function twinklespeedyGetParameters(form, values) {
var parameters = [];
 
$.each(values, function(index, value) {
var currentParams = [];
switch (value) {
case 'reason':
if (form['csd.reason_1']) {
var dbrationale = form['csd.reason_1'].value;
if (!dbrationale || !dbrationale.trim()) {
alert('अनुकूलन कारण: कृपया एउटा कारण खुलाउनुहोस्।');
parameters = null;
return false;
}
currentParams['1'] = dbrationale;
}
break;
 
case 'userreq': // प्र१
if (form['csd.userreq_rationale']) {
var u1rationale = form['csd.userreq_rationale'].value;
if (mw.config.get('wgNamespaceNumber') === 3 && !(/\//).test(mw.config.get('wgTitle')) &&
(!u1rationale || !u1rationale.trim())) {
alert('शीमे प्र१: कृपया प्रयोगकर्ता वार्ता पृष्ठहरू नामाङ्कन गर्दा कारण खुलाउनुहोस्।');
parameters = null;
return false;
}
currentParams.rationale = u1rationale;
}
break;
 
case 'repost': // सा४
if (form['csd.repost_xfd']) {
var deldisc = form['csd.repost_xfd'].value;
if (deldisc) {
if (!/^(?:wp|wikipedia):/i.test(deldisc)) {
alert('शीमे सा४: मेटाउने छलफल पृष्ठको नाम, यदि प्रदान गरिएमा, "विकिपिडिया:" सँग सुरू हुनुपर्छ।');
parameters = null;
return false;
}
currentParams.xfd = deldisc;
}
}
break;
 
case 'banned': // सा५
if (form['csd.banned_user'] && form['csd.banned_user'].value) {
currentParams.user = form['csd.banned_user'].value.replace(/^\s*User:/i, '');
}
break;
 
case 'move': // सा६
if (form['csd.move_page'] && form['csd.move_reason']) {
var movepage = form['csd.move_page'].value,
movereason = form['csd.move_reason'].value;
if (!movepage || !movepage.trim()) {
alert('शीमे सा६ (सार्ने): कृपया सार्ने पृष्ठलाई यहाँ निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
if (!movereason || !movereason.trim()) {
alert('शीमे सा६ (सार्ने): कृपया पृष्ठलाई सार्ने कारण यहाँ निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.page = movepage;
currentParams.reason = movereason;
}
break;
 
case 'xfd': // सा६
if (form['csd.xfd_fullvotepage']) {
var xfd = form['csd.xfd_fullvotepage'].value;
if (xfd) {
if (!/^(?:wp|wikipedia):/i.test(xfd)) {
alert('शीमे सा६ (पृहनी): मेटाउने छलफल पृष्ठको नाम, यदि प्रदान गरिएमा, "विकिपिडिया:" सँग सुरू हुनुपर्छ।');
parameters = null;
return false;
}
currentParams.fullvotepage = xfd;
}
}
break;
 
case 'copypaste': // सा६
if (form['csd.copypaste_sourcepage']) {
var copypaste = form['csd.copypaste_sourcepage'].value;
if (!copypaste || !copypaste.trim()) {
alert('शीमे सा६ (प्रतिलिपिसाभार): कृपया स्रोत पृष्ठको नाम निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.sourcepage = copypaste;
}
break;
 
case 'g6': // सा६
if (form['csd.g6_rationale'] && form['csd.g6_rationale'].value) {
currentParams.rationale = form['csd.g6_rationale'].value;
}
break;
 
case 'author': // सा७
if (form['csd.author_rationale'] && form['csd.author_rationale'].value) {
currentParams.rationale = form['csd.author_rationale'].value;
}
break;
 
case 'g8': // सा८
if (form['csd.g8_rationale'] && form['csd.g8_rationale'].value) {
currentParams.rationale = form['csd.g8_rationale'].value;
}
break;
 
case 'attack': // सा१०
currentParams.blanked = 'yes';
// it is actually blanked elsewhere in code, but setting the flag here
break;
 
case 'copyvio': // सा१२
if (form['csd.copyvio_url'] && form['csd.copyvio_url'].value) {
currentParams.url = form['csd.copyvio_url'].value;
}
if (form['csd.copyvio_url2'] && form['csd.copyvio_url2'].value) {
currentParams.url2 = form['csd.copyvio_url2'].value;
}
if (form['csd.copyvio_url3'] && form['csd.copyvio_url3'].value) {
currentParams.url3 = form['csd.copyvio_url3'].value;
}
break;
 
case 'afc': // सा१३
var query = {
action: 'query',
titles: mw.config.get('wgPageName'),
prop: 'revisions',
rvprop: 'timestamp'
},
api = new Morebits.wiki.api('पछिल्लो संशोधनको समय लिदै', query, function(apiobj) {
var xmlDoc = apiobj.getXML(),
isoDateString = $(xmlDoc).find('rev').attr('timestamp');
 
currentParams.ts = isoDateString;
});
 
// Wait for API call to finish
api.post({
async: false
});
 
break;
 
case 'redundantimage': // फा१
if (form['csd.redundantimage_filename']) {
var redimage = form['csd.redundantimage_filename'].value;
if (!redimage || !redimage.trim()) {
alert('शीमे फा१: कृपया अर्को फाइलको फाइलनाम निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.filename = /^\s*(Image|File):/i.test(redimage) ? redimage : 'File:' + redimage;
}
break;
 
case 'badfairuse': // फा७
if (form['csd.badfairuse_rationale'] && form['csd.badfairuse_rationale'].value) {
currentParams.rationale = form['csd.badfairuse_rationale'].value;
}
break;
 
case 'commons': // फा८
if (form['csd.commons_filename']) {
var filename = form['csd.commons_filename'].value;
if (filename && filename.trim() && filename !== Morebits.pageNameNorm) {
currentParams.filename = /^\s*(Image|File):/i.test(filename) ? filename : 'File:' + filename;
}
}
break;
 
case 'imgcopyvio': // फा९
if (form['csd.imgcopyvio_url'] && form['csd.imgcopyvio_rationale']) {
var f9url = form['csd.imgcopyvio_url'].value;
var f9rationale = form['csd.imgcopyvio_rationale'].value;
if ((!f9url || !f9url.trim()) && (!f9rationale || !f9rationale.trim())) {
alert('शीमे फा९: फा९ अन्तर्गत फाइल नामाङ्कन गर्दा तपाईँले यूआरएल वा कारण (वा दुबै) प्रविष्ट गर्नुपर्नेछ।');
parameters = null;
return false;
}
if (form['csd.imgcopyvio_url'].value) {
currentParams.url = f9url;
}
if (form['csd.imgcopyvio_rationale'].value) {
currentParams.rationale = f9rationale;
}
}
break;
 
case 'foreign': // ले२
if (form['csd.foreign_source']) {
var foreignlink = form['csd.foreign_source'].value;
if (!foreignlink || !foreignlink.trim()) {
alert('शीमे ले२: कृपया यो लेखको प्रतिलिपिको इन्टरविकि सूत्र निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.source = foreignlink;
}
break;
 
case 'transwiki': // ले५
if (form['csd.transwiki_location'] && form['csd.transwiki_location'].value) {
currentParams.location = form['csd.transwiki_location'].value;
}
break;
 
case 'a10': // ले१०
if (form['csd.a10_article']) {
var duptitle = form['csd.a10_article'].value;
if (!duptitle || !duptitle.trim()) {
alert('शीमे ले१०: कृपया नक्कल गरिएको लेखको नाम निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.article = duptitle;
}
break;
 
case 'policy': // ढाँ२
if (form['csd.policy_rationale'] && form['csd.policy_rationale'].value) {
currentParams.rationale = form['csd.policy_rationale'].value;
}
break;
 
case 'duplicatetemplate': // ढाँ३
if (form['csd.duplicatetemplate_2']) {
var t3template = form['csd.duplicatetemplate_2'].value;
if (!t3template || !t3template.trim()) {
alert('शीमे ढाँ३: कृपया नक्कल गरिएको ढाँचाको नाम निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.ts = '~~~~~';
currentParams.template = t3template.replace(/^\s*Template:/i, '');
}
break;
 
case 'p1': // पो१
if (form['csd.p1_criterion']) {
var criterion = form['csd.p1_criterion'].value;
if (!criterion || !criterion.trim()) {
alert('शीमे पो१: एक मापदण्ड र/वा सम्बन्धित कारण निर्दिष्ट गर्नुहोस्।');
parameters = null;
return false;
}
currentParams.criterion = criterion;
}
break;
 
default:
break;
}
parameters.push(currentParams);
});
return parameters;
};
 
// Function for processing talk page notification template parameters
// key1/value1: for {{db-criterion-[notice|deleted]}} (via {{db-csd-[notice|deleted]-custom}})
// utparams.param: for {{db-[notice|deleted]-multiple}}
Twinkle.speedy.getUserTalkParameters = function twinklespeedyGetUserTalkParameters(normalized, parameters) {
var utparams = [];
 
// Special cases
if (normalized === 'db') {
utparams['2'] = parameters['1'];
} else if (normalized === 'g6') {
utparams.key1 = 'to';
utparams.value1 = Morebits.pageNameNorm;
} else if (normalized === 'g12') {
['url', 'url2', 'url3'].forEach(function(item, idx) {
if (parameters[item]) {
idx++;
utparams['key' + idx] = item;
utparams['value' + idx] = utparams[item] = parameters[item];
}
});
} else {
// Handle the rest
var param;
switch (normalized) {
case 'g4':
param = 'xfd';
break;
case 'a2':
param = 'source';
break;
case 'a5':
param = 'location';
break;
case 'a10':
param = 'article';
break;
case 'f9':
param = 'url';
break;
case 'p1':
param = 'criterion';
break;
default:
break;
}
// No harm in providing a usertalk template with the others' parameters
if (param && parameters[param]) {
utparams.key1 = param;
utparams.value1 = utparams[param] = parameters[param];
}
}
return utparams;
};
 
 
Twinkle.speedy.resolveCsdValues = function twinklespeedyResolveCsdValues(e) {
var values = (e.target.form ? e.target.form : e.target).getChecked('csd');
if (values.length === 0) {
alert('कृपया एउटा मापदण्ड चयन गर्नुहोस्!');
return null;
}
return values;
};
 
Twinkle.speedy.callback.evaluateSysop = function twinklespeedyCallbackEvaluateSysop(e) {
var form = e.target.form ? e.target.form : e.target;
 
if (e.target.type === 'checkbox' || e.target.type === 'text' ||
e.target.type === 'select') {
return;
}
 
var tag_only = form.tag_only;
if (tag_only && tag_only.checked) {
Twinkle.speedy.callback.evaluateUser(e);
return;
}
 
var values = Twinkle.speedy.resolveCsdValues(e);
if (!values) {
return;
}
var templateParams = Twinkle.speedy.getParameters(form, values);
if (!templateParams) {
return;
}
 
var normalizeds = values.map(function(value) {
return Twinkle.speedy.normalizeHash[value];
});
 
// analyse each criterion to determine whether to watch the page, prompt for summary, or notify the creator
var watchPage, promptForSummary;
normalizeds.forEach(function(norm) {
if (Twinkle.getPref('watchSpeedyPages').indexOf(norm) !== -1) {
watchPage = true;
}
if (Twinkle.getPref('promptForSpeedyDeletionSummary').indexOf(norm) !== -1) {
promptForSummary = true;
}
});
 
var warnusertalk = false;
if (form.warnusertalk.checked) {
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('warnUserOnSpeedyDelete').indexOf(norm) !== -1) {
if (norm === 'g6' && values[index] !== 'copypaste') {
return true;
}
warnusertalk = true;
return false; // break
}
});
}
 
var welcomeuser = false;
if (warnusertalk) {
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('welcomeUserOnSpeedyDeletionNotification').indexOf(norm) !== -1) {
welcomeuser = true;
return false; // break
}
});
}
 
var params = {
values: values,
normalizeds: normalizeds,
watch: watchPage,
deleteTalkPage: form.talkpage && form.talkpage.checked,
deleteRedirects: form.redirects.checked,
warnUser: warnusertalk,
welcomeuser: welcomeuser,
promptForSummary: promptForSummary,
templateParams: templateParams
};
 
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(form);
 
Twinkle.speedy.callbacks.sysop.main(params);
};
 
Twinkle.speedy.callback.evaluateUser = function twinklespeedyCallbackEvaluateUser(e) {
var form = e.target.form ? e.target.form : e.target;
 
if (e.target.type === 'checkbox' || e.target.type === 'text' ||
e.target.type === 'select') {
return;
}
 
var values = Twinkle.speedy.resolveCsdValues(e);
if (!values) {
return;
}
var templateParams = Twinkle.speedy.getParameters(form, values);
if (!templateParams) {
return;
}
 
// var multiple = form.multiple.checked;
var normalizeds = [];
$.each(values, function(index, value) {
var norm = Twinkle.speedy.normalizeHash[value];
 
normalizeds.push(norm);
});
 
// analyse each criterion to determine whether to watch the page/notify the creator
var watchPage = false;
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('watchSpeedyPages').indexOf(norm) !== -1) {
watchPage = true;
return false; // break
}
});
 
var notifyuser = false;
if (form.notify.checked) {
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('notifyUserOnSpeedyDeletionNomination').indexOf(norm) !== -1) {
if (norm === 'g6' && values[index] !== 'copypaste') {
return true;
}
notifyuser = true;
return false; // break
}
});
}
 
var welcomeuser = false;
if (notifyuser) {
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('welcomeUserOnSpeedyDeletionNotification').indexOf(norm) !== -1) {
welcomeuser = true;
return false; // break
}
});
}
 
var csdlog = false;
if (Twinkle.getPref('logSpeedyNominations')) {
$.each(normalizeds, function(index, norm) {
if (Twinkle.getPref('noLogOnSpeedyNomination').indexOf(norm) === -1) {
csdlog = true;
return false; // break
}
});
}
 
var params = {
values: values,
normalizeds: normalizeds,
watch: watchPage,
usertalk: notifyuser,
welcomeuser: welcomeuser,
lognomination: csdlog,
requestsalt: form.salting.checked,
templateParams: templateParams
};
 
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(form);
 
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
Morebits.wiki.actionCompleted.notice = 'चिनो लगाउने कार्य सम्पन्न भयो';
 
// Modules can't be tagged, follow standard at TfD and place on /doc subpage
params.scribunto = mw.config.get('wgPageContentModel') === 'Scribunto';
var wikipedia_page = params.scribunto ? new Morebits.wiki.page(mw.config.get('wgPageName') + '/doc', 'मोड्युल दस्तावेज पृष्ठ चिह्नित गर्दै') : new Morebits.wiki.page(mw.config.get('wgPageName'), 'पृष्ठ चिह्नित गर्दै');
wikipedia_page.setCallbackParameters(params);
wikipedia_page.load(Twinkle.speedy.callbacks.user.main);
};
})(jQuery);
 
 
// </nowiki>