Skip to content

Commit 226ec9d

Browse files
authored
Merge branch 'master' into x3
2 parents 9c18499 + 6994d0b commit 226ec9d

25 files changed

+854
-817
lines changed

Diff for: .eslintrc.json

+5-9
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
"array-bracket-spacing": "off",
1515
"camelcase": "off",
1616
"computed-property-spacing": "off",
17+
"indent": "off",
18+
"jsdoc/require-param": "off",
19+
"jsdoc/require-returns": "off",
1720
"max-len": "off",
1821
"no-alert": "off",
1922
"no-jquery/no-class-state": "off",
@@ -24,7 +27,6 @@
2427
"space-before-function-paren": "off",
2528
"space-in-parens": "off",
2629
"template-curly-spacing": "off",
27-
"unicorn/prefer-string-slice": "off",
2830

2931
"no-nested-ternary": "error",
3032
"no-restricted-syntax": [
@@ -41,31 +43,25 @@
4143

4244
"es-x/no-array-prototype-includes": "warn",
4345
"es-x/no-object-values": "warn",
44-
"indent": "off",
45-
"jsdoc/require-asterisk-prefix": "warn",
4646
"mediawiki/class-doc": "warn",
4747
"new-cap": "warn",
4848
"no-jquery/no-constructor-attributes": "warn",
4949
"no-jquery/no-each-util": "warn",
50-
"no-jquery/no-extend": "warn",
5150
"no-jquery/no-grep": "warn",
5251
"no-jquery/no-in-array": "warn",
5352
"no-jquery/no-map-util": "warn",
5453
"no-jquery/no-parse-html-literal": "warn",
5554
"no-jquery/no-sizzle": "warn",
56-
"no-jquery/variable-pattern": "warn",
5755
"no-loop-func": "warn",
5856
"no-new": "warn",
5957
"no-return-assign": "warn",
6058
"no-script-url": "warn",
61-
"no-sequences": "warn",
6259
"no-throw-literal": "warn",
63-
"no-unneeded-ternary": "warn",
6460
"no-unused-expressions": "warn",
6561
"no-use-before-define": "warn",
6662
"no-useless-concat": "warn",
6763
"no-var": "warn",
68-
"operator-linebreak": "warn",
69-
"prefer-const": "warn"
64+
"prefer-const": "warn",
65+
"unicorn/prefer-string-slice": "warn"
7066
}
7167
}

Diff for: gadget.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
* Twinkle [ResourceLoader |dependencies=ext.gadget.morebits, ext.gadget.select2, mediawiki.api, mediawiki.language |rights=autoconfirmed |type=general |peers=Twinkle-pagestyles |requiresES6] |Twinkle.js |Twinkle.css |twinklearv.js |twinklewarn.js |twinkleblock.js |twinklewelcome.js |twinkleshared.js |twinkletalkback.js |twinklespeedy.js |twinkleprod.js |twinklexfd.js |twinkleimage.js |twinkleprotect.js |twinkletag.js |twinklediff.js |twinkleunlink.js |twinklerollback.js |twinkledeprod.js |twinklebatchdelete.js |twinklebatchprotect.js |twinklebatchundelete.js |twinkleconfig.js
2-
* morebits [ResourceLoader |dependencies=mediawiki.user, mediawiki.util, mediawiki.Title, jquery.ui |hidden |requiresES6] |morebits.js |morebits.css
1+
* Twinkle [ResourceLoader |dependencies=ext.gadget.morebits, ext.gadget.select2, mediawiki.api, mediawiki.language |rights=autoconfirmed |type=general |peers=Twinkle-pagestyles] |Twinkle.js |Twinkle.css |twinklearv.js |twinklewarn.js |twinkleblock.js |twinklewelcome.js |twinkleshared.js |twinkletalkback.js |twinklespeedy.js |twinkleprod.js |twinklexfd.js |twinkleimage.js |twinkleprotect.js |twinkletag.js |twinklediff.js |twinkleunlink.js |twinklerollback.js |twinkledeprod.js |twinklebatchdelete.js |twinklebatchprotect.js |twinklebatchundelete.js |twinkleconfig.js
2+
* morebits [ResourceLoader |dependencies=mediawiki.user, mediawiki.util, mediawiki.Title, jquery.ui |hidden] |morebits.js |morebits.css
33
* Twinkle-pagestyles [hidden |skins=vector, vector-2022] |Twinkle-pagestyles.css
44
* select2 [ResourceLoader |hidden] |select2.min.js |select2.min.css

Diff for: modules/twinklearv.js

