Bước tới nội dung

Thành viên:NgocAnMaster/LinkReport.js

Bách khoa toàn thư mở Wikipedia
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 ExplorerSafari: 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.
/** <nowiki> * Công cụ hỗ trợ báo cáo liên kết spam. Bản gốc do NguoiDungKhongDinhDanh viết * dành cho việc thêm vào danh sách [[MediaWiki:Spam-blacklist]] * (xem [[Thành viên:NguoiDungKhongDinhDanh/LinkReport.js]]). *  * Modified để hoạt động với BlockedExternalDomains. *  * Cài đặt: Thêm dòng dưới đây vào trang common.js của bạn: * mw.loader.load('/wiki/User:NgocAnMaster/LinkReport.js?action=raw&ctype=text/javascript'); *  * Danh sách người sử dụng: //w.wiki/4rX3 * Giấy phép: CC BY-SA 3.0**//* jshint esversion: 6, maxerr: 9999 *//* globals $, mw */mw.loader.using('jquery.ui').then(function() {	if (mw.config.get('wgDBname') !== 'viwiki') {		return; // Đề phòng có người cài vào global.js	}		mw.util.addPortletLink(		'p-cactions', '', 'Báo cáo liên kết rác',		'ca-linkreport', 'Hỗ trợ xử lý liên kết rác'	);	var ad = ' ([[User:NgocAnMaster/LinkReport.js|LinkReport]])'; // Quảng bá	var notify = function(content, title, type) {		mw.notify(content, {			type, title,			tag: 'linkreport',			autoHide: true,			autoHideSeconds: 5		});	};	var css = `		#linkreport input {			flex-grow: 2;			padding: 0.5em;			-webkit-transition: border-color 100ms, box-shadow 100ms;			transition: border-color 100ms, box-shadow 100ms;		}		#linkreport input:focus, #linkreport input:active {			outline: 0;			border-color: #3366CC;			box-shadow: inset 0 0 0 1px #3366CC;		}				#linkreport {			display: flex;			flex-direction: column;		}		.linkreport-fieldset {			display: flex;			flex-direction: column;		}		.linkreport-fieldset > * {			margin: 0.75em 0.3em 0;		}		.linkreport-labels {			display: block;			align-self: flex-start;			font-size: 1.25em;		}		#linkreport-links {			display: flex;			flex-direction: column;			gap: 0.3em;		}		.linkreport-link-lines {			display: flex;			gap: 0.3em;		}		.linkreport-link {			flex-grow: 10 !important;		}		.linkreport-remove {			margin: 0 !important;		}		#linkreport-button {			display: flex;			flex-direction: row-reverse;		}	`; // :focus/:active copied from OO.UI core.	try {		mw.util.addCSS(css);	} catch (ignore) {		mw.loader.addStyleTag(css);	}		$('#ca-linkreport').click(function(e) {		e.preventDefault();				var $line = $('<div>').attr('class', 'linkreport-link-lines').append(			$('<input>').attr({				'type': 'text',				'class': 'linkreport-link',				'placeholder': 'Liên kết'			}),			$('<input>').attr({				'type': 'text',				'class': 'linkreport-user',				'placeholder': 'Người dùng'			}),			$('<button>').attr('class', 'linkreport-remove').text('Xoá').button()		);				if ($('#linkreport').length === 0) {			$('<div>').attr('id', 'linkreport').append(				$('<div>').attr('class', 'linkreport-fieldset').append(					$('<label>').attr({						'for': 'linkreport-links',						'class': 'linkreport-labels'					}).text('Liên kết cần báo cáo:'),					$('<div>').attr('id', 'linkreport-links').append($line.clone()),					$('<div>').attr('id', 'linkreport-button').append(						$('<button>').attr('id', 'linkreport-add').text('Dòng mới').button()					)				),				$('<div>').attr('class', 'linkreport-fieldset').append(					$('<label>').attr({						'for': 'linkreport-note',						'class': 'linkreport-labels'					}).text('Ghi chú (tuỳ chọn):'),					$('<input>').attr({						'type': 'text',						'id': 'linkreport-note'					})				)			).appendTo(document.body);			$('#linkreport').on('click', '.linkreport-remove', function() {				$(this).parent().remove();			});			$('#linkreport-add').click(function() {				$('#linkreport-links').append($line.clone());			});		}		$('#linkreport').dialog({			autoOpen: true,			width: 500,			minWidth: 500,			height: 400,			minHeight: 400,			title: 'Báo cáo liên kết rác',			buttons: [				{					text: 'Báo cáo',					click: function() {						var note = $('#linkreport-note').val().trim();						var links = new Map();						$('.linkreport-link-lines').each(function() {							var link = $(this).find('.linkreport-link').val();							var user = $(this).find('.linkreport-user').val();							if (link.length > 5 && !links.has(link)) {								links.set(link, user);							}						});												if (links.size) {							$('#linkreport').dialog('destroy').remove();							notify('Đang gửi báo cáo...');														(new mw.Api()).postWithToken('csrf', {								action: 'edit',								title: 'Wikipedia:Tin nhắn cho bảo quản viên',								nocreate: true,								appendtext: [									'', '',									'== Báo cáo liên kết rác ==',									[...links].map(										([link, user]) => `* {{BlockedExternalDomainsReport|${user ? `${link}|user=${user}` : link}}}`									).join('\n'),									'',									`${note}${note.endsWith('.') ? ' ~~~~' : note ? '. ~~~~' : '~~~~'}`								].join('\n'),								summary: 'Báo cáo liên kết rác.' + ad,								format: 'json',								formatversion: 2							}).done(function() {								notify(									'Đã báo cáo lên trang Tin nhắn cho bảo quản viên. Vui lòng kiểm tra lại liên kết và đóng góp của thành viên đã thêm liên kết này nếu cần thiết.',									'Báo cáo thành công', 'success'								);							}).fail(function(error, response) {								notify(									`${error}: ${response.error.info}`,									`Có lỗi xảy ra`, 'error'								);							});						} else {							notify(								'Bạn không nhập liên kết hoặc không có liên kết nào dài hơn 5 ký tự.',								'Báo cáo thất bại', 'warn'							);						}					}				}			],			close: function(event) {				$(event.target).dialog('destroy').remove();			},		});					});});// </nowiki>