User:Euphoria/common.js: Difference between revisions

From Test Wiki
Jump to navigation Jump to search
Content deleted Content added
fix
fix
Line 1: Line 1:
//<nowiki>
// [[User:Euphoria/common.js]] helper for VfD closures
mw.loader.using('mediawiki.util', function () {
mw.loader.using(['mediawiki.util', 'oojs-ui'], function () {
if (mw.config.get('wgPageName').startsWith('User:Euphoria/TestVfD/')) {
// Add "Close as delete"
mw.util.addPortletLink(
'p-cactions',
'#',
'Close as delete',
'ca-close-delete',
'Close this VfD as delete'
).addEventListener('click', function (e) {
e.preventDefault();
insertClosure('delete');
});


var vfdPrefix = 'User:Euphoria/TestVfD/'; // or 'Wikiquote:Votes_for_deletion/'
// Add "Close as keep"
mw.util.addPortletLink(
'p-cactions',
'#',
'Close as keep',
'ca-close-keep',
'Close this VfD as keep'
).addEventListener('click', function (e) {
e.preventDefault();
insertClosure('keep');
});


if (!mw.config.get('wgPageName').startsWith(vfdPrefix)) return;
// Add "Close as no consensus"

mw.util.addPortletLink(
function addButton(label, id, action) {
'p-cactions',
mw.util.addPortletLink('p-cactions', '#', label, id, 'Close this VfD as ' + action)
'#',
'Close as no consensus',
.addEventListener('click', function (e) {
'ca-close-nc',
e.preventDefault();
'Close this VfD as no consensus'
openClosurePanel(action);
).addEventListener('click', function (e) {
});
}
e.preventDefault();

insertClosure('no consensus');
addButton('Close as delete', 'ca-close-delete', 'delete');
addButton('Close as keep', 'ca-close-keep', 'keep');
addButton('Close as no consensus', 'ca-close-nc', 'no consensus');

function openClosurePanel(action) {
var textbox = document.getElementById('wpTextbox1');
if (!textbox) return alert('Edit box not found!');

var panelId = 'vfd-closure-panel';
$('#' + panelId).remove();
var $panel = $('<div>').attr('id', panelId).css({
border: '1px solid #ccc',
padding: '10px',
margin: '10px 0',
backgroundColor: '#f9f9f9'
});
});


$panel.append($('<h4>').text('VfD Closure Preview'));
function insertClosure(action) {
var topText = '{{subst:vt|' + action + '. --[[User:Euphoria|Euphoria]] ([[User talk:Euphoria|talk]]) 07:08, 25 September 2025 (UTC)}}\n\n';
var bottomText = '\n\n{{subst:vb}}';


// Access the edit box
var $commentInput = $('<input>').attr({
var textbox = document.getElementById('wpTextbox1');
type: 'text',
if (!textbox) {
placeholder: 'Optional comment'
alert('Edit box not found!');
}).css({ width: '100%', margin: '5px 0' });
$panel.append($('<label>').text('Comment:')).append('<br>').append($commentInput).append('<br>');
return;
}


var $preview = $('<div>').css({
// Insert templates at top and bottom
textbox.value = topText + textbox.value + bottomText;
border: '1px solid #aaa',
padding: '5px',
margin: '5px 0',
backgroundColor: '#fff'
}).text('Preview will appear here');
$panel.append($preview);


var $btnPreview = $('<button>').text('Preview').css({ marginRight: '5px' });
// Prefill summary
document.getElementById('wpSummary').value = 'Closed as ' + action;
var $btnInsert = $('<button>').text('Insert').css({ marginRight: '5px' });
var $btnCancel = $('<button>').text('Cancel');
$panel.append($btnPreview, $btnInsert, $btnCancel);

$(textbox).before($panel);

function generateWikitext() {
var comment = $commentInput.val();
var topText = '{{subst:vt|' + action + '. --~~~~' + (comment ? ' ' + comment : '') + '}}\n\n';
var bottomText = '\n\n{{subst:vb}}';
return topText + textbox.value + bottomText;
}
}

$btnPreview.on('click', function () {
$preview.text(generateWikitext());
});

$btnInsert.on('click', function () {
textbox.value = generateWikitext();
var summaryBox = document.getElementById('wpSummary');
if (summaryBox) summaryBox.value = 'Closed as ' + action;
$panel.remove();
});

$btnCancel.on('click', function () {
$panel.remove();
});
}
}
});
});
//</nowiki>

Revision as of 07:47, 25 September 2025

//<nowiki>
mw.loader.using(['mediawiki.util', 'oojs-ui'], function () {

    var vfdPrefix = 'User:Euphoria/TestVfD/'; // or 'Wikiquote:Votes_for_deletion/'

    if (!mw.config.get('wgPageName').startsWith(vfdPrefix)) return;

    function addButton(label, id, action) {
        mw.util.addPortletLink('p-cactions', '#', label, id, 'Close this VfD as ' + action)
            .addEventListener('click', function (e) {
                e.preventDefault();
                openClosurePanel(action);
            });
    }

    addButton('Close as delete', 'ca-close-delete', 'delete');
    addButton('Close as keep', 'ca-close-keep', 'keep');
    addButton('Close as no consensus', 'ca-close-nc', 'no consensus');

    function openClosurePanel(action) {
        var textbox = document.getElementById('wpTextbox1');
        if (!textbox) return alert('Edit box not found!');

        var panelId = 'vfd-closure-panel';
        $('#' + panelId).remove();
        var $panel = $('<div>').attr('id', panelId).css({
            border: '1px solid #ccc',
            padding: '10px',
            margin: '10px 0',
            backgroundColor: '#f9f9f9'
        });

        $panel.append($('<h4>').text('VfD Closure Preview'));

        var $commentInput = $('<input>').attr({
            type: 'text',
            placeholder: 'Optional comment'
        }).css({ width: '100%', margin: '5px 0' });
        $panel.append($('<label>').text('Comment:')).append('<br>').append($commentInput).append('<br>');

        var $preview = $('<div>').css({
            border: '1px solid #aaa',
            padding: '5px',
            margin: '5px 0',
            backgroundColor: '#fff'
        }).text('Preview will appear here');
        $panel.append($preview);

        var $btnPreview = $('<button>').text('Preview').css({ marginRight: '5px' });
        var $btnInsert = $('<button>').text('Insert').css({ marginRight: '5px' });
        var $btnCancel = $('<button>').text('Cancel');
        $panel.append($btnPreview, $btnInsert, $btnCancel);

        $(textbox).before($panel);

        function generateWikitext() {
            var comment = $commentInput.val();
            var topText = '{{subst:vt|' + action + '. --~~~~' + (comment ? ' ' + comment : '') + '}}\n\n';
            var bottomText = '\n\n{{subst:vb}}';
            return topText + textbox.value + bottomText;
        }

        $btnPreview.on('click', function () {
            $preview.text(generateWikitext());
        });

        $btnInsert.on('click', function () {
            textbox.value = generateWikitext();
            var summaryBox = document.getElementById('wpSummary');
            if (summaryBox) summaryBox.value = 'Closed as ' + action;
            $panel.remove();
        });

        $btnCancel.on('click', function () {
            $panel.remove();
        });
    }
});
//</nowiki>