User:LinguistAtLarge/afdlog.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
![]() | Documentation for this user script can be added at User:LinguistAtLarge/afdlog. |
// ############################### SAVE TO AFD LOG ##############################
importScript('User:LinguistAtLarge/jquery132.js');
var afdlog = function()
{
if (!wgPageName || wgPageName.indexOf('Wikipedia:Articles_for_deletion') == -1)
{
return -1; // not on afd at all
}
var skiplist = [
{'matchtype':'start', 'text':'Wikipedia:Articles_for_deletion/Log/'},
{'matchtype':'exact', 'text':'Wikipedia:Articles_for_deletion'},
{'matchtype':'exact', 'text':'Wikipedia:Articles_for_deletion/Old'},
{'matchtype':'exact', 'text':'Wikipedia:Articles_for_deletion/Policy_consensus'},
{'matchtype':'exact', 'text':'Wikipedia:Articles_for_deletion/Common_outcomes'},
];
var i;
for (i in skiplist)
{
if (skiplist[i] && skiplist[i].matchtype && skiplist[i].text)
{
if (skiplist[i].matchtype == 'start')
{
if (wgPageName.indexOf(skiplist[i].text) == 0)
{
return -2;
}
}
else if (skiplist[i].matchtype == 'exact')
{
if (wgPageName == skiplist[i].text)
{
return -3;
}
}
}
}
if (document.referrer.indexOf('title=' + wgPageName + '&action=edit') == -1)
{
// return -4; // page has not just been saved
}
// see if the user has participated in this afd
var has_participated_in_afd = function()
{
var anchors = document.getElementById('bodyContent').getElementsByTagName('a');
var i;
for (i = 0; i < anchors.length; ++i)
{
if (
anchors[i].href &&
anchors[i].href.indexOf('User:' + wgUserName) != -1 &&
anchors[i].parentNode &&
anchors[i].parentNode.nodeName.toUpperCase() != 'SMALL' &&
anchors[i].parentNode.parentNode &&
anchors[i].parentNode.parentNode.nodeName.toUpperCase() != 'SMALL'
)
{
return true;
}
}
return false;
};
// helper function to create a link
var construct_wikilink = function(articlename, linktext)
{
if (typeof(linktext) == 'undefined' || !linktext)
{
linktext = articlename;
}
return '<a href="/wiki/' + encodeURI(articlename) + '" title="' + linktext + '">' + linktext + '</a>';
};
if (has_participated_in_afd())
{
if (typeof(afdlog_config) == 'undefined' || typeof(afdlog_config.afdlog_page) == 'undefined')
{
jsMsg('You just participated in this deletion discussion, but you need to set up your AfD log page before you can log the discussions.');
return -7;
}
var logpage = 'User:' + wgUserName + '/' + afdlog_config.afdlog_page;
if (typeof(wfSupportsAjax) == 'function' && !wfSupportsAjax())
{
jsMsg('You just participated in this deletion discussion, but your browser does not support AJAX, so it cannot be saved to your ' + construct_wikilink(logpage, 'AfD log'));
return -6;
}
jsMsg('You just participated in this deletion discussion. Saving to your ' + construct_wikilink(logpage, 'AfD log') + '...');
// save it
var edit_page = new LaL_SimplePageEditor();
var pagename = wgPageName.replace(/_/g, ' ');
edit_page.append(logpage, '\*\[\[' + pagename + '\]\] — \~\~\~\~\~', 'Loggin participation in AfD: \[\[' + pagename + '\]\]');
jsMsg('You just participated in this deletion discussion. <b>Saved</b> to your ' + construct_wikilink(logpage, 'AfD log') + '.');
}
else
{
return -5;
}
};
function LaL_SimplePageEditor()
{
// fetch edit token
this.fetch_edit_token = function()
{
alert('fetch_edit_token()');
var url = wgServer + '/w/api.php?format=json&action=query&prop=info&indexpageids=1&intoken=edit&titles=' + encodeURIComponent(this.pagename);
$.get(url, this.handle_fetch_edit_token_response, 'json');
};
this.handle_fetch_edit_token_response = function(data, textstatus)
{
var response = eval('(' + data + ')');
this.token = response['query']['pages'][response['query']['pageids'][0]]['edittoken'];
alert('calling edit_page_continue() from handle_fetch_edit_token_response()');
this.edit_page_continue();
};
// wrappers to append, prepend or overwrite a page
this.append = function(pagename, pagetext, editsummary)
{
this.edit_page_start('append', pagename, pagetext, editsummary);
};
this.prepend = function(pagename, pagetext, editsummary)
{
this.edit_page_start('prepend', pagename, pagetext, editsummary);
};
this.overwrite = function(pagename, pagetext, editsummary)
{
this.edit_page_start('overwrite', pagename, pagetext, editsummary);
};
// actually edit a page
this.edit_page_start = function(edittype, pagename, pagetext, editsummary)
{
alert('edit_page_start');
this.edittype = edittype;
this.pagename = pagename;
this.pagetext = pagetext;
this.editsummary = editsummary;
if (typeof(this.token) == 'undefined')
{
alert('calling fetch_edit_token');
this.fetch_edit_token(); // calls edit_page_continue() when it gets the token back
}
else
{
alert('calling edit_page_continue() from edit_page_start()');
this.edit_page_continue();
}
};
this.edit_page_continue = function()
{
alert('edit_page_continue');
alert(this.token);
alert(
'edittype: ' + this.edittype + "\n" +
'pagename: ' + this.pagename + "\n" +
'pagetext: ' + this.pagetext + "\n" +
'editsummary: ' + this.editsummary + "\n"
);
};
}
addOnloadHook(afdlog);