// [[w:User:Splarka/quicktag.js]]
/*
*
*ToDo
*1. Add Hover over text
*2. Localization
*
*/
importScript('MediaWiki:Notifier.js');
var insertTagButtons = [
{
'label': 'CSD',
'open': '{\{speedy|',
'close': '}}',
'def': 'Out of [[COM:SCOPE|project scope]]'
},
/*
{
'label': 'No source',
'open': '{\{subst:nsd}}',
'usernote': 'subst:image source',
'img_summary': 'File has no source',
'talk_summary': 'One of your files does not have a source'
},
{
'label': 'No permission',
'open': '{\{subst:npd}}',
'usernote': 'subst:image permission',
'img_summary': 'Missing permission',
'talk_summary': 'Please send a permission to [[COM:OTRS|OTRS]]'
},
{
'label': 'No license',
'open': '{\{subst:nld}}',
'usernote': 'subst:image license',
'img_summary': 'Missing license',
'talk_summary': 'One of your files does not have a license'
},
{
'label': 'Copyvio',
'open': '{\{copyvio|',
'close': '}}',
'def': '',
'usernote': 'subst:copyvionote',
'img_summary': 'Marking as possible copyright violation',
'talk_summary': 'Notification of possible copyright violation',
},
{
'label': 'Duplicate',
'open': '{\{duplicate|',
'close': '}}',
'def': ''
},
*/
];
if (typeof toollocation == "undefined") toollocation = 'p-tb';
var usernote;
if (wgNamespaceNumber >= 0 && wgArticleId > 0) addOnloadHook(function() {
if (!window.insertTagButtons) {
//example
mw.util.addPortletLink('p-cactions', 'javascript:insertTagOnPage("{\{example|","}}","example");', 'example tag');
} else {
for (var i = 0; i < insertTagButtons.length; i++) {
var inb = insertTagButtons[i];
if (inb.close && inb.close != '') {
mw.util.addPortletLink(toollocation, 'javascript:insertTagOnPage("' + inb['usernote'] + '","' + inb['img_summary'] + '","' + inb['talk_summary'] + '","' + inb['open'] + '","' + inb['close'] + '","' + inb['def'] + '");', inb['label']);
} else {
mw.util.addPortletLink(toollocation, 'javascript:insertTagOnPage("' + inb['usernote'] + '","' + inb['img_summary'] + '","' + inb['talk_summary'] + '","' + inb['open'] + '");', inb['label']);
}
}
}
});
function insertTagOnPage(usernote, img_summary, talk_summary, tagstart, tagend, tagtxtdef) {
if (tagend) {
var tagtxt = prompt('Inserting: ' + tagstart + '' + tagend, tagtxtdef);
if (tagtxt == null) return
var tag = tagstart + tagtxt + tagend;
} else {
var tag = tagstart;
//var user;
//var dowant = confirm('User: ' + user);
//if (dowant == false) return
}
bodycontent = document.getElementById('bodyContent');
var workingdiv = document.createElement('div');
workingdiv.style.border = '1px #A9DE16 solid';
workingdiv.style.backgroundColor = '#EAF2CB';
workingdiv.style.padding = '1em';
workingdiv.style.position = 'fixed';
workingdiv.style.top = '50%';
workingdiv.style.left = '50%';
workingdiv.style.zIndex = '100';
bodycontent.parentNode.insertBefore(workingdiv, bodycontent);
workingdiv.innerHTML = '<img src=http://bits.wikimedia.org/skins-1.5/common/images/ajax-loader.gif width=28px> Working...';
var url = wgScriptPath + '/api.php?action=query&prop=info|revisions&rvprop=timestamp&indexpageids=1&intoken=edit|move&format=json&titles=' + encodeURIComponent(mw.config.get('wgPageName'));
var req = sajax_init_object();
req.open('GET', url, true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
eval("insertTagOnPageEdit(" + req.responseText + ",'" + req.responseText.replace(/\'/g, "`") + "','" + tag + "','" + usernote + "','" + img_summary +"','" + talk_summary + "')");
}
}
req.send(null);
}
function insertTagOnPageEdit(obj, txt, tag, usernote, img_summary, talk_summary) {
if (obj['error']) {
alert('Error: ' + obj['error']['code'] + ' - ' + obj['error']['info']);
return;
}
if (!obj['query'] || !obj['query']['pageids'] || !obj['query']['pages'][obj['query']['pageids'][0]]) {
alert('Unexpected response: ' + txt);
return;
}
var page = obj['query']['pages'][obj['query']['pageids'][0]];
if (!page['edittoken'] || !page['revisions'] || !page['revisions'][0] || !page['revisions'][0]['timestamp']) {
alert('Unexpected response: ' + txt);
return;
}
var edittoken = page['edittoken'];
var timestamp = page['revisions'][0]['timestamp'];
var startstamp = page['starttimestamp'];
if (img_summary == "undefined") img_summary = 'Tagging with ' + tag;
var params = 'action=edit&format=json&title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&prependtext=' + encodeURIComponent(tag + '\n') + '&token=' + encodeURIComponent(edittoken) + '&summary=' + encodeURIComponent(img_summary) + '&minor=1&basetimestamp=' + timestamp.replace(/[^\d]/g, '');
if (startstamp) params += '&starttimestamp=' + startstamp.replace(/[^\d]/g, '')
var url = wgScriptPath + '/api.php';
var req = sajax_init_object();
req.open('POST', url, true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader('Content-length', params.length);
req.setRequestHeader('Connection', 'close');
if (usernote != "undefined") {
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
eval("insertTagOnPageEditHandler(" + req.responseText + ",'" + req.responseText.replace(/\'/g, "`") + "')");
}
}
req.send(params);
var usertag = '\{\{' + usernote + '|1=' + wgPageName + '\}\}\~\~\~\~';
if (talk_summary == "undefined") talk_summary = 'Tagging with ' + tag;
var params = 'action=edit&format=json&appendtext=' + encodeURIComponent(usertag + '\n') + '&token=' + encodeURIComponent(edittoken) + '&summary=' + encodeURIComponent(talk_summary) + '&minor=1';
var url = wgScriptPath + '/api.php';
var req = sajax_init_object();
req.open('POST', url, true);
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader('Content-length', params.length);
req.setRequestHeader('Connection', 'close');
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
eval("insertTagOnPageEditHandler(" + req.responseText + ",'" + req.responseText.replace(/\'/g, "`") + "','" + 'True' + "')");
}
}
Notifier.get_user_from_server(wgPageName,
function(user) {
//alert(user);
if (user) {
params += '&title=' + encodeURIComponent('User talk:' + user);
req.send(params);
}
}
);
} else {
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
eval("insertTagOnPageEditHandler(" + req.responseText + ",'" + req.responseText.replace(/\'/g, "`") + "','" + 'True' + "')");
}
}
req.send(params);
}
}
function insertTagOnPageEditHandler(obj, txt, reload) {
if (obj['error']) {
alert('Error: ' + obj['error']['code'] + ' - ' + obj['error']['info']);
return;
} else if (obj['edit'] && obj['edit']['result']) {
//alert('Action completed: "' + obj['edit']['result'] + '"');
if (reload != "undefined") document.location.href = wgScript + '?title=' + encodeURIComponent(mw.config.get('wgPageName'));
} else {
alert('Unexpected response: ' + txt);
return;
}
}