MediaWiki:Gadget-friendlyshared.js

// <nowiki>


(function($) { // eslint-disable-line no-unused-vars


/*
 ****************************************
 *** friendlyshared.js: Shared IP tagging module
 ****************************************
 * Mode of invocation:     Tab ("Dùng chung")
 * Active on:              Existing IP user talk pages
 */

Twinkle.shared = function friendlyshared() {
	if (mw.config.get('wgNamespaceNumber') === 3 && mw.util.isIPAddress(mw.config.get('wgTitle'))) {
		var username = mw.config.get('wgRelevantUserName');
		Twinkle.addPortletLink(function() {
			Twinkle.shared.callback(username);
		}, 'IP dùng chung', 'friendly-shared', 'Đánh dấu IP dùng chung');
	}
};

Twinkle.shared.callback = function friendlysharedCallback() {
	var Window = new Morebits.simpleWindow(600, 420);
	Window.setTitle('Gắn thẻ địa chỉ IP dùng chung');
	Window.setScriptName('Twinkle');
	Window.addFooterLink('Giúp đỡ Twinkle', 'WP:TW/DOC#shared');

	var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate);

	var div = form.append({
		type: 'div',
		id: 'sharedip-templatelist',
		className: 'morebits-scrollbox'
	}
	);
	div.append({ type: 'header', label: 'Các bản mẫu địa chỉ IP dùng chung' });
	div.append({ type: 'radio', name: 'template', list: Twinkle.shared.standardList,
		event: function(e) {
			Twinkle.shared.callback.change_shared(e);
			e.stopPropagation();
		}
	});

	var org = form.append({ type: 'field', label: 'Điền vào các chi tiết khác (tùy chọn) và nhấn "Submit"' });
	org.append({
		type: 'input',
		name: 'organization',
		label: 'Chủ sở hữu / nhà điều hành địa chỉ IP',
		disabled: true,
		tooltip: 'Bạn có thể tùy chọn nhập tên của tổ chức sở hữu / điều hành địa chỉ IP. Bạn có thể sử dụng wikimarkup nếu cần thiết.'
	}
	);
	org.append({
		type: 'input',
		name: 'host',
		label: 'Tên máy chủ (tùy chọn)',
		disabled: true,
		tooltip: 'Bạn có thể tùy chọn nhập tên máy chủ (ví dụ: proxy.example.com) tại đây và sẽ được liên kết bởi bản mẫu.'
	}
	);
	org.append({
		type: 'input',
		name: 'contact',
		label: 'Thông tin liên hệ (chỉ khi được yêu cầu)',
		disabled: true,
		tooltip: 'Bạn có thể tùy chọn nhập một số chi tiết liên hệ cho tổ chức. Chỉ sử dụng thông số này nếu tổ chức đã yêu cầu cụ thể rằng nó được thêm vào. Bạn có thể sử dụng wikimarkup nếu cần thiết.'
	}
	);

	form.append({ type: 'submit' });

	var result = form.render();
	Window.setContent(result);
	Window.display();
};

Twinkle.shared.standardList = [
	{
		label: '{{Shared IP}}: bản mẫu IP tiêu chuẩn dùng chung',
		value: 'Shared IP',
		tooltip: 'Bản mẫu trang thảo luận của người dùng IP hiển thị thông tin hữu ích cho người dùng IP và những người muốn cảnh báo, chặn hoặc cấm họ'
	},
	{
		label: '{{Shared IP edu}}: bản mẫu địa chỉ IP dùng chung thay đổi cho các tổ chức giáo dục',
		value: 'Shared IP edu'
	},
	{
		label: '{{Shared IP corp}}: bản mẫu địa chỉ IP dùng chung thay đổi các doanh nghiệp',
		value: 'Shared IP corp'
	},
	{
		label: '{{Shared IP public}}: bản mẫu địa chỉ IP dùng chung thay đổi cho thiết bị đầu cuối công cộng',
		value: 'Shared IP public'
	},
	{
		label: '{{Shared IP gov}}: bản mẫu địa chỉ IP dùng chung thay đổi cho cơ quan chính phủ hoặc cơ sở',
		value: 'Shared IP gov'
	},
	{
		label: '{{Dynamic IP}}: bản mẫu địa chỉ IP dùng chung thay đổi cho các tổ chức có địa chỉ động',
		value: 'Dynamic IP'
	},
	{
		label: '{{Static IP}}: bản mẫu địa chỉ IP dùng chung thay đổi cho các địa chỉ IP tĩnh',
		value: 'Static IP'
	},
	{
		label: '{{ISP}}: bản mẫu địa chỉ IP dùng chung thay đổi cho các tổ chức ISP (cụ thể là các proxy)',
		value: 'ISP'
	},
	{
		label: '{{Mobile IP}}: bản mẫu địa chỉ IP dùng chung thay đổi cho các công ty điện thoại di động và khách hàng của họ',
		value: 'Mobile IP'
	},
	{
		label: '{{Whois}}: bản mẫu cho các địa chỉ IP cần giám sát, nhưng không xác định là tĩnh, động hay dùng chung',
		value: 'Whois'
	}
];

Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) {
	e.target.form.contact.disabled = e.target.value !== 'Shared IP edu';  // only supported by {{Shared IP edu}}
	e.target.form.organization.disabled = false;
	e.target.form.host.disabled = e.target.value === 'Whois';  // host= not supported by {{Whois}}
};

