Thành viên:NguoiDungKhongDinhDanh/AbuseFilterUpdate.js
Giao diện
Chú ý: Sau khi lưu thay đổi trang, bạn phải xóa bộ nhớ đệm của trình duyệt để nhìn thấy các thay đổi. Google Chrome, Firefox, Internet Explorer và Safari: Giữ phím ⇧ Shift và nhấn nút Reload/Tải lại trên thanh công cụ của trình duyệt. Để biết chi tiết và hướng dẫn cho các trình duyệt khác, xem Trợ giúp:Xóa bộ nhớ đệm.
/** * Script hỗ trợ cập nhật [[Thành viên:Hộp cát/Bộ lọc sai phạm]]. * Ghi công: [[:en:Special:Permalink/1076402159#API for abuse filters]].**/// TODO:// $.ajax({// url: 'https://en.wikipedia.org/wiki/Special:AbuseFilter/1151',// success: function(response) {// console.log(JSON.parse($('#mw-abusefilter-export > textarea', response).val()))// }// })$(function() { var ns = mw.config.get('wgNamespaceNumber'), pn = mw.config.get('wgPageName'), t = mw.config.get('wgTitle'), ta = mw.config.get('wgTitle').split('/'); if (ns !== 2 || !t.match(/Hộp cát\/Bộ lọc sai phạm\/([wbnqtsvy]|wm)\/[\w-]+\/\d+/)) return; var j = ta.length, p = ta[j - 3], l = ta[j - 2], n = ta[j - 1]; // Xử lý đầu vào switch (p) { case 'w': p = 'wikipedia'; break; case 'b': p = 'wikibooks'; break; case 'n': p = 'wikinews'; break; case 'q': p = 'wikiquote'; break; case 't': p = 'wiktionary'; break; case 's': p = 'wikisource'; break; case 'v': p = 'wikiversity'; break; case 'y': p = 'wikivoyage'; break; case 'wm': switch (l) { case 'c': l = 'commons'; p = 'wikimedia'; break; case 'd': l = 'www'; p = 'wikidata'; break; case 'm': l = 'meta'; p = 'wikimedia'; break; case 'mn': l = 'wikimania'; p = 'wikimedia'; break; case 'os': l = 'www'; p = 'wikisource'; break; case 'sp': l = 'species'; p = 'wikimedia'; break; } break; } // Thêm liên kết kích hoạt mw.util.addPortletLink('p-cactions', '', 'Update', 'pt-afu', 'Cập nhật'); $('#pt-afu').click(function(e) { e.preventDefault(); // Truy vấn dữ liệu new mw.ForeignApi('https://' + l + '.' + p + '.org/w/api.php').get({ action: 'query', list: 'abusefilters', abfstartid: n, abflimit: 1, abfprop: 'pattern', format: 'json' }).done(function(response) { var afc = response.query.abusefilters[0].pattern; new mw.Api().get({ // Lấy nội dung trang đã có action: 'query', prop: 'revisions', titles: pn, rvslots: '*', rvprop: 'content', formatversion: 2 }).done(function(response) { var wt = response.query.pages[0].revisions[0].slots.main.content, wtn = wt.replace(/(?<=<syntaxhighlight\s*lang\s*=\s*"php"\s*>\n)(?:.|\n)*?(?=\n<\/syntaxhighlight>)/i, afc); new mw.Api().postWithToken('csrf', { action: 'edit', title: pn, text: wtn, summary: 'Cập nhật trang tài liệu bộ lọc sai phạm', format: 'json' }).then( function(d) { if (!d.edit.newrevid) { mw.notify('Bộ lọc này không có nội dung gì mới. Hãy thử lại sau.', { type: 'error', title: 'Không có nội dung mới!' }); return; } else { mw.notify('Đã cập nhật bộ lọc thành công. Đi đến khác biệt sửa đổi...', { type: 'success', title: 'Thành công!' }); location.assign('/w/index.php?diff=' + d.edit.newrevid + '&oldid=' + d.edit.oldrevid); } }, function(e, d) { mw.notify('Cập nhật thất bại. Đã báo lỗi trong bảng điều khiển.', { type: 'error', title: 'Thất bại!' }); console.warn(e); console.warn(d); } ); }); }); });});