Opmerking: na het publiceren moet je misschien je browsercache legen om de veranderingen te zien.
- Firefox / Safari: houd Shift ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5 of Ctrl-R (⌘-Shift-R op een Mac)
- Google Chrome: druk op Ctrl-Shift-R (⌘-Shift-R op een Mac)
- Edge: houd Ctrl ingedrukt terwijl u:je op Vernieuwen klikt of druk op Ctrl-F5.
/** * Rename Wizard Tools */ var wvRenameWizardPhrases = { 'current-info-anonymous': 'Login to view, or enter a name below', 'input-username': 'Username: ', 'input-username-from': 'Merge from (old username): ', 'input-username-to': 'Merge to (new username): ', 'input-wikilist': 'On Wikis: ', 'merge-status-notavailable': 'Global Name is Taken', 'merge-status-merged': 'Your Account is Merged', 'info-status': 'Status: ', 'info-gid': 'Global Id: ', 'info-date': 'Merge Date: ', 'info-homewiki': 'Home Wiki: ', 'mergestatus-dne': 'User does not exist', 'mergestatus-attached': 'Attached', 'mergestatus-unattached': 'Unattached', 'result-label-username': 'Result for Username: ', 'result-label-confirmpost': 'Your request will be submitted as follows', 'result-label-status-ok': 'Request Submitted', 'result-label-status-error': 'There was an error submitting your request', 'result-username-available': 'This name is available!', 'result-username-unavailable': 'Sorry, this name is already taken.', 'result-username-nonexist': '(no matching global name)', 'action-link-createaccount': 'Create Account Now', 'action-link-confirm': 'Confirm', 'action-link-request': 'Make Request', 'label-section-rename': 'Request Rename', 'req-text-title': 'Request for Rename', 'req-text-user': 'User "', 'req-text-action1': '" is requesting that username "', 'req-text-action2': '" is renamed and merged with the username "', 'req-text-wikilist': '"', 'icon-ok': '<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/Approve_icon.svg/30px-Approve_icon.svg.png"></img>', 'icon-bad': '<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Stop_x_nuvola.svg/30px-Stop_x_nuvola.svg.png"></img>', 'icon-loading': '<div style="text-align: center"><img alt="saving report" src="https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif"></img></div>', } function wvRenameWizard() { this.requestFromName = ''; this.requestToName = ''; this.requestWikis = {}; this.requestText = ''; this.allWikis = { 'enwikivoyage':'en.wikivoyage.org', 'dewikivoyage':'de.wikivoyage.org', 'itwikivoyage':'it.wikivoyage.org', 'frwikivoyage':'fr.wikivoyage.org', 'svwikivoyage':'sv.wikivoyage.org', 'nlwikivoyage':'nl.wikivoyage.org', 'ruwikivoyage':'ru.wikivoyage.org', }; this.setupCurrentInfo = function( divid ) { var currentSite = mw.config.get( 'wgSiteName' ); var currentUser = mw.config.get( 'wgUserName' ); if ( currentUser == null ) { var infobox = $( "#"+divid ); infobox.html( '' ); infobox.append( $('<p></p>').text( wvRenameWizardPhrases['current-info-anonymous'] ) ); } else { this.getGlobalInfo( currentUser, divid, this.fillGlobalInfo ); } } this.fillGlobalInfo = function( divid, username, guid, regDate, homeWiki, attachedWikis, unatachedWikis ) { var currentSite = mw.config.get( 'wgSiteName' ); var infobox = $( "#"+divid ); var attachedMsg = ''; infobox.html( '' ); infobox.append( $('<h3></h3>').text( wvRenameWizardPhrases['input-username'] + username ) ); if ( guid > 0 ) { if ( attachedWikis[currentSite] == null ) { // Global account exists, but is not attached here so we assume this user cannot use it attachedMsg = wvRenameWizardPhrases['merge-status-notavailable']; } else { // Global account exists, and it's attached here, so we assume it belongs to this user attachedMsg = wvRenameWizardPhrases['merge-status-merged']; } var userdata = $('<ul></ul>'); userdata.append( $('<li></li>').text( wvRenameWizardPhrases['info-status'] + attachedMsg ) ); userdata.append( $('<li></li>').text( wvRenameWizardPhrases['info-gid'] + guid ) ); userdata.append( $('<li></li>').text( wvRenameWizardPhrases['info-date'] + regDate ) ); //userdata.append( $('<li></li>').text( wvRenameWizardPhrases['info-homewiki'] + homeWiki ) ); infobox.append( userdata ); var currentWikiStatus = { 'enwikivoyage': wvRenameWizardPhrases['mergestatus-dne'], 'dewikivoyage':wvRenameWizardPhrases['mergestatus-dne'], 'itwikivoyage':wvRenameWizardPhrases['mergestatus-dne'], 'svwikivoyage':wvRenameWizardPhrases['mergestatus-dne'], 'nlwikivoyage':wvRenameWizardPhrases['mergestatus-dne'], 'enwiki83':wvRenameWizardPhrases['mergestatus-dne'], 'dewiki83':wvRenameWizardPhrases['mergestatus-dne'] }; var allWikis = window.gRW.allWikis; for ( var ndx = 0; ndx < attachedWikis.length; ++ndx ) { currentWikiStatus[ attachedWikis[ndx]['wiki'] ] = wvRenameWizardPhrases['mergestatus-attached']; } for ( var ndx = 0; ndx < unatachedWikis.length; ++ndx ) { currentWikiStatus[ unatachedWikis[ndx]['wiki'] ] = wvRenameWizardPhrases['mergestatus-unattached']; } var wikistatus = $('<ul></ul>'); for (var wiki in allWikis) { wikistatus.append( $('<li></li>').text( allWikis[wiki] + ": " + currentWikiStatus[wiki] ) ); } infobox.append( $('<p></p>').text('Wikis') ); infobox.append( wikistatus ); } else { infobox.append( $('<p></p>').text( wvRenameWizardPhrases['result-username-nonexist'] ) ); } } this.showSearchResult = function( divid, username, guid, regDate, homeWiki, attachedWikis, unatachedWikis ) { var searchbox = $( "#"+divid ); searchbox.html( '' ); searchbox.append( $('<h3></h3>').text( wvRenameWizardPhrases['result-label-username'] + username ) ); if ( guid == 0 ) { searchbox.append( $( wvRenameWizardPhrases['icon-ok'] ) ); searchbox.append( $( '<p></p>' ).text( wvRenameWizardPhrases['result-username-available'] ) ); var createLink = $( '<a></a>' ); createLink.attr( 'href', "index.php?title=Special:UserLogin&type=signup&wpName=" + username ); createLink.text( wvRenameWizardPhrases['action-link-createaccount'] ); searchbox.append( createLink ); } else { searchbox.append( $( wvRenameWizardPhrases['icon-bad'] ) ); searchbox.append( $( '<p></p>' ).text( wvRenameWizardPhrases['result-username-unavailable'] ) ); } } this.fillRequest = function( divid, username, guid, regDate, homeWiki, attachedWikis, unatachedWikis ) { window.gRW.requestFromName = username; window.gRW.requestWikis = unatachedWikis; window.gRW.requestText = window.gRW.createRequestText( username, window.gRW.requestToName, unatachedWikis ); var reqbox = $( "#"+divid ); reqbox.html( '' ); reqbox.append( $('<p></p>').text( wvRenameWizardPhrases['result-label-confirmpost'] ) ); var requestLines = window.gRW.requestText.split("\n"); for ( var ndx = 0; ndx < requestLines.length; ++ndx ) { reqbox.append( $('<p></p>').text( requestLines[ndx] ) ); } var confLink = $( '<a></a>' ); confLink.attr('href', 'javascript:postRenameRequest( "renameWizardMergeConfirm" )' ); confLink.text( wvRenameWizardPhrases['action-link-confirm'] ); reqbox.append( confLink ); } this.createRequestText = function ( fromname, toname, wikis ) { var currUser = mw.user.getName(); var ret = "== " + wvRenameWizardPhrases['req-text-title'] + " '"+fromname+"' > '"+toname+"' ==\n"; ret += wvRenameWizardPhrases['req-text-user'] + currUser + wvRenameWizardPhrases['req-text-action1'] + fromname + wvRenameWizardPhrases['req-text-action2'] + toname; ret += wvRenameWizardPhrases['req-text-wikilist'] + "\n"; /* for ( ndx = 0; ndx < wikis.length; ++ndx ) { ret += '* ' + wikis[ndx]['wiki'] + "\n"; } */ return ret; } /** * Get data about the CentralAuth (global) user */ this.getGlobalInfo = function ( username, divid, callback ) { //api.php?action=query&meta=globaluserinfo&guiuser=User1&guiprop=groups|merged|unattached&format=json $.ajax({ url: mw.util.wikiScript( 'api' ), data: { format: 'json', action: 'query', meta: 'globaluserinfo', guiuser: username, guiprop: 'merged|unattached', }, dataType: 'json', type: 'GET', success: function( data ) { if ( data && data.query && data.query.globaluserinfo ) { var guid = 0; var regdate = ''; var homewiki = ''; var merged = false; var unattached = false; if ( data.query.globaluserinfo.missing == null ) { guid = data.query.globaluserinfo.id; regdate = data.query.globaluserinfo.registration; homewiki = data.query.globaluserinfo.home; merged = data.query.globaluserinfo.merged; unattached = data.query.globaluserinfo.unattached; } callback ( divid, username, guid, regdate, homewiki, merged, unattached ); } else { alert( 'Error: Unknown result from API.' ); } }, error: function( xhr ) { alert( 'Error: Request failed.' ); } }); } /** * Taken almost verbatim from http://www.mediawiki.org/wiki/API:Edit */ this.addNewSection = function( divid, pagetitle, summary, content, editToken ) { $.ajax({ url: mw.util.wikiScript( 'api' ), data: { format: 'json', action: 'edit', title: pagetitle, section: 'new', summary: summary, text: content, token: editToken }, dataType: 'json', type: 'POST', success: function( data ) { if ( data && data.edit && data.edit.result == 'Success' ) { showStatus( divid, wvRenameWizardPhrases['result-label-status-ok'] ); } else if ( data && data.error ) { alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info ); showStatus( divid, wvRenameWizardPhrases['result-label-status-error'] ); } else { alert( 'Error: Unknown result from API.' ); showStatus( divid, 'error2' ); } }, error: function( xhr ) { alert( 'Error: Request failed.' ); } }); } } function doSearch( divid ) { var searchbox = $( "#"+divid ); searchbox.html( wvRenameWizardPhrases['icon-loading'] ); window.gRW.getGlobalInfo( $('#searchName').attr('value'), divid, window.gRW.showSearchResult ) } function showUserInfo( divid ) { var userbox = $( "#"+divid ); userbox.html( wvRenameWizardPhrases['icon-loading'] ); window.gRW.getGlobalInfo( $('#altName').attr('value'), divid, window.gRW.fillGlobalInfo ) } function makeRenameRequest( divid ) { var reqbox = $( "#"+divid ); reqbox.html( wvRenameWizardPhrases['icon-loading'] ); window.gRW.requestToName = $('#toname').attr('value'); window.gRW.getGlobalInfo( $('#fromname').attr('value'), divid, window.gRW.fillRequest ); } function postRenameRequest( divid ) { var reqbox = $( "#"+divid ); reqbox.html( wvRenameWizardPhrases['icon-loading'] ); var reqLines = window.gRW.requestText.split("\n"); window.gRW.addNewSection( divid, 'Wikivoyage_talk:User_account_migration', reqLines[0], reqLines.slice(1).join("\n"), mw.user.tokens.get( 'csrfToken' ) ); } function showStatus( divid, message ) { var reqbox = $( "#"+divid ); reqbox.html( $('<h3></h3>').text( message ) ); } /** * Initialization function. Test if we should place the DRW on the current page. * Looks for a <div id="myDRW"></div> on the page. */ function runRenameWizard() { if ( $('#renameWizardCurrentInfo').length || $('#renameWizardSearchGlobal').length || $('#renameWizardSearchGlobal').length ) { window.gRW = new wvRenameWizard(); //importStylesheet('User:Steven Zhang/DRW.css'); //shared css if ( $('#renameWizardCurrentInfo').length ){ $("#renameWizardCurrentInfo").html(''); $("#renameWizardCurrentInfo").css( 'width', '300px' ); $("#renameWizardCurrentInfo").css( 'border', '1px black solid' ); $("#renameWizardCurrentInfo").css( 'padding', '10px' ); $("#renameWizardCurrentInfo").css( 'margin', '10px' ); $("#renameWizardCurrentInfo").append( $('<div id="renameWizardCurrentInfoBox"></div>') ); var searchBox = $('<div id=""></div>'); searchBox.append( $('<hr width="60%"></hr>') ); searchBox.append( $('<p>Or search for Username</p>') ); var searchname = $( document.createElement('input') ); searchname.attr({ type: 'text', size: 25, name: 'altName', id: 'altName' }); searchBox.append( searchname ); searchBox.append( $('<a href="javascript:showUserInfo(\'renameWizardCurrentInfoBox\')"></a>').text('Search') ); $("#renameWizardCurrentInfo").append( searchBox ); window.gRW.setupCurrentInfo( "renameWizardCurrentInfoBox" ); } if ( $('#renameWizardSearchGlobal').length ){ $("#renameWizardSearchGlobal").html(''); $("#renameWizardSearchGlobal").css( 'width', '300px' ); $("#renameWizardSearchGlobal").css( 'border', '1px black solid' ); $("#renameWizardSearchGlobal").css( 'padding', '10px' ); $("#renameWizardSearchGlobal").css( 'margin', '10px' ); $("#renameWizardSearchGlobal").append( $('<h3>Search</h3>') ); var searchname = $( document.createElement('input') ); searchname.attr({ type: 'text', size: 25, name: 'searchName', id: 'searchName' }); $("#renameWizardSearchGlobal").append( searchname ); $("#renameWizardSearchGlobal").append( $('<a href="javascript:doSearch(\'renameWizardSearchResult\')"></a>').text('Search') ); $("#renameWizardSearchGlobal").append( $('<div id="renameWizardSearchResult"></div>') ); } if ( $('#renameWizardRequestMerge').length ){ $("#renameWizardRequestMerge").html(''); $("#renameWizardRequestMerge").css( 'width', '600px' ); $("#renameWizardRequestMerge").css( 'border', '1px black solid' ); $("#renameWizardRequestMerge").css( 'padding', '10px' ); $("#renameWizardRequestMerge").css( 'margin', '10px' ); var requestForm = $('<div id="renameWizardMergeForm"></div>'); var fromname = $( document.createElement('input') ); fromname.attr({ type: 'text', size: 25, name: 'fromname', id: 'fromname' }); var toname = $( document.createElement('input') ); toname.attr({ type: 'text', size: 25, name: 'toname', id: 'toname' }); $("#renameWizardRequestMerge").append( $('<p></p>').text( wvRenameWizardPhrases['input-username-from'] ) ); $("#renameWizardRequestMerge").append( fromname ); $("#renameWizardRequestMerge").append( $('<p></p>').text( wvRenameWizardPhrases['input-username-to'] ) ); $("#renameWizardRequestMerge").append( toname ); $("#renameWizardRequestMerge").append( $('<a href="javascript:makeRenameRequest(\'renameWizardMergeConfirm\')"></a>').text( wvRenameWizardPhrases['action-link-request'] ) ); $("#renameWizardRequestMerge").append( $('<div id="renameWizardMergeConfirm"></div>') ); } } }; $( document ).ready( runRenameWizard() ); // JavaScript Document