コンテンツにスキップ

利用者:Aokomoriuta/MagicEditintros.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/** Magic editintros ****************************************************
 *
 *  Description: 特定カテゴリの記事の編集画面にヘッダテンプレートを表示する
 *               (編集リンクに "&editintro=Template:hogehoge" を付加する)
 *  Maintainers: [[利用者:Cpro]]
 */
// カテゴリ名と表示テンプレートの対応テーブル。名前空間は書かない。
var CATEGORY_EDITINTRO_TABLE = {
	'存命人物': 'BLP editintro',
	'学校記事': '学校記事 editintro'
	/* ,
	 'カテゴリ名': 'テンプレート名' */
};

function addEditIntro(templateName)
{
	var editURI = wgScript + '?title=' + encodeTitle(mw.config.get('wgPageName')) + '&action=edit';
	
	var searchIds = { //外装ごとの検索対象要素のID
		'chick': ['ca-edit', 'bodyContent'],
		'cologneblue': ['quickbar', 'footer', 'article'],
		'modern': ['ca-edit', 'mw_contentholder'],
		'monobook': ['ca-edit', 'bodyContent'],
		'myskin': ['ca-edit', 'bodyContent'],
		'nostalgia': ['topbar', 'footer', 'article'],
		'simple': ['ca-edit', 'bodyContent'],
		'standard': ['topbar', 'quickbar', 'footer', 'article'],
		'vector': ['ca-edit', 'bodyContent']
	};
	var ids = searchIds[skin] || searchIds['monobook']; //未知の外装はとりあえずmonobookと同じ構造を期待
	for (var i = 0; i < ids.length; i++) 
	{
		var el = document.getElementById(ids[i]);
		if (!el) 
			continue;
		
		var aElements = el.getElementsByTagName('a');
		for (var j = 0; j < aElements.length; j++) 
		{
			if (aElements[j].href.indexOf(editURI) >= 0) 
			{
				aElements[j].href += '&editintro=' + encodeTitle(templateName);
			}
		}
	}
	
	function encodeTitle(title)
	{
		return encodeURIComponent(title.replace(/ /g, '_')).replace(/%2F/gi, '/').replace(/%3A/gi, ':');
	}
}

if (mw.config.get('wgNamespaceNumber') == 0) 
{
	addOnloadHook(function()
	{
		var catIds = ['mw-normal-catlinks', 'mw-hidden-catlinks'];
		for (var i = 0; i < catIds.length; i++) 
		{
			var catContainer = document.getElementById(catIds[i]);
			if (!catContainer) 
				continue;
			
			var cats = catContainer.getElementsByTagName('a');
			for (var j = 0; j < cats.length; j++) 
			{
				var ei;
				if (ei = CATEGORY_EDITINTRO_TABLE[cats[j].innerHTML]) 
				{
					addEditIntro('Template:' + ei);
					return;
				}
			}
		}
	});
}