MediaWiki:Gadget-articlefeedback-tools.js: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
No edit summary Tag: Reverted |
No edit summary Tag: Reverted |
||
Line 1: | Line 1: | ||
/** <nowiki>* Secondary gadget for the wiki article feedback feature, which runs solely on* pages that have the feedback wrapper (talk pages). It allows people to* mark feedback as "resolved".** @author Jayden*/var conf = mw.config.get([ 'wgPageName' ]), main = { /** * Startup method */ init: function () { var wrappers = $('.gloop-feedback-wrapper'); // Loop through all of the feedback on the page, and add a link to resolve them for (var i = 0; i < wrappers.length; i++) { var current = wrappers[i]; main.handleWrapper(current); } }, handleWrapper: function (wrapper) { // Get the ID of the feedback section var feedbackId = $(wrapper).data('id'); if (!feedbackId) { // No ID exists, don't do anything console.warn('Could not init feedback actions: no ID present', wrapper); return; } // Find the toggle to resolve the feedback var toggle = $(wrapper).find('.gloop-feedback-resolve-toggle'); if (!toggle.length) { // No toggle exists, don't do anything console.warn('Could not init feedback actions: no toggle present', wrapper); } if (toggle.hasClass('table-bg-green')) { // Already resolved, don't let people resolve it again return; } $(toggle).css('cursor', 'pointer'); $(toggle).on('click', function () { main.doResolveConfirm(feedbackId, toggle); }); }, /** * Shows a confirmation popup for resolving feedback **/ doResolveConfirm: function (feedbackId, toggle) { console.log('feedback id', feedbackId); OO.ui.confirm('Clicking OK will resolve this feedback, marking it as complete/no action needed. You cannot unresolve feedback after resolving it.').done(function (confirmed) { if (confirmed) { main.doResolve(feedbackId, toggle); } }); }, doResolve: function (feedbackId, toggle) { var searchString = '\\|id=' + feedbackId + '\n\\|date=(.*)\n\\|resolved=no'; var regex = new RegExp(searchString, 'gim'); new mw.Api().edit( conf.wgPageName, function (revision) { return { text: revision.content.replace( regex, '|id=' + feedbackId + '\n|date=$1\n|resolved=yes' ), summary: 'Resolving user-submitted feedback', assert: 'user', minor: true }; } ) .then(function () { $(toggle).removeClass('table-bg-red'); $(toggle).addClass('table-bg-green'); $(toggle).find('span').text('Resolved'); $(toggle).off('click'); }); } };mw.loader.using(['mediawiki.api', 'oojs-ui-core', 'oojs-ui-windows'], function () { $(main.init);});// </nowiki> |
|||
/** <nowiki> |
|||
* Secondary gadget for the wiki article feedback feature, which runs solely on |
|||
* mw.pages that have the feedback wrapper (talk mw.pages). It allows people to |
|||
* mark feedback as "resolved". |
|||
* |
|||
* @author Jayden |
|||
*/ |
|||
var conf = mw.config.get([ |
|||
'wgPageName' |
|||
]), |
|||
main = { |
|||
/** |
|||
* Startup method |
|||
*/ |
|||
init: function () { |
|||
var wrappers = $('.gloop-feedback-wrapper'); |
|||
// Loop through all of the feedback on the page, and add a link to resolve them |
|||
for (var i = 0; i < wrappers.length; i++) { |
|||
var current = wrappers[i]; |
|||
main.handleWrapper(current); |
|||
} |
|||
}, |
|||
handleWrapper: function (wrapper) { |
|||
// Get the ID of the feedback section |
|||
var feedbackId = $(wrapper).data('id'); |
|||
if (!feedbackId) { |
|||
// No ID exists, don't do anything |
|||
console.warn('Could not init feedback actions: no ID present', wrapper); |
|||
return; |
|||
} |
|||
// Find the toggle to resolve the feedback |
|||
var toggle = $(wrapper).find('.gloop-feedback-resolve-toggle'); |
|||
if (!toggle.length) { |
|||
// No toggle exists, don't do anything |
|||
console.warn('Could not init feedback actions: no toggle present', wrapper); |
|||
} |
|||
if (toggle.hasClass('table-bg-green')) { |
|||
// Already resolved, don't let people resolve it again |
|||
return; |
|||
} |
|||
$(toggle).css('cursor', 'pointer'); |
|||
$(toggle).on('click', function () { |
|||
main.doResolveConfirm(feedbackId, toggle); |
|||
}); |
|||
}, |
|||
/** |
|||
* Shows a confirmation popup for resolving feedback |
|||
**/ |
|||
doResolveConfirm: function (feedbackId, toggle) { |
|||
console.log('feedback id', feedbackId); |
|||
OO.ui.confirm('Clicking OK will resolve this feedback, marking it as complete/no action needed. You cannot unresolve feedback after resolving it.').done(function (confirmed) { |
|||
if (confirmed) { |
|||
main.doResolve(feedbackId, toggle); |
|||
} |
|||
}); |
|||
}, |
|||
doResolve: function (feedbackId, toggle) { |
|||
var searchString = '\\|id=' + feedbackId + '\n\\|date=(.*)\n\\|resolved=no'; |
|||
var regex = new RegExp(searchString, 'gim'); |
|||
new mw.Api().edit( |
|||
conf.wgPageName, |
|||
function (revision) { |
|||
return { |
|||
text: revision.content.replace( regex, '|id=' + feedbackId + '\n|date=$1\n|resolved=yes' ), |
|||
summary: 'Resolving user-submitted feedback', |
|||
assert: 'user', |
|||
minor: true |
|||
}; |
|||
} |
|||
) |
|||
.then(function () { |
|||
$(toggle).removeClass('table-bg-red'); |
|||
$(toggle).addClass('table-bg-green'); |
|||
$(toggle).find('span').text('Resolved'); |
|||
$(toggle).off('click'); |
|||
}); |
|||
} |
|||
}; |
|||
mw.loader.using(['mediawiki.api', 'oojs-ui-core', 'oojs-ui-windows'], function () { |
|||
$(main.init); |
|||
}); |
|||
// </nowiki> |
Revision as of 17:12, 17 October 2024
/** <nowiki>* Secondary gadget for the wiki article feedback feature, which runs solely on* pages that have the feedback wrapper (talk pages). It allows people to* mark feedback as "resolved".** @author Jayden*/var conf = mw.config.get([ 'wgPageName' ]), main = { /** * Startup method */ init: function () { var wrappers = $('.gloop-feedback-wrapper'); // Loop through all of the feedback on the page, and add a link to resolve them for (var i = 0; i < wrappers.length; i++) { var current = wrappers[i]; main.handleWrapper(current); } }, handleWrapper: function (wrapper) { // Get the ID of the feedback section var feedbackId = $(wrapper).data('id'); if (!feedbackId) { // No ID exists, don't do anything console.warn('Could not init feedback actions: no ID present', wrapper); return; } // Find the toggle to resolve the feedback var toggle = $(wrapper).find('.gloop-feedback-resolve-toggle'); if (!toggle.length) { // No toggle exists, don't do anything console.warn('Could not init feedback actions: no toggle present', wrapper); } if (toggle.hasClass('table-bg-green')) { // Already resolved, don't let people resolve it again return; } $(toggle).css('cursor', 'pointer'); $(toggle).on('click', function () { main.doResolveConfirm(feedbackId, toggle); }); }, /** * Shows a confirmation popup for resolving feedback **/ doResolveConfirm: function (feedbackId, toggle) { console.log('feedback id', feedbackId); OO.ui.confirm('Clicking OK will resolve this feedback, marking it as complete/no action needed. You cannot unresolve feedback after resolving it.').done(function (confirmed) { if (confirmed) { main.doResolve(feedbackId, toggle); } }); }, doResolve: function (feedbackId, toggle) { var searchString = '\\|id=' + feedbackId + '\n\\|date=(.*)\n\\|resolved=no'; var regex = new RegExp(searchString, 'gim'); new mw.Api().edit( conf.wgPageName, function (revision) { return { text: revision.content.replace( regex, '|id=' + feedbackId + '\n|date=$1\n|resolved=yes' ), summary: 'Resolving user-submitted feedback', assert: 'user', minor: true }; } ) .then(function () { $(toggle).removeClass('table-bg-red'); $(toggle).addClass('table-bg-green'); $(toggle).find('span').text('Resolved'); $(toggle).off('click'); }); } };mw.loader.using(['mediawiki.api', 'oojs-ui-core', 'oojs-ui-windows'], function () { $(main.init);});// </nowiki>