「MediaWiki:Common.js」の版間の差分
ナビゲーションに移動
検索に移動
細 (→旧エケペディアへの言語間リンクで「_」を「%20」に変換する: 最初の1個しか置き換えられない不具合を修正) |
(要約欄でエンターキーを押した際に投稿されないようにする(Wikipediaと同じ挙動に、「エンターで投稿」はガジェットで対応)) |
||
1行目: | 1行目: | ||
/ | /* <nowiki> ここにあるすべての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') + | |||
'?action=raw&ctype=text/css&title=' + | |||
mw.util.wikiUrlencode(extraCSS), 'text/css'); | |||
} | } | ||
16行目: | 14行目: | ||
function toggleCollapsible(key, e) { | 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) { | 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(); | |||
}); | |||
}); | |||
}); | }); | ||
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'); | |||
}); | }); | ||
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('投稿前にプレビューで確認してください'); | |||
$('#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' , | |||
}; | }; | ||
window.addEditIntro = function(templateName) { | 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) { | 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; | |||
} | |||
} | |||
} | |||
}); | |||
} | } | ||
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;
}
}
}
});
}