ব্যবহারকারী:রবি/common.js: সংশোধিত সংস্করণের মধ্যে পার্থক্য
সম্পাদনা সারাংশ নেই |
|||
| ৩,৮১৫ নং লাইন: | ৩,৮১৫ নং লাইন: | ||
); | ); | ||
}() ); | }() ); | ||
//</nowiki> | |||
// mobileUndo 2.0.3, a script allowing reversion of edits on mobile. | |||
// All code is released under the default Wikipedia content license. | |||
// Installation instructions at [[User:FR30799386/undo]]. | |||
// <doc> This script basically connects an API endpoint to | |||
// a mw-ui-destructive button which is added to the | |||
// footer by using jQuery. Additional functionality | |||
// includes changing the position of the thanks button | |||
// and the addition of a confirm dialog to the thank button, | |||
// to prevent mis-clicks due to both buttons being close | |||
// to each other. | |||
// </doc> | |||
//<nowiki> | |||
console.time('mobileUndo'); | |||
$.when(mw.loader.using(['mediawiki.util', 'mediawiki.api', 'oojs-ui-windows', 'oojs-ui-core', 'oojs-ui.styles.icons-editing-core'])).then(function() { | |||
return new mw.Api().getMessages(['editundo', 'Undo-nochange']); | |||
}).then(function(globalmessages) { | |||
var mobileUndo, i18n_lang = mw.config.get('wgUserLanguage'); | |||
var i18n = { | |||
"en": { | |||
"mu-success": "Successful", | |||
"mu-fail": "Failed", | |||
"mu-loading": "Loading...", | |||
"editsummary-ad": " ([[m:User:FR30799386/undo|mobileUndo]])", | |||
"mu-undo-successful": "Revert successful.... Reloading in a sec", | |||
"mu-empty-reponse-from-server": "An empty response was received from the server", | |||
"mu-edit-summary-prompt": "Add a reason to your edit summary !", | |||
"mu-edit-summary-prompt-placeholder": "Reason...", | |||
"mu-thank-success": "Thanked", | |||
"mu-thank-confirm": "Send public thanks ?", | |||
"mu-thank-loading": "Thanking...", | |||
"mu-thank-successful": "You thanked $1.", | |||
"mu-thank-failed": "Failed to thank $1.", | |||
"mu-http-error":"HTTP error: " | |||
}, | |||
"bn": { | |||
"mu-success": "সফল", | |||
"mu-fail": "ব্যর্থ হয়েছে", | |||
"mu-loading": "লোড করা হচ্ছে...", | |||
"editsummary-ad": " (Undo)", | |||
"mu-undo-successful": "পূর্বাবস্থায় ফেরত যাওয়া সফল হয়েছে.... পুনঃলোড করা হচ্ছে", | |||
"mu-empty-reponse-from-server": "সার্ভার থেকে একটি খালি প্রতিক্রিয়া পাওয়া গেছে।", | |||
"mu-edit-summary-prompt": "আপনার সম্পাদনা সারাংশে একটি কারণ যুক্ত করুন !", | |||
"mu-edit-summary-prompt-placeholder": "কারণ...", | |||
"mu-thank-success": "ধন্যবাদ দিয়েছেন", | |||
"mu-thank-confirm": "প্রকাশ্য ধন্যবাদ জানাবেন?", | |||
"mu-thank-loading": "ধন্যবাদ জানানো হচ্ছে...", | |||
"mu-thank-successful": "আপনি $1 কে ধন্যবাদ জানিয়েছেন।", | |||
"mu-thank-failed": "$1 কে ধন্যবাদ জানানো ব্যর্থ হয়েছে।", | |||
"mu-http-error":"HTTP ত্রুটি: " | |||
} | |||
}; | |||
if(undefined === i18n[i18n_lang]){ | |||
i18n_lang = 'en'; | |||
} | |||
if (mw.config.get('wgCanonicalSpecialPageName') === 'MobileDiff') { | |||
mw.util.addCSS('#mw-mf-userinfo .mobileUndo-ui .mw-ui-icon.mw-ui-icon-before:before{display:none;}\n#mobileUndo > a > span.oo-ui-iconElement-icon.oo-ui-icon-editUndo.oo-ui-image-invert{display:inline-block; position:initial;}\n#mobileUndo > a{padding:0.57142857em 0.9375em;}'+ | |||
'#mw-mf-userinfo > div > div.mobileUndo-ui > a > div{line-height:normal;}'); | |||
if (mw.config.get('wgVisualEditor').pageLanguageDir === 'ltr') { | |||
$('#mw-mf-userinfo .post-content').append($('<div>').attr('class', 'mobileUndo-ui').css({ | |||
'display': 'inline-block', | |||
'float': 'right' | |||
})); | |||
} else { | |||
$('#mw-mf-userinfo .post-content').append($('<div>').attr('class', 'mobileUndo-ui').css({ | |||
'display': 'inline-block', | |||
'float': 'left' | |||
})); | |||
} | |||
$('.mobileUndo-ui').append($('.mw-mf-action-button').remove().css({ | |||
'clear': 'none' | |||
})); | |||
if (!$('.warningbox').length && mw.config.get('wgRelevantPageIsProbablyEditable')) { | |||
mobileUndo = new OO.ui.ButtonWidget({ | |||
label: (globalmessages.editundo).charAt(0).toUpperCase() + (globalmessages.editundo).slice(1), | |||
icon: 'editUndo', | |||
title: 'mobileUndo', | |||
flags: ['destructive', 'primary'], | |||
id: 'mobileUndo' | |||
}); | |||
$('.mobileUndo-ui').append(mobileUndo.$element); | |||
if (mw.config.get('wgVisualEditor').pageLanguageDir === 'ltr') { | |||
$('#mobileUndo').css('margin-right', '0.3em'); | |||
} else { | |||
$('#mobileUndo').css('margin-left', '0.3em'); | |||
} | |||
} | |||
window.wgRelevantUser = function() { | |||
var user; | |||
if ($('.mw-mf-user-link').text() !== '') { | |||
user = $('.mw-mf-user-link').text(); | |||
} else { | |||
user = $('#mw-mf-userinfo .post-content div:nth-child(2)').text(); | |||
} | |||
return user; | |||
}; | |||
window.wgRevId = ($('#mw-mf-diffarea > div.mw-mf-diff-info > h3 > a').attr('href')).split('&oldid=')[1]; | |||
var revId = wgRevId; | |||
console.log(revId); | |||
var username = wgRelevantUser(); | |||
$('#mw-mf-userinfo .post-content .mobileUndo-ui .mw-mf-action-button').click(function(e) { | |||
e.preventDefault(); | |||
OO.ui.confirm(i18n[i18n_lang]['mu-thank-confirm']).done(function(confirmed) { | |||
if (confirmed) { | |||
$('.mw-mf-action-button').css('pointer-events', 'none').text(i18n[i18n_lang]['mu-thank-loading']); | |||
var api = new mw.Api(); | |||
api.postWithToken('csrf', { | |||
action: "thank", | |||
rev: revId, | |||
}).done(function(result) { | |||
mw.notify((i18n[i18n_lang]['mu-thank-successful']).replace(/\$1/g, username)); | |||
$('.mw-mf-action-button').text(i18n[i18n_lang]['mu-thank-success']); | |||
}).fail(function() { | |||
mw.notify((i18n[i18n_lang]['mu-thank-failed']).replace(/\$1/g, username)); | |||
$('.mw-mf-action-button').text(i18n[i18n_lang]['mu-failed']); | |||
}); | |||
} | |||
}); | |||
}); | |||
console.timeEnd('mobileUndo'); | |||
mobileUndo.on('click', function() { | |||
OO.ui.prompt(i18n[i18n_lang]['mu-edit-summary-prompt'], { | |||
textInput: { | |||
placeholder: i18n[i18n_lang]['mu-edit-summary-prompt-placeholder'] | |||
} | |||
}).done(function(customEditSummary) { | |||
$.when(mw.loader.using('mediawiki.api')).then(function() { | |||
return new mw.Api().getMessages(['undo-summary'], { | |||
amlang: mw.config.get('wgServerName').split('.wik')[0] | |||
}); | |||
}).then(function(message) { | |||
var editSummaryMessage = message['undo-summary']; | |||
var editSummary = editSummaryMessage.replace(/\$1/g, revId); | |||
editSummary = editSummary.replace(/\$2/g, username); | |||
if (customEditSummary !== null) { | |||
mobileUndo.setDisabled(true); | |||
editSummary = editSummary + ' ' + customEditSummary + (i18n[i18n_lang]['editsummary-ad']); | |||
//call the API | |||
var api = new mw.Api({ | |||
ajax: { | |||
headers: { | |||
'Api-User-Agent': 'mobileUndo/2.0.2(https://en.wikipedia.org/wiki/User:FR30799386/undo.js)' | |||
} | |||
} | |||
}); | |||
//Feedback UI | |||
mobileUndo.setLabel(i18n[i18n_lang]['mu-loading']); | |||
api.postWithToken('csrf', { | |||
action: "edit", | |||
title: mw.config.get('wgRelevantPageName'), | |||
summary: editSummary, | |||
undo: revId, | |||
}).done(function(result) { | |||
if (result.edit.code === 'abusefilter-warning' || result.edit.code === 'abusefilter-disallowed') { | |||
mobileUndo.setLabel(i18n[i18n_lang]['mu-fail']); | |||
OO.ui.alert($('<p>').html(result.edit.warning), { | |||
title: result.edit.info | |||
}).done(function() {}); | |||
return; | |||
} else if (typeof result.edit.nochange !== 'undefined') { | |||
mobileUndo.setLabel(i18n[i18n_lang]['mu-fail']); | |||
OO.ui.alert($('<p>').html(globalmessages['Undo-nochange'])).done(function() {}); | |||
return; | |||
} | |||
console.log(result); | |||
mobileUndo.setLabel(i18n[i18n_lang]['mu-success']); | |||
mw.notify(i18n[i18n_lang]['mu-undo-successful']); | |||
setTimeout(function() { | |||
location.href = mw.util.getUrl('Special:MobileDiff/' + result.edit.newrevid); | |||
}, 1500); | |||
}).fail(function(code, jqxhr) { | |||
mobileUndo.setLabel(i18n[i18n_lang]['mu-fail']); | |||
var details; | |||
if (code === 'http' && jqxhr.textStatus === 'error') { | |||
details = i18n[i18n_lang]['mu-http-error'] + jqxhr.xhr.status; | |||
} else if (code === 'http') { | |||
details = i18n[i18n_lang]['mu-http-error'] + jqxhr.textStatus; | |||
} else if (code === 'ok-but-empty') { | |||
details = i18n[i18n_lang]['mu-empty response-from-server']; | |||
} else { | |||
details = jqxhr.error.info; | |||
} | |||
OO.ui.alert($('<p>').html(details)).done(function() {}); | |||
}); | |||
} | |||
}); | |||
}); | |||
}); | |||
} | |||
}); | |||
//End of code | |||
//</nowiki> | //</nowiki> | ||