利用者:Aokomoriuta/MagicEditintros.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ 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;
}
}
}
});
}