Thành viên:NgocAnMaster/undo.js
// mobileUndo 2.0.3, một tiện ích cho phép lùi lại các sửa đổi trên thiết bị di động.// Tất cả các mã được phát hành theo giấy phép nội dung Wikipedia hiện hành.// Hướng dẫn sử dụng có tại [[Wikipedia:MobileUndo]].// <doc> Về cơ bản, đoạn mã này kết nối điểm API cuối với // nút mw-ui-destructive được thêm vào phần cuối trang // sử dụng jQuery. Các tính năng khác bao gồm việc// thay đổi vị trí của nút cảm ơn và thêm hộp thoại xác nhận// vào nút cảm ơn, để tránh việc chạm nhầm do // hai nút đó ở vị trí gần với nhau.// </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 = { "vi": { "mu-success": "Thành công", "mu-fail": "Thất bại", "mu-loading": "Đang tải", "editsummary-ad": " ([[vi:Wikipedia:MobileUndo|mobileUndo]])", "mu-undo-successful": "Lùi sửa thành công.... Sẽ tải lại trong giây lát", "mu-empty-reponse-from-server": "Máy chủ không phản hồi", "mu-edit-summary-prompt": "Thêm lý do vào phần tóm lược sửa đổi!", "mu-edit-summary-prompt-placeholder": "Lý do...", "mu-thank-success": "Đã cảm ơn", "mu-thank-confirm": "Gửi lời cảm ơn công khai?", "mu-thank-loading": "Đang cảm ơn...", "mu-thank-successful": "Bạn đã cảm ơn $1.", "mu-thank-failed": "Không thể cảm ơn $1.", "mu-http-error":"Lỗi 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://www.search.com.vn/wiki/en/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() {}); }); } }); }); }); }});//Kết thúc đoạn mã//</nowiki>
🔥 Top keywords: Đài Truyền hình Kỹ thuật số VTCTrang ChínhGiỗ Tổ Hùng VươngTrương Mỹ LanĐặc biệt:Tìm kiếmHùng VươngVương Đình HuệUEFA Champions LeagueKuwaitChiến dịch Điện Biên PhủFacebookĐài Truyền hình Việt NamTrần Cẩm TúĐội tuyển bóng đá quốc gia KuwaitGoogle DịchViệt NamCúp bóng đá U-23 châu ÁCúp bóng đá U-23 châu Á 2024Real Madrid CFBảng xếp hạng bóng đá nam FIFACleopatra VIITô LâmTim CookNguyễn Phú TrọngHồ Chí MinhHai Bà TrưngManchester City F.C.VnExpressChủ tịch nước Cộng hòa xã hội chủ nghĩa Việt NamNguyễn Ngọc ThắngĐền HùngCúp bóng đá trong nhà châu Á 2024Võ Văn ThưởngOne PieceLịch sử Việt NamCuộc đua xe đạp toàn quốc tranh Cúp truyền hình Thành phố Hồ Chí Minh 2024Phạm Minh ChínhTikTokĐinh Tiên Hoàng