User:Quarl/wikipageAfd.js

// User:Quarl/wikipageAfd.js - extra afd/rfd/tfd/cfd/mfd-related wikipage // functionality

// TODO: move to wikipageXfd.js

// depends: wikipage.js, datetime.js

//

var wikipageXfd = new Object;

wikipageXfd.ddNames = { 'afd' : 'Wikipedia:Articles for deletion', 'tfd' : 'Wikipedia:Templates for deletion', 'ifd' : 'Wikipedia:Images and media for deletion', 'cfd' : 'Wikipedia:Categories for deletion', 'sfd' : 'Wikipedia:Stub types for deletion', 'rfd' : 'Wikipedia:Redirects for deletion', 'mfd' : 'Wikipedia:Miscellany for deletion' };

wikipageXfd._docIsRedirectP = function(doc) { var d = doc.getElementById('contentSub'); return Boolean(d && d.textContent == 'Redirect page'); }

wikipageXfd._textIsRedirectP = function(doc) { var d = doc.getElementById('wpTextbox1'); return Boolean(d && d.value.match(/^#REDIRECT/i)); }

// look at content to see whether this is a RFD WikiPage.prototype._isRedirectP = function { if (this.viewDoc) { return wikipageXfd._docIsRedirectP(this.viewDoc.doc); } else if (this.editDoc) { return wikipageXfd._textIsRedirectP(this.editDoc.doc); } else { alert ("## WikiPage._isRedirectP error a2ac8317-fbf3-4995-8041-92a638099adc"); return null; } }

// Return deletion debate type depending on page type. // // Valid types: //  afd (Articles) //  tfd (Templates) //  ifd (Images and media) //  cfd (Categories) //  sfd (Stub types) //  rfd (Redirects) //  mfd (Miscellaneous) // // Note: technically, if this is a Talk page, would have to use MFD; in // practice if I'm on the talk page, I really mean to do action on non-Talk // page. WikiPage.prototype.xfdType = function { if (this._xfd_type) { } else if (this.nsMainP) { if (this._isRedirectP) { this._xfd_type = 'rfd'; } else { this._xfd_type = 'afd'; }   } else if (this.nsCategoryP) { this._xfd_type = 'cfd'; } else if (this.nsTemplateP) { if (this.article.match(/-stub$/)) { this._xfd_type = 'sfd'; } else { this._xfd_type = 'tfd'; }   } else if (this.nsImageP) { this._xfd_type = 'ifd'; } else { this._xfd_type = 'mfd'; }   return this._xfd_type; }

// return log page for given date (default today) function afdLogPage(d) { d = d || new Date; return new WikiPage(null,'Wikipedia:Articles for deletion/Log/' + datestampYYYYMonthD(d)); }

WikiPage.prototype.xfdDebateName = function { var n = wikipageXfd.ddNames[this.xfdType]; if (!n) { alert("## WikiPage.xfdDebateName error 46d7d9a3-e63e-4749-a393-6de9ed6c87fa"); return null; }

return n; }

WikiPage.prototype.afdPage = function { if (this.xfdType != 'afd') return; return new WikiPage(null, 'Wikipedia:Articles for deletion/' + this.article); }

WikiPage.prototype.afdPageX = function { // already an AFD page? if (this.afdTargetPage) return this; return this.afdPage; }

WikiPage.prototype.afdTargetPage = function { if (!this.page.match(/^Wikipedia:Articles for deletion\/(.*?)(?: \([0-9]+|2nd nomination|3rd nomination|4th nomination\))?$/)) return null;

var p = RegExp.$1; if (p.match(/^Log\//)) return null;

return new WikiPage(null, p); }

WikiPage.prototype.afdLogDate = function { if (!this.page.match(/^Wikipedia:Articles for deletion\/Log\/(.*?)?$/)) return null; var d = RegExp.$1; return new Date(Date.parse(d)); }

wikipageXfd._load = function { window.wpAfdTarget = wikiPage.afdTargetPage; window.wpAfd = wikiPage.afdPageX; window.wpAfdLogDate = wikiPage.afdLogDate;

window.afdP = Boolean(wpAfdTarget); window.afdLogP = Boolean(wpAfdLogDate); }

addOnloadHook(wikipageXfd._load);

//