User:Hat600/script/categoryredirect.js

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。

// <nowiki>
;(function($){
	if ( mw.config.get('wgNamespaceNumber') != 14 )
		return 0;
	
	$('#t-info').after('<li id="t-createcatredirect"></li>');
	$('#t-createcatredirect').append($('<a />')
		.text(wgULS("分类重定向","分類重定向"))
		.attr("title",wgULS("把硬重定向更改为分类重定向","把硬重定向更改為分類重定向"))
		.attr("href", "javascript:void(0);")
		.click(function(){
			var api = new mw.Api();
			
			var pname = mw.config.get('wgPageName');
			var rname = '';
			
			api.get({
				action: 'query',
				titles: pname,
				redirects: 1
			}).done(function(data){
				if (data.query.redirects !== undefined){
					rname = data.query.redirects[0].to.replace('Category:', '');
					api.edit(pname,	function(revision){
						return {
							text: '{{category redirect|' + rname + '}}',
							summary: '把硬重定向更改为分类重定向,至[[Category:' + rname + ']]。[[User talk:Hat600/script/categoryredirect.js|(cr)]]',
							minor: true
						};
					}).then( function(){
						window.location.reload();
					});
				} else {
					alert (wgULS("页面目前不是重定向,请谨慎处理。", "頁面目前不是重定向,請謹慎處理。"));
					var flag = 0;
					api.edit(pname, function(revision){
						rname = revision.content.replace("#REDIRECT [[","#重定向 [[").replace("#REDIRECT[[","#重定向 [[").replace("#重定向[[", "#重定向 [[").split(["#重定向 [[:Category:"])[1];
						if (rname === undefined){
							return revision.content;
						}
						rname = rname.split(["]]"])[0];
						if (rname === undefined){
							return revision.content;
						}
						if (rname.search('>') + rname.search('<') + rname.search('"') + rname.search("'") + rname.search(';') > -5){
							flag = 2;
							return revision.content;
						}
						flag = 1;
						return {
							text: '{{category redirect|' + rname + '}}',
							summary: '把硬重定向更改为分类重定向,至[[Category:' + rname + ']]。[[User talk:Hat600/script/categoryredirect.js|(cr)]]',
							minor: true
						};
					}).then(function(){
						switch(flag){
							case 0:
								alert (wgULS("无法找到重定向目标。", "無法找到重定向目標。"));
								break;
							case 1:
								window.location.reload();
								break;
							case 2:
								alert (wgULS("页面内容存在风险,请手动处理。", "頁面內容存在風險,請手動處理。"));
								break;
						}
					});
				}
			});
		})
	); // append
})(jQuery);
// </nowiki>