MediaWiki:G13-restore-wizard.js
Appearance
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/** * MediaWiki:G13-restore-wizard.js * * Script for [[Wikipedia:Requests for undeletion/Abandoned pages]], loaded via * [[mw:Snippets/Load JS and CSS by URL]]. Creates a form for making requests to [[WP:RFUD]]. * * Author: [[User:SD0001]] * License: MIT */ // <nowiki> varapi,previewApi; $.when( $.ready, mw.loader.using(['mediawiki.util','mediawiki.api','mediawiki.user']) ).then(function(){ if(mw.config.get('wgPageName').indexOf('Wikipedia:Requests_for_undeletion/Abandoned_pages')!==0){ return; } api=newmw.Api(); previewApi=newmw.Api(); // Replace "Request draft undeletion" button with a form $('#g13-wizard-container').replaceWith( $('<div>').append( $('<label>') .attr('for','g13-page') .text('Enter draft page title: '), $('<input>') .attr('id','g13-page') .attr('list','g13-list') .attr('size','60') .css('margin-bottom','8px') .val(mw.util.getParamValue('page')||'') ), $('<datalist>') .attr('id','g13-list'), $('<label>') .attr('for','g13-reason') .text('Enter reason: '), $('<textarea>') .attr('id','g13-reason') .attr('rows',8) .val("Hi, "+(!mw.user.isNamed()?"":"I'm "+mw.config.get('wgUserName')+", and ")+"I would like to request the undeletion of this [[WP:Drafts|draft]] deleted under [[WP:CSD#G13|CSD G13]] or [[WP:CSD#U6|U6]]. Please restore the page so that I can make edits to it. Thank you. ~~~~") .on('keyup',updatePreview) .on('focus',updatePreview), $('<div>') .attr('id','g13-reason-preview'), $('<button>') .attr('id','g13-submit') .addClass('mw-ui-button mw-ui-progressive') .text('Make request') .css('margin-top','5px') .on('click',evaluate), $('<div>') .attr('id','g13-status') ); $('#g13-reason').trigger('keyup'); // populate datalist with non-existent drafts and WT:AFC subpages linked // from the user's talk page api.get({ "action":"query", "format":"json", "titles":"User talk:"+mw.config.get('wgUserName'), "generator":"links", "formatversion":"2", "gplnamespace":"118|5",// draft + Wikipedia talk "gpllimit":"50" }).then(function(data){ data.query.pages.forEach(function(pg){ if(pg.missing){ if(pg.ns===5&&pg.title.indexOf('Wikipedia talk:Articles for creation/')!==0){ return; } $('#g13-list').append($('<option>').attr('value',pg.title)); } }); }); }); functionupdatePreview(){ varreason=$('#g13-reason').val(); previewApi.abort(); previewApi.parse(reason,{pst:true,title:'Wikipedia:Requests for undeletion'}).then(function(parsed){ parsed=parsed.replace(/<script/gi,'<script');// probably unnecessary, just in case ... $('#g13-reason-preview').html(parsed); }); } functionevaluate(){ varpage=$('#g13-page').val(); $('#g13-status').text('Checking page ...').css('color','blue'); checkDeletedRevisions(page).then(function(pg){ if(pg.invalid){ $('#g13-status').text('Page title entered is invalid').css('color','red'); return; } if(!pg.missing){ $('#g13-status').text('This page already exists!').css('color','red'); return; } if(!pg.deletedrevisions){ $('#g13-status').text('This page does not have any deleted history. Please check the page name.').css('color','red'); makeSuggestions(page); return; } vartext='*{{revisions|'+pg.title+'}}'; varreason=$('#g13-reason').val(); if(reason){ text+='\n\n'+reason; if(reason.indexOf('~~~~')===-1){ text+=' ~~~~'; } } api.newSection('Wikipedia:Requests for undeletion',pg.title,text).then(function(data){ if(data.edit&&data.edit.result==='Success'){ $('#g13-status').text('Request filed successfully. Redirecting you to Wikipedia:Requests for undeletion#'+pg.title).css('color','green'); setTimeout(function(){ location.href=mw.util.getUrl('Wikipedia:Requests for undeletion#'+pg.title); },1000); }else{ return$.Deferred().reject(data); } }).catch(function(){ $('#g13-status').text('Failed to save request. Please try again.').css('color','red'); }); }); } functioncheckDeletedRevisions(page){ returnapi.get({ "action":"query", "format":"json", "prop":"deletedrevisions", "titles":page, "formatversion":"2", "drvprop":"ids|timestamp|user" }).then(function(data){ returndata.query.pages[0]; }); } functionmakeSuggestions(page){ vardraftpage=mw.Title.newFromText(page); draftpage.namespace=118; varhandleDidYouMean=function(pg){ if(pg.deletedrevisions){ $('#g13-status').append('<br>Did you mean <code>'+pg.title+'</code>? ', $('<button>').text('Yes').addClass('mw-ui-button').on('click',function(){ $('#g13-page').val(pg.title); $('#g13-submit').click(); }) ); } }; checkDeletedRevisions(draftpage.toString()).then(handleDidYouMean); checkDeletedRevisions('Wikipedia talk:Articles for creation/'+draftpage.getMain()).then(handleDidYouMean); } // </nowiki>