Fandom Developers Wiki
Advertisement

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/**
 * This script helps creating a list of filenames in a sequence.
 * @docs [[Name Sequencer]]
 * @author Ditto Duck Penguin - original script
 * @author Kofirs2634 - rewrite (i18n and UCP support)
 */
$(function() {
	if (window.NameSequencer) return;
	window.NameSequencer = true;
	
	const c = mw.config.get(['wgArticlePath', 'wgCanonicalSpecialPageName', 'wgTitle']);
	var i18n;

	$('#my-tools-menu').prepend($('<li>', { class: 'custom' }).append($('<a>', {
		text: 'Name Sequencer',
		href: c.wgArticlePath.replace('$1', 'Special:Blankpage/Name_Sequencer')
	})));

	function init() {
		$('#mw-content-text').empty()
		.append($('<a>', { href: 'https://dev.fandom.com/wiki/Name_Sequencer', text: i18n.msg('helpLink').plain(), id: 'nsq-help' }))
		.append($('<div>', { class: 'nsq-entry' })
			.append($('<strong>', { text: i18n.msg('settings').plain() }))
			.append($('<input>', { id: 'nsq-prefix', placeholder: i18n.msg('namespace').plain() }))
			.append($('<input>', { id: 'nsq-name', placeholder: i18n.msg('name').plain() }))
			.append($('<input>', { id: 'nsq-number', type: 'number', min: 0, placeholder: i18n.msg('number').plain() }))
			.append($('<input>', { id: 'nsq-suffix', placeholder: i18n.msg('suffix').plain() }))
			.append($('<input>', { id: 'nsq-extension', placeholder: i18n.msg('extension').plain() }))
			.append($('<label>', { text: i18n.msg('zero').plain() })
				.append($('<input>', { id: 'nsq-zero', type: 'checkbox' })))
			.append($('<button>', { id: 'nsq-gen', text: i18n.msg('btnGenerate').plain() }))
		)
		.append($('<div>', { class: 'nsq-entry' })
			.append($('<strong>', { text: i18n.msg('findReplace').plain() }))
			.append($('<input>', { id: 'nsq-find', placeholder: i18n.msg('find').plain() }))
			.append($('<input>', { id: 'nsq-replace', placeholder: i18n.msg('replace').plain() }))
			.append($('<button>', { id: 'nsq-fnr', text: i18n.msg('btnReplace').plain() }))
		)
		.append($('<textarea>', { cols: 75, rows: 25, id: 'nsq-result', placeholder: i18n.msg('result').plain() }));
	
		$('head').append($('<style>', { text:
			'.nsq-entry > * { margin-right: 3px }' +
			'.nsq-entry label { display: inline-block }' +
			'#nsq-help { display: block; text-align: right; font-weight: bold }'
		}));
	
		$('#nsq-gen').click(generate);
		$('#nsq-fnr').click(replace);
	}
	function generate() {
		var prefix = $('#nsq-prefix').val(), name = $('#nsq-name').val(),
			num = parseInt($('#nsq-number').val()) || 10,
			suffix = $('#nsq-suffix').val(), ext = $('#nsq-extension').val(),
			zero = $('#nsq-zero').prop('checked');
			list = '';
		if (zero) { for (i = 0; i < num; i++) list += prefix + name + i + suffix + ext + '\n' }
		else { for (i = 1; i <= num; i++) list += prefix + name + i + suffix + ext + '\n' }
		$('#nsq-result').val(list)
	}
	function replace() {
		var regexp = new RegExp($('#nsq-find').val(), 'gm'),
			replace = $('#nsq-replace').val()
		$('#nsq-result').val($('#nsq-result').val().replace(regexp, replace))
	}
	
	mw.hook('dev.i18n').add(function(i18ni) {
		i18ni.loadMessages('Name Sequencer').done(function(i18np) {
			i18n = i18np;
			i18n.useUserLang();
			if (c.wgCanonicalSpecialPageName == 'Blankpage' && c.wgTitle.match(/\/Name Sequencer/i)) init()
		})
	})
	
	importArticle({ type: 'script', article: 'u:dev:MediaWiki:I18n-js/code.js' });
})
Advertisement