User:Quarl/autoafd.js

// User:Quarl/autoafd.js

// requires: wikipage.js, wikipageAfd.js, wikiedit.js, addilink.js, util.js // enhanced by: advanced_sig.js

// quarl 2006-01-23 new version that opens the nomination page on invocation; adds //                 checkboxes for tag & log (default on); do the tagging and logging //                 asynchronously on 'submit'.

// TODO: don't lose the extra stuff on preview/diff

// TODO: add buttons for manually tagging/listing

//

if(typeof window.makeSignature=='undefined')makeSignature=function{return "~"};

function autoafd_makeBeginUrl { var wp = wikiPage.afdPageX; return wp.qurl + '&action=edit&fakeaction=autoafd'; }

function autoafd_load {   if (queryVars['fakeaction'] == 'autoafd') { autoafd_begin; return; }

if (!wikiPage.nsMainP) { // don't bother with non-main-namespace articles return; }

if (document.getElementById('afd')) { // this article already has an AFD tag. return; }

if (wikiPage.xfdType == 'afd') addTab(autoafd_makeBeginUrl, 'Afd', 'ca-autoafd', 'Nominate for deletion'); }

function autoafd_begin { if (window.afdEditor) return; // already initialized

// TODO: some of this is redundant with wikipageAfd.js   window.wpAfd = wikiPage; window.wpAfdTarget = wpAfd.afdTargetPage; if (!wpAfdTarget) { alert("Doesn't look like an AFD page?!"); return; }   window.wpAfdLog = afdLogPage;

var editor = window.afdEditor = wpAfd.getEditor; if (editor.wpTextbox1) { // TODO: automatically go to #2 etc.       alert("There's an old AFD at the default location already.\n\n" +              'Please manually edit ' + wikiPage.page + ' (2)).');        return;    }

editor.wpTextbox1 = '===' + wpAfdTarget.page + '===\n' + "Nomination. Delete " + makeSignature + "\n*\n*\n*\n"; editor.wpSummary = "Initial nomination for deletion of " + wpAfdTarget.page + ""; editor.updateForm;

autoafd_annotate; }

function autoafd_annotate { autoafd_add_new_checkboxes; hookEventObj(document.editform.wpSave, 'click', autoafd_submitHook_Event); window.autoafd_async_wait = null; // Don't submit! Let the user type in peace. }

function autoafd_add_new_checkboxes { if (document.getElementById('autoafd-options')) return;

var tagTitle = 'Add to ' + string_quote_escape(wpAfdTarget.page) var tagText = 'Tag ' + wpAfdTarget.page + ' with ';

var listTitle = 'List this AFD on today\'s AFD log page'; var listText = 'List in ' + //wpAfdLog.page + 'log page' + '';

var newstuff = document.createElement('div'); window.afd_newstuff = newstuff; newstuff.id = 'autoafd-options'; newstuff.innerHTML = ''+ '' + tagText + ' ' + '  ' +                         ''+ '' + listText + ' '; add_before(document.editform.wpMinoredit, newstuff); }

function autoafd_submitHook_Event(event) {   if (!(autoafd_submitHook)) { event.preventDefault; event.stopPropagation; } }

function autoafd_submitHook { window.afdEditor.updateThis;

// autoafd_async_wait is initially set to null. The first time we arrive here // we set it to 0. We wait for up to two asynchronous submissions to occur first // before actually submitting the form.

if (autoafd_async_wait == 0) { return true; }   if (autoafd_async_wait == null) { autoafd_async_wait = 0; }

if (document.editform.wpTagAFD.checked && !window.asyncTagAFDStarted) { window.asyncTagAFDStarted = true; autoafd_async_wait++; var status = window.autoafd_status_tag = document.createElement('div'); status.innerHTML = 'Tagging page: Downloading...'; status.id = 'status-tagafd'; add_after(afd_newstuff, status); wpAfdTarget.getEditorAsync(autoafd_TagAFD); }   if (document.editform.wpListAFD.checked && !window.asyncListAFDStarted) { window.asyncListAFDStarted = true; autoafd_async_wait++; var status = window.autoafd_status_list = document.createElement('div'); status.innerHTML = 'Listing: Downloading...'; status.id = 'status-listafd'; add_after(afd_newstuff, status); wpAfdLog.getEditorAsync(autoafd_ListAFD); }

if (autoafd_async_wait == 0) return true;

// prevent repeat clicks document.editform.wpSave.disabled = true; return false; }

function autoafd_TagAFD(editor) { if (editor.refuseCreate) return;

if (editor.wpTextbox1.match(/{{afd/) ||       editor.wpTextbox1.match(/\[\[Category:Pages for deletion\]\]/)) {        autoafd_status_tag.innerHTML += ' Already tagged!'; } else { autoafd_status_tag.innerHTML += ' submitting...'; editor.wpTextbox1 = '\n\n' + trim_lines(editor.wpTextbox1); editor.wpSummary = 'Nominating '+wpAfdTarget.page+' for AFD'; editor.submitAsync(null, autoafd_TagAFD_done); } }

function autoafd_ListAFD(editor) { if (editor.refuseCreate) return; // safety check var newText = ''; if (editor.wpTextbox1.indexOf(newText)!=-1) { autoafd_status_list.innerHTML += ' already listed!'; } else { autoafd_status_list.innerHTML += ' submitting...'; editor.wpTextbox1 = trim_lines(editor.wpTextbox1) + '\n' + newText + '\n'; editor.wpSummary = 'Listing '+wpAfdTarget.page+' for AFD'; editor.submitAsync(null, autoafd_ListAFD_done); } }

function autoafd_TagAFD_done(req) { if (req.status != 200) { alert("Error tagging article for AFD!"); return; }   autoafd_status_tag.innerHTML += ' done!'; autoafd_async_done_1; }

function autoafd_ListAFD_done(req) { if (req.status != 200) { alert("Error listing article for AFD!"); return; }   autoafd_status_list.innerHTML += ' done!'; autoafd_async_done_1; }

function autoafd_async_done_1 { if (--autoafd_async_wait == 0) { document.editform.wpSave.disabled = false; //document.editform.wpSave.click; document.editform.submit; } }

$(autoafd_load);

//