<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans">
	<id>https://wiki.dolshipmaker.vip/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiAdmin</id>
	<title>DOL ShipMaker Wiki - 用户贡献 [zh-hans]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolshipmaker.vip/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiAdmin"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/wiki/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/WikiAdmin"/>
	<updated>2026-04-19T11:44:22Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=35</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=35"/>
		<updated>2026-04-15T01:00:09Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​两次刷新稳定session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;[href*=&amp;quot;action=logout&amp;quot;], [href*=&amp;quot;UserLogout&amp;quot;], [data-mw-logouturl]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopImmediatePropagation();&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return false;&lt;br /&gt;
        } );&lt;br /&gt;
        $( document ).on( &#039;click&#039;, function(e) {&lt;br /&gt;
            var $target = $( e.target ).closest( &#039;a, button&#039; );&lt;br /&gt;
            var href = $target.attr( &#039;href&#039; ) || &#039;&#039;;&lt;br /&gt;
            if ( href.includes( &#039;logout&#039; ) || href.includes( &#039;UserLogout&#039; ) ) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=33</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=33"/>
		<updated>2026-04-15T00:52:27Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​两次刷新稳定session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user ) {&lt;br /&gt;
                var search = window.location.search;&lt;br /&gt;
                if ( search.includes(&#039;sso_refresh=2&#039;) ) return;&lt;br /&gt;
                var next = search.includes(&#039;sso_refresh=1&#039;) ? &#039;sso_refresh=2&#039; : &#039;sso_refresh=1&#039;;&lt;br /&gt;
                var url = window.location.href.replace(/[?&amp;amp;]sso_refresh=\d/g, &#039;&#039;);&lt;br /&gt;
                window.location.href = url + ( url.includes(&#039;?&#039;) ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + next;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;[href*=&amp;quot;action=logout&amp;quot;], [href*=&amp;quot;UserLogout&amp;quot;], [data-mw-logouturl]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopImmediatePropagation();&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return false;&lt;br /&gt;
        } );&lt;br /&gt;
        $( document ).on( &#039;click&#039;, function(e) {&lt;br /&gt;
            var $target = $( e.target ).closest( &#039;a, button&#039; );&lt;br /&gt;
            var href = $target.attr( &#039;href&#039; ) || &#039;&#039;;&lt;br /&gt;
            if ( href.includes( &#039;logout&#039; ) || href.includes( &#039;UserLogout&#039; ) ) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=32</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=32"/>
		<updated>2026-04-14T19:20:11Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​恢复备份&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;[href*=&amp;quot;action=logout&amp;quot;], [href*=&amp;quot;UserLogout&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopImmediatePropagation();&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return false;&lt;br /&gt;
        } );&lt;br /&gt;
        $( document ).on( &#039;click&#039;, function(e) {&lt;br /&gt;
            var $target = $( e.target ).closest( &#039;a, button&#039; );&lt;br /&gt;
            var href = $target.attr( &#039;href&#039; ) || &#039;&#039;;&lt;br /&gt;
            if ( href.includes( &#039;logout&#039; ) || href.includes( &#039;UserLogout&#039; ) ) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=31</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=31"/>
		<updated>2026-04-14T19:05:49Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​退出后自动刷新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    // 拦截 mw.Api，屏蔽退出错误并自动刷新&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.api&#039; ).done( function() {&lt;br /&gt;
        var origPost = mw.Api.prototype.post;&lt;br /&gt;
        mw.Api.prototype.post = function( params ) {&lt;br /&gt;
            if ( params &amp;amp;&amp;amp; params.action === &#039;logout&#039; ) {&lt;br /&gt;
                var result = origPost.apply( this, arguments );&lt;br /&gt;
                result.always( function() {&lt;br /&gt;
                    fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
                    .finally( function() {&lt;br /&gt;
                        window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;;&lt;br /&gt;
                    } );&lt;br /&gt;
                } );&lt;br /&gt;
                return $.Deferred().resolve( {} );&lt;br /&gt;
            }&lt;br /&gt;
            return origPost.apply( this, arguments );&lt;br /&gt;
        };&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=30</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=30"/>
		<updated>2026-04-14T18:49:01Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​恢复含退出拦截版本&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;[href*=&amp;quot;action=logout&amp;quot;], [href*=&amp;quot;UserLogout&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopImmediatePropagation();&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return false;&lt;br /&gt;
        } );&lt;br /&gt;
        $( document ).on( &#039;click&#039;, function(e) {&lt;br /&gt;
            var $target = $( e.target ).closest( &#039;a, button&#039; );&lt;br /&gt;
            var href = $target.attr( &#039;href&#039; ) || &#039;&#039;;&lt;br /&gt;
            if ( href.includes( &#039;logout&#039; ) || href.includes( &#039;UserLogout&#039; ) ) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=29</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=29"/>
		<updated>2026-04-14T18:46:16Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​恢复&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=27</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=27"/>
		<updated>2026-04-14T18:43:29Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​拦截mw.Api退出&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 拦截 mw.Api 的 logout 请求&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.api&#039; ).done( function() {&lt;br /&gt;
        var origPost = mw.Api.prototype.post;&lt;br /&gt;
        mw.Api.prototype.post = function( params ) {&lt;br /&gt;
            if ( params &amp;amp;&amp;amp; params.action === &#039;logout&#039; ) {&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return $.Deferred().resolve( {} );&lt;br /&gt;
            }&lt;br /&gt;
            return origPost.apply( this, arguments );&lt;br /&gt;
        };&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=25</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=25"/>
		<updated>2026-04-14T18:23:08Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​MutationObserver替换退出链接&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
    var LOGOUT_URL = WIKI_BASE + &#039;/wiki/首页?sso_action=logout&#039;;&lt;br /&gt;
&lt;br /&gt;
    // 尽早替换退出链接，在 DOM ready 之前&lt;br /&gt;
    function replaceLogoutLinks() {&lt;br /&gt;
        document.querySelectorAll( &#039;a&#039; ).forEach( function( a ) {&lt;br /&gt;
            if ( a.href &amp;amp;&amp;amp; ( a.href.includes(&#039;action=logout&#039;) || a.href.includes(&#039;UserLogout&#039;) ) ) {&lt;br /&gt;
                a.href = LOGOUT_URL;&lt;br /&gt;
                a.removeAttribute(&#039;data-mw&#039;);&lt;br /&gt;
                // 移除所有已绑定的事件&lt;br /&gt;
                var newA = a.cloneNode( true );&lt;br /&gt;
                a.parentNode.replaceChild( newA, a );&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 用 MutationObserver 监控 DOM 变化，实时替换&lt;br /&gt;
    var observer = new MutationObserver( function() {&lt;br /&gt;
        replaceLogoutLinks();&lt;br /&gt;
    } );&lt;br /&gt;
    observer.observe( document.documentElement, { childList: true, subtree: true } );&lt;br /&gt;
&lt;br /&gt;
    // 立即执行一次&lt;br /&gt;
    replaceLogoutLinks();&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            replaceLogoutLinks();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=24</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=24"/>
		<updated>2026-04-14T18:20:24Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​自定义退出URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
    var LOGOUT_URL = WIKI_BASE + &#039;/wiki/首页?sso_action=logout&#039;;&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        // 把所有退出链接的 href 替换为自定义退出 URL&lt;br /&gt;
        $( document ).on( &#039;mouseenter&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;UserLogout&amp;quot;]&#039;, function() {&lt;br /&gt;
            $( this ).attr( &#039;href&#039;, LOGOUT_URL );&lt;br /&gt;
        } );&lt;br /&gt;
        // 直接点击拦截&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;UserLogout&amp;quot;], a[href*=&amp;quot;sso_action=logout&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = LOGOUT_URL;&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=23</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=23"/>
		<updated>2026-04-14T18:14:00Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​拦截AJAX退出&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // 拦截 fetch 请求&lt;br /&gt;
    var origFetch = window.fetch;&lt;br /&gt;
    window.fetch = function() {&lt;br /&gt;
        var url = arguments[0] || &#039;&#039;;&lt;br /&gt;
        if ( typeof url === &#039;string&#039; &amp;amp;&amp;amp; ( url.includes(&#039;action=logout&#039;) || url.includes(&#039;UserLogout&#039;) ) ) {&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return Promise.resolve( new Response(&#039;{}&#039;) );&lt;br /&gt;
        }&lt;br /&gt;
        return origFetch.apply( this, arguments );&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // 拦截 XMLHttpRequest&lt;br /&gt;
    var origOpen = XMLHttpRequest.prototype.open;&lt;br /&gt;
    XMLHttpRequest.prototype.open = function( method, url ) {&lt;br /&gt;
        if ( url &amp;amp;&amp;amp; ( url.includes(&#039;action=logout&#039;) || url.includes(&#039;UserLogout&#039;) ) ) {&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        return origOpen.apply( this, arguments );&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        origFetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=22</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=22"/>
		<updated>2026-04-14T18:10:24Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​修复退出拦截&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function doLogout() {&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setupLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;[href*=&amp;quot;action=logout&amp;quot;], [href*=&amp;quot;UserLogout&amp;quot;], [data-mw-logouturl]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopImmediatePropagation();&lt;br /&gt;
            doLogout();&lt;br /&gt;
            return false;&lt;br /&gt;
        } );&lt;br /&gt;
        $( document ).on( &#039;click&#039;, function(e) {&lt;br /&gt;
            var $target = $( e.target ).closest( &#039;a, button&#039; );&lt;br /&gt;
            var href = $target.attr( &#039;href&#039; ) || &#039;&#039;;&lt;br /&gt;
            if ( href.includes( &#039;logout&#039; ) || href.includes( &#039;UserLogout&#039; ) ) {&lt;br /&gt;
                e.preventDefault();&lt;br /&gt;
                e.stopImmediatePropagation();&lt;br /&gt;
                doLogout();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            setupLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=21</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=21"/>
		<updated>2026-04-14T17:39:06Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​修复用户菜单高度&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.css&lt;br /&gt;
 * DOL ShipMaker Wiki - 大航海时代风格深色主题&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* ── 首页 Hero 横幅 ───────────────────────────────────────&lt;br /&gt;
 * 图片占位：hero-banner.jpg&lt;br /&gt;
 * 建议尺寸：1920×500px，海洋/船只场景，横向构图&lt;br /&gt;
 * 上传后替换 url() 里的路径&lt;br /&gt;
 */&lt;br /&gt;
.wiki-hero {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 420px;&lt;br /&gt;
    background:&lt;br /&gt;
        linear-gradient(to bottom, rgba(10,22,40,0.3) 0%, rgba(10,22,40,0.85) 100%),&lt;br /&gt;
        url(&#039;/images/hero-banner.jpg&#039;) center center / cover no-repeat;&lt;br /&gt;
    /* 无图时显示深海渐变占位 */&lt;br /&gt;
    background-color: #0a1628;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin: -1rem -1rem 2rem -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-logo {&lt;br /&gt;
    width: 80px;&lt;br /&gt;
    height: 80px;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    /* 占位：logo.png，建议 200×200px，透明背景 PNG */&lt;br /&gt;
    background: rgba(201,168,76,0.2);&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    border: 2px solid #c9a84c;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    font-size: 2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-title {&lt;br /&gt;
    font-size: 2.2rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
    text-shadow: 0 2px 8px rgba(0,0,0,0.8);&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-subtitle {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    text-shadow: 0 1px 4px rgba(0,0,0,0.8);&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    gap: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search a {&lt;br /&gt;
    background: #c9a84c;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
    padding: 0.6rem 1.8rem;&lt;br /&gt;
    border-radius: 24px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search a:hover {&lt;br /&gt;
    background: #e0c070;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 分类图片卡片导航 ─────────────────────────────────────&lt;br /&gt;
 * 每张卡片图片：建议 320×120px，横向构图&lt;br /&gt;
 * 图片命名和位置见下方各卡片注释&lt;br /&gt;
 */&lt;br /&gt;
.wiki-nav-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(4, 1fr);&lt;br /&gt;
    gap: 0.6rem;&lt;br /&gt;
    margin: 0 0 2rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-nav-grid { grid-template-columns: repeat(2, 1fr); }&lt;br /&gt;
    .wiki-hero { height: 300px; }&lt;br /&gt;
    .wiki-hero-title { font-size: 1.5rem; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    height: 90px;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    transition: transform 0.2s, box-shadow 0.2s;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card:hover {&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
    box-shadow: 0 4px 16px rgba(74,158,255,0.3);&lt;br /&gt;
    border-color: #c9a84c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card a {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-end;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    padding: 0.5rem 0.7rem;&lt;br /&gt;
    background: linear-gradient(to top, rgba(10,22,40,0.9) 40%, rgba(10,22,40,0.2) 100%);&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 0.95rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card a.new,&lt;br /&gt;
.wiki-nav-card a.new:visited {&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 各卡片背景图占位（无图时显示渐变色块）&lt;br /&gt;
 * card-ships:     图片 nav-ships.jpg     320×120px  船只场景&lt;br /&gt;
 * card-equipment: 图片 nav-equipment.jpg 320×120px  装备/配件特写&lt;br /&gt;
 * card-guide:     图片 nav-guide.jpg     320×120px  航海地图/罗盘&lt;br /&gt;
 * card-community: 图片 nav-community.jpg 320×120px  港口/人群场景&lt;br /&gt;
 */&lt;br /&gt;
.wiki-nav-card.card-ships     { background-color: #1a3a5c; background-image: url(&#039;/images/nav-ships.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-equipment { background-color: #1a2a4c; background-image: url(&#039;/images/nav-equipment.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-guide     { background-color: #0f2a3c; background-image: url(&#039;/images/nav-guide.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-community { background-color: #1a1a3c; background-image: url(&#039;/images/nav-community.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
&lt;br /&gt;
/* ── 精选内容区 ───────────────────────────────────────────*/&lt;br /&gt;
.wiki-featured {&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    color: #7a9ab8;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    padding-bottom: 0.4rem;&lt;br /&gt;
    border-bottom: 1px solid #2a4a6c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: 2fr 1fr;&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-featured-grid { grid-template-columns: 1fr; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    background: #111e30;&lt;br /&gt;
    min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 精选主卡片图片：featured-main.jpg，建议 640×240px */&lt;br /&gt;
.wiki-featured-card.featured-main {&lt;br /&gt;
    background-image: url(&#039;/images/featured-main.jpg&#039;);&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    min-height: 240px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-body {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    padding: 1rem;&lt;br /&gt;
    background: linear-gradient(to top, rgba(10,22,40,0.95) 60%, transparent 100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-tag {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    background: #c9a84c;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
    font-size: 0.7rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 2px 8px;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-title {&lt;br /&gt;
    font-size: 1.2rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
    margin-bottom: 0.3rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-desc {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    line-height: 1.4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card a,&lt;br /&gt;
.wiki-featured-card a.new {&lt;br /&gt;
    color: inherit;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 快速导航链接 ─────────────────────────────────────────*/&lt;br /&gt;
.wiki-quicklinks {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-quicklinks a,&lt;br /&gt;
.wiki-quicklinks a.new {&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    padding: 0.3rem 0.9rem;&lt;br /&gt;
    border-radius: 16px;&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: background 0.2s, border-color 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-quicklinks a:hover {&lt;br /&gt;
    background: #2a4a6c;&lt;br /&gt;
    border-color: #c9a84c;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 船只信息卡（Template:ShipInfobox）────────────────────*/&lt;br /&gt;
.infobox-ship {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1rem 1.5rem;&lt;br /&gt;
    padding: 0.8rem;&lt;br /&gt;
    min-width: 260px;&lt;br /&gt;
    max-width: 320px;&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #c9a84c;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship .infobox-title {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
    padding-bottom: 0.5rem;&lt;br /&gt;
    border-bottom: 1px solid #2a4a6c;&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship table { width: 100%; border-collapse: collapse; }&lt;br /&gt;
.infobox-ship td { padding: 3px 6px; border-bottom: 1px solid rgba(42,74,108,0.5); }&lt;br /&gt;
.infobox-ship td:first-child { font-weight: bold; color: #c9a84c; white-space: nowrap; width: 45%; }&lt;br /&gt;
&lt;br /&gt;
/* ── 物品图标网格（Template:ItemIconGrid）────────────────*/&lt;br /&gt;
.item-icon-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
    margin: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card {&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    padding: 0.6rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card img { max-width: 64px; max-height: 64px; margin-bottom: 0.3rem; }&lt;br /&gt;
&lt;br /&gt;
/* ── 装备数据表（Template:EquipmentTable）────────────────*/&lt;br /&gt;
.wikitable.equipment-table th { background: #1a3a5c; color: #c9a84c; border-color: #2a4a6c; }&lt;br /&gt;
.wikitable.equipment-table td { border-color: #2a4a6c; }&lt;br /&gt;
&lt;br /&gt;
/* 确保用户菜单可以显示退出按钮 */&lt;br /&gt;
.citizen-user-menu .citizen-menu__card {&lt;br /&gt;
    max-height: none !important;&lt;br /&gt;
    overflow: visible !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=20</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=20"/>
		<updated>2026-04-14T17:29:52Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​SSO状态同步&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function syncLoginState() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        fetch( MAIN_SITE + &#039;/api/auth/verify&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
        .then( function(r) { return r.json(); } )&lt;br /&gt;
        .then( function(d) {&lt;br /&gt;
            if ( d.valid &amp;amp;&amp;amp; d.user &amp;amp;&amp;amp; !window.location.search.includes(&#039;sso_refresh&#039;) ) {&lt;br /&gt;
                window.location.href = window.location.href + ( window.location.search ? &#039;&amp;amp;&#039; : &#039;?&#039; ) + &#039;sso_refresh=1&#039;;&lt;br /&gt;
            }&lt;br /&gt;
        } ).catch(function(){});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;Special:UserLogout&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault(); e.stopPropagation();&lt;br /&gt;
            fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, { method: &#039;POST&#039;, credentials: &#039;include&#039; } )&lt;br /&gt;
            .finally( function() { window.location.href = WIKI_BASE + &#039;/wiki/首页&#039;; } );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function(e) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function() {&lt;br /&gt;
        $( document ).ready( function() {&lt;br /&gt;
            syncLoginState();&lt;br /&gt;
            interceptLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=19</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=19"/>
		<updated>2026-04-14T15:40:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​登录注册退出统一跳转主站&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function interceptLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;Special:UserLogout&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopPropagation();&lt;br /&gt;
            fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, {&lt;br /&gt;
                method: &#039;POST&#039;,&lt;br /&gt;
                credentials: &#039;include&#039;&lt;br /&gt;
            } ).finally( function () {&lt;br /&gt;
                window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( WIKI_BASE );&lt;br /&gt;
            } );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptRegisterButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:CreateAccount&amp;quot;], a[href*=&amp;quot;action=createaccount&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/register.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function () {&lt;br /&gt;
        $( document ).ready( function () {&lt;br /&gt;
            interceptLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptRegisterButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=18</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=18"/>
		<updated>2026-04-14T15:30:16Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​添加登录按钮跳转主站&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function interceptLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;Special:UserLogout&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopPropagation();&lt;br /&gt;
            fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, {&lt;br /&gt;
                method: &#039;POST&#039;,&lt;br /&gt;
                credentials: &#039;include&#039;&lt;br /&gt;
            } ).finally( function () {&lt;br /&gt;
                window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( WIKI_BASE );&lt;br /&gt;
            } );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptLoginButton() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;Special:UserLogin&amp;quot;], a[href*=&amp;quot;action=login&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function () {&lt;br /&gt;
        $( document ).ready( function () {&lt;br /&gt;
            interceptLogout();&lt;br /&gt;
            interceptLoginButton();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=17</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=17"/>
		<updated>2026-04-14T15:24:20Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​拦截退出按钮&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    var MAIN_SITE = &#039;https://www.dolshipmaker.vip&#039;;&lt;br /&gt;
    var WIKI_BASE = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    function interceptLogout() {&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=logout&amp;quot;], a[href*=&amp;quot;Special:UserLogout&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            e.stopPropagation();&lt;br /&gt;
            fetch( MAIN_SITE + &#039;/api/auth/cookie-logout&#039;, {&lt;br /&gt;
                method: &#039;POST&#039;,&lt;br /&gt;
                credentials: &#039;include&#039;&lt;br /&gt;
            } ).finally( function () {&lt;br /&gt;
                window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( WIKI_BASE );&lt;br /&gt;
            } );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function interceptEditForAnon() {&lt;br /&gt;
        if ( mw.config.get( &#039;wgUserId&#039; ) !== 0 ) return;&lt;br /&gt;
        $( document ).on( &#039;click&#039;, &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            window.location.href = MAIN_SITE + &#039;/login.html?redirect=&#039; + encodeURIComponent( window.location.href );&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function () {&lt;br /&gt;
        $( document ).ready( function () {&lt;br /&gt;
            interceptLogout();&lt;br /&gt;
            interceptEditForAnon();&lt;br /&gt;
        } );&lt;br /&gt;
    } );&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=14</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=14"/>
		<updated>2026-04-14T12:34:31Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​重定向到首页&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[首页]]&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=13</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=13"/>
		<updated>2026-04-14T12:33:57Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​同步首页&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;wiki-hero&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-logo&amp;quot;&amp;gt;⛵&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-title&amp;quot;&amp;gt;DOL ShipMaker Wiki&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-subtitle&amp;quot;&amp;gt;大航海时代 Online 造船模拟器知识库，由社区共同维护&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-search&amp;quot;&amp;gt;[[Special:Search|🔍 搜索 Wiki]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-grid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-ships&amp;quot;&amp;gt;[[船只数据|⛵ 船只数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-equipment&amp;quot;&amp;gt;[[装备数据|⚙️ 装备数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-guide&amp;quot;&amp;gt;[[游戏指南|📖 游戏指南]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-community&amp;quot;&amp;gt;[[玩家心得|💬 玩家心得]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-title&amp;quot;&amp;gt;精选内容&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-grid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card featured-main&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;文章&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[船只数据|船只数据库]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;收录所有船只的基础属性、技能槽位与属性上限，助你找到最适合的船型。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;gap:0.8rem;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card&amp;quot; style=&amp;quot;flex:1;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;工具&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[造船模拟器|前往 Maker 站]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;在线计算船只配置属性，保存并分享你的方案。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card&amp;quot; style=&amp;quot;flex:1;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;指南&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[游戏指南|新手入门]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;从零开始的造船与航海攻略。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-quicklinks&amp;quot;&amp;gt;&lt;br /&gt;
[[Special:RecentChanges|最近更改]] [[Special:Upload|上传图片]] [[Help:编辑指南|编辑指南]] [[Special:AllPages|所有页面]] [[Special:Statistics|站点统计]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=12</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=12"/>
		<updated>2026-04-14T12:18:12Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​更新首页&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;wiki-hero&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-logo&amp;quot;&amp;gt;⛵&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-title&amp;quot;&amp;gt;DOL ShipMaker Wiki&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-subtitle&amp;quot;&amp;gt;大航海时代 Online 造船模拟器知识库，由社区共同维护&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-hero-search&amp;quot;&amp;gt;[[Special:Search|🔍 搜索 Wiki]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-grid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-ships&amp;quot;&amp;gt;[[船只数据|⛵ 船只数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-equipment&amp;quot;&amp;gt;[[装备数据|⚙️ 装备数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-guide&amp;quot;&amp;gt;[[游戏指南|📖 游戏指南]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-nav-card card-community&amp;quot;&amp;gt;[[玩家心得|💬 玩家心得]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-title&amp;quot;&amp;gt;精选内容&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-grid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card featured-main&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;文章&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[船只数据|船只数据库]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;收录所有船只的基础属性、技能槽位与属性上限，助你找到最适合的船型。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display:flex;flex-direction:column;gap:0.8rem;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card&amp;quot; style=&amp;quot;flex:1;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;工具&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[造船模拟器|前往 Maker 站]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;在线计算船只配置属性，保存并分享你的方案。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card&amp;quot; style=&amp;quot;flex:1;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-body&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-tag&amp;quot;&amp;gt;指南&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-title&amp;quot;&amp;gt;[[游戏指南|新手入门]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-featured-card-desc&amp;quot;&amp;gt;从零开始的造船与航海攻略。&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-quicklinks&amp;quot;&amp;gt;&lt;br /&gt;
[[Special:RecentChanges|最近更改]] [[Special:Upload|上传图片]] [[Help:编辑指南|编辑指南]] [[Special:AllPages|所有页面]] [[Special:Statistics|站点统计]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=11</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=11"/>
		<updated>2026-04-14T12:14:49Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​更新样式&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.css&lt;br /&gt;
 * DOL ShipMaker Wiki - 大航海时代风格深色主题&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* ── 首页 Hero 横幅 ───────────────────────────────────────&lt;br /&gt;
 * 图片占位：hero-banner.jpg&lt;br /&gt;
 * 建议尺寸：1920×500px，海洋/船只场景，横向构图&lt;br /&gt;
 * 上传后替换 url() 里的路径&lt;br /&gt;
 */&lt;br /&gt;
.wiki-hero {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 420px;&lt;br /&gt;
    background:&lt;br /&gt;
        linear-gradient(to bottom, rgba(10,22,40,0.3) 0%, rgba(10,22,40,0.85) 100%),&lt;br /&gt;
        url(&#039;/images/hero-banner.jpg&#039;) center center / cover no-repeat;&lt;br /&gt;
    /* 无图时显示深海渐变占位 */&lt;br /&gt;
    background-color: #0a1628;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-direction: column;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    margin: -1rem -1rem 2rem -1rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-logo {&lt;br /&gt;
    width: 80px;&lt;br /&gt;
    height: 80px;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    /* 占位：logo.png，建议 200×200px，透明背景 PNG */&lt;br /&gt;
    background: rgba(201,168,76,0.2);&lt;br /&gt;
    border-radius: 50%;&lt;br /&gt;
    border: 2px solid #c9a84c;&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: center;&lt;br /&gt;
    justify-content: center;&lt;br /&gt;
    font-size: 2.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-title {&lt;br /&gt;
    font-size: 2.2rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
    text-shadow: 0 2px 8px rgba(0,0,0,0.8);&lt;br /&gt;
    margin-bottom: 0.5rem;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-subtitle {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    text-shadow: 0 1px 4px rgba(0,0,0,0.8);&lt;br /&gt;
    margin-bottom: 1.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    gap: 0.5rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search a {&lt;br /&gt;
    background: #c9a84c;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
    padding: 0.6rem 1.8rem;&lt;br /&gt;
    border-radius: 24px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    transition: background 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-hero-search a:hover {&lt;br /&gt;
    background: #e0c070;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 分类图片卡片导航 ─────────────────────────────────────&lt;br /&gt;
 * 每张卡片图片：建议 320×120px，横向构图&lt;br /&gt;
 * 图片命名和位置见下方各卡片注释&lt;br /&gt;
 */&lt;br /&gt;
.wiki-nav-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(4, 1fr);&lt;br /&gt;
    gap: 0.6rem;&lt;br /&gt;
    margin: 0 0 2rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-nav-grid { grid-template-columns: repeat(2, 1fr); }&lt;br /&gt;
    .wiki-hero { height: 300px; }&lt;br /&gt;
    .wiki-hero-title { font-size: 1.5rem; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    height: 90px;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    transition: transform 0.2s, box-shadow 0.2s;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card:hover {&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
    box-shadow: 0 4px 16px rgba(74,158,255,0.3);&lt;br /&gt;
    border-color: #c9a84c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card a {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    align-items: flex-end;&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    padding: 0.5rem 0.7rem;&lt;br /&gt;
    background: linear-gradient(to top, rgba(10,22,40,0.9) 40%, rgba(10,22,40,0.2) 100%);&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    font-size: 0.95rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-nav-card a.new,&lt;br /&gt;
.wiki-nav-card a.new:visited {&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 各卡片背景图占位（无图时显示渐变色块）&lt;br /&gt;
 * card-ships:     图片 nav-ships.jpg     320×120px  船只场景&lt;br /&gt;
 * card-equipment: 图片 nav-equipment.jpg 320×120px  装备/配件特写&lt;br /&gt;
 * card-guide:     图片 nav-guide.jpg     320×120px  航海地图/罗盘&lt;br /&gt;
 * card-community: 图片 nav-community.jpg 320×120px  港口/人群场景&lt;br /&gt;
 */&lt;br /&gt;
.wiki-nav-card.card-ships     { background-color: #1a3a5c; background-image: url(&#039;/images/nav-ships.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-equipment { background-color: #1a2a4c; background-image: url(&#039;/images/nav-equipment.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-guide     { background-color: #0f2a3c; background-image: url(&#039;/images/nav-guide.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
.wiki-nav-card.card-community { background-color: #1a1a3c; background-image: url(&#039;/images/nav-community.jpg&#039;); background-size: cover; background-position: center; }&lt;br /&gt;
&lt;br /&gt;
/* ── 精选内容区 ───────────────────────────────────────────*/&lt;br /&gt;
.wiki-featured {&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-title {&lt;br /&gt;
    font-size: 1rem;&lt;br /&gt;
    color: #7a9ab8;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
    letter-spacing: 2px;&lt;br /&gt;
    margin-bottom: 1rem;&lt;br /&gt;
    padding-bottom: 0.4rem;&lt;br /&gt;
    border-bottom: 1px solid #2a4a6c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: 2fr 1fr;&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-featured-grid { grid-template-columns: 1fr; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card {&lt;br /&gt;
    position: relative;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    background: #111e30;&lt;br /&gt;
    min-height: 200px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 精选主卡片图片：featured-main.jpg，建议 640×240px */&lt;br /&gt;
.wiki-featured-card.featured-main {&lt;br /&gt;
    background-image: url(&#039;/images/featured-main.jpg&#039;);&lt;br /&gt;
    background-size: cover;&lt;br /&gt;
    background-position: center;&lt;br /&gt;
    min-height: 240px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-body {&lt;br /&gt;
    position: absolute;&lt;br /&gt;
    bottom: 0;&lt;br /&gt;
    left: 0;&lt;br /&gt;
    right: 0;&lt;br /&gt;
    padding: 1rem;&lt;br /&gt;
    background: linear-gradient(to top, rgba(10,22,40,0.95) 60%, transparent 100%);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-tag {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    background: #c9a84c;&lt;br /&gt;
    color: #0a1628;&lt;br /&gt;
    font-size: 0.7rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: 2px 8px;&lt;br /&gt;
    border-radius: 3px;&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
    text-transform: uppercase;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-title {&lt;br /&gt;
    font-size: 1.2rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #e8eaf0;&lt;br /&gt;
    margin-bottom: 0.3rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card-desc {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    line-height: 1.4;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-featured-card a,&lt;br /&gt;
.wiki-featured-card a.new {&lt;br /&gt;
    color: inherit;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 快速导航链接 ─────────────────────────────────────────*/&lt;br /&gt;
.wiki-quicklinks {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.5rem;&lt;br /&gt;
    margin-bottom: 2rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-quicklinks a,&lt;br /&gt;
.wiki-quicklinks a.new {&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    color: #b0c4d8;&lt;br /&gt;
    padding: 0.3rem 0.9rem;&lt;br /&gt;
    border-radius: 16px;&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: background 0.2s, border-color 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-quicklinks a:hover {&lt;br /&gt;
    background: #2a4a6c;&lt;br /&gt;
    border-color: #c9a84c;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 船只信息卡（Template:ShipInfobox）────────────────────*/&lt;br /&gt;
.infobox-ship {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1rem 1.5rem;&lt;br /&gt;
    padding: 0.8rem;&lt;br /&gt;
    min-width: 260px;&lt;br /&gt;
    max-width: 320px;&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #c9a84c;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship .infobox-title {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #c9a84c;&lt;br /&gt;
    padding-bottom: 0.5rem;&lt;br /&gt;
    border-bottom: 1px solid #2a4a6c;&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship table { width: 100%; border-collapse: collapse; }&lt;br /&gt;
.infobox-ship td { padding: 3px 6px; border-bottom: 1px solid rgba(42,74,108,0.5); }&lt;br /&gt;
.infobox-ship td:first-child { font-weight: bold; color: #c9a84c; white-space: nowrap; width: 45%; }&lt;br /&gt;
&lt;br /&gt;
/* ── 物品图标网格（Template:ItemIconGrid）────────────────*/&lt;br /&gt;
.item-icon-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
    margin: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card {&lt;br /&gt;
    background: #1a3a5c;&lt;br /&gt;
    border: 1px solid #2a4a6c;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    padding: 0.6rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card img { max-width: 64px; max-height: 64px; margin-bottom: 0.3rem; }&lt;br /&gt;
&lt;br /&gt;
/* ── 装备数据表（Template:EquipmentTable）────────────────*/&lt;br /&gt;
.wikitable.equipment-table th { background: #1a3a5c; color: #c9a84c; border-color: #2a4a6c; }&lt;br /&gt;
.wikitable.equipment-table td { border-color: #2a4a6c; }&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=10</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=10"/>
		<updated>2026-04-14T12:06:58Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​修复链接颜色&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.css&lt;br /&gt;
 * 任务 4.2：深色海洋配色&lt;br /&gt;
 * 任务 4.3：首页卡片布局&lt;br /&gt;
 * 任务 8：Infobox 模板样式&lt;br /&gt;
 * 将此内容粘贴到 Wiki 站的 MediaWiki:Common.css 页面&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* ── 深色海洋配色变量 ─────────────────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    --color-bg-primary:    #0a1628;&lt;br /&gt;
    --color-bg-secondary:  #1a3a5c;&lt;br /&gt;
    --color-accent:        #c9a84c;&lt;br /&gt;
    --color-link:          #4a9eff;&lt;br /&gt;
    --color-text:          #e8eaf0;&lt;br /&gt;
    --color-border:        #2a4a6c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 首页卡片布局（任务 4.3）────────────────────────────── */&lt;br /&gt;
.wiki-home-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));&lt;br /&gt;
    gap: 1.2rem;&lt;br /&gt;
    margin: 1.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1.2rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    transition: transform 0.2s, box-shadow 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card:hover {&lt;br /&gt;
    transform: translateY(-3px);&lt;br /&gt;
    box-shadow: 0 6px 20px rgba(74, 158, 255, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-icon {&lt;br /&gt;
    font-size: 2.5rem;&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-title {&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 卡片内链接不显示红色（页面未创建时） */&lt;br /&gt;
.wiki-home-card a,&lt;br /&gt;
.wiki-home-card a:visited,&lt;br /&gt;
.wiki-home-card a.new,&lt;br /&gt;
.wiki-home-card a.new:visited {&lt;br /&gt;
    color: inherit;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card:hover a {&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-desc {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    opacity: 0.8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 船只信息卡（任务 8.1）──────────────────────────────── */&lt;br /&gt;
.infobox-ship {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1rem 1.5rem;&lt;br /&gt;
    padding: 0.8rem;&lt;br /&gt;
    min-width: 260px;&lt;br /&gt;
    max-width: 320px;&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-accent, #c9a84c);&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship .infobox-title {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    padding-bottom: 0.5rem;&lt;br /&gt;
    border-bottom: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship td {&lt;br /&gt;
    padding: 3px 6px;&lt;br /&gt;
    border-bottom: 1px solid rgba(42, 74, 108, 0.5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    width: 45%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 物品图标网格（任务 8.3）────────────────────────────── */&lt;br /&gt;
.item-icon-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
    margin: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    padding: 0.6rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card img {&lt;br /&gt;
    max-width: 64px;&lt;br /&gt;
    max-height: 64px;&lt;br /&gt;
    margin-bottom: 0.3rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 可排序数据表格（任务 8.2）──────────────────────────── */&lt;br /&gt;
.wikitable.equipment-table th {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    border-color: var(--color-border, #2a4a6c);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitable.equipment-table td {&lt;br /&gt;
    border-color: var(--color-border, #2a4a6c);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ItemIcon&amp;diff=9</id>
		<title>模板:ItemIcon</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ItemIcon&amp;diff=9"/>
		<updated>2026-04-14T12:04:07Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Template:ItemIcon&lt;br /&gt;
  配合 ItemIconGrid 使用的单个图标卡片&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item-card&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{图片|}}}|[[{{{图片}}}|64px|center]]|}}&lt;br /&gt;
&amp;lt;div&amp;gt;&#039;&#039;&#039;[[{{{名称|}}}]]&#039;&#039;&#039;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;{{{描述|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ItemIconGrid&amp;diff=8</id>
		<title>模板:ItemIconGrid</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ItemIconGrid&amp;diff=8"/>
		<updated>2026-04-14T12:04:07Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Template:ItemIconGrid&lt;br /&gt;
  任务 8.3：物品图标网格模板&lt;br /&gt;
  使用方式：&lt;br /&gt;
  {{ItemIconGrid|&lt;br /&gt;
  {{ItemIcon|图片=File:item_sword.png|名称=长剑|描述=近战武器}}&lt;br /&gt;
  {{ItemIcon|图片=File:item_shield.png|名称=圆盾|描述=防御装备}}&lt;br /&gt;
  }}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item-icon-grid&amp;quot;&amp;gt;&lt;br /&gt;
{{{1|}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:EquipmentRow&amp;diff=7</id>
		<title>模板:EquipmentRow</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:EquipmentRow&amp;diff=7"/>
		<updated>2026-04-14T12:04:07Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Template:EquipmentRow&lt;br /&gt;
  配合 EquipmentTable 使用的行模板&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[{{{名称}}}]] || {{{类型|}}} || {{#if:{{{耐久|}}}|耐久{{{耐久}}} }}{{#if:{{{装甲|}}}|装甲{{{装甲}}} }}{{#if:{{{纵帆|}}}|纵帆{{{纵帆}}} }}{{#if:{{{横帆|}}}|横帆{{{横帆}}} }}{{#if:{{{转向|}}}|转向{{{转向}}} }} || {{{适用|}}} || {{{备注|}}}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:EquipmentTable&amp;diff=6</id>
		<title>模板:EquipmentTable</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:EquipmentTable&amp;diff=6"/>
		<updated>2026-04-14T12:04:06Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Template:EquipmentTable&lt;br /&gt;
  任务 8.2：装备数据表模板&lt;br /&gt;
  使用方式：&lt;br /&gt;
  {{EquipmentTable&lt;br /&gt;
  | 数据 =&lt;br /&gt;
  {{EquipmentRow|名称=强化装材|类型=装材|耐久=+100|装甲=+10|适用=中型/大型}}&lt;br /&gt;
  {{EquipmentRow|名称=速度帆|类型=帆具|纵帆=+30|适用=全部}}&lt;br /&gt;
  }}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable equipment-table&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 名称 !! 类型 !! 属性加成 !! 适用条件 !! 备注&lt;br /&gt;
{{{数据|}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ShipInfobox&amp;diff=5</id>
		<title>模板:ShipInfobox</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=%E6%A8%A1%E6%9D%BF:ShipInfobox&amp;diff=5"/>
		<updated>2026-04-14T12:04:06Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  Template:ShipInfobox&lt;br /&gt;
  任务 8.1：船只信息卡模板&lt;br /&gt;
  使用方式：&lt;br /&gt;
  {{ShipInfobox&lt;br /&gt;
  | 名称     = 轻型盖伦船&lt;br /&gt;
  | 图片     = File:Ship_light_galleon.png&lt;br /&gt;
  | 船型     = 冒险&lt;br /&gt;
  | 大小     = 中型&lt;br /&gt;
  | 动力类型 = 混合&lt;br /&gt;
  | 耐久     = 800&lt;br /&gt;
  | 装甲     = 50&lt;br /&gt;
  | 纵帆     = 120&lt;br /&gt;
  | 横帆     = 80&lt;br /&gt;
  | 转向     = 15&lt;br /&gt;
  | 对波     = 12&lt;br /&gt;
  | 对风     = 10&lt;br /&gt;
  | 加速     = 8&lt;br /&gt;
  | 炮击     = 60&lt;br /&gt;
  | 技能槽   = 3&lt;br /&gt;
  | 船员     = 150&lt;br /&gt;
  }}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;infobox-ship&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;infobox-title&amp;quot;&amp;gt;{{#if:{{{名称|}}}|{{{名称}}}|{{PAGENAME}}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
  {{#if:{{{图片|}}}|&amp;lt;div style=&amp;quot;text-align:center;margin-bottom:0.5rem;&amp;quot;&amp;gt;[[{{{图片}}}|200px|center]]&amp;lt;/div&amp;gt;|}}&lt;br /&gt;
  {| style=&amp;quot;width:100%;border-collapse:collapse;&amp;quot;&lt;br /&gt;
  {{#if:{{{船型|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | &#039;&#039;&#039;船型&#039;&#039;&#039; || {{{船型}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{大小|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | &#039;&#039;&#039;大小&#039;&#039;&#039; || {{{大小}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{动力类型|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | &#039;&#039;&#039;动力&#039;&#039;&#039; || {{{动力类型}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  |-&lt;br /&gt;
  | colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:center;font-weight:bold;padding-top:6px;&amp;quot; | 基础属性&lt;br /&gt;
  {{#if:{{{耐久|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 耐久 || {{{耐久}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{装甲|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 装甲 || {{{装甲}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{纵帆|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 纵帆 || {{{纵帆}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{横帆|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 横帆 || {{{横帆}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{转向|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 转向 || {{{转向}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{对波|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 对波 || {{{对波}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{对风|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 对风 || {{{对风}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{加速|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 加速 || {{{加速}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{炮击|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 炮击 || {{{炮击}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{技能槽|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 技能槽 || {{{技能槽}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  {{#if:{{{船员|}}}|&lt;br /&gt;
  |-&lt;br /&gt;
  | 船员上限 || {{{船员}}}&lt;br /&gt;
  |}}&lt;br /&gt;
  |}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=4</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.js&amp;diff=4"/>
		<updated>2026-04-14T12:04:06Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.js&lt;br /&gt;
 * 任务 6.3：未登录用户访问需要编辑权限的页面时，引导到主站登录&lt;br /&gt;
 * 将此内容粘贴到 Wiki 站的 MediaWiki:Common.js 页面&lt;br /&gt;
 */&lt;br /&gt;
( function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    var MAIN_LOGIN_URL = &#039;https://dolshipmaker.vip/login.html&#039;;&lt;br /&gt;
    var WIKI_BASE_URL  = &#039;https://wiki.dolshipmaker.vip&#039;;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * 检测当前是否为编辑/上传等需要登录的操作，&lt;br /&gt;
     * 若未登录则重定向到主站登录页。&lt;br /&gt;
     */&lt;br /&gt;
    function checkAuthForEditActions() {&lt;br /&gt;
        var action = mw.config.get( &#039;wgAction&#039; );&lt;br /&gt;
        var isLoggedIn = mw.config.get( &#039;wgUserId&#039; ) !== 0;&lt;br /&gt;
&lt;br /&gt;
        if ( isLoggedIn ) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 需要登录的操作&lt;br /&gt;
        var protectedActions = [ &#039;edit&#039;, &#039;submit&#039;, &#039;upload&#039; ];&lt;br /&gt;
        if ( protectedActions.indexOf( action ) !== -1 ) {&lt;br /&gt;
            var returnUrl = encodeURIComponent( window.location.href );&lt;br /&gt;
            window.location.href = MAIN_LOGIN_URL + &#039;?redirect=&#039; + returnUrl;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * 为页面内的&amp;quot;编辑&amp;quot;链接添加登录引导&lt;br /&gt;
     */&lt;br /&gt;
    function patchEditLinks() {&lt;br /&gt;
        var isLoggedIn = mw.config.get( &#039;wgUserId&#039; ) !== 0;&lt;br /&gt;
        if ( isLoggedIn ) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $( &#039;a[href*=&amp;quot;action=edit&amp;quot;], a[href*=&amp;quot;veaction=edit&amp;quot;]&#039; ).on( &#039;click&#039;, function ( e ) {&lt;br /&gt;
            e.preventDefault();&lt;br /&gt;
            var returnUrl = encodeURIComponent( window.location.href );&lt;br /&gt;
            window.location.href = MAIN_LOGIN_URL + &#039;?redirect=&#039; + returnUrl;&lt;br /&gt;
        } );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    mw.loader.using( &#039;mediawiki.util&#039; ).done( function () {&lt;br /&gt;
        checkAuthForEditActions();&lt;br /&gt;
        $( document ).ready( patchEditLinks );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=3</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=MediaWiki:Common.css&amp;diff=3"/>
		<updated>2026-04-14T12:04:05Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**&lt;br /&gt;
 * MediaWiki:Common.css&lt;br /&gt;
 * 任务 4.2：深色海洋配色&lt;br /&gt;
 * 任务 4.3：首页卡片布局&lt;br /&gt;
 * 任务 8：Infobox 模板样式&lt;br /&gt;
 * 将此内容粘贴到 Wiki 站的 MediaWiki:Common.css 页面&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/* ── 深色海洋配色变量 ─────────────────────────────────── */&lt;br /&gt;
:root {&lt;br /&gt;
    --color-bg-primary:    #0a1628;&lt;br /&gt;
    --color-bg-secondary:  #1a3a5c;&lt;br /&gt;
    --color-accent:        #c9a84c;&lt;br /&gt;
    --color-link:          #4a9eff;&lt;br /&gt;
    --color-text:          #e8eaf0;&lt;br /&gt;
    --color-border:        #2a4a6c;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 首页卡片布局（任务 4.3）────────────────────────────── */&lt;br /&gt;
.wiki-home-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));&lt;br /&gt;
    gap: 1.2rem;&lt;br /&gt;
    margin: 1.5rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    padding: 1.2rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    transition: transform 0.2s, box-shadow 0.2s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card:hover {&lt;br /&gt;
    transform: translateY(-3px);&lt;br /&gt;
    box-shadow: 0 6px 20px rgba(74, 158, 255, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-icon {&lt;br /&gt;
    font-size: 2.5rem;&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-title {&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    margin-bottom: 0.4rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-home-card .card-desc {&lt;br /&gt;
    font-size: 0.85rem;&lt;br /&gt;
    opacity: 0.8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 船只信息卡（任务 8.1）──────────────────────────────── */&lt;br /&gt;
.infobox-ship {&lt;br /&gt;
    float: right;&lt;br /&gt;
    clear: right;&lt;br /&gt;
    margin: 0 0 1rem 1.5rem;&lt;br /&gt;
    padding: 0.8rem;&lt;br /&gt;
    min-width: 260px;&lt;br /&gt;
    max-width: 320px;&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-accent, #c9a84c);&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-size: 0.9rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship .infobox-title {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 1.1rem;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    padding-bottom: 0.5rem;&lt;br /&gt;
    border-bottom: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    margin-bottom: 0.6rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship table {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship td {&lt;br /&gt;
    padding: 3px 6px;&lt;br /&gt;
    border-bottom: 1px solid rgba(42, 74, 108, 0.5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.infobox-ship td:first-child {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    white-space: nowrap;&lt;br /&gt;
    width: 45%;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 物品图标网格（任务 8.3）────────────────────────────── */&lt;br /&gt;
.item-icon-grid {&lt;br /&gt;
    display: grid;&lt;br /&gt;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));&lt;br /&gt;
    gap: 0.8rem;&lt;br /&gt;
    margin: 1rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    border: 1px solid var(--color-border, #2a4a6c);&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    padding: 0.6rem;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-size: 0.8rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.item-icon-grid .item-card img {&lt;br /&gt;
    max-width: 64px;&lt;br /&gt;
    max-height: 64px;&lt;br /&gt;
    margin-bottom: 0.3rem;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ── 可排序数据表格（任务 8.2）──────────────────────────── */&lt;br /&gt;
.wikitable.equipment-table th {&lt;br /&gt;
    background: var(--color-bg-secondary, #1a3a5c);&lt;br /&gt;
    color: var(--color-accent, #c9a84c);&lt;br /&gt;
    border-color: var(--color-border, #2a4a6c);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wikitable.equipment-table td {&lt;br /&gt;
    border-color: var(--color-border, #2a4a6c);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=2</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolshipmaker.vip/index.php?title=Main_Page&amp;diff=2"/>
		<updated>2026-04-14T12:02:49Z</updated>

		<summary type="html">&lt;p&gt;WikiAdmin：​初始化页面内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
  首页（Main Page）&lt;br /&gt;
  任务 4.3 / 9：卡片式首页布局&lt;br /&gt;
  将此内容粘贴到 Wiki 站的 Main_Page 页面&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding: 2rem 0 1rem;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Wiki-logo.png|200px|center|DOL ShipMaker Wiki]]&lt;br /&gt;
== DOL ShipMaker Wiki ==&lt;br /&gt;
大航海时代 Online 造船模拟器知识库，由社区共同维护。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-home-grid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;⛵&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;[[船只数据|船只数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-desc&amp;quot;&amp;gt;各类船只的基础属性、技能与属性上限&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;⚙️&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;[[装备数据|装备数据]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-desc&amp;quot;&amp;gt;船材、帆具、装甲、装备的详细数据&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;📖&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;[[游戏指南|游戏指南]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-desc&amp;quot;&amp;gt;新手入门、进阶攻略与游戏机制说明&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-home-card&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-icon&amp;quot;&amp;gt;💬&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-title&amp;quot;&amp;gt;[[玩家心得|玩家心得]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;card-desc&amp;quot;&amp;gt;社区分享的配置心得与实战经验&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== 快速导航 ===&lt;br /&gt;
* [[造船模拟器|前往 Maker 站造船模拟器]]&lt;br /&gt;
* [[Special:RecentChanges|最近更改]]&lt;br /&gt;
* [[Special:Upload|上传图片]]&lt;br /&gt;
* [[Help:编辑指南|编辑指南]]&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
</feed>