User:Sohom Datta/Redirectify.js
Appearance
(Redirected from User:DannyS712/Redirectify.js)
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
This user script seems to have a documentation page at User:Sohom Datta/Redirectify. |
//Copied from [[User:DannyS712/Redirectify.js]]
// Originally from [[User:FR30799386/redirectify.js]]?
//<nowiki>
var Redirectify_config = {
name: '[[User:Sohom_Datta/Redirectify|Redirectify]]',
version: 1.2,
debug: false
};
var Redirectify_ending = ' (' + Redirectify_config.name + ' v.' + Redirectify_config.version + ')';
function loadredirectify() {
if($('#mw-indicator-featured-star').length || $('#mw-indicator-good-star').length) {
$('#mw-content-text').prepend('<div style="border:1px solid red;">Redirectify should not be used to redirect a Good article or a featured article. '
+'Seek consensus on the article talk page if you plan to redirect this page.</div>');
return;
}
if( mw.config.get( 'wgTitle' ) === 'Main Page' ) {
console.log('huh? wut? Why?')
return;
}
mw.loader.using( [ 'mediawiki.widgets', 'oojs-ui-core', 'oojs-ui-widgets', 'ext.gadget.morebits' ], function() {
$('.redirectify-ui').remove();
var api = new mw.Api();
//Portion copied from [[User:EnterpriseyBot/AFCHRS.js]] starts
var Rcat = [{
label: 'R from related topic',
data: 'R from related topic'
},
{
label: 'R to related topic',
data: 'R to related topic'
},
{
label: 'R from alternative language',
data: 'R from alternative language'
}, {
label: 'R from alternative name',
data: 'R from alternative name'
}, {
label: 'R from modification',
data: 'R from modification'
}, {
label: 'R to section',
data: 'R to section'
}, {
label: 'R from diacritic',
data: 'R from diacritic'
}, {
label: 'R to diacritic',
data: 'R to diacritic'
}, {
label: 'R from acronym',
data: 'R from acronym'
}, {
label: 'R from initialism',
data: 'R from initialism'
}, {
label: 'R from CamelCase',
data: 'R from CamelCase'
}, {
label: 'R from miscapitalisation',
data: 'R from miscapitalisation'
}, {
label: 'R from other capitalisation',
data: 'R from other capitalisation'
}, {
label: 'R from modification',
data: 'R from modification'
}, {
label: 'R from plural',
data: 'R from plural'
}, {
label: 'R from adjective',
data: 'R from adjective'
}, {
label: 'R from adverb',
data: 'R from adverb'
}, {
label: 'R from common noun',
data: 'R from common noun'
}, {
label: 'R from gerund',
data: 'R from gerund'
}, {
label: 'R from proper noun',
data: 'R from proper noun'
}, {
label: 'R from verb',
data: 'R from verb'
}, {
label: 'R from alternative spelling',
data: 'R from alternative spelling'
}, {
label: 'R from misspelling',
data: 'R from misspelling'
}, {
label: 'R from American English',
data: 'R from American English'
}, {
label: 'R from British English',
data: 'R from British English'
}, {
label: 'R from ASCII-only',
data: 'R from ASCII-only'
}, {
label: 'R from diacritic',
data: 'R from diacritic'
}, {
label: 'R from ligature',
data: 'R from ligature'
}, {
label: 'R from stylization',
data: 'R from stylization'
}, {
label: 'R from alternative transliteration',
data: 'R from alternative transliteration'
}, {
label: 'R from Wade–Giles romanization',
data: 'R from Wade–Giles romanization'
}, {
label: 'From alternative names, general',
data: 'From alternative names, general',
disabled: true
}, {
label: 'R from alternative language',
data: 'R from alternative language'
}, {
label: 'R from alternative name',
data: 'R from alternative name'
}, {
label: 'R from former name',
data: 'R from former name'
}, {
label: 'R from historic name',
data: 'R from historic name'
}, {
label: 'R from incomplete name',
data: 'R from incomplete name'
}, {
label: 'R from incorrect name',
data: 'R from incorrect name'
}, {
label: 'R from letter–word combination',
data: 'R from letter–word combination'
}, {
label: 'R from long name',
data: 'R from long name'
}, {
label: 'R from portmanteau',
data: 'R from portmanteau'
}, {
label: 'R from predecessor company name',
data: 'R from predecessor company name'
}, {
label: 'R from short name',
data: 'R from short name'
}, {
label: 'R from sort name',
data: 'R from sort name'
}, {
label: 'R from less specific name',
data: 'R from less specific name'
}, {
label: 'R from more specific name',
data: 'R from more specific name'
}, {
label: 'R from antonym',
data: 'R from antonym'
}, {
label: 'R from eponym',
data: 'R from eponym'
}, {
label: 'R from synonym',
data: 'R from synonym'
}, {
label: 'R from Roman numerals',
data: 'R from Roman numerals'
}, {
label: 'From alternative names, geography',
data: 'From alternative names, geography',
disabled: true
}, {
label: 'R from Canadian settlement name',
data: 'R from Canadian settlement name'
}, {
label: 'R from name and country',
data: 'R from name and country'
}, {
label: 'R from city and state',
data: 'R from city and state'
}, {
label: 'R from city and province',
data: 'R from city and province'
}, {
label: 'R from more specific geographic name',
data: 'R from more specific geographic name'
}, {
label: 'R from postal abbreviation',
data: 'R from postal abbreviation'
}, {
label: 'R from postal code',
data: 'R from postal code'
}, {
label: 'R from US postal abbreviation',
data: 'R from US postal abbreviation'
}, {
label: 'From alternative names, organisms',
data: 'From alternative names, organisms',
disabled: true
}, {
label: 'R from scientific abbreviation',
data: 'R from scientific abbreviation'
}, {
label: 'R from scientific name',
data: 'R from scientific name'
}, {
label: 'R from alternative scientific name',
data: 'R from alternative scientific name'
}, {
label: 'R from monotypic taxon',
data: 'R from monotypic taxon'
}, {
label: 'From alternative names, people',
data: 'From alternative names, people',
disabled: true
}, {
label: 'R from birth name',
data: 'R from birth name'
}, {
label: 'R from given name',
data: 'R from given name'
}, {
label: 'R from married name',
data: 'R from married name'
}, {
label: 'R from name with title',
data: 'R from name with title'
}, {
label: 'R from non-neutral name',
data: 'R from non-neutral name'
}, {
label: 'R from personal name',
data: 'R from personal name'
}, {
label: 'R from pseudonym',
data: 'R from pseudonym'
}, {
label: 'R from relative',
data: 'R from relative'
}, {
label: 'R from spouse',
data: 'R from spouse'
}, {
label: 'R from surname',
data: 'R from surname'
}, {
label: 'R from Bluebook abbreviation',
data: 'R from Bluebook abbreviation'
}, {
label: 'R from brand name',
data: 'R from brand name'
}, {
label: 'R from drug trade name',
data: 'R from drug trade name'
}, {
label: 'R from file name',
data: 'R from file name'
}, {
label: 'R from Java package name',
data: 'R from Java package name'
}, {
label: 'R from MathSciNet abbreviation',
data: 'R from MathSciNet abbreviation'
}, {
label: 'R from molecular formula',
data: 'R from molecular formula'
}, {
label: 'R from NLM abbreviation',
data: 'R from NLM abbreviation'
}, {
label: 'R from product name',
data: 'R from product name'
}, {
label: 'R from slogan',
data: 'R from slogan'
}, {
label: 'R from symbol',
data: 'R from symbol'
}, {
label: 'R from systematic abbreviations',
data: 'R from systematic abbreviations'
}, {
label: 'R from technical name',
data: 'R from technical name'
}, {
label: 'R from trademark',
data: 'R from trademark'
}, {
label: 'R from file metadata link',
data: 'R from file metadata link'
}, {
label: 'R mentioned in hatnote',
data: 'R mentioned in hatnote'
}, {
label: 'R from shortcut',
data: 'R from shortcut'
}, {
label: 'R from template shortcut',
data: 'R from template shortcut'
}, {
label: 'From disambiguations',
data: 'From disambiguations',
disabled: true
}, {
label: 'R from ambiguous term',
data: 'R from ambiguous term'
}, {
label: 'R from incomplete disambiguation',
data: 'R from incomplete disambiguation'
}, {
label: 'R from incorrect disambiguation',
data: 'R from incorrect disambiguation'
}, {
label: 'R from other disambiguation',
data: 'R from other disambiguation'
}, {
label: 'R from predictable disambiguation',
data: 'R from predictable disambiguation'
}, {
label: 'R from unnecessary disambiguation',
data: 'R from unnecessary disambiguation'
}, {
label: 'From mergers, duplicates, and moves',
data: 'From mergers, duplicates, and moves',
disabled: true
}, {
label: 'R from duplicated article',
data: 'R from duplicated article'
}, {
label: 'R with history',
data: 'R with history'
}, {
label: 'R from merge',
data: 'R from merge'
}, {
label: 'R from move',
data: 'R from move'
}, {
label: 'R with old history',
data: 'R with old history'
}, {
label: 'R from fictional character',
data: 'R from fictional character'
}, {
label: 'R from fictional element',
data: 'R from fictional element'
}, {
label: 'R from fictional location',
data: 'R from fictional location'
}, {
label: 'From related info',
data: 'From related info',
disabled: true
}, {
label: 'R from album',
data: 'R from album'
}, {
label: 'R from animal',
data: 'R from animal'
}, {
label: 'R from book',
data: 'R from book'
}, {
label: 'R from catchphrase',
data: 'R from catchphrase'
}, {
label: 'R from domain name',
data: 'R from domain name'
}, {
label: 'R from top-level domain',
data: 'R from top-level domain'
}, {
label: 'R from film',
data: 'R from film'
}, {
label: 'R from gender',
data: 'R from gender'
}, {
label: 'R from legislation',
data: 'R from legislation'
}, {
label: 'R from list topic',
data: 'R from list topic'
}, {
label: 'R from member',
data: 'R from member'
}, {
label: 'R from person',
data: 'R from person'
}, {
label: 'R from phrase',
data: 'R from phrase'
}, {
label: 'R from quotation',
data: 'R from quotation'
}, {
label: 'R from related word',
data: 'R from related word'
}, {
label: 'R from school',
data: 'R from school'
}, {
label: 'R from song',
data: 'R from song'
}, {
label: 'R from subtopic',
data: 'R from subtopic'
}, {
label: 'R from team',
data: 'R from team'
}, {
label: 'R from work',
data: 'R from work'
}, {
label: 'R from writer',
data: 'R from writer'
}, {
label: 'R from Unicode',
data: 'R from Unicode'
}, {
label: 'R to acronym',
data: 'R to acronym'
}, {
label: 'R to initialism',
data: 'R to initialism'
}, {
label: 'R to ASCII-only title',
data: 'R to ASCII-only title'
}, {
label: 'R to diacritic',
data: 'R to diacritic'
}, {
label: 'R to ligature',
data: 'R to ligature'
}, {
label: 'R to plural',
data: 'R to plural'
}, {
label: 'To alternative names',
data: 'To alternative names',
disabled: true
}, {
label: 'R to former name',
data: 'R to former name'
}, {
label: 'R to historic name',
data: 'R to historic name'
}, {
label: 'R to joint biography',
data: 'R to joint biography'
}, {
label: 'R to name with title',
data: 'R to name with title'
}, {
label: 'R to monotypic taxon',
data: 'R to scientific name'
}, {
label: 'R to scientific name',
data: 'R to scientific name'
}, {
label: 'R to systematic name',
data: 'R to systematic name'
}, {
label: 'R to technical name',
data: 'R to technical name'
}, {
label: 'To – navigation and disambiguation',
data: 'To – navigation and disambiguation',
disabled: true
}, {
label: 'R to anchor',
data: 'R to anchor'
}, {
label: 'R to anthroponymy page',
data: 'R to anthroponymy page'
}, {
label: 'R to disambiguation page',
data: 'R to disambiguation page'
}, {
label: 'R to list entry',
data: 'R to list entry'
}, {
label: 'R to section',
data: 'R to section'
}, {
label: 'To miscellaneous',
data: 'To miscellaneous',
disabled: true
}, {
label: 'R to decade',
data: 'R to decade'
}, {
label: 'R to related topic',
data: 'R to related topic'
}, {
label: 'R to subpage',
data: 'R to subpage'
}, {
label: 'R to subtopic',
data: 'R to subtopic'
}, {
label: 'R to TV episode list entry',
data: 'R to TV episode list entry'
} ];
function generateSelect(title, options, onchange) {
const multiselect = new OO.ui.MenuTagMultiselectWidget( {
inputPosition: 'outline',
allowArbitrary: true,
verticalPosition: 'below',
title,
options: options
});
return multiselect;
}
//Section copied ends here
var morebits = new Morebits.wiki.page(mw.config.get('wgPageName'));
var wikitext = '#REDIRECT [[$1]]\n{{Redirect category shell|\n$2\n}}';
var summaryredirect = 'Redirecting page to [[$1]]';
var summaryalert = 'Notification of a page being redirected' + Redirectify_ending;
var title = (mw.config.get('wgPageName')).replace('_', ' ');
var messagetouser = window.messagetouser || '==Redirecting page: [[' + title + ']]==\nA page you created, [[' + title + ']], does not seem to have [[WP:SOURCE|enough reliable third party sources]] to merit [[WP:N|inclusion in the encyclopedia]] in itself. It has been [[WP:REDIRECT|redirected]] to $1 which is related to the subject of the article. ~~~~';
var titleinput = new mw.widgets.TitleInputWidget({
required: true
});
$('#mw-content-text').prepend('<div class="redirectify-ui" style="padding:1em; background:#f2f2f2;"><h3>Redirectify</h3><div class="redirectify"><label>Target :</label></div><div class="r-action-ui"></div><div id="r-error" style="width:100%; color:red;"></div>');
var $redirectify = $('.r-action-ui');
if( $( '.redirectText' ).length ) {
titleinput.setValue( $( '.redirectText a' )[0].innerText );
}
$redirectify.append(titleinput.$element);
const redirectifyMultiselect = generateSelect('r-rcat', Rcat);
$redirectify.append('<br><label for="r-rcat">Redirect categorization : </label>\n<br>' );
$redirectify.append(redirectifyMultiselect.$element);
$redirectify.append('<div><br><label for="r-summary">Summary of action : </label><input type="text" id="r-summary" required></input></div><div class="r-message-element"></div>');
const $redirectifyMsgElem = $( '.r-message-element' )
const userMsg = new OO.ui.MultilineTextInputWidget( {
autosize: true,
value: messagetouser
} );
morebits.lookupCreation(function() {
if ( $( '.redirectMsg' ).length ) return;
$redirectifyMsgElem.append('<br><label for="r-message">Message : (Remove current text to prevent message for being sent)</label>\n');
$redirectifyMsgElem.append(userMsg.$element);
$redirectifyMsgElem.append('<span style="font-size: 0.9em;"><b>Note :</b>$1 denotes target page</span>');
});
$('.r-action-ui').append('<button class="mw-ui-progressive mw-ui-button r-submit">Redirect</button>'
+' <button class="mw-ui-button mw-ui-quiet mw-ui-destructive r-cancel" style="background:none; border:0px solid white">Cancel</button>');
$('.r-cancel').click(function(){
$('.redirectify-ui').remove();
});
$('.r-submit').click(function(e) {
e.preventDefault();
var reason = ($('#r-summary').val()) ? (': ' + $('#r-summary').val() ) : '';
var target = titleinput.getQueryValue();
console.log(target);
if (target) {
api.get({
action: "query",
titles: target,
}).then(function(ret) {
$.each(ret.query.pages, function() {
if (this.missing !== "") {
wikitext = wikitext.replace('$1', target);
const redirectTags = redirectifyMultiselect.getValue();
let redirectTagText = '';
for (let i = 0; i < redirectTags.length;i++) {
redirectTagText += `{{${redirectTags[i]}}}`;
}
if (redirectTagText !== '') {
wikitext = wikitext.replace('$2', redirectTagText);
} else {
wikitext = wikitext.replace('{{Redirect category shell|\n$2\n}}', '');
}
summaryredirect = summaryredirect.replace('$1', target);
messagetouser = ($('#r-message').val() || '').replace('$1', target);
$redirectify.empty();
api.postWithToken('csrf', {
action: 'edit',
title: mw.config.get('wgPageName'),
text: wikitext,
summary: summaryredirect + reason + Redirectify_ending
}).done(function(response) {
if (response.edit.result === 'Success')
$redirectify.append('<li style="color:green;">Redirected page !</li>');
console.log(response);
}).fail(function(status) {
$redirectify.append('<span style="color:red;">Could not redirect page !</span>');
console.log(status);
});
if (messagetouser !== '') {
morebits.lookupCreation(function() {
if ( $( '.redirectMsg' ).length ) return;
var guy = morebits.getCreator();
var guyedit = new Morebits.wiki.page('User talk:' + guy);
guyedit.setEditSummary(summaryalert);
guyedit.setAppendText('\n' + messagetouser);
guyedit.append(function() {
$redirectify.append('<li style="color:green;">Messaged user !</li>');
}, function() {
$redirectify.append('<li style="color:red;">Could not message user !</li>');
});
});
}
$('#r-error').html("");
$('.r-action-ui').html('<button class="mw-ui-button r-reload">Reload</button>');
$('.r-reload').click(function() {
location.href = '/wiki/' + mw.config.get('wgPageName') + '?redirect=no';
});
} else {
createerror();
}
});
}, function(error) {
console.error(error);
createerror();
});
} else {
createerror();
}
});
});
function createerror(){
$('#r-error').html('The page specified in the target parameter does not exist. Redirecting this page to the target will result in the creation of a broken redirect.');
}
}
$.when(mw.loader.using('mediawiki.util'), $.ready).then(function() {
if( mw.config.get( "wgNamespaceNumber" ) < 0 ) return;
if (mw.config.get('wgUserGroups').indexOf('extendedconfirmed') === -1 ) {
console.log("[Redirectify] User isn't extendedconfirmed, and so shouldn't use this script.");
return;
}
var portlet = mw.util.addPortletLink('p-cactions', 'javascript:void(0)', 'Redirect page', 'ca-redirectify', 'Make page a redirect', 'r', '');
$('#ca-redirectify').click(function() {
loadredirectify();
});
});
//</nowiki>