User:AzaToth/test/friendlytag.js
< User:AzaToth | test
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. |
Documentation for this user script can be added at User:AzaToth/test/friendlytag. |
// <nowiki>
if ( typeof(Twinkle) === "undefined" ) {
alert( "Twinkle modules may not be directly imported.\nSee WP:Twinkle for installation instructions." );
}
var isRedirect = false;
function friendlytag() {
if( QueryString.exists( 'redirect' ) && QueryString.get( 'redirect' ) == 'no' && $("span.redirectText").length > 0 ) {
isRedirect = true;
twAddPortletLink( "javascript:friendlytag.callback()", "Tag", "friendly-tag", "Tag redirect", "");
} else if( wgNamespaceNumber != 0 || wgCurRevisionId == false ) {
return;
} else {
twAddPortletLink( "javascript:friendlytag.callback()", "Tag", "friendly-tag", "Tag article", "");
}
}
friendlytag.callback = function friendlytagCallback( uid ) {
var Window = new SimpleWindow( 630, 400 );
Window.setScriptName( "Twinkle" );
// anyone got a good policy/guideline/info page/instructional page link??
Window.addFooterLink( "Twinkle help", "WP:TW/DOC#tag" );
var form = new QuickForm( friendlytag.callback.evaluate );
if( !isRedirect ) {
Window.setTitle( "Article maintenance tagging" );
form.append( {
type: 'checkbox',
list: [
{
label: 'Group into {{multiple issues}} if possible',
value: 'group',
name: 'group',
tooltip: 'If applying three or more templates supported by {{multiple issues}} and this box is checked, all supported templates will be grouped into a single {{multiple issues}} template.',
checked: FriendlyConfig.groupByDefault
}
]
}
);
form.append( { type:'header', label:'Maintenance templates' } );
form.append( { type:'checkbox', name: 'maintenance', list: friendlytag.maintenanceList } );
form.append( { type:'header', label:'Problem templates' } );
form.append( { type:'checkbox', name: 'problem', list: friendlytag.problemList } );
form.append( { type:'header', label:'Notice templates' } );
form.append( { type:'checkbox', name: 'notice', list: friendlytag.noticeList } );
if( typeof( FriendlyConfig.customTagList ) == 'object' ) {
form.append( { type:'header', label:'Custom templates' } );
form.append( { type: 'checkbox', name: 'custom', list: FriendlyConfig.customTagList } );
}
} else {
Window.setTitle( "Redirect tagging" );
form.append( { type:'header', label:'Spelling, misspelling, tense and capitalization templates' } );
form.append( { type:'checkbox', name: 'spelling', list: friendlytag.spellingList } );
form.append( { type:'header', label:'Alternative name templates' } );
form.append( { type:'checkbox', name: 'alternative', list: friendlytag.alternativeList } );
form.append( { type:'header', label:'Miscellaneous and administrative redirect templates' } );
form.append( { type:'checkbox', name: 'administrative', list: friendlytag.administrativeList } );
}
form.append( { type:'submit' } );
var result = form.render();
Window.setContent( result );
Window.display();
}
friendlytag.maintenanceList = [
{
label: '\{\{catimprove\}\}: article may require additional categories.',
value: 'catimprove'
},
{
label: '\{\{cleanup\}\}: article may require cleanup',
value: 'cleanup'
},
{
label: '\{\{confusing\}\}: article may be confusing or unclear',
value: 'confusing'
},
{
label: '\{\{copyedit\}\}: article needs copy editing for grammar, style, cohesion, tone, and/or spelling',
value: 'copyedit'
},
{
label: '\{\{citation style\}\}: article has unclear or inconsistent inline citations',
value: 'citation style'
},
{
label: '\{\{deadend\}\}: article has few or no links to other articles',
value: 'deadend'
},
{
label: '\{\{essay-like\}\}: article is written like an essay and needs cleanup',
value: 'essay-like'
},
{
label: '\{\{expert\}\}: article needs attention from an expert on the subject',
value: 'expert'
},
{
label: '\{\{fansite\}\}: article resembles a fansite',
value: 'fansite'
},
{
label: '\{\{in-universe\}\}: article subject is fictional and needs rewriting from a non-fictional perspective',
value: 'in-universe'
},
{
label: '\{\{lead missing\}\}: article has no lead section and one should be written',
value: 'lead missing'
},
{
label: '\{\{lead too long\}\}: article lead section is too long and should be shortened',
value: 'lead too long'
},
{
label: '\{\{lead too short\}\}: article lead section is too short and should be expanded',
value: 'lead too short'
},
{
label: '\{\{lead rewrite\}\}: article lead section needs to be rewritten to comply with guidelines',
value: 'lead rewrite'
},
{
label: '\{\{linkrot\}\}: article uses bare URLs for references, which are prone to link rot',
value: 'linkrot'
},
{
label: '\{\{merge\}\}: article should be merged with another given article',
value: 'merge'
},
{
label: '\{\{merge from\}\}: another given article should be merged into this one',
value: 'merge from'
},
{
label: '\{\{merge to\}\}: article should be merged into another given article',
value: 'merge to'
},
{
label: '\{\{morefootnotes\}\}: article has some references, but insufficient in-text citations',
value: 'morefootnotes'
},
{
label: '\{\{nofootnotes\}\}: article has references, but no in-text citations',
value: 'nofootnotes'
},
{
label: '\{\{notenglish\}\}: article is written in a language other than English and needs translation',
value: 'notenglish'
},
{
label: '\{\{orphan\}\}: article has few or no other articles that link to it',
value: 'orphan'
},
{
label: '\{\{plot\}\}: plot summary in article is too long',
value: 'plot'
},
{
label: '\{\{prose\}\}: article is in a list format that may be better presented using prose',
value: 'prose'
},
{
label: '\{\{pov-check\}\}: nominate article to be checked for neutrality',
value: 'pov-check'
},
{
label: '\{\{sections\}\}: article needs to be broken into sections',
value: 'sections'
},
{
label: '\{\{tense\}\}: article is written in an incorrect tense',
value: 'tense'
},
{
label: '\{\{tone\}\}: tone of article is not appropriate',
value: 'tone'
},
{
label: '\{\{uncategorized\}\}: article is uncategorized',
value: 'uncategorized'
},
{
label: '\{\{verylong\}\}: article is too long',
value: 'verylong'
},
{
label: '\{\{wikify\}\}: article needs to be wikified',
value: 'wikify'
}
];
friendlytag.problemList = [
{
label: '\{\{advert\}\}: article is written like an advertisement',
value: 'advert'
},
{
label: '\{\{autobiography\}\}: article is an autobiography and may not be of NPOV',
value: 'autobiography'
},
{
label: '\{\{close paraphrase\}\}: article contains close paraphrasing of a non-free copyrighted source',
value: 'close paraphrase'
},
{
label: '\{\{coi\}\}: article creator or major contributor may have a conflict of interest',
value: 'coi'
},
{
label: '\{\{context\}\}: article provides insufficient context',
value: 'context'
},
{
label: '\{\{copypaste\}\}: article appears to have been copied and pasted from a source',
value: 'copypaste'
},
{
label: '\{\{disputed\}\}: article has questionable factual accuracy',
value: 'disputed'
},
{
label: '\{\{external links\}\}: article\'s external links may not follow content policies or guidelines',
value: 'external links'
},
{
label: '\{\{globalize\}\}: article may not represent a worldwide view of the subject',
value: 'globalize',
subgroup: {
name: 'globalize',
type: 'select',
list: [
{
label: "\{\{globalize\}\}: article may not represent a worldwide view of the subject",
value: "globalize"
},
{
label: "Region-specific \{\{globalize\}\} subtemplates",
list: [
{
label: "\{\{globalize/Australia\}\}: article deals primarily with the Australian viewpoint",
value: "globalize/Australia"
},
{
label: "\{\{globalize/Belgium\}\}: article deals primarily with the Belgian viewpoint",
value: "globalize/Belgium"
},
{
label: "\{\{globalize/Canada\}\}: article deals primarily with the Canadian viewpoint",
value: "globalize/Canada"
},
{
label: "\{\{globalize/Common law\}\}: article deals primarily with the viewpoint of common law countries",
value: "globalize/Common law"
},
{
label: "\{\{globalize/Eng\}\}: article deals primarily with the English-speaking viewpoint",
value: "globalize/Eng"
},
{
label: "\{\{globalize/Europe\}\}: article deals primarily with the European viewpoint",
value: "globalize/Europe"
},
{
label: "\{\{globalize/France\}\}: article deals primarily with the French viewpoint",
value: "globalize/France"
},
{
label: "\{\{globalize/Germany\}\}: article deals primarily with the German viewpoint",
value: "globalize/Germany"
},
{
label: "\{\{globalize/Greece\}\}: article deals primarily with the Greek viewpoint",
value: "globalize/Greece"
},
{
label: "\{\{globalize/Luxembourg\}\}: article deals primarily with the Luxembourgish viewpoint",
value: "globalize/Luxembourg"
},
{
label: "\{\{globalize/Netherlands\}\}: article deals primarily with the Dutch viewpoint",
value: "globalize/Netherlands"
},
{
label: "\{\{globalize/North America\}\}: article deals primarily with the North American viewpoint",
value: "globalize/North America"
},
{
label: "\{\{globalize/Northern\}\}: article deals primarily with the northern hemisphere viewpoint",
value: "globalize/Northern"
},
{
label: "\{\{globalize/Russia\}\}: article deals primarily with the Russian viewpoint",
value: "globalize/Russia"
},
{
label: "\{\{globalize/Southern\}\}: article deals primarily with the southern hemisphere viewpoint",
value: "globalize/Southern"
},
{
label: "\{\{globalize/UK\}\}: article deals primarily with the British viewpoint",
value: "globalize/UK"
},
{
label: "\{\{globalize/UK and Canada\}\}: article deals primarily with the British and Canadian viewpoints",
value: "globalize/UK and Canada"
},
{
label: "\{\{globalize/USA\}\}: article deals primarily with the American viewpoint",
value: "globalize/USA"
}
]
}
]
}
},
{
label: '\{\{hoax\}\}: article may be a complete hoax',
value: 'hoax'
},
{
label: '\{\{non-free\}\}: article may contain excessive or improper use of copyrighted materials',
value: 'non-free'
},
{
label: '\{\{notability\}\}: article\'s subject may not meet the notability guideline',
value: 'notability',
subgroup: {
name: 'notability',
type: 'select',
list: [
{
label: "\{\{notability\}\}: article\'s subject may not meet the notability guideline",
value: "none"
},
{
label: "\{\{notability|Academics\}\}: notability guideline for academics",
value: "Academics"
},
{
label: "\{\{notability|Biographies\}\}: notability guideline for biographies",
value: "Biographies"
},
{
label: "\{\{notability|Books\}\}: notability guideline for books",
value: "Books"
},
{
label: "\{\{notability|Companies\}\}: notability guideline for companies and organizations",
value: "Companies"
},
{
label: "\{\{notability|Episode\}\}: notability guideline for television episodes",
value: "Episode"
},
{
label: "\{\{notability|Fiction\}\}: notability guideline for fiction",
value: "Fiction"
},
{
label: "\{\{notability|Films\}\}: notability guideline for films",
value: "Films"
},
{
label: "\{\{notability|Institutions\}\}: synonym of \"Companies\"",
value: "Institutions"
},
{
label: "\{\{notability|Music\}\}: notability guideline for music",
value: "Music"
},
{
label: "\{\{notability|Neologisms\}\}: notability guideline for neologisms",
value: "Neologisms"
},
{
label: "\{\{notability|Numbers\}\}: notability guideline for numbers",
value: "Numbers"
},
{
label: "\{\{notability|Organizations\}\}: synonym of \"Companies\"",
value: "Organizations"
},
{
label: "\{\{notability|Products\}\}: notability guideline for products and services",
value: "Products"
},
{
label: "\{\{notability|Web\}\}: notability guideline for web content",
value: "Web"
}
]
}
},
{
label: '\{\{npov\}\}: article does not maintain a neutral point of view',
value: 'npov'
},
{
label: '\{\{one source\}\}: article relies largely or entirely upon a single source',
value: 'one source'
},
{
label: '\{\{original research\}\}: article has original research or unverified claims',
value: 'original research'
},
{
label: '\{\{overcoverage\}\}: Examples and perspectives in the article might have an extensive bias or disproportional coverage towards one or more specific regions',
value: 'overcoverage'
},
{
label: '\{\{peacock\}\}: article may contain peacock terms that promotes the subject in a subjective manner without adding information',
value: 'peacock'
},
{
label: '\{\{primarysources\}\}: article needs reliable, third-party sources',
value: 'primarysources'
},
{
label: "\{\{recentism\}\}: article is slanted towards recent events",
value: "recentism"
},
{
label: '\{\{refimprove\}\}: article needs additional references or sources for verification',
value: 'refimprove'
},
{
label: '\{\{refimproveBLP\}\}: BLP article needs additional references or sources for verification',
value: 'refimproveBLP'
},
{
label: '\{\{self-published\}\}: article may contain improper references to self-published sources',
value: 'self-published'
},
{
label: '\{\{synthesis\}\}: article may contain unpublished synthesis of published material that conveys unattributable ideas',
value: 'synthesis'
},
{
label: "\{\{toofewopinions\}\}: article may not include all significant viewpoints",
value: "toofewopinions"
},
{
label: '\{\{unencyclopedic\}\}: article contains unencyclopedic material',
value: 'unencyclopedic'
},
{
label: '\{\{unreferenced\}\}: article has no references at all',
value: 'unreferenced'
},
{
label: '\{\{unreferencedBLP\}\}: BLP article has no references at all',
value: 'unreferencedBLP'
},
{
label: '\{\{update\}\}: article information is out of date',
value: 'update'
},
{
label: '\{\{weasel\}\}: article quality may be compromised by the use of weasel words',
value: 'weasel'
}
];
friendlytag.noticeList = [
{
label: '\{\{goceinuse\}\}: article is currently undergoing a major copy edit by the Guild of Copy Editors',
value: 'goceinuse' },
{
label: '\{\{inuse\}\}: article is undergoing a major edit for a short while',
value: 'inuse' },
{
label: '\{\{new unreviewed article\}\}: mark article for later review',
value: 'new unreviewed article' },
{
label: '\{\{underconstruction\}\}: article is currently in the middle of an expansion or major revamping',
value: 'underconstruction' }
];
friendlytag.spellingList = [
{
label: '\{\{R from abbreviation\}\}: redirect from a title with an abbreviation',
value: 'R from abbreviation'
},
{
label: '\{\{R to list entry\}\}: redirect to a \"list of minor entities\"-type article which is a collection of brief descriptions for subjects not notable enough to have separate articles',
value: 'R to list entry'
},
{
label: '\{\{R to section\}\}: sames as \{\{R to list entry\}\}, but when list is more sectionlike in organization, such as list of fictional characters in a fictional universe.',
value: 'R to section'
},
{
label: '\{\{R from misspelling\}\}: redirect from a misspelling or typographical error',
value: 'R from misspelling'
},
{
label: '\{\{R from alternative spelling\}\}: redirect from a title with a different spelling',
value: 'R from alternative spelling'
},
{
label: '\{\{R from plural\}\}: redirect from a plural word to the singular equivalent',
value: 'R from plural'
},
{
label: '\{\{R from related word\}\}: redirect from a related word',
value: 'R from related word'
},
{
label: '\{\{R with possibilities\}\}: redirect from a title for a topic more detailed than what is currently provided on the target page, or section of that page, hence something which can and should be expanded',
value: 'R with possibilities'
},
{
label: '\{\{R from member\}\}: redirect from a person who is a member of a group to more general related topics, such as the group, organization, ensemble or team that he or she belongs to',
value: 'R from member'
},
{
label: '\{\{R from other capitalisation\}\}: redirect from a title with another method of capitalisation',
value: 'R from other capitalisation'
}
];
friendlytag.alternativeList = [
{
label: '\{\{R from alternative name\}\}: redirect from a title that is another name, a pseudonym, a nickname, or a synonym',
value: 'R from alternative name'
},
{
label: '\{\{R from full name\}\}: redirect from a title that is a complete or more complete name',
value: 'R from full name'
},
{
label: '\{\{R from surname\}\}: redirect from a title that is a surname',
value: 'R from surname'
},
{
label: '\{\{R from historic name\}\}: redirect from a title that is another name, a pseudonym, a nickname, or a synonym that has a significant historic past as a region, state, principate\'s holding, city, city-state or such, but which region has been subsumed into a modern era municipality, district or state, or otherwise suffered from a name change over time',
value: 'R from historic name'
},
{
label: '\{\{R from scientific name\}\}: redirect from the scientific name to the common name',
value: 'R from scientific name'
},
{
label: '\{\{R to scientific name\}\}: redirect from the common name to the scientific name',
value: 'R to scientific name'
},
{
label: '\{\{R from name and country\}\}: redirect from the specific name to the briefer name',
value: 'R from name and country'
},
{
label: '\{\{R from alternative language\}\}: redirect from an English name to a name in another language, or vice-versa',
value: 'R from alternative language'
},
{
label: '\{\{R from ASCII\}\}: redirect from a title in basic ASCII to the formal article title, with differences that are not diacritical marks (accents, umlauts, etc.)',
value: 'R from ASCII'
},
{
label: '\{\{R from title without diacritics\}\}: redirect to the article title with diacritical marks (accents, umlauts, etc.)',
value: 'R from title without diacritics'
}
];
friendlytag.administrativeList = [
{
label: '\{\{R from merge\}\}: redirect from a merged page in order to preserve its edit history',
value: 'R from merge'
},
{
label: '\{\{R to disambiguation page\}\}: redirect to a disambiguation page',
value: 'R to disambiguation page'
},
{
label: '\{\{R from duplicated article\}\}: redirect to a similar article in order to preserve its edit history',
value: 'R from duplicated article'
},
{
label: '\{\{R to decade\}\}: redirect from a year to the decade article',
value: 'R to decade'
},
{
label: '\{\{R from shortcut\}\}: redirect from a Wikipedia shortcut',
value: 'R from shortcut'
},
{
label: '\{\{R from CamelCase\}\}: redirect from a CamelCase title',
value: 'R from CamelCase'
},
{
label: '\{\{R from EXIF\}\}: redirect of a wikilink created from JPEG EXIF information (i.e. the \"metadata\" section on some image description pages)',
value: 'R from EXIF'
},
{
label: '\{\{R from school\}\}: redirect from a school article that had very little information',
value: 'R from school'
}
];
// Set to true if template can be grouped into {{articleissues}}
friendlytag.groupHash = {
'3O': true,
'advert': true,
'autobiography': true,
'biased': true,
'blpdispute': true,
'BLPrefimprove': true,
'BLPsources': true,
'BLP sources': true,
'BLPunsourced': true,
'BLPunreferenced': true,
'BLPunref': true,
'citations missing': true,
'citationstyle': true,
'citecheck': true,
'cleanup': true,
'COI': true,
'coi': true,
'colloquial': true,
'confusing': true,
'context': true,
'contradict': true,
'copyedit': true,
'citation style': true,
'criticisms': true,
'crystal': true,
'deadend': true,
'disputed': true,
'essay': true,
'essay-like': true,
'examplefarm': true,
'expert': false,
'external links': true,
'fancruft': true,
'fansite': true,
'fiction': true,
'gameguide': true,
'globalize': true,
'grammar': true,
'histinfo': true,
'hoax': true,
'howto': true,
'importance': true,
'inappropriate person': true,
'incomplete': true,
'lead missing': true,
'lead rewrite': true,
'lead too long': true,
'lead too short': true,
'in-universe': true,
'jargon': true,
'laundry': true,
'laundrylists': true,
'likeresume': true,
'long': true,
'newsrelease': true,
'notability': true,
'notable': true,
'NPOV': true,
'npov': true,
'one source': true,
'OR': true,
'or': true,
'original research': true,
'orphan': true,
'out of date': true,
'peacock': true,
'plot': true,
'POV': true,
'pov': true,
'primarysources': true,
'prose': true,
'proseline': true,
'quotefarm': true,
'recentism': true,
'refimprove': true,
'refimproveBLP': true,
'restructure': true,
'review': true,
'rewrite': true,
'roughtranslation': true,
'sections': true,
'self-published': true,
'spam': true,
'story': true,
'synthesis': true,
'technical': true,
'tone': true,
'toolong': true,
'tooshort': true,
'travelguide': true,
'trivia': true,
'unbalanced': true,
'unencyclopedic': true,
'unref': true,
'unreferenced': true,
'unrefBLP': true,
'unreferencedBLP': true,
'update': true,
'verylong': true,
'weasel': true,
'wikify': true
}
friendlytag.callbacks = {
main: function( pageobj ) {
var params = pageobj.getCallbackParameters();
var tagRe, tagText = '', summaryText = 'Added';
var tags = [], groupableTags = [];
//Remove tags that become superfluous with this action
var pageText = pageobj.getPageText().replace(/{\{\s*(New unreviewed article|Userspace draft)\s*(\|(?:{{[^{}]*}}|[^{}])*)?}}\s*/ig, "");
if( !isRedirect ) {
// Check for preexisting tags and separate tags into groupable and non-groupable arrays
for( var i = 0; i < params.tags.length; i++ ) {
tagRe = new RegExp( '(\\{\\{' + params.tags[i] + '(\\||\\}\\}))', 'im' );
if( !tagRe.exec( pageText ) ) {
if( friendlytag.groupHash[ params.tags[i] ] &&
(params.tags[i] !== 'globalize' || params.globalizeSubcategory === 'globalize' ) &&
(params.tags[i] !== 'notability' || params.notabilitySubcategory === 'none' )) {
// don't add to multipleissues for globalize/notability subcats
groupableTags = groupableTags.concat( params.tags[i] );
} else {
tags = tags.concat( params.tags[i] );
}
} else {
Status.info( 'Info', 'Found \{\{' + params.tags[i]
+ '\}\} on the article already...excluding' );
}
}
if( params.group && groupableTags.length >= 3 ) {
Status.info( 'Info', 'Grouping supported tags into \{\{multiple issues\}\}' );
groupableTags.sort();
tagText += '\{\{multiple issues';
summaryText += ' \{\{[[Template:multiple issues|multiple issues]]\}\} with parameters';
for( var i = 0; i < groupableTags.length; i++ ) {
tagText += '|' + groupableTags[i] +
'=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}';
if( i == (groupableTags.length - 1) ) {
summaryText += ' and';
} else if ( i < (groupableTags.length - 1) && i != 0 ) {
summaryText += ',';
}
summaryText += ' ' + groupableTags[i];
}
tagText += '\}\}\n';
} else {
tags = tags.concat( groupableTags );
}
} else {
// Check for pre-existing tags
for( var i = 0; i < params.tags.length; i++ ) {
tagRe = new RegExp( '(\\{\\{' + params.tags[i] + '(\\||\\}\\}))', 'im' );
if( !tagRe.exec( pageText ) ) {
tags = tags.concat( params.tags[i] );
} else {
Status.info( 'Info', 'Found \{\{' + params.tags[i] +
'\}\} on the redirect already...excluding' );
}
}
}
tags.sort();
for( var i = 0; i < tags.length; i++ ) {
if( tags[i] == 'uncategorized' || tags[i] == 'catimprove' ) {
pageText += '\n\n\{\{' + tags[i]
+ '|date=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}\}\}';
} else {
if( tags[i] == 'globalize' ) {
tagText += '\{\{' + params.globalizeSubcategory;
} else {
tagText += ( isRedirect ? '\n' : '' ) + '\{\{' + tags[i];
}
if( tags[i] == 'notability' && params.notabilitySubcategory != 'none' ) {
tagText += '|' + params.notabilitySubcategory;
}
// prompt for other parameters, based on the tag
switch( tags[i] ) {
case 'cleanup':
var reason = prompt('You can optionally enter a more specific reason why the article requires cleanup. \n' +
"Just click OK if you don't wish to enter this. To skip the \{\{cleanup}} tag, click Cancel.", "");
if (reason == null) {
continue;
} else if (reason !== "") {
tagText += '|reason=' + reason;
}
break;
case 'notenglish':
var langname = prompt('Please enter the name of the language the article is thought to be written in. \n' +
"Just click OK if you don't know. To skip the \{\{notenglish}} tag, click Cancel.", "");
if (langname == null) {
continue;
} else if (langname !== "") {
tagText += '|1=' + langname;
}
break;
case 'roughtranslation':
var langname = prompt('Please enter the name of the language the article is thought to have been translated from. \n' +
"Just click OK if you don't know. To skip the \{\{roughtranslation}} tag, click Cancel.", "");
if (langname == null) {
continue;
} else if (langname !== "") {
tagText += '|1=' + langname;
}
break;
case 'merge':
case 'merge to':
case 'merge from':
var param = prompt('Please enter the name of the other article(s) involved in the merge. \n' +
"To specify multiple articles, separate them with a vertical pipe (|) character. \n" +
"This information is required. Click OK when done, or click Cancel to skip the merge tag.", "");
if (param == null) {
continue;
} else if (param !== "") {
tagText += '|' + param;
}
break;
}
tagText += isRedirect ? '\}\}' : '|date=\{\{subst:CURRENTMONTHNAME\}\} \{\{subst:CURRENTYEAR\}\}\}\}\n';
}
if( i == (tags.length - 1) && ( i > 0 || groupableTags.length > 3 ) ) {
summaryText += ' and';
} else if ( i < (tags.length - 1) && ( i != 0 || groupableTags.length > 3 ) ) {
summaryText += ',';
}
summaryText += ' \{\{[[Template:';
if( tags[i] == 'globalize' ) {
summaryText += params.globalizeSubcategory + '|' + params.globalizeSubcategory;
} else {
summaryText += tags[i] + '|' + tags[i];
}
summaryText += ']]\}\}';
}
if( isRedirect ) {
pageText += tagText;
} else {
// smartly insert the new tags after any hatnotes. Regex is a bit more
// complicated than it'd need to be, to allow templates as parameters,
// and to handle whitespace properly.
pageText = pageText.replace(/^\s*(?:((?:\s*{{\s*(?:about|dablink|distinguish|for|other\s?(?:hurricaneuses|people|persons|places|uses(?:of)?)|redirect(?:-acronym)?|see also|selfref|the)\d*\s*(\|(?:{{[^{}]*}}|[^{}])*)?}})+(?:\s*\n)?)\s*)?/i,
"$1" + tagText);
}
summaryText += ' tag' + ( ( tags.length + ( groupableTags.length > 3 ? 1 : 0 ) ) > 1 ? 's' : '' ) +
' to ' + ( isRedirect ? 'redirect' : 'article' ) + TwinkleConfig.summaryAd;
pageobj.setPageText(pageText);
pageobj.setEditSummary(summaryText);
pageobj.setWatchlist(FriendlyConfig.watchTaggedPages);
pageobj.setMinorEdit(FriendlyConfig.markTaggedPagesAsMinor);
pageobj.setCreateOption('nocreate');
pageobj.save();
if( FriendlyConfig.markTaggedPagesAsPatrolled ) {
pageobj.patrol();
}
}
}
friendlytag.callback.evaluate = function friendlytagCallbackEvaluate(e) {
var form = e.target;
if( isRedirect ) {
var tags = form.getChecked( 'administrative' ).concat( form.getChecked( 'alternative' ) ).concat( form.getChecked( 'spelling' ) );
} else {
if( typeof( FriendlyConfig.customTagList ) == 'object' ) {
var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) ).concat( form.getChecked( 'custom' ) );
} else {
var tags = form.getChecked( 'notice' ).concat( form.getChecked( 'problem' ) ).concat( form.getChecked( 'maintenance' ) );
}
var globalizeSubcategory = form.getChecked( 'problem.globalize' );
var notabilitySubcategory = form.getChecked( 'problem.notability' );
}
var params;
if( tags.length == 0 ) {
alert( 'You must select at least one tag!' );
return;
}
if( !isRedirect ) {
params = {
tags: tags,
group: form.group.checked,
globalizeSubcategory: globalizeSubcategory ? globalizeSubcategory[0] : null,
notabilitySubcategory: notabilitySubcategory ? notabilitySubcategory[0] : null
}
} else {
params = {
tags: tags
}
}
SimpleWindow.setButtonsEnabled( false );
Status.init( form );
Wikipedia.actionCompleted.redirect = wgPageName;
Wikipedia.actionCompleted.notice = "Tagging complete, reloading article in a few seconds";
if (isRedirect) Wikipedia.actionCompleted.followRedirect = false;
var wikipedia_page = new Wikipedia.page(wgPageName, isRedirect ? "Tagging redirect" : "Tagging article");
wikipedia_page.setCallbackParameters(params);
wikipedia_page.load(friendlytag.callbacks.main);
}
// register initialization callback
Twinkle.init.moduleReady( "friendlytag", friendlytag );
// </nowiki>