コンテンツにスキップ

利用者:Cpro/sectionUtil.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

mw.loader.using(['mediawiki.util', 'oojs-ui-core', 'oojs-ui-widgets']).done(function() {
	var SectionButton = (function() {
		var $buttonContainer = $('<div id="sectionutil-buttoncontainer"></div>')
			.css({
				position: 'absolute',
				font: '1em sans-serif',
				left: '-1em',
			});
		var $sectionButton = $('<a href="#">§</a>').appendTo($buttonContainer);
		
		var infoPopup;

		function show(heading) {
			$(heading).prepend($buttonContainer);
			$buttonContainer.show();
		}
		function hide() {
			$buttonContainer.hide();
		}
		function setup() {
			$('h2,h3,h4,h5,h6').has('.mw-headline').on({
				mouseenter: function(e) {
					show(e.target);
				},
				mouseleave: function(e) {
					hide();
					if(infoPopup)
						infoPopup.toggle(false);
				}
			});
			$sectionButton.on('click', function(e) {
				var currentHeadline = $('.mw-headline', $(e.target).closest('h2,h3,h4,h5,h6'));
				var info = getSectionInfo(currentHeadline);

				var $content = $('<ul></ul>')
					.append('<li>' + info.wikiLinkText + '</li>');
				
				infoPopup = new OO.ui.PopupWidget({
					$content: $content,
					padded: true,
					align: 'forwards'
				});
				$('body').append(infoPopup.$element);
				infoPopup.toggle(true);
				
				e.preventDefault();
			});
		}

		return {
			setup: setup
		};
	})();

	var conf = mw.config.get([
		'wgServer',
		'wgPageName'
	]);
	
	var SITE_URI = window.location.protocol + conf.wgServer;
	var PAGE_URI = SITE_URI + mw.util.getUrl();

	function getSectionInfo(mwHeadline) {
		var sectionTitle = $(mwHeadline).text();
		var fragment = $(mwHeadline).attr('id');
		var fullUri = PAGE_URI + '#' + fragment;
		var wikiLinkText = '[[' + conf.wgPageName + '#' + sectionTitle + ']]';

		// transcluded
		var transcluded = {};
		var transcludedEditLinkUri = $('a[href*="&section=T-"]', $(mwHeadline).parent()).attr('href');
		if(transcludedEditLinkUri) {
			var transcludedTitle = (new mw.Uri(transcludedEditLinkUri)).query.title;
			transcluded = {
				title: transcludedTitle,
				fullUri: SITE_URI + mw.util.getUrl(transcludedTitle)
			};
		}

		return {
			sectionTitle: sectionTitle,
			fullUri: fullUri,
			wikiLinkText: wikiLinkText,
			transcluded: transcluded
		};
	}

	$(function() {
		SectionButton.setup();
	});
});