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

提供:エケペディア
ナビゲーションに移動 検索に移動
(よくわからん…)
(nowiki)
1行目: 1行目:
/* ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */
/* <nowiki> ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */


mw.hook('wikipage.content').add(function() {
mw.hook('wikipage.content').add(function() {
 
/* 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');
}
}
 
/* [[テンプレート:折り畳みボックス]] */
/* [[テンプレート:折り畳みボックス]] */
var collapseCaption = '隠す';
var collapseCaption = '隠す';
var expandCaption = '表示';
var expandCaption = '表示';
 
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.loader.using('mobile.overlays', function() {
mw.loader.using('mobile.overlays', function() {
    var M = mw.mobileFrontend;
var M = mw.mobileFrontend;
 
    function onPageLoad() {
function onPageLoad() {
        /* ページ最後に挿入されたページ・ナビゲーションを章の折り畳みの外側に出す */
/* ページ最後に挿入されたページ・ナビゲーションを章の折り畳みの外側に出す */
        var $lastContentBlock = $('#content > h2:last + div');
var $lastContentBlock = $('#content > h2:last + div');
        $lastContentBlock.children('table.collapsible').insertAfter($lastContentBlock);
$lastContentBlock.children('table.collapsible').insertAfter($lastContentBlock);
 
        /* 折り畳みボックス */
/* 折り畳みボックス */
        $('table.collapsible').each(function() {
$('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',
$table.$toggle.on('click',
                                  $.proxy(toggleCollapsible, $table, key));
                  $.proxy(toggleCollapsible, $table, key));
            } else {
} else {
                $table.$toggle.on('click',
$table.$toggle.on('click',
                                  $.proxy(toggleCollapsible, $table, null));
                  $.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);
            }
}
        });
});
   
        /* タブ */
/* [[テンプレート:タブ]] */
        $('.tab-list').each(function() {
$('.tab-list').each(function() {
            var $tabList = $(this),
var $tabList = $(this),
                $tabContent = $tabList.nextAll('.tab-content'),
    $tabContent = $tabList.nextAll('.tab-content'),
                $menu = $('<select><option value="0">(タブを非表示)</option></select>');
    $menu = $('<select><option value="0">(タブを非表示)</option></select>');
            $tabList.find('> ul > li').each(function() {
$tabList.find('> ul > li').each(function() {
              var $tab = $(this),
var $tab = $(this),
                  $menuitem = $('<option>');
    $menuitem = $('<option>');
              $menuitem.attr('value', $tab.data('tab'));
$menuitem.attr('value', $tab.data('tab'));
              $menuitem.text($tab.text());
$menuitem.text($tab.text());
              if ($tab.hasClass('current-tab')) {
if ($tab.hasClass('current-tab')) {
                $menuitem.attr('selected', 'selected');
$menuitem.attr('selected', 'selected');
              }
}
              $menu.append($menuitem);
$menu.append($menuitem);
            });
});
            $tabList.append($menu);
$tabList.append($menu);
            $menu.bind('change', function() {
$menu.bind('change', function() {
                var index = $menu.val() - 1;
var index = $menu.val() - 1;
                $tabContent.hide().eq(index).show();
$tabContent.hide().eq(index).show();
            });
});
        });
});
    }
}
 
    M.on('page-loaded', onPageLoad);
M.on('page-loaded', onPageLoad);
    onPageLoad();
onPageLoad();
 
    /* 旧エケペディアへの言語間リンクで「_」を「%20」に置換する */
/* 旧エケペディアへの言語間リンクで「_」を「%20」に置換する */
    M.on('language-overlay-initialize', function(options) {
M.on('language-overlay-initialize', function(options) {
        options.languages = options.languages.map(function(o) {
options.languages = options.languages.map(function(o) {
            if (o.lang === 'akb49') o.url = o.url.replace('_', '%20', 'g');
if (o.lang === 'akb49') o.url = o.url.replace('_', '%20', 'g');
            return o;
return o;
        });
});
    });
});
}); });
});
});

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

/* <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 });
		}
	}
	
	mw.loader.using('mobile.overlays', function() {
		var M = mw.mobileFrontend;
	
		function onPageLoad() {
			/* ページ最後に挿入されたページ・ナビゲーションを章の折り畳みの外側に出す */
			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();
				});
			});
		}
	
		M.on('page-loaded', onPageLoad);
		onPageLoad();
	
		/* 旧エケペディアへの言語間リンクで「_」を「%20」に置換する */
		M.on('language-overlay-initialize', function(options) {
			options.languages = options.languages.map(function(o) {
				if (o.lang === 'akb49') o.url = o.url.replace('_', '%20', 'g');
				return o;
			});
		});
	});
});