5,325
回編集
(https://gerrit.wikimedia.org/r/#/c/171732/12/includes/Resources.php) |
(動いてない php側で書き換えるようにした) |
||
(3人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
/* ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */ | /* <nowiki> ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */ | ||
mw.hook('wikipage.content').add(function() { | mw.hook('wikipage.content').add(function() { | ||
/* 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 }); | |||
} | |||
} | |||
/* ページ最後に挿入されたページ・ナビゲーションを章の折り畳みの外側に出す */ | |||
var $lastContentBlock = $('#content > h2:last + div'); | |||
$lastContentBlock.children('table.collapsible').insertAfter($lastContentBlock); | |||
/* 折り畳みボックス */ | |||
$('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)); | |||
} | |||
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); | |||
} | |||
}); | |||
/* [[テンプレート:タブ]] */ | |||
$('.tab-list').each(function() { | |||
var $tabList = $(this), | |||
$tabContent = $tabList.nextAll('.tab-content'), | |||
$menu = $('<select><option value="0">(タブを非表示)</option></select>'); | |||
$tabList.find('> ul > li').each(function() { | |||
var $tab = $(this), | |||
$menuitem = $('<option>'); | |||
$menuitem.attr('value', $tab.data('tab')); | |||
$menuitem.text($tab.text()); | |||
if ($tab.hasClass('current-tab')) { | |||
$menuitem.attr('selected', 'selected'); | |||
} | |||
$menu.append($menuitem); | |||
}); | |||
$tabList.append($menu); | |||
$menu.bind('change', function() { | |||
var index = $menu.val() - 1; | |||
$tabContent.hide().eq(index).show(); | |||
}); | |||
}); | |||
}); | |||