User:Sav/cannedsumm.js
From Test Wiki
< User:Sav
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
var cannedSummaries = window.localStorage.getItem('cannedSummaries') || '';
function done(settings) {
var summs = settings.split(';;');
var cbs = document.querySelector('.editCheckboxes');
var choose = document.getElementById('cannedsumm-chooseelem');
if (choose) choose.remove();
choose = document.createElement('select');
choose.id = 'cannedsumm-chooseelem';
var label = document.getElementById('wpSummaryLabel');
label.addEventListener('click',function(e){askForSummary("Add an edit summary below.");});
var choosesum = document.createElement('option');
choosesum.id = 'cannedsumm-choose';
choosesum.innerHTML = 'Choose a canned summary';
choose.appendChild(choosesum);
summs.filter(function(i){
return i.trim() !== '';
}).forEach(function(i){
var summ = document.createElement('option');
summ.title = 'Insert canned edit summary';
summ.innerHTML = i;
choose.appendChild(summ);
});
var newsum = document.createElement('option');
newsum.id = 'cannedsumm-new';
newsum.innerHTML = 'Add new summary...';
choose.appendChild(newsum);
var delsum = document.createElement('option');
delsum.id = 'cannedsumm-del';
delsum.innerHTML = 'Delete all your summaries';
choose.appendChild(delsum);
choose.addEventListener('change', function() {
var chosen = choose.options[choose.selectedIndex];
switch (chosen.id) {
case 'cannedsumm-new':
askForSummary("Add an edit summary below.");
break;
case 'cannedsumm-choose':
break;
case 'cannedsumm-del':
cannedSummaries = '';
window.localStorage.removeItem('cannedSummaries');
done(cannedSummaries);
break;
default:
document.getElementById('wpSummary').value = chosen.innerHTML + ') ([[User:JJBullet/Project Guides/Canned Edit Summaries|canned edit summary]]';
document.getElementById('wpSave').click();
}
});
var wrapper = document.createElement('div');
wrapper.style.marginTop = '1em';
wrapper.appendChild(choose);
cbs.appendChild(wrapper);
}
function askForSummary(message) {
var dim = document.createElement('div');
dim.style.width = '100%'; dim.style.height = '100%';
dim.style.position = 'fixed';
dim.style.left = '0'; dim.style.top = '0';
dim.style.backgroundColor = 'rgba(0,0,0,0.5)';
dim.style.zIndex = '800';
var box = document.createElement('div');
box.style.borderRadius = '5px';
box.style.backgroundColor = '#f0f0f0';
box.style.border = '1px solid #c0c0c0';
box.style.width = '20em';
box.style.position = 'fixed';
box.style.left = '45%';
box.style.top = '45%';
box.style.zIndex = '801';
box.style.padding = '1em';
var content = document.createElement('p');
content.innerHTML = message + ' ';
var dismiss = document.createElement('a');
dismiss.href = '#';
dismiss.onclick = function(){
dim.style.display = 'none';
box.style.display = 'none';
done(cannedSummaries);
return false;
};
dismiss.innerHTML = '(dismiss)';
content.appendChild(dismiss);
var input = document.createElement('input');
input.type = 'text';
input.style.width = '19em';
input.style.margin = '1em';
input.placeholder = 'Enter an edit summary to can';
input.onkeypress = function(e){
if (!e) e = window.event;
if (e.key == 'Enter') {
cannedSummaries += this.value + ';;';
window.localStorage.setItem('cannedSummaries', cannedSummaries);
dismiss.click();
}
};
var del = document.createElement('a');
del.href = '#';
del.style.color = 'red';
del.innerHTML = 'Delete all of your canned edit summaries';
del.onclick = function(){
cannedSummaries = '';
window.localStorage.removeItem('cannedSummaries');
dismiss.click();
return false;
};
box.appendChild(content);
box.appendChild(input);
box.appendChild(del);
document.body.appendChild(dim);
document.body.appendChild(box);
}
window.addEventListener('load', function(){
if (['edit', 'submit'].includes(mw.config.get('wgAction')) && !(window.location.href.includes('section=new'))) {
done(cannedSummaries);
}
});
console.log('Loaded Canned Edit Summaries');