「MediaWiki:Mobile.js」の版間の差分
ナビゲーションに移動
検索に移動
(言ったん変更を取り消し(コメントアウト)... jscript がどう呼ばれているのか不明。。。) |
(動いてない php側で書き換えるようにした) |
||
82行目: | 82行目: | ||
}); | }); | ||
}); | }); | ||
}); | }); |
2022年5月3日 (火) 14:40時点における最新版
/* <nowiki> ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */
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();
});
});
});