+53-53
Large diffs are not rendered by default.

Diff for: modules/twinklebatchdelete.js

+42-42
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// <nowiki>
22

3-
(function($) {
3+
(function() {
44

55
/*
66
****************************************
@@ -28,13 +28,13 @@ let subpagesLoaded;
2828

2929
Twinkle.batchdelete.callback = function twinklebatchdeleteCallback() {
3030
subpagesLoaded = false;
31-
const Window = new Morebits.simpleWindow(600, 400);
31+
const Window = new Morebits.SimpleWindow(600, 400);
3232
Window.setTitle('Batch deletion');
3333
Window.setScriptName('Twinkle');
3434
Window.addFooterLink('Twinkle help', 'WP:TW/DOC#batchdelete');
3535
Window.addFooterLink('Give feedback', 'WT:TW');
3636

37-
const form = new Morebits.quickForm(Twinkle.batchdelete.callback.evaluate);
37+
const form = new Morebits.QuickForm(Twinkle.batchdelete.callback.evaluate);
3838
form.append({
3939
type: 'checkbox',
4040
list: [
@@ -158,13 +158,13 @@ Twinkle.batchdelete.callback = function twinklebatchdeleteCallback() {
158158
const statusdiv = document.createElement('div');
159159
statusdiv.style.padding = '15px'; // just so it doesn't look broken
160160
Window.setContent(statusdiv);
161-
Morebits.status.init(statusdiv);
161+
Morebits.Status.init(statusdiv);
162162
Window.display();
163163

164164
Twinkle.batchdelete.pages = {};
165165

166-
const statelem = new Morebits.status('Grabbing list of pages');
167-
const wikipedia_api = new Morebits.wiki.api('loading...', query, ((apiobj) => {
166+
const statelem = new Morebits.Status('Grabbing list of pages');
167+
const wikipedia_api = new Morebits.wiki.Api('loading...', query, ((apiobj) => {
168168
const response = apiobj.getResponse();
169169
let pages = (response.query && response.query.pages) || [];
170170
pages = pages.filter((page) => !page.missing && page.imagerepository !== 'shared');
@@ -178,7 +178,7 @@ Twinkle.batchdelete.callback = function twinklebatchdeleteCallback() {
178178
const editProt = page.protection.filter((pr) => pr.type === 'edit' && pr.level === 'sysop').pop();
179179
if (editProt) {
180180
metadata.push('fully protected' +
181-
(editProt.expiry === 'infinity' ? ' indefinitely' : ', expires ' + new Morebits.date(editProt.expiry).calendar('utc') + ' (UTC)'));
181+
(editProt.expiry === 'infinity' ? ' indefinitely' : ', expires ' + new Morebits.Date(editProt.expiry).calendar('utc') + ' (UTC)'));
182182
}
183183

184184
if (page.ns === 6) {
@@ -232,7 +232,7 @@ Twinkle.batchdelete.callback = function twinklebatchdeleteCallback() {
232232
var result = form.render();
233233
apiobj.params.Window.setContent(result);
234234

235-
Morebits.quickForm.getElements(result, 'pages').forEach(Twinkle.generateArrowLinks);
235+
Morebits.QuickForm.getElements(result, 'pages').forEach(Twinkle.generateArrowLinks);
236236

237237
}), statelem);
238238

@@ -252,7 +252,7 @@ Twinkle.batchdelete.generateNewPageList = function(form) {
252252
Twinkle.batchdelete.pages[elements.value].checked = elements.checked;
253253
}
254254

255-
return new Morebits.quickForm.element({
255+
return new Morebits.QuickForm.Element({
256256
type: 'checkbox',
257257
name: 'pages',
258258
id: 'tw-dbatch-pages',
@@ -286,8 +286,8 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
286286
newPageList = Twinkle.batchdelete.generateNewPageList(form);
287287
$('#tw-dbatch-pages').replaceWith(newPageList);
288288

289-
Morebits.quickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
290-
Morebits.quickForm.getElements(newPageList, 'pages.subpages').forEach(Twinkle.generateArrowLinks);
289+
Morebits.QuickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
290+
Morebits.QuickForm.getElements(newPageList, 'pages.subpages').forEach(Twinkle.generateArrowLinks);
291291

292292
return;
293293
}
@@ -298,7 +298,7 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
298298

299299
const pages = $(form.pages).map((i, el) => el.value).get();
300300

301-
const subpageLister = new Morebits.batchOperation();
301+
const subpageLister = new Morebits.BatchOperation();
302302
subpageLister.setOption('chunkSize', Twinkle.getPref('batchChunks'));
303303
subpageLister.setPageList(pages);
304304
subpageLister.run((pageName) => {
@@ -310,7 +310,7 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
310310
return;
311311
}
312312

313-
const wikipedia_api = new Morebits.wiki.api('Getting list of subpages of ' + pageName, {
313+
const wikipedia_api = new Morebits.wiki.Api('Getting list of subpages of ' + pageName, {
314314
action: 'query',
315315
prop: 'revisions|info|imageinfo',
316316
generator: 'allpages',
@@ -334,7 +334,7 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
334334
const editProt = page.protection.filter((pr) => pr.type === 'edit' && pr.level === 'sysop').pop();
335335
if (editProt) {
336336
metadata.push('fully protected' +
337-
(editProt.expiry === 'infinity' ? ' indefinitely' : ', expires ' + new Morebits.date(editProt.expiry).calendar('utc') + ' (UTC)'));
337+
(editProt.expiry === 'infinity' ? ' indefinitely' : ', expires ' + new Morebits.Date(editProt.expiry).calendar('utc') + ' (UTC)'));
338338
}
339339
if (page.ns === 6) {
340340
metadata.push('uploader: ' + page.imageinfo[0].user);
@@ -374,8 +374,8 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
374374
newPageList = Twinkle.batchdelete.generateNewPageList(form);
375375
$('#tw-dbatch-pages').replaceWith(newPageList);
376376

377-
Morebits.quickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
378-
Morebits.quickForm.getElements(newPageList, 'pages.subpages').forEach(Twinkle.generateArrowLinks);
377+
Morebits.QuickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
378+
Morebits.QuickForm.getElements(newPageList, 'pages.subpages').forEach(Twinkle.generateArrowLinks);
379379

380380
subpagesLoaded = true;
381381

@@ -399,7 +399,7 @@ Twinkle.batchdelete.callback.toggleSubpages = function twDbatchToggleSubpages(e)
399399
newPageList = Twinkle.batchdelete.generateNewPageList(form);
400400
$('#tw-dbatch-pages').replaceWith(newPageList);
401401

402-
Morebits.quickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
402+
Morebits.QuickForm.getElements(newPageList, 'pages').forEach(Twinkle.generateArrowLinks);
403403
}
404404
};
405405

@@ -408,25 +408,25 @@ Twinkle.batchdelete.callback.evaluate = function twinklebatchdeleteCallbackEvalu
408408

409409
const form = event.target;
410410

411-
const numProtected = $(Morebits.quickForm.getElements(form, 'pages')).filter((index, element) => element.checked && element.nextElementSibling.style.color === 'red').length;
411+
const numProtected = $(Morebits.QuickForm.getElements(form, 'pages')).filter((index, element) => element.checked && element.nextElementSibling.style.color === 'red').length;
412412
if (numProtected > 0 && !confirm('You are about to delete ' + mw.language.convertNumber(numProtected) + ' fully protected page(s). Are you sure?')) {
413413
return;
414414
}
415415

416-
const input = Morebits.quickForm.getInputData(form);
416+
const input = Morebits.QuickForm.getInputData(form);
417417

418418
if (!input.reason) {
419419
alert('You need to give a reason, you cabal crony!');
420420
return;
421421
}
422-
Morebits.simpleWindow.setButtonsEnabled(false);
423-
Morebits.status.init(form);
422+
Morebits.SimpleWindow.setButtonsEnabled(false);
423+
Morebits.Status.init(form);
424424
if (input.pages.length === 0) {
425-
Morebits.status.error('Error', 'nothing to delete, aborting');
425+
Morebits.Status.error('Error', 'nothing to delete, aborting');
426426
return;
427427
}
428428

429-
const pageDeleter = new Morebits.batchOperation(input.delete_page ? 'Deleting pages' : 'Initiating requested tasks');
429+
const pageDeleter = new Morebits.BatchOperation(input.delete_page ? 'Deleting pages' : 'Initiating requested tasks');
430430
pageDeleter.setOption('chunkSize', Twinkle.getPref('batchChunks'));
431431
// we only need the initial status lines if we're deleting the pages in the pages array
432432
pageDeleter.setOption('preserveIndividualStatusLines', input.delete_page);
@@ -443,7 +443,7 @@ Twinkle.batchdelete.callback.evaluate = function twinklebatchdeleteCallbackEvalu
443443
pageDeleter: pageDeleter
444444
};
445445

446-
const wikipedia_page = new Morebits.wiki.page(pageName, 'Deleting page ' + pageName);
446+
const wikipedia_page = new Morebits.wiki.Page(pageName, 'Deleting page ' + pageName);
447447
wikipedia_page.setCallbackParameters(params);
448448
if (input.delete_page) {
449449
wikipedia_page.setEditSummary(input.reason);
@@ -455,7 +455,7 @@ Twinkle.batchdelete.callback.evaluate = function twinklebatchdeleteCallbackEvalu
455455
}
456456
}, () => {
457457
if (input.delete_subpages && input.subpages) {
458-
const subpageDeleter = new Morebits.batchOperation('Deleting subpages');
458+
const subpageDeleter = new Morebits.BatchOperation('Deleting subpages');
459459
subpageDeleter.setOption('chunkSize', Twinkle.getPref('batchChunks'));
460460
subpageDeleter.setOption('preserveIndividualStatusLines', true);
461461
subpageDeleter.setPageList(input.subpages);
@@ -471,7 +471,7 @@ Twinkle.batchdelete.callback.evaluate = function twinklebatchdeleteCallbackEvalu
471471
pageDeleter: subpageDeleter
472472
};
473473

474-
const wikipedia_page = new Morebits.wiki.page(pageName, 'Deleting subpage ' + pageName);
474+
const wikipedia_page = new Morebits.wiki.Page(pageName, 'Deleting subpage ' + pageName);
475475
wikipedia_page.setCallbackParameters(params);
476476
wikipedia_page.setEditSummary(input.reason);
477477
wikipedia_page.setChangeTags(Twinkle.changeTags);
@@ -505,7 +505,7 @@ Twinkle.batchdelete.callbacks = {
505505
bllimit: 'max', // 500 is max for normal users, 5000 for bots and sysops
506506
format: 'json'
507507
};
508-
wikipedia_api = new Morebits.wiki.api('Grabbing backlinks', query, Twinkle.batchdelete.callbacks.unlinkBacklinksMain);
508+
wikipedia_api = new Morebits.wiki.Api('Grabbing backlinks', query, Twinkle.batchdelete.callbacks.unlinkBacklinksMain);
509509
wikipedia_api.params = params;
510510
wikipedia_api.post();
511511
}
@@ -518,7 +518,7 @@ Twinkle.batchdelete.callbacks = {
518518
iulimit: 'max', // 500 is max for normal users, 5000 for bots and sysops
519519
format: 'json'
520520
};
521-
wikipedia_api = new Morebits.wiki.api('Grabbing file links', query, Twinkle.batchdelete.callbacks.unlinkImageInstancesMain);
521+
wikipedia_api = new Morebits.wiki.Api('Grabbing file links', query, Twinkle.batchdelete.callbacks.unlinkImageInstancesMain);
522522
wikipedia_api.params = params;
523523
wikipedia_api.post();
524524
}
@@ -532,7 +532,7 @@ Twinkle.batchdelete.callbacks = {
532532
rdlimit: 'max', // 500 is max for normal users, 5000 for bots and sysops
533533
format: 'json'
534534
};
535-
wikipedia_api = new Morebits.wiki.api('Grabbing redirects', query, Twinkle.batchdelete.callbacks.deleteRedirectsMain);
535+
wikipedia_api = new Morebits.wiki.Api('Grabbing redirects', query, Twinkle.batchdelete.callbacks.deleteRedirectsMain);
536536
wikipedia_api.params = params;
537537
wikipedia_api.post();
538538
}
@@ -545,7 +545,7 @@ Twinkle.batchdelete.callbacks = {
545545
titles: pageTitle.toText(),
546546
format: 'json'
547547
};
548-
wikipedia_api = new Morebits.wiki.api('Checking whether talk page exists', query, Twinkle.batchdelete.callbacks.deleteTalk);
548+
wikipedia_api = new Morebits.wiki.Api('Checking whether talk page exists', query, Twinkle.batchdelete.callbacks.deleteTalk);
549549
wikipedia_api.params = params;
550550
wikipedia_api.params.talkPage = pageTitle.toText();
551551
wikipedia_api.post();
@@ -561,11 +561,11 @@ Twinkle.batchdelete.callbacks = {
561561
return;
562562
}
563563

564-
const redirectDeleter = new Morebits.batchOperation('Deleting redirects to ' + apiobj.params.page);
564+
const redirectDeleter = new Morebits.BatchOperation('Deleting redirects to ' + apiobj.params.page);
565565
redirectDeleter.setOption('chunkSize', Twinkle.getPref('batchChunks'));
566566
redirectDeleter.setPageList(pages);
567567
redirectDeleter.run((pageName) => {
568-
const wikipedia_page = new Morebits.wiki.page(pageName, 'Deleting ' + pageName);
568+
const wikipedia_page = new Morebits.wiki.Page(pageName, 'Deleting ' + pageName);
569569
wikipedia_page.setEditSummary('[[WP:CSD#G8|G8]]: Redirect to deleted page "' + apiobj.params.page + '"');
570570
wikipedia_page.setChangeTags(Twinkle.changeTags);
571571
wikipedia_page.deletePage(redirectDeleter.workerSuccess, redirectDeleter.workerFailure);
@@ -579,7 +579,7 @@ Twinkle.batchdelete.callbacks = {
579579
return;
580580
}
581581

582-
const page = new Morebits.wiki.page(apiobj.params.talkPage, 'Deleting talk page of page ' + apiobj.params.page);
582+
const page = new Morebits.wiki.Page(apiobj.params.talkPage, 'Deleting talk page of page ' + apiobj.params.page);
583583
page.setEditSummary('[[WP:CSD#G8|G8]]: [[Help:Talk page|Talk page]] of deleted page "' + apiobj.params.page + '"');
584584
page.setChangeTags(Twinkle.changeTags);
585585
page.deletePage();
@@ -592,12 +592,12 @@ Twinkle.batchdelete.callbacks = {
592592
return;
593593
}
594594

595-
const unlinker = new Morebits.batchOperation('Unlinking backlinks to ' + apiobj.params.page);
595+
const unlinker = new Morebits.BatchOperation('Unlinking backlinks to ' + apiobj.params.page);
596596
unlinker.setOption('chunkSize', Twinkle.getPref('batchChunks'));
597597
unlinker.setPageList(pages);
598598
unlinker.run((pageName) => {
599-
const wikipedia_page = new Morebits.wiki.page(pageName, 'Unlinking on ' + pageName);
600-
const params = $.extend({}, apiobj.params);
599+
const wikipedia_page = new Morebits.wiki.Page(pageName, 'Unlinking on ' + pageName);
600+
const params = Object.assign({}, apiobj.params);
601601
params.title = pageName;
602602
params.unlinker = unlinker;
603603
wikipedia_page.setCallbackParameters(params);
@@ -619,7 +619,7 @@ Twinkle.batchdelete.callbacks = {
619619
text = pageobj.getPageText();
620620
}
621621
const old_text = text;
622-
const wikiPage = new Morebits.wikitext.page(text);
622+
const wikiPage = new Morebits.wikitext.Page(text);
623623
text = wikiPage.removeLink(params.page).getText();
624624

625625
Twinkle.batchdelete.unlinkCache[params.title] = text;
@@ -643,12 +643,12 @@ Twinkle.batchdelete.callbacks = {
643643
return;
644644
}
645645

646-
const unlinker = new Morebits.batchOperation('Unlinking backlinks to ' + apiobj.params.page);
646+
const unlinker = new Morebits.BatchOperation('Unlinking backlinks to ' + apiobj.params.page);
647647
unlinker.setOption('chunkSize', Twinkle.getPref('batchChunks'));
648648
unlinker.setPageList(pages);
649649
unlinker.run((pageName) => {
650-
const wikipedia_page = new Morebits.wiki.page(pageName, 'Removing file usages on ' + pageName);
651-
const params = $.extend({}, apiobj.params);
650+
const wikipedia_page = new Morebits.wiki.Page(pageName, 'Removing file usages on ' + pageName);
651+
const params = Object.assign({}, apiobj.params);
652652
params.title = pageName;
653653
params.unlinker = unlinker;
654654
wikipedia_page.setCallbackParameters(params);
@@ -671,7 +671,7 @@ Twinkle.batchdelete.callbacks = {
671671
text = pageobj.getPageText();
672672
}
673673
const old_text = text;
674-
const wikiPage = new Morebits.wikitext.page(text);
674+
const wikiPage = new Morebits.wikitext.Page(text);
675675
text = wikiPage.commentOutImage(image, 'Commented out because image was deleted').getText();
676676

677677
Twinkle.batchdelete.unlinkCache[params.title] = text;
@@ -690,6 +690,6 @@ Twinkle.batchdelete.callbacks = {
690690
};
691691

692692
Twinkle.addInitCallback(Twinkle.batchdelete, 'batchdelete');
693-
}(jQuery));
693+
}());
694694

695695
// </nowiki>

0 commit comments

Comments
 (0)