<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://tbpedia.org/wiki/MediaWiki:TemplateMenu.js/history?feed=atom</id>
	<title>MediaWiki:TemplateMenu.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://tbpedia.org/wiki/MediaWiki:TemplateMenu.js/history?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://tbpedia.org/wiki/MediaWiki:TemplateMenu.js/history"/>
	<updated>2026-04-13T12:33:53Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://tbpedia.org/w/index.php?title=MediaWiki:TemplateMenu.js&amp;diff=1536&amp;oldid=prev</id>
		<title>蓮花祖泉：​导入1个版本</title>
		<link rel="alternate" type="text/html" href="https://tbpedia.org/w/index.php?title=MediaWiki:TemplateMenu.js&amp;diff=1536&amp;oldid=prev"/>
		<updated>2024-03-02T08:47:04Z</updated>

		<summary type="html">&lt;p&gt;导入1个版本&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024年3月2日 (六) 16:47的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>蓮花祖泉</name></author>
	</entry>
	<entry>
		<id>https://tbpedia.org/w/index.php?title=MediaWiki:TemplateMenu.js&amp;diff=1535&amp;oldid=prev</id>
		<title>2024年1月18日 (四) 14:16 Tbpedia&gt;Sophivorus</title>
		<link rel="alternate" type="text/html" href="https://tbpedia.org/w/index.php?title=MediaWiki:TemplateMenu.js&amp;diff=1535&amp;oldid=prev"/>
		<updated>2024-01-18T14:16:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * This script interacts with [[Template:Menu]]&lt;br /&gt;
 * [[Category:Template script pages]]&lt;br /&gt;
 */&lt;br /&gt;
var TemplateMenu = {&lt;br /&gt;
&lt;br /&gt;
	init: function () {&lt;br /&gt;
		$content = $( '#mw-content-text' );&lt;br /&gt;
		$content.find( '.menu-header' ).on( 'click', TemplateMenu.toggle );&lt;br /&gt;
		$content.find( '.menu-progress-buttons' ).each( TemplateMenu.makeProgressButtons );&lt;br /&gt;
		$content.find( '.menu-progress-bar' ).each( TemplateMenu.makeProgressBar );&lt;br /&gt;
		$content.find( '.menu-book .mw-ui-button' ).on( 'click', TemplateMenu.makeBook );&lt;br /&gt;
		$content.find( '.menu-list' ).each( TemplateMenu.trimList );&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	toggle: function ( event ) {&lt;br /&gt;
		if ( event.target.tagName === 'A' ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		$( this ).next( '.menu-content' ).toggle();&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Trim lists of more than 10 items&lt;br /&gt;
	 * Example: [[Template:NREMT menu]]&lt;br /&gt;
	 */&lt;br /&gt;
	trimList: function ( event ) {&lt;br /&gt;
		var $button = $( '&amp;lt;span&amp;gt;more&amp;lt;/span&amp;gt;' ).css( 'cursor', 'pointer' ).on( 'click', function () {&lt;br /&gt;
			$( this ).hide().siblings().show();&lt;br /&gt;
		} );&lt;br /&gt;
		$( this ).find( 'li' ).eq( 10 ).nextAll().hide().last().after( $button );&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	makeProgressButtons: function () {&lt;br /&gt;
		var $menu = $( this ).closest( '.menu' );&lt;br /&gt;
		var prev, next, index;&lt;br /&gt;
		var links = $menu.find( 'a' );&lt;br /&gt;
		links.each( function ( i ) {&lt;br /&gt;
			if ( $( this ).hasClass( 'selflink' ) ) {&lt;br /&gt;
				index = i;&lt;br /&gt;
				prev = links[ index - 1 ];&lt;br /&gt;
				next = links[ index + 1 ];&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		if ( index === undefined ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var prevButton = $( prev ).clone().addClass( 'mw-ui-button' ).text( '&amp;lt; Previous' );&lt;br /&gt;
		var nextButton;&lt;br /&gt;
		if ( next ) {&lt;br /&gt;
			nextButton = $( next ).clone().addClass( 'mw-ui-button' ).text( 'Next &amp;gt;' );&lt;br /&gt;
		}&lt;br /&gt;
		if ( !prev ) {&lt;br /&gt;
			nextButton.addClass( 'mw-ui-progressive' ).text( 'Start' );&lt;br /&gt;
		}&lt;br /&gt;
		$menu.find( '.menu-progress-buttons' ).append( prevButton, nextButton );&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	makeProgressBar: function () {&lt;br /&gt;
		var $menu = $( this ).closest( '.menu' );&lt;br /&gt;
		var index;&lt;br /&gt;
		var links = $menu.find( 'a' );&lt;br /&gt;
		links.each( function ( i ) {&lt;br /&gt;
			if ( $( this ).hasClass( 'selflink' ) ) {&lt;br /&gt;
				index = i;&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		} );&lt;br /&gt;
		if ( index === undefined ) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		var percentage = Math.round( index * 100 / links.length ) + '%';&lt;br /&gt;
		$menu.find( '.menu-progress' ).text( percentage ).css( 'width', percentage );&lt;br /&gt;
		if ( percentage === '0%' ) {&lt;br /&gt;
			$menu.find( '.menu-progress' ).addClass( 'menu-no-progress' );&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
&lt;br /&gt;
	makeBook: function ( event ) {&lt;br /&gt;
&lt;br /&gt;
		// Show loading dialog to hint the user that something is happening&lt;br /&gt;
		var messageDialog = new OO.ui.MessageDialog();&lt;br /&gt;
		var windowManager = new OO.ui.WindowManager();&lt;br /&gt;
		TemplateMenu.windowManager = windowManager;&lt;br /&gt;
		$( 'body' ).append( windowManager.$element );&lt;br /&gt;
		windowManager.addWindows( [ messageDialog ] );&lt;br /&gt;
		var progressBar = new OO.ui.ProgressBarWidget( {&lt;br /&gt;
			progress: false&lt;br /&gt;
		} );&lt;br /&gt;
		windowManager.openWindow( messageDialog, {&lt;br /&gt;
			title: 'Generating PDF',&lt;br /&gt;
			message: progressBar.$element,&lt;br /&gt;
			escapable: false,&lt;br /&gt;
			actions: []&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// Get book data&lt;br /&gt;
		var $menu = $( this ).closest( '.menu' );&lt;br /&gt;
		var $book = $menu.find( '.menu-book' );&lt;br /&gt;
		var bookLogo = $book.data( 'book-logo' ) ? '[' + '[File:' + $book.data( 'book-logo' ) + '|link=]]' : '';&lt;br /&gt;
		var bookTitle = $book.data( 'book-title' );&lt;br /&gt;
		var bookSubtitle = $book.data( 'book-subtitle' );&lt;br /&gt;
		var bookImage = $book.data( 'book-image' ) ? '[' + '[File:' + $book.data( 'book-image' ) + '|300px|link=]]' : '';&lt;br /&gt;
		var bookAuthors = $book.data( 'book-authors' );&lt;br /&gt;
&lt;br /&gt;
		// Make book cover&lt;br /&gt;
		var $cover = $( '&amp;lt;div class=&amp;quot;book-cover&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverContent = $( '&amp;lt;div class=&amp;quot;book-cover-content&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverLogo = $( '&amp;lt;div class=&amp;quot;book-cover-logo&amp;quot;&amp;gt;' + bookLogo + '&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverTitle = $( '&amp;lt;div class=&amp;quot;book-cover-title&amp;quot;&amp;gt;' + bookTitle + '&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverSubtitle = $( '&amp;lt;div class=&amp;quot;book-cover-subtitle&amp;quot;&amp;gt;' + bookSubtitle + '&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverImage = $( '&amp;lt;div class=&amp;quot;book-cover-image&amp;quot;&amp;gt;' + bookImage + '&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		var $coverAuthors = $( '&amp;lt;div class=&amp;quot;book-cover-authors&amp;quot;&amp;gt;' + bookAuthors + '&amp;lt;/div&amp;gt;' );&lt;br /&gt;
		$coverContent.append( $coverLogo, $coverTitle, $coverSubtitle, $coverImage, $coverAuthors );&lt;br /&gt;
		$cover.append( $coverContent );&lt;br /&gt;
&lt;br /&gt;
		// Cover CSS&lt;br /&gt;
		$cover.css( {&lt;br /&gt;
			'font-family': 'Garamond',&lt;br /&gt;
			'page-break-after': 'always',&lt;br /&gt;
			'display': 'flex',&lt;br /&gt;
			'align-items': 'center',&lt;br /&gt;
			'justify-content': 'center',&lt;br /&gt;
			'text-align': 'center',&lt;br /&gt;
			'width': '100vw',&lt;br /&gt;
			'height': '99vh',&lt;br /&gt;
		} );&lt;br /&gt;
		$coverContent.css( {&lt;br /&gt;
			'border': '10px double #202122',&lt;br /&gt;
			'padding': '30px',&lt;br /&gt;
		} );&lt;br /&gt;
		$coverTitle.css( {&lt;br /&gt;
			'font-size': '2em',&lt;br /&gt;
		} );&lt;br /&gt;
		$coverSubtitle.css( {&lt;br /&gt;
			'font-size': '1.5em',&lt;br /&gt;
		} );&lt;br /&gt;
		$coverAuthors.css( {&lt;br /&gt;
			'font-size': '1.5em',&lt;br /&gt;
		} );&lt;br /&gt;
		$coverContent.find( 'div' ).css( {&lt;br /&gt;
			'margin': '30px',&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// Make book wikitext&lt;br /&gt;
		var wikitext = $cover.prop( 'outerHTML' );&lt;br /&gt;
		$menu.find( 'a' ).each( function () {&lt;br /&gt;
			var link = $( this );&lt;br /&gt;
			if ( link.hasClass( 'external' ) ) {&lt;br /&gt;
				return; // Skip external pages&lt;br /&gt;
			}&lt;br /&gt;
			if ( link.hasClass( 'new' ) ) {&lt;br /&gt;
				return; // Skip non-existent pages&lt;br /&gt;
			}&lt;br /&gt;
			if ( link.hasClass( 'mw-ui-button' ) ) {&lt;br /&gt;
				return; // Skip Previous and Next buttons&lt;br /&gt;
			}&lt;br /&gt;
			var chapterName = link.text();&lt;br /&gt;
			var chapterPage = link.hasClass( 'selflink' ) ? mw.config.get( 'wgPageName' ) : link.attr( 'title' );&lt;br /&gt;
			wikitext += '\n&amp;lt;h1&amp;gt;' + chapterName + '&amp;lt;/h1&amp;gt;';&lt;br /&gt;
			wikitext += '\n{' + '{#invoke:Transcluder|main|' + chapterPage;&lt;br /&gt;
			wikitext += '| noBehaviorSwitches = 1';&lt;br /&gt;
			wikitext += '| templates = - Video, .* data, .* menu, .* header';&lt;br /&gt;
			wikitext += '}}';&lt;br /&gt;
		} );&lt;br /&gt;
&lt;br /&gt;
		// Get book HTML&lt;br /&gt;
		new mw.Api().parse( wikitext ).then( function ( html ) {&lt;br /&gt;
&lt;br /&gt;
			// Save original HTML to restore it later&lt;br /&gt;
			var $firstHeading = $( '#firstHeading' );&lt;br /&gt;
			var $pageContent = $( '#mw-content-text .mw-parser-output' );&lt;br /&gt;
			var originalContent = $pageContent.html();&lt;br /&gt;
&lt;br /&gt;
			// Append chapters HTML&lt;br /&gt;
			$pageContent.html( html );&lt;br /&gt;
&lt;br /&gt;
			// Use imagesLoaded plugin to wait for images to load&lt;br /&gt;
			mw.loader.getScript( 'https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.min.js' ).then( function () {&lt;br /&gt;
				$pageContent.imagesLoaded( function () {&lt;br /&gt;
&lt;br /&gt;
					// Hide elements we don't want to print&lt;br /&gt;
					TemplateMenu.windowManager.destroy();&lt;br /&gt;
					$firstHeading.hide();&lt;br /&gt;
					$pageContent.find( '.map' ).hide(); // Maps don't load well so we hide them&lt;br /&gt;
&lt;br /&gt;
					// Finally, print&lt;br /&gt;
					window.print();&lt;br /&gt;
&lt;br /&gt;
					// Restore original page&lt;br /&gt;
					//$firstHeading.show();&lt;br /&gt;
					//$pageContent.html( originalContent );&lt;br /&gt;
				} );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$( TemplateMenu.init );&lt;/div&gt;</summary>
		<author><name>Tbpedia&gt;Sophivorus</name></author>
	</entry>
</feed>