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
alert(1);
var edit_page = new LaL_SimplePageEditor();
alert(2);
edit_page.append(logpage, '\*\[\[' + wgPageName + '\]\] — \~\~\~\~\~', 'Loggin participation in AfD: \[\[' + wgPageName + '\]\]');
alert(3);
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(pagename)
{
alert('fetch_edit_token begin');
var url = wgServer + '/w/api.php?format=json&action=query&prop=info&indexpageids=1&intoken=edit&titles=' + encodeURIComponent(pagename);
alert('Before request. URL: ' + url);
$.get(url, this.handle_fetch_edit_token_response, 'json');
alert('After request.');
};
this.handle_fetch_edit_token_response = function(data, textstatus)
{
alert('handle_fetch_edit_token_response begin');
alert(data);
//var token2 = data['query']['pages'][response['query']['pageids'][0]]['edittoken'];
//alert(token2);
var response = eval('(' + data + ')');
alert(response);
this.token = response['query']['pages'][response['query']['pageids'][0]]['edittoken'];
alert(this.token);
};
// wrappers to append, prepend or overwrite a page
this.append = function(pagename, pagetext, editsummary)
{
this.edit_page('append', pagename, pagetext, editsummary);
};
this.prepend = function(pagename, pagetext, editsummary)
{
this.edit_page('prepend', pagename, pagetext, editsummary);
};
this.overwrite = function(pagename, pagetext, editsummary)
{
this.edit_page('overwrite', pagename, pagetext, editsummary);
};
// actually edit a page
this.edit_page = function(edittype, pagename, pagetext, editsummary)
{
alert('edit_page begin');
if (typeof(this.token) == 'undefined')
{
this.fetch_edit_token(pagename);
}
alert('editing the page');
alert(
'edittype: ' + edittype + "\n" +
'pagename: ' + pagename + "\n" +
'pagetext: ' + pagetext + "\n" +
'editsummary: ' + editsummary + "\n"
);
};
}
addOnloadHook(afdlog);