//<nowiki> jQuery(document).ready(function($) { // Disable in article namespace as it shouldn't ever be used there if(mw.config.get('wgNamespaceNumber')
//<nowiki>
jQuery(document).ready(function($) {
// Disable in article namespace as it shouldn't ever be used there
if(mw.config.get('wgNamespaceNumber') != 0 && document.getElementsByName('wpTextbox1')[0]) {
mw.loader.using(['mediawiki.util']).done( function() {
var portletlink = mw.util.addPortletLink('p-tb','#','Chk4Clob','t-chk4clob');
$(portletlink).click(function(e) {
e.preventDefault();
wpBuildCheckForConflictingParameters();
});
});
}
// -------------------------------------------------------------------------------- //
function wpBuildCheckForConflictingParameters()
{
var already_added = false;
// Send {{conflicting parameters category|template_title}} to the clipboard to make the next step easier
var template_title = mw.config.get('wgTitle');
template_title = template_title.replace(/(.*)\/sandbox/, "$1");
var paste_text = "{{conflicting parameters category|" + template_title + "}}";
var dummy = $('<input>').val(paste_text).appendTo('body').select();
document.execCommand('copy');
var mycontent = document.getElementById('wpTextbox1');
// Copy the contents of the text window so we can modify it without problems
var mytxt = mycontent.value;
var original_text = mycontent.value;
// Make sure we haven't already done this before
if(mytxt.search(/\{\{#invoke:[Cc]heck[_ ]+for[_ ]+conflicting[_ ]+parameters/g) >= 0 ) {
already_added = true;
alert('Already added, attempting to replace. CHECK DIFF CAREFULLY');
}
var myfullpagename = mw.config.get('wgPageName');
myfullpagename = myfullpagename.replace(/_/g, ' ');
myfullpagename = myfullpagename.replace(/\/sandbox$/, '');
var mypagename = myfullpagename.replace(/^Template:/, '');
mypagename = mypagename.charAt(0).toLowerCase() + mypagename.slice(1);
mypagename = mypagename.replace(/^wikiProject/, 'WikiProject');
// // Attempt to remove the previous incarnation of {{#invoke:Check for unknown parameters
// if (already_added) {
// mycontent.value = mycontent.value.replace(/{{#invoke:[Cc]heck[_ ]+for[_ ]+unknown[_ ]+parameters[\W\w]*}}\s*<noinclude>/, '<noinclude>');
// }
// Finally, build the blank template
mytxt = '{' + '{#invoke:'
+ 'Check for conflicting parameters|check\n'
+ '| template = [[' + myfullpagename + ']]\n'
+ '| cat = {' + '{main other|Category:Pages using ' + mypagename + ' with conflicting parameters}}\n';
const alias_regex = /\|\s*\_alias\-map\s*=\s*([^\|]+)/;
var alias_map = original_text.match(alias_regex);
var aliases = [];
if (alias_map && alias_map[1]) {
aliases = alias_map[1].split(',');
for (let i = 0; i < aliases.length; i++) {
mytxt = mytxt + '| ' + aliases[i].trim().split(':')[0] + '; ' + aliases[i].trim().split(':')[1] + '\n';
}
}
const if_empty_regex = /(\{\{if empty\s*\|(?:\{\{\{[^\{\}]*\}\}\}|[^\{\}])*\}\})/gmi;
// var allMatches = original_text.matchAll(if_empty_regex);
const allMatches = [...original_text.matchAll(if_empty_regex)];
var found = {};
if (allMatches && allMatches[0] && allMatches[0][0]) {
for (let i = 0; i<allMatches.length; i++){
var match = allMatches[i][0];
match = match.replace(/\|\}\}\}/g, '}}}');
const params = [...match.matchAll(/\{\{\{([\w\s\-\(\)]+)\}\}\}/gm)];
var new_param = '| ';
if (params.length>1){
for (let j = 0; j<params.length; j++){
new_param = new_param + params[j][1] +'; ';
}
new_param = new_param.replace(/;([^;]*)$/gm, '$1');
if (!found[new_param]) {
mytxt = mytxt + new_param +'\n';
found[new_param] = 1;
}
}
}
}
mytxt = mytxt + "}}";
if (aliases.length == 0 && Object.values(found).length == 0) {
alert('No conflicting parameters found');
return;
}
alert('Conflicting param check added with ' + (aliases.length + Object.values(found).length) + ' parameters.');
mycontent.value = mycontent.value + mytxt;
// Move up
mycontent.value = mycontent.value.replace(/([\r\n \t][\r\n \t]*)(\{\{#invoke:Check for conflicting parameters(?:\{\{(?:\{\{[^{}]*\}\}|[^{}])*\}\}|[^{}])*\}\})/gi, '$2$1');
mycontent.value = mycontent.value.replace(/(<noinclude>(?:<!--[^<>]*-->|[^<>])*<\/noinclude>)(\{\{#invoke:Check for conflicting parameters(?:\{\{(?:\{\{[^{}]*\}\}|[^{}])*\}\}|[^{}])*\}\})/gi, '$2$1');
mycontent.value = mycontent.value.replace(/([\r\n \t][\r\n \t]*)(\{\{#invoke:Check for conflicting parameters(?:\{\{(?:\{\{[^{}]*\}\}|[^{}])*\}\}|[^{}])*\}\})/gi, '$2$1');
var mysummary = '';
if (already_added) {
mysummary = 'Updating conflicting parameter tracking through ['
+ '[:Category:Pages using ' + mypagename + ' with conflicting parameters]] using ['
+ '[User:Zackmann08/scripts/AddCheckForConflictingParameters.js|AddCheckForConflictingParameters]]'
+ ' using [[Module:check for conflicting parameters]]';
} else {
mysummary = 'Adding conflicting parameter tracking through ['
+ '[:Category:Pages using ' + mypagename + ' with conflicting parameters]] using ['
+ '[User:Zackmann08/scripts/AddCheckForConflictingParameters.js|AddCheckForConflictingParameters]]'
+ ' and [[Module:check for conflicting parameters]]';
}
var editsummary = document.getElementsByName('wpSummary')[0];
if(typeof editsummary == 'object') {
if (editsummary.value.indexOf(mysummary) == -1) {
if (editsummary.value.match(/[^\*\/\s][^\/\s]?\s*$/)) {
editsummary.value += '; ' + mysummary;
} else {
editsummary.value += mysummary;
}
}
}
// document.getElementById('wpDiff').click();
}
// -------------------------------------------------------------------------------- //
});
//</nowiki>
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.