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

提供:エケペディア
ナビゲーションに移動 検索に移動
編集の要約なし
(動いてない php側で書き換えるようにした)
 
(4人の利用者による、間の13版が非表示)
1行目: 1行目:
/* ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */
/* <nowiki> ここにあるすべてのJavaScriptは携帯機器版サイトの利用者に影響します */
 
/*試験的コードを有効にする*/
var beta = mw.util.getParamValue('beta'), enableTestCode;
if (beta == 'on') {
    $.cookie('enable-test-code', 'on', { path: '/', expires: 30 });
    enableTestCode = true;
} else if (beta == 'off') {
    $.cookie('enable-test-code', null);
} else {
    enableTestCode = $.cookie('enable-test-code') == 'on';
}
 
/*[[テンプレート:折り畳みボックス]]*/
var collapseCaption = '隠す';
var expandCaption = '表示';
 
function toggleCollapsible(key, e) {
    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 });
    }
    e.preventDefault();
}
 
function makeCollapsibleBoxes($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 = $('<span class="collapseButton">[<a href="#"></a>]</span>');
        $table.find('tr:first > td:first').prepend($button);
        $table.$toggle = $button.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 > 0)) {
            $table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
            $table.$toggle.text(expandCaption);
        } else {
            $table.$toggle.text(collapseCaption);
        }
    });
}


mw.hook('wikipage.content').add(function() {
mw.hook('wikipage.content').add(function() {
    /*ページ・ナビゲーションを章の外側に出す*/
    var $lastContentBlock = mw.util.$content.children('h2:last + div');
/* URLのwithCSSパラメータで、追加のスタイルシートを読み込む */
    $lastContentBlock.children('table.collapsible').insertAfter($lastContentBlock);
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 });
}
}


    if (!enableTestCode) makeCollapsibleBoxes(mw.util.$content);
/* ページ最後に挿入されたページ・ナビゲーションを章の折り畳みの外側に出す */
 
var $lastContentBlock = $('#content > h2:last + div');
    /*旧エケペディアへの言語間リンクで「_」を「%20」に変換する*/
$lastContentBlock.children('table.collapsible').insertAfter($lastContentBlock);
    $('#mw-mf-language-selection a:lang(akb49)').attr('href', function(i, href) {
        return href.replace('_', '%20', 'g');
/* 折り畳みボックス */
    });
$('table.collapsible').each(function() {
});
var $table = $(this),
 
    collapse = $table.data('collapse');
if (enableTestCode) {
if ($table.hasClass('made-collapsible') || collapse == 'plain') return;
 
$table.addClass('made-collapsible');
/*[[テンプレート:折り畳みボックス]]をOverlayで表示*/
mw.loader.using('mobile.stable.common', function() {
var $button = $table.find('tr:first > td:first > .collapseButton');
    var CollapsibleBoxOverlay = mw.mobileFrontend.require('Overlay').extend({
$table.$toggle = $button.append('[<a href="#"></a>]').children();
        className: 'collapsible-box-overlay mw-mf-overlay',
        initialize: function(options) {
if (/^cookie-(.+)$/.test(collapse)) {
            var title = options.table.find('> tbody > tr > td.navbox-title').html(),
var key = 'collapse-' + RegExp.$1;
                content = '';
collapse = $.cookie(key) || 'autocollapse';
            options.heading = '<h2>' + title + '</h2>';
$table.$toggle.on('click',
            options.table.find('> tbody > tr > td').each(function() {
                  $.proxy(toggleCollapsible, $table, key));
                var $td = $(this);
} else {
                console.log($td.html());
$table.$toggle.on('click',
                content += '<p class="' + $td.attr('class') + '">' + $td.html() + '</p>';
                  $.proxy(toggleCollapsible, $table, null));
            });
}
            options.content = content;
            this._super(options);
if (collapse == 'collapsed' || (collapse == 'autocollapse' &&
        },
                                $table.siblings('table.collapsible').length)) {
        postRender: function(options) {
$table.addClass('collapsed').find('> tbody > tr:not(:first)').hide();
            var self = this;
$table.$toggle.text(expandCaption);
            this._super(options);
} else {
            this.$('table.collapsible').each(function() {
$table.$toggle.text(collapseCaption);
                var $table = $(this);
}
                $table.on('click', function(e) {
});
                    e.preventDefault();
                    new CollapsibleBoxOverlay({ table: $table, parent: self }).show();
/* [[テンプレート:タブ]] */
                });
$('.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() {
    mw.hook('wikipage.content').add(function() {
var $tab = $(this),
        mw.util.$content.find('table.collapsible').each(function() {
    $menuitem = $('<option>');
            var $table = $(this);
$menuitem.attr('value', $tab.data('tab'));
            $table.find('> tbody > tr:not(:first)').hide();
$menuitem.text($tab.text());
            $table.on('click', function(e) {
if ($tab.hasClass('current-tab')) {
                e.preventDefault();
$menuitem.attr('selected', 'selected');
                new CollapsibleBoxOverlay({ table: $table }).show();
}
            });
$menu.append($menuitem);
        });
});
    });
$tabList.append($menu);
$menu.bind('change', function() {
var index = $menu.val() - 1;
$tabContent.hide().eq(index).show();
});
});
});
});
}

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();
				});
			});
	
});