MediaWiki:DYK-nomination-wizard.js: Difference between revisions

Content deleted Content added
update date check behaviour per feedback at WT:DYK
per tper
 
(7 intermediate revisions by 5 users not shown)
Line 1:
/**
* DYK-nomination-wizard
}*
* Wizard to easily create DYK nominations
*
* Loaded on [[Wikipedia:Did you know/Create new nomination]]
* using [[mw:Snippets/Load JS and CSS by URL]]
*
* Author: [[User:SD0001]]
* Wizard to easily create DYK nominations
*
* Automates:
* - Creation of the nomination page
* - Transcluding the nomination at T:DYKT
* - Transcluding the nomination at article talk pages
*/
 
Line 20 ⟶ 21:
$.ready
).then(function() {
if (mw.config.get('wgNamespaceNumber') === 0) {
$(mw.util.addPortletLink('p-cactions', '#', 'DYK', 'dyk-portlet', 'Nominate for DYK'))
.click(function () {
window.open('/wiki/Wikipedia:Did_you_know/Create_new_nomination?article=' + encodeURIComponent(Morebits.pageNameNorm), '_blank')
});
}
if (mw.config.get('wgPageName') !== 'Wikipedia:Did_you_know/Create_new_nomination' ||
mw.config.get('wgAction') !== 'view') return;
Line 34 ⟶ 29:
var NOMINATIONS_PAGE = 'Template talk:Did you know';
 
dyk.advert = ' ([[UserWikipedia:SD0001Did you know/DYK-helperNomination wizard|DYK-helperwizard]])';
 
// Calculating prose character count, code based on [[User:Shubinator/DYKcheck.js]] and [[User:Dr pda/prosesize.js]]
Line 107 ⟶ 102:
dyk.callback = function dykMainCallback() {
 
var form = new Morebits.quickForm( dyk.evaluate );
 
form.append({
Line 141 ⟶ 136:
name: 'date',
tooltip: 'The date on which creation/expansion began. Must be within the past week. ',
value: new Date().toISOString().slice(0, 10), // YYYY-MM-DD format
event: dyk.dateCheck // for the benefit of browsers that don't support a datepicker for date fields
});
Line 313 ⟶ 307:
name: 'qpq',
label: 'Reviewed: ',
tooltip: 'DYK nomination(s) you reviewed. This is compulsorymandatory for editors with 5+ DYKprior creditsnominations (QPQ requirement). You can fill this after you make the nomination as well. When the unreviewed backlog mode is active, a 2nd QPQ is also required for editors with 20+ past nominations.',
size: '50px',
value: NOMPAGE_PREFIX
});
 
form.append({
type: 'div',
name: 'qpq-required',
label: 'Number of QPQs required: <span id=dyk-qpq-count>calculating ...</span>'
});
 
form.append({
type: 'button',
Line 342 ⟶ 343:
type: 'div',
style: 'float: right; font-size: smaller;', //text-decoration: italic;',
label: $('<ulspan>')
.addClass('hlist')
.append(
$('<li>').append(Morebits.createHtml([
'[[enw:WP:DYKRULES|DYK rules]]')),
$('<li>').append(Morebits.createHtml( '[[enw:UserWikipedia talk:SD0001Did you know/DYK-helperNomination wizard|Give feedback]]'))
].join(' &bull; '))
).get()
});
Line 352 ⟶ 354:
var result = form.render();
 
// Attach to the page, #dyk-helperwizard-container is provided by the wikitext
$('#dyk-helperwizard-container').empty().append(result);
 
dyk.updateProseSize(result, mw.util.getParamValue('article'));
Line 388 ⟶ 390:
'form.quickform div textarea.dyk-source { font-size: 110%; height: 35px; }' +
'form.quickform div textarea.dyk-comments { font-size: 125%; height: 35px; }'
//'form.quickform div.dyk-source { display: table-row; }' +
//'form.quickform div.dyk-source label { display: table-cell; vertical-align: middle; }' +
//'div.dyk-source > textarea { font-size: 110%; height: 19px; }' +
//'html form.quickform div textarea.dyk-source { font-size: 110%; height: 35px; }'
);
 
Line 443 ⟶ 441:
 
$(Morebits.quickForm.getElementContainer(result.multiarticle)).css('margin-top', '10px');
 
// Show number of QPQs required
mw.loader.using('ext.gadget.libLua').then(function() {
return mw.libs.lua.call({
module: 'NewDYKnomination',
func: 'getRequiredQpqCount',
args: [mw.config.get('wgUserName')]
});
}).then(function(output) {
var [numQpqsNeeded, numPriorNoms] = output.split('\t').map(num => parseInt(num));
dyk.numQpqsRequiredPerArticle = numQpqsNeeded;
if (numQpqsNeeded === 2) {
$('#dyk-qpq-count').text('2, as DYK is currently in backlog mode and you have ' + numPriorNoms + ' past nominations');
} else if (numQpqsNeeded === 1) {
$('#dyk-qpq-count').text('1, as you have ' + numPriorNoms + ' past nominations');
} else if (numQpqsNeeded === 0) {
$('#dyk-qpq-count').text('0, as you have fewer than 5 past nominations');
} else {
$('#dyk-qpq-count').text('failed to calculate');
}
}).clickcatch(function (err) {
$('#dyk-qpq-count').text('failed to calculate');
console.log(err);
});
 
};
Line 472 ⟶ 494:
 
if (type === 'source') {
// var width = txtarea.parentElement.previousElementSibling.offsetWidth - txtarea.previousElementSibling.offsetWidth;
// txtarea.style.width = width + 'px';
txtarea.previousElementSibling.style.borderTop = 'none';
txtarea.previousElementSibling.style.marginTop = '0';
Line 541 ⟶ 561:
 
addTemplateParam('status', params.status);
addTemplateParam('hook', params.hook + (params.source ? ('\n{{smalldiv|1= \n* <small>Source: ' + params.source + '</small>}}') : ''));
 
Object.keys(params).filter(function (field) {
Line 626 ⟶ 646:
 
var prosesizewarn = $('#dyk-prosesize').css('color') === "rgb(255, 0, 0)";
if (prosesizewarn && !confirm('This article has afewer readablethan prose1500 sizecharacters of lessreadable than 1500 charactersprose. \n\nWhile you may still nominate it for DYK, it may be rejected unless you expand it to more than 1500 characters after the nomination. \n\nClick OK to continue with the nomination.' )) {
return;
}
 
if (sourcewarning && !confirm('You have not specified the source for each hook. Are you sure you want to continue?')) {
return;
}
 
if (dyk.numQpqsRequiredPerArticle > 0 &&
!/Template:Did you know nominations\/\w+/.test(form.qpq.value) &&
!confirm('You have not specified a QPQ. The nomination may be rejected unless you provide a QPQ soon after the nomination. Are you sure you want to continue?')) {
return;
}
Line 641 ⟶ 667:
Morebits.wiki.actionCompleted.redirect = NOMINATIONS_PAGE + '#' + dyk.articles.join(', ');
Morebits.wiki.actionCompleted.notice = 'Completed';
Morebits.wiki.api.setApiUserAgent('[[w:Useren:MediaWiki:SD0001/DYK-helpernomination-wizard.js|DYK-helper]]');
 
var nompage = new Morebits.wiki.page(NOMPAGE_PREFIX + article, 'Creating nomination page');
Line 658 ⟶ 684:
if (pageText === newPageText) {
var linknode = document.createElement('a');
linknode.setAttribute("href", mw.util.getUrl("UserWikipedia:SD0001Did you know/DYK-helperNomination wizard/Fixing nomination"));
linknode.appendChild(document.createTextNode('Repair nomination'));
dykpage.getStatusElement().error(['Could not find the target spot for the nomination. Please see: ', linknode, '.']);