MediaWiki:Gadget-newPage.js

After saving, you may need to bypass your browser's cache to see the changes. For further information, see Wikipedia:Bypass your cache.

  • In most Windows and Linux browsers: Hold down Ctrl and press F5.
  • In Safari: Hold down ⇧ Shift and click the Reload button.
  • In Chrome and Firefox for Mac: Hold down both ⌘ Cmd+⇧ Shift and press R.
$(function () {
	var $button, $window;
	
	function createWindow(modal){
		modal.content =  new OO.ui.PanelLayout({ padded: true, expanded: false });
		var pagenameInput = new OO.ui.TextInputWidget({placeholder: 'Full page name including namespace', type: 'text', id: 'gadget-newpage-pagename'});
		var submitButton = new OO.ui.ButtonInputWidget({ label: 'Create', flags: ['primary', 'progressive']});
		var cancelButton = new OO.ui.ButtonInputWidget({ label: 'Cancel', flags: 'destructive'});
		
		var submitAction = function(modal) {
			var page = pagenameInput.getValue();
			if (page == '') return;
			var url = mw.util.getUrl(page, {action: 'edit'});
			window.location.assign(url);
		};
		
		submitButton.on('click', submitAction);
		pagenameInput.on('enter', submitAction);
		
		cancelButton.on('click', function(modal){window.OOUIWindowManager.closeWindow(modal);}, [modal]);
		
		var fieldset = new OO.ui.FieldsetLayout({});
		fieldset.addItems([
			new OO.ui.FieldLayout(pagenameInput, { label: 'Page name', help: 'Full page name of the page to created, including namespace' })
		]);
		modal.content.$element.append(fieldset.$element, '<br>', cancelButton.$element, submitButton.$element);
		modal.$body.append(modal.content.$element);
	}

	function openWindow(e){
		e.preventDefault();
		if ($window == undefined) {
			rswiki.createOOUIWindow('gadget-newpage-window', 'Create new page', {}, createWindow, true).then(function(w){
				$window = w;
			});
		} else {
			window.OOUIWindowManager.openWindow('gadget-newpage-window');
		}
	}

	function init(){
		$button = $('<li>').attr('id', 't-gadget-newpage').append($('<a>').attr('href', '#').text('Make new page'));
		
		$button.click(openWindow);
		
		$('#p-tb .vector-menu-content ul').append($button);
	}
	init();
})