Twinkle.shared.callbacks = {
	main: function(pageobj) {
		var params = pageobj.getCallbackParameters();
		var pageText = pageobj.getPageText();
		var found = false;

		for (var i = 0; i < Twinkle.shared.standardList.length; i++) {
			var tagRe = new RegExp('(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im');
			if (tagRe.exec(pageText)) {
				Morebits.status.warn('Thông tin', 'Đã tìm thấy {{' + Twinkle.shared.standardList[i].value + '}} trên trang thảo luận của người dùng ... hủy bỏ');
				found = true;
			}
		}

		if (found) {
			return;
		}

		Morebits.status.info('Thông tin', 'Sẽ thêm bản mẫu địa chỉ IP dùng chung vào đầu trang thảo luận của người dùng.');
		var text = '{{' + params.template + '|' + params.organization;
		if (params.contact) {
			text += '|' + params.contact;
		}
		if (params.host) {
			text += '|host=' + params.host;
		}
		text += '}}\n\n';

		var summaryText = 'Đã thêm bản mẫu {{[[Template:' + params.template + '|' + params.template + ']]}}.';
		pageobj.setPageText(text + pageText);
		pageobj.setEditSummary(summaryText);
		pageobj.setChangeTags(Twinkle.changeTags);
		pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor'));
		pageobj.setCreateOption('recreate');
		pageobj.save();
	}
};

Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {
	var params = Morebits.quickForm.getInputData(e.target);
	if (!params.template) {
		alert('Bạn phải chọn một bản mẫu địa chỉ IP dùng chung để sử dụng!');
		return;
	}
	if (!params.organization) {
		alert('Bạn phải nhập một tổ chức cho bản mẫu {{' + params.template + '}}!');
		return;
	}

	Morebits.simpleWindow.setButtonsEnabled(false);
	Morebits.status.init(e.target);

	Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
	Morebits.wiki.actionCompleted.notice = 'Gắn thẻ hoàn tất, tải lại trang thảo luận sau vài giây';

	var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'Sửa đổi trang thảo luận của người dùng');
	wikipedia_page.setFollowRedirect(true);
	wikipedia_page.setCallbackParameters(params);
	wikipedia_page.load(Twinkle.shared.callbacks.main);
};

Twinkle.addInitCallback(Twinkle.shared, 'shared');
})(jQuery);


// </nowiki>
Chúng tôi bán
Bài viết liên quan
Chiến dịch Linebacker II từ góc nhìn Hoa Kỳ
Chiến dịch Linebacker II từ góc nhìn Hoa Kỳ
Những ngày cuối tháng 11 của 51 năm trước là thời điểm mà việc cuộc đàm phán cho hoà bình của Việt Nam đang diễn ra căng thẳng ở Paris, Pháp
Hướng dẫn vượt La Hoàn Thâm Cảnh tầng 7 Genshin Impact
Hướng dẫn vượt La Hoàn Thâm Cảnh tầng 7 Genshin Impact
Tầng 7 toàn bộ quái đều là lính Fatui, sau 1 thời gian nhất định sẽ xuất hiện khiên nguyên tố giúp giảm 1 lượng lớn sát thương nhận vào
Thay đổi lối sống với buổi sáng chuẩn khoa học
Thay đổi lối sống với buổi sáng chuẩn khoa học
Mình thuộc tuýp người làm việc tập trung vào ban đêm. Mình cũng thích được nhâm nhi một thứ thức uống ngọt lành mỗi khi làm việc hay học tập
Đấng tối cao Yamaiko - Trái tim ấm áp trong hình hài gai góc
Đấng tối cao Yamaiko - Trái tim ấm áp trong hình hài gai góc
1 trong 3 thành viên là nữ của Guild Ainz Ooal Gown. Bên cạnh Ulbert hay Touch, thì cô còn là 1 những thành viên đầu tiên của Clan Nine Own Goal