「MediaWiki:Common.js」の版間の差分

提供:エケペディア
ナビゲーションに移動 検索に移動
(→‎旧エケペディアへの言語間リンクで「_」を「%20」に変換する: 最初の1個しか置き換えられない不具合を修正)
(要約欄でエンターキーを押した際に投稿されないようにする(Wikipediaと同じ挙動に、「エンターで投稿」はガジェットで対応))
1行目: 1行目:
// <nowiki>
/* <nowiki> ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */
 
/* ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */


/* URLのwithCSSパラメータで、追加のスタイルシートを読み込む */
/* URLのwithCSSパラメータで、追加のスタイルシートを読み込む */
var extraCSS = mw.util.getParamValue('withCSS');
var extraCSS = mw.util.getParamValue('withCSS');
if (extraCSS && extraCSS.match(/\.css$/)) {
if (extraCSS && extraCSS.match(/\.css$/)) {
    mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') +
mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') +
                  '?action=raw&ctype=text/css&title=' +
              '?action=raw&ctype=text/css&title=' +
                  mw.util.wikiUrlencode(extraCSS), 'text/css');
              mw.util.wikiUrlencode(extraCSS), 'text/css');
}
}


16行目: 14行目:


function toggleCollapsible(key, e) {
function toggleCollapsible(key, e) {
    e.preventDefault();
e.preventDefault();
    if (this.hasClass('collapsed')) {
if (this.hasClass('collapsed')) {
        this.removeClass('collapsed').find('> tbody > tr:not(:first)').fadeIn();
this.removeClass('collapsed').find('> tbody > tr:not(:first)').fadeIn();
        this.$toggle.text(collapseCaption);
this.$toggle.text(collapseCaption);
        if (key) $.cookie(key, 'uncollapsed', { path: '/', expires: 90 });
if (key) $.cookie(key, 'uncollapsed', { path: '/', expires: 90 });
    } else {
} else {
        this.addClass('collapsed').find('> tbody > tr:not(:first)').fadeOut();
this.addClass('collapsed').find('> tbody > tr:not(:first)').fadeOut();
        this.$toggle.text(expandCaption);
this.$toggle.text(expandCaption);
        if (key) $.cookie(key, 'collapsed', { path: '/', expires: 90 });
if (key) $.cookie(key, 'collapsed', { path: '/', expires: 90 });
    }
}
}
}


mw.hook('wikipage.content').add(function($content) {
mw.hook('wikipage.content').add(function($content) {
    /* 折り畳みボックス */
/* 折り畳みボックス */
    $content.find('table.collapsible').each(function() {
$content.find('table.collapsible').each(function() {
        var $table = $(this),
var $table = $(this),
            collapse = $table.data('collapse');
collapse = $table.data('collapse');
        if ($table.hasClass('made-collapsible') || collapse == 'plain') return;
if ($table.hasClass('made-collapsible') || collapse == 'plain') return;
        $table.addClass('made-collapsible');
$table.addClass('made-collapsible');


        var $button = $table.find('tr:first > td:first > .collapseButton');
var $button = $table.find('tr:first > td:first > .collapseButton');
        $table.$toggle = $button.append('[<a href="#"></a>]').children();
$table.$toggle = $button.append('[<a href="#"></a>]').children();
        /*
/*
        if (/^cookie-(.+)$/.test(collapse)) {
if (/^cookie-(.+)$/.test(collapse)) {
            var key = 'collapse-' + RegExp.$1;
var key = 'collapse-' + RegExp.$1;
            collapse = $.cookie(key) || 'autocollapse';
collapse = $.cookie(key) || 'autocollapse';
            $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, key));
$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, key));
        } else {
} else {
            $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));
$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));
        }
}
        */
*/
        $table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));
$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));


        if (collapse == 'collapsed' || (collapse == 'autocollapse' &&
if (collapse == 'collapsed' || (collapse == 'autocollapse' &&
                                        $table.siblings('table.collapsible').length)) {
                            $table.siblings('table.collapsible').length)) {
            $table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
$table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
            $table.$toggle.text(expandCaption);
$table.$toggle.text(expandCaption);
        } else {
} else {
            $table.$toggle.text(collapseCaption);
$table.$toggle.text(collapseCaption);
        }
}
    });
});


    /* タブ */
/* タブ */
    $content.find('.tab-list').each(function() {
$content.find('.tab-list').each(function() {
        var $tabList = $(this),
var $tabList = $(this),
            $tabs = $tabList.find('> ul > li'),
$tabs = $tabList.find('> ul > li'),
            $tabContent = $tabList.nextAll('.tab-content');
$tabContent = $tabList.nextAll('.tab-content');
        $tabs.bind('click', function() {
$tabs.bind('click', function() {
            var $tab = $(this),
var $tab = $(this),
                index = $tab.data('tab') - 1;
index = $tab.data('tab') - 1;
            $tabs.removeClass('current-tab');
$tabs.removeClass('current-tab');
            $tab.addClass('current-tab');
$tab.addClass('current-tab');
            $tabContent.not($tabContent.eq(index).toggle()).hide();
$tabContent.not($tabContent.eq(index).toggle()).hide();
        });
});
    });
});
});
});


76行目: 74行目:
/* 旧エケペディアへの言語間リンクで「_」を「%20」に変換する */
/* 旧エケペディアへの言語間リンクで「_」を「%20」に変換する */
$('#p-lang a:lang(akb49)').attr('href', function(i, href) {
$('#p-lang a:lang(akb49)').attr('href', function(i, href) {
    return href.replace(/_/g, '%20');
return href.replace(/_/g, '%20');
});
});


83行目: 81行目:
if (mw.config.get('wgAction') === 'edit' &&
if (mw.config.get('wgAction') === 'edit' &&
     $.inArray('autoconfirmed', mw.config.get('wgUserGroups')) < 0) {
     $.inArray('autoconfirmed', mw.config.get('wgUserGroups')) < 0) {
    $('#wpSave').attr('disabled', 'disabled').val('投稿前にプレビューで確認してください');
$('#wpSave').attr('disabled', 'disabled').val('投稿前にプレビューで確認してください');
    $('#wpPreview').css('font-weight', 'bold');
$('#wpPreview').css('font-weight', 'bold');
}
}
/* 要約欄でエンターキーを押した際に投稿されないようにする */
jQuery(document).ready(function($) {
if (typeof summaryEnterRejectDisable === 'undefined' || summaryEnterRejectDisable == false) {
$('#wpSummary').keypress(function(e) {
if (e.keyCode == 13) {
e.preventDefault();
}
});
$('#wpSave').css('font-weight', 'normal');
}
});




/* カテゴリごとにeditintroを設定する */
/* カテゴリごとにeditintroを設定する */
window.CATEGORY_EDITINTRO_TABLE = {
window.CATEGORY_EDITINTRO_TABLE = {
    'メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
'メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
    '元メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
'元メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
    'シングル': 'ヘルプ:シングルページのスタイル/editintro' ,
'シングル': 'ヘルプ:シングルページのスタイル/editintro' ,
};
};
   
   
window.addEditIntro = function(templateName) {
window.addEditIntro = function(templateName) {
    var editURI = mw.config.get('wgScript') + '?title=' + encodeTitle(mw.config.get('wgPageName')) + '&action=edit';
var editURI = mw.config.get('wgScript') + '?title=' + encodeTitle(mw.config.get('wgPageName')) + '&action=edit';


    var searchIds = {
var searchIds = {
        'cologneblue' : ['quickbar', 'footer', 'article'],
'cologneblue' : ['quickbar', 'footer', 'article'],
        'vector'      : ['ca-edit', 'bodyContent'],
'vector'      : ['ca-edit', 'bodyContent'],
        'modern'      : ['ca-edit', 'mw_contentholder'],
'modern'      : ['ca-edit', 'mw_contentholder'],
        'monobook'    : ['ca-edit', 'bodyContent']
'monobook'    : ['ca-edit', 'bodyContent']
    };
};
    var ids = searchIds[skin] || searchIds['monobook'];
var ids = searchIds[skin] || searchIds['monobook'];


    for(var i = 0; i < ids.length; i++) {
for(var i = 0; i < ids.length; i++) {
        var el = document.getElementById(ids[i]);
var el = document.getElementById(ids[i]);
        if(!el) continue;
if(!el) continue;


        var aElements = el.getElementsByTagName('a');
var aElements = el.getElementsByTagName('a');
        for(var j = 0; j < aElements.length; j++) {
for(var j = 0; j < aElements.length; j++) {
            if(aElements[j].href.indexOf(editURI) >= 0) {
if(aElements[j].href.indexOf(editURI) >= 0) {
                aElements[j].href += '&editintro=' + encodeTitle(templateName);
aElements[j].href += '&editintro=' + encodeTitle(templateName);
            }
}
        }
}
    }
}


    function encodeTitle(title) {
function encodeTitle(title) {
        return encodeURIComponent(title.replace(/ /g, '_')).replace(/%2F/gi, '/').replace(/%3A/gi, ':');
return encodeURIComponent(title.replace(/ /g, '_')).replace(/%2F/gi, '/').replace(/%3A/gi, ':');
    }
}
};
};


if (mw.config.get('wgNamespaceNumber') == 0) {
if (mw.config.get('wgNamespaceNumber') == 0) {
    $(function(){
$(function(){
        var catIds = ['mw-normal-catlinks', 'mw-hidden-catlinks'];
var catIds = ['mw-normal-catlinks', 'mw-hidden-catlinks'];
        for(var i = 0; i < catIds.length; i++) {
for(var i = 0; i < catIds.length; i++) {
            var catContainer = document.getElementById(catIds[i]);
var catContainer = document.getElementById(catIds[i]);
            if(!catContainer) continue;
if(!catContainer) continue;


            var cats = catContainer.getElementsByTagName('a');
var cats = catContainer.getElementsByTagName('a');
            for(var j = 0; j < cats.length; j++) {
for(var j = 0; j < cats.length; j++) {
                var ei;
var ei;
                if(ei = CATEGORY_EDITINTRO_TABLE[cats[j].innerHTML]) {
if(ei = CATEGORY_EDITINTRO_TABLE[cats[j].innerHTML]) {
                    addEditIntro(ei);
addEditIntro(ei);
                    return;
return;
                }
}
            }
}
        }
}
    });
});
}
}
// </nowiki>

2016年4月28日 (木) 17:23時点における版

/* <nowiki> ここにあるすべてのJavaScriptは、すべてのページ読み込みですべての利用者に対して読み込まれます */

/* URLのwithCSSパラメータで、追加のスタイルシートを読み込む */
var extraCSS = mw.util.getParamValue('withCSS');
if (extraCSS && extraCSS.match(/\.css$/)) {
	mw.loader.load(mw.config.get('wgServer') + mw.config.get('wgScript') +
	               '?action=raw&ctype=text/css&title=' +
	               mw.util.wikiUrlencode(extraCSS), 'text/css');
}

/* [[テンプレート:折り畳みボックス]] */
var collapseCaption = '隠す';
var expandCaption = '表示';

function toggleCollapsible(key, e) {
	e.preventDefault();
	if (this.hasClass('collapsed')) {
		this.removeClass('collapsed').find('> tbody > tr:not(:first)').fadeIn();
		this.$toggle.text(collapseCaption);
		if (key) $.cookie(key, 'uncollapsed', { path: '/', expires: 90 });
	} else {
		this.addClass('collapsed').find('> tbody > tr:not(:first)').fadeOut();
		this.$toggle.text(expandCaption);
		if (key) $.cookie(key, 'collapsed', { path: '/', expires: 90 });
	}
}

mw.hook('wikipage.content').add(function($content) {
	/* 折り畳みボックス */
	$content.find('table.collapsible').each(function() {
		var $table = $(this),
			collapse = $table.data('collapse');
		if ($table.hasClass('made-collapsible') || collapse == 'plain') return;
		$table.addClass('made-collapsible');

		var $button = $table.find('tr:first > td:first > .collapseButton');
		$table.$toggle = $button.append('[<a href="#"></a>]').children();
		/*
		if (/^cookie-(.+)$/.test(collapse)) {
			var key = 'collapse-' + RegExp.$1;
			collapse = $.cookie(key) || 'autocollapse';
			$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, key));
		} else {
			$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));
		}
		*/
		$table.$toggle.on('click', $.proxy(toggleCollapsible, $table, null));

		if (collapse == 'collapsed' || (collapse == 'autocollapse' &&
			                            $table.siblings('table.collapsible').length)) {
			$table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
			$table.$toggle.text(expandCaption);
		} else {
			$table.$toggle.text(collapseCaption);
		}
	});

	/* タブ */
	$content.find('.tab-list').each(function() {
		var $tabList = $(this),
			$tabs = $tabList.find('> ul > li'),
			$tabContent = $tabList.nextAll('.tab-content');
		$tabs.bind('click', function() {
			var $tab = $(this),
				index = $tab.data('tab') - 1;
			$tabs.removeClass('current-tab');
			$tab.addClass('current-tab');
			$tabContent.not($tabContent.eq(index).toggle()).hide();
		});
	});
});


/* 旧エケペディアへの言語間リンクで「_」を「%20」に変換する */
$('#p-lang a:lang(akb49)').attr('href', function(i, href) {
	return href.replace(/_/g, '%20');
});


/* 非autoconfirmedユーザーの「ページを保存」ボタンをロックし、「プレビューを表示」ボタンへ誘導する */
if (mw.config.get('wgAction') === 'edit' &&
    $.inArray('autoconfirmed', mw.config.get('wgUserGroups')) < 0) {
	$('#wpSave').attr('disabled', 'disabled').val('投稿前にプレビューで確認してください');
	$('#wpPreview').css('font-weight', 'bold');
}


/* 要約欄でエンターキーを押した際に投稿されないようにする */
jQuery(document).ready(function($) {
	if (typeof summaryEnterRejectDisable === 'undefined' || summaryEnterRejectDisable == false) {
		$('#wpSummary').keypress(function(e) {
			if (e.keyCode == 13) {
				e.preventDefault();
			}
		});

		$('#wpSave').css('font-weight', 'normal');
	}
});


/* カテゴリごとにeditintroを設定する */
window.CATEGORY_EDITINTRO_TABLE = {
	'メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
	'元メンバー': 'ヘルプ:メンバーページのスタイル/editintro' ,
	'シングル': 'ヘルプ:シングルページのスタイル/editintro' ,
};
 
window.addEditIntro = function(templateName) {
	var editURI = mw.config.get('wgScript') + '?title=' + encodeTitle(mw.config.get('wgPageName')) + '&action=edit';

	var searchIds = {
		'cologneblue' : ['quickbar', 'footer', 'article'],
		'vector'      : ['ca-edit', 'bodyContent'],
		'modern'      : ['ca-edit', 'mw_contentholder'],
		'monobook'    : ['ca-edit', 'bodyContent']
	};
	var ids = searchIds[skin] || searchIds['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) {
	$(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(ei);
					return;
				}
			}
		}
	});
}