diff --git a/.eslintrc.json b/.eslintrc.json
index b865568..f59fc50 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,12 +1,12 @@
{
- "root": true,
- "extends": [
- "wikimedia/client-es6",
- "wikimedia/jquery",
- "wikimedia/mediawiki"
- ],
- "rules": {
- "compat/compat": "off",
- "vue/no-v-html": "off"
- }
-}
\ No newline at end of file
+ "root": true,
+ "extends": [
+ "wikimedia/client-es6",
+ "wikimedia/jquery",
+ "wikimedia/mediawiki"
+ ],
+ "rules": {
+ "compat/compat": "off",
+ "vue/no-v-html": "off"
+ }
+}
diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
new file mode 100644
index 0000000..2733f8c
--- /dev/null
+++ b/.github/workflows/php.yml
@@ -0,0 +1,24 @@
+name: PHP build
+on:
+ [ pull_request, push ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php: [ 7.4, 8.0, 8.1, 8.2 ]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+
+ - name: Install dependencies
+ run: composer install --prefer-dist --no-interaction --ansi
+
+ - name: Running phpcs
+ run: composer run-script cs
diff --git a/.stylelintrc.json b/.stylelintrc.json
index 62cd686..f65e0e9 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -1,8 +1,8 @@
{
- "extends": "stylelint-config-wikimedia",
- "rules": {
- "selector-max-id": null,
- "no-descending-specificity": null,
- "indentation": 2
- }
-}
\ No newline at end of file
+ "extends": "stylelint-config-wikimedia",
+ "rules": {
+ "selector-max-id": null,
+ "no-descending-specificity": null,
+ "indentation": 2
+ }
+}
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 016290d..b0e7aba 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -1,6 +1,8 @@
-The Lakeus skin is written by Lakejason0, Light beacon, Dianliang233, Winston Sung and other contributors to the skin. See https://github.com/lakejason0/mediawiki-skins-Lakeus/graphs/contributors for the list of all contributors.
+The Lakeus skin is written by Lakejason0, Light beacon, Dianliang233, Winston Sung and other contributors to the skin.
+See https://github.com/lakejason0/mediawiki-skins-Lakeus/graphs/contributors for the list of all contributors.
-Translations are done by Lakejason0 (`zh-hans`, `zh-hant`, `zh-hk`), Winston Sung (`zh-hant`), Olvcpr423 (`yue`) and other translators on Translatewiki.net. See https://translatewiki.net/wiki/Special:MessageGroupStats?group=mwgithub-lakeus&suppressempty=1&x=D for the message group statistics of the skin.
+Translations are done by Lakejason0 (`zh-hans`, `zh-hant`, `zh-hk`), Winston Sung (`zh-hant`), Olvcpr423 (`yue`) and other translators on translatewiki.net.
+See https://translatewiki.net/wiki/Special:MessageGroupStats?group=mwgithub-lakeus&suppressempty=1&x=D for the message group statistics of the skin.
Special thanks to Timeless, Vector, Minerva, FandomMobile and FandomDesktop for inspiration of some features of this skin!
@@ -23,4 +25,4 @@ Fandom skins:
This project uses Material icons; These icons are under their license (Apache License 2.0) as well.
-This project uses OOUI icons; These icons are under their license (MIT) as well.
\ No newline at end of file
+This project uses OOUI icons; These icons are under their license (MIT) as well.
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..e072467
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,46 @@
+{
+ "name": "mediawiki/lakeus-skin",
+ "description": "A MediaWiki skin made by Lakejason0 and other contributors.",
+ "keywords": [
+ "mediawiki"
+ ],
+ "license": "GPL-3.0-or-later",
+ "authors": [
+ {
+ "name": "Lakejason0"
+ },
+ {
+ "name": "Light beacon"
+ },
+ {
+ "name": "Dianliang233"
+ },
+ {
+ "name": "Winston Sung"
+ }
+ ],
+ "require": {
+ "php": ">=7.4",
+ "mustangostang/spyc": "0.6.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "9.6.13",
+ "mediawiki/mediawiki-codesniffer": "42.0.0"
+ },
+ "support": {
+ "issues": "https://github.com/lakejason0/mediawiki-skins-Lakeus/issues"
+ },
+ "autoload": {
+ "psr-4": {
+ "MediaWiki\\Skins\\Lakeus\\": "includes/"
+ }
+ },
+ "scripts": {
+ "fix": "phpcbf",
+ "cs": "phpcs -sp",
+ "test": [
+ "@composer validate --no-interaction",
+ "@cs"
+ ]
+ }
+}
diff --git a/i18n/zh-hans.json b/i18n/zh-hans.json
index 4417362..adf07ae 100644
--- a/i18n/zh-hans.json
+++ b/i18n/zh-hans.json
@@ -45,7 +45,7 @@
"lakeus-theme-designer-basic-derived": "基本派生",
"lakeus-theme-designer-color-secondary--derived": "次要色派生",
"lakeus-theme-designer-border-color-secondary--derived": "次要色边框颜色派生",
- "lakeus-theme-designer-global": "全局",
+ "lakeus-theme-designer-global": "全域",
"lakeus-theme-designer-background-color-base": "HTML背景颜色",
"lakeus-theme-designer-color-link": "链接颜色",
"lakeus-theme-designer-color-link--visited": "访问过的链接颜色",
diff --git a/includes/Hooks.php b/includes/Hooks.php
index c2553b8..55bfba6 100644
--- a/includes/Hooks.php
+++ b/includes/Hooks.php
@@ -1,39 +1,38 @@
'check',
- 'label-message' => 'lakeus-preferences-enable-theme-designer', // a system message
- 'help-message' => 'lakeus-preferences-enable-theme-designer-desc',
- 'section' => 'rendering/skin/skin-prefs',
- 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
- ];
+class Hooks {
+ /**
+ * @see https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Hooks/GetPreferences
+ * @param User $user
+ * @param array &$preferences
+ */
+ public static function onGetPreferences( $user, &$preferences ) {
+ // A checkbox
+ $preferences['lakeus-enable-theme-designer'] = [
+ 'type' => 'check',
+ // a system message
+ 'label-message' => 'lakeus-preferences-enable-theme-designer',
+ 'help-message' => 'lakeus-preferences-enable-theme-designer-desc',
+ 'section' => 'rendering/skin/skin-prefs',
+ 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
+ ];
- $preferences['lakeus-sticky-toc-donot-auto-collapse'] = [
- 'type' => 'check',
- 'label-message' => 'lakeus-preferences-sticky-toc-donot-auto-collapse',
- 'help-message' => 'lakeus-preferences-sticky-toc-donot-auto-collapse-desc',
- 'section' => 'rendering/skin/skin-prefs',
- 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
- ];
+ $preferences['lakeus-sticky-toc-donot-auto-collapse'] = [
+ 'type' => 'check',
+ 'label-message' => 'lakeus-preferences-sticky-toc-donot-auto-collapse',
+ 'help-message' => 'lakeus-preferences-sticky-toc-donot-auto-collapse-desc',
+ 'section' => 'rendering/skin/skin-prefs',
+ 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
+ ];
- $preferences['lakeus-smooth-scroll-behavior'] = [
- 'type' => 'check',
- 'label-message' => 'lakeus-preferences-smooth-scroll-behavior',
- 'help-message' => 'lakeus-preferences-smooth-scroll-behavior-desc',
- 'section' => 'rendering/skin/skin-prefs',
- 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
- ];
- }
+ $preferences['lakeus-smooth-scroll-behavior'] = [
+ 'type' => 'check',
+ 'label-message' => 'lakeus-preferences-smooth-scroll-behavior',
+ 'help-message' => 'lakeus-preferences-smooth-scroll-behavior-desc',
+ 'section' => 'rendering/skin/skin-prefs',
+ 'hide-if' => [ '!==', 'wpskin', 'lakeus' ],
+ ];
+ }
}
diff --git a/includes/SkinLakeus.php b/includes/SkinLakeus.php
index 0c2b3d7..bc0b07b 100644
--- a/includes/SkinLakeus.php
+++ b/includes/SkinLakeus.php
@@ -1,48 +1,69 @@
templateParser = new TemplateParser( $this->options['templateDirectory'], $localServerObjectCache );
- }
-
- /**
- * Extends the getTemplateData function to add a template key 'html-myskin-hello-world'
- * which can be rendered in skin.mustache using {{{html-myskin-hello-world}}}
- */
- public function getTemplateData() {
- $data = parent::getTemplateData();
- $config = $this->getConfig(); // this is a Config object
-
- $data["html-articlecount"] = SiteStats::articles();
- // trying to overwrite
- $data["msg-lakeus-articlecount"] = $this->msg( 'lakeus-articlecount' )->numParams( SiteStats::articles() )->parse();
- $wgLakeusShowRepositoryLink = $config->get( 'LakeusShowRepositoryLink' );
- if ($wgLakeusShowRepositoryLink) {
- $data["html-repository-link"] = '' . $this->msg( 'lakeus-footermessage' )->plain() . '';
- $data["is-repository-link-shown"] = true;
- }
- $data["is-notice-with-border"] = $config->get( 'LakeusSiteNoticeHasBorder' );
- $data["is-portlet-animated"] = $config->get( 'LakeusShouldAnimatePortlets' );
- $data["is-sticky-toc-shown"] = $config->get( 'LakeusShowStickyTOC' );
-
- $pageToolsKey = array_search('p-tb' , array_column( $data["data-portlets-sidebar"]["array-portlets-rest"], 'id' ) );
- $data["data-portlets"]["data-page-tools"] = $data["data-portlets-sidebar"]["array-portlets-rest"][$pageToolsKey];
- unset($data["data-portlets-sidebar"]["array-portlets-rest"][$pageToolsKey]);
- $data["data-portlets-sidebar"]["array-portlets-rest"] = array_values($data["data-portlets-sidebar"]["array-portlets-rest"]);
-
- if ( empty($data["data-toc"]["array-sections"]) ) {
- unset($data["data-toc"]);
- }
-
- return $data;
- }
-}
\ No newline at end of file
+ public const TEMPLATE_DIR = __DIR__ . '/templates';
+
+ /**
+ * @param BagOStuff $localServerObjectCache
+ * @param array $options
+ */
+ public function __construct( BagOStuff $localServerObjectCache, array $options ) {
+ $options['templateDirectory'] = self::TEMPLATE_DIR;
+ parent::__construct( $options );
+
+ $this->templateParser = new TemplateParser( $this->options['templateDirectory'], $localServerObjectCache );
+ }
+
+ /**
+ * Extends the getTemplateData function to add a template key 'html-myskin-hello-world'
+ * which can be rendered in skin.mustache using {{{html-myskin-hello-world}}}
+ *
+ * @return array
+ */
+ public function getTemplateData(): array {
+ $data = parent::getTemplateData();
+ // this is a Config object
+ $config = $this->getConfig();
+
+ $data["html-articlecount"] = SiteStats::articles();
+ // trying to overwrite
+ $data["msg-lakeus-articlecount"] = $this->msg( 'lakeus-articlecount' )
+ ->numParams( SiteStats::articles() )->parse();
+ $showRepositoryLink = $config->get( 'LakeusShowRepositoryLink' );
+ if ( $showRepositoryLink ) {
+ $data["html-repository-link"] = '' .
+ $this->msg( 'lakeus-footermessage' )->plain() . '';
+ $data["is-repository-link-shown"] = true;
+ }
+ $data["is-notice-with-border"] = $config->get( 'LakeusSiteNoticeHasBorder' );
+ $data["is-portlet-animated"] = $config->get( 'LakeusShouldAnimatePortlets' );
+ $data["is-sticky-toc-shown"] = $config->get( 'LakeusShowStickyTOC' );
+
+ $pageToolsKey = array_search(
+ 'p-tb',
+ array_column( $data["data-portlets-sidebar"]["array-portlets-rest"], 'id' )
+ );
+ $data["data-portlets"]["data-page-tools"] =
+ $data["data-portlets-sidebar"]["array-portlets-rest"][$pageToolsKey];
+ unset( $data["data-portlets-sidebar"]["array-portlets-rest"][$pageToolsKey] );
+ $data["data-portlets-sidebar"]["array-portlets-rest"] = array_values(
+ $data["data-portlets-sidebar"]["array-portlets-rest"]
+ );
+
+ if ( empty( $data["data-toc"]["array-sections"] ) ) {
+ unset( $data["data-toc"] );
+ }
+
+ return $data;
+ }
+}
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 0000000..172b21b
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,7 @@
+
+
+
+ .
+
+
+
diff --git a/phpcs_standalone.xml b/phpcs_standalone.xml
new file mode 100644
index 0000000..55a914e
--- /dev/null
+++ b/phpcs_standalone.xml
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
+ A coding standard for MediaWiki.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ^(\.git|coverage|node_modules|vendor)/*
+
+
+
+ .
+
+
+
diff --git a/screenshots/1920x968.png b/screenshots/1920x968.png
new file mode 100644
index 0000000..bd9f3b8
Binary files /dev/null and b/screenshots/1920x968.png differ
diff --git a/skin.json b/skin.json
index f62ca5d..b8d391c 100644
--- a/skin.json
+++ b/skin.json
@@ -1,282 +1,279 @@
{
- "name": "Lakeus",
- "version": "1.1.16",
- "namemsg": "skinname-lakeus",
- "descriptionmsg": "lakeus-skin-desc",
- "url": "https://github.com/lakejason0/mediawiki-skins-Lakeus",
- "author": [
- "[https://github.com/lakejason0 Lakejason0]",
- "Light beacon",
- "Dianliang233",
- "Winston Sung",
- "..."
- ],
- "type": "skin",
- "requires": {
- "MediaWiki": ">= 1.36.0"
- },
- "license-name": "GPL-3.0-or-later",
- "manifest_version": 2,
- "ValidSkinNames": {
- "lakeus": {
- "class": "SkinLakeus",
- "services": [
- "LocalServerObjectCache"
- ],
- "args": [
- {
- "name": "lakeus",
- "messages": [
- "sitetitle",
- "search",
- "otherlanguages",
- "tagline",
- "toc",
- "lakeus-openmainmenu",
- "lakeus-jumptocontent",
- "lakeus-articlecount",
- "lakeus-preferences-enable-theme-designer",
- "lakeus-preferences-enable-theme-designer-desc",
- "lakeus-preferences-sticky-toc-donot-auto-collapse",
- "lakeus-preferences-sticky-toc-donot-auto-collapse-desc"
- ],
- "styles": [
- "mediawiki.hlist",
- "skins.lakeus.styles"
- ],
- "scripts": [
- "skins.lakeus",
- "skins.lakeus.designer"
- ],
- "responsive": true
- }
- ]
- }
- },
- "MessagesDirs": {
- "Lakeus": [
- "i18n"
- ]
- },
- "ResourceFileModulePaths": {
- "localBasePath": "",
- "remoteSkinPath": "Lakeus"
- },
- "ResourceModules": {
- "skins.lakeus.styles": {
- "class": "ResourceLoaderSkinModule",
- "features": {
- "normalize": true,
- "elements": true,
- "content-tables": true,
- "content-links": true,
- "content-media": true,
- "interface-category": true,
- "interface-message-box": true,
- "i18n-ordered-lists": true,
- "i18n-all-lists-margins": true,
- "i18n-headings": true,
- "toc": true
- },
- "targets": [
- "desktop",
- "mobile"
- ],
- "styles": {
- "0": "resources/skin.less",
- "resources/print.less": {
- "media": "print"
- }
- }
- },
- "skins.lakeus": {
- "targets": [
- "desktop",
- "mobile"
- ],
- "styles": "resources/skin.js.less",
- "packageFiles": [
- "resources/skin.js"
- ]
- },
- "skins.lakeus.designer": {
- "es6": true,
- "targets": [
- "desktop",
- "mobile"
- ],
- "messages": [
- "lakeus-theme-designer",
- "lakeus-theme-designer-system-messages-loaded",
- "lakeus-theme-designer-all-loaded",
- "lakeus-theme-designer-auto-calculate",
- "lakeus-theme-designer-do-not-generate",
- "lakeus-theme-designer-copy-theme",
- "lakeus-theme-designer-paste-theme",
- "lakeus-theme-designer-test-theme",
- "lakeus-theme-designer-clear-theme",
- "lakeus-theme-designer-reset-theme",
- "lakeus-theme-designer-invert-auto-calculate-selection",
- "lakeus-theme-designer-unselect-do-not-generate-selection",
- "lakeus-theme-designer-copied",
- "lakeus-theme-designer-copy-failed",
- "lakeus-theme-designer-reload",
- "lakeus-theme-designer-color-picker-fallback",
- "lakeus-theme-designer-alpha-channel",
- "lakeus-theme-designer-basic",
- "lakeus-theme-designer-color-primary",
- "lakeus-theme-designer-color-secondary",
- "lakeus-theme-designer-color-neutral",
- "lakeus-theme-designer-color-warning",
- "lakeus-theme-designer-color-error",
- "lakeus-theme-designer-color-success",
- "lakeus-theme-designer-basic-derived",
- "lakeus-theme-designer-color-secondary--derived",
- "lakeus-theme-designer-border-color-secondary--derived",
- "lakeus-theme-designer-global",
- "lakeus-theme-designer-background-color-base",
- "lakeus-theme-designer-color-link",
- "lakeus-theme-designer-color-link--visited",
- "lakeus-theme-designer-color-link--active",
- "lakeus-theme-designer-color-link-new",
- "lakeus-theme-designer-color-link-new--visited",
- "lakeus-theme-designer-color-link-new--active",
- "lakeus-theme-designer-color-footer-link",
- "lakeus-theme-designer-color-footer-link--visited",
- "lakeus-theme-designer-color-footer-link--active",
- "lakeus-theme-designer-color-link-external",
- "lakeus-theme-designer-color-link-external--visited",
- "lakeus-theme-designer-color-link-external--active",
- "lakeus-theme-designer-elevation",
- "lakeus-theme-designer-font-family",
- "lakeus-theme-designer-font-family-serif",
- "lakeus-theme-designer-font-family-action-bar",
- "lakeus-theme-designer-page-header",
- "lakeus-theme-designer-color-header",
- "lakeus-theme-designer-header-elevation",
- "lakeus-theme-designer-icon-filter-header",
- "lakeus-theme-designer-background-color-search-suggestions",
- "lakeus-theme-designer-border-color-search-suggestions",
- "lakeus-theme-designer-color-search-suggestions-text",
- "lakeus-theme-designer-background-color-search-suggestions-current",
- "lakeus-theme-designer-color-search-suggestions-text-current",
- "lakeus-theme-designer-background-color-search-input",
- "lakeus-theme-designer-border-color-search-bar",
- "lakeus-theme-designer-toggle-list",
- "lakeus-theme-designer-background-color-toggle-list",
- "lakeus-theme-designer-background-color-toggle-list-card",
- "lakeus-theme-designer-logo-text-color-toggle-list",
- "lakeus-theme-designer-background-color-toggle-list-item-hover",
- "lakeus-theme-designer-background-color-toggle-list-item-focus",
- "lakeus-theme-designer-border-color-toggle-list",
- "lakeus-theme-designer-subheader-color-toggle-list",
- "lakeus-theme-designer-mask-background",
- "lakeus-theme-designer-body",
- "lakeus-theme-designer-background-color-content",
- "lakeus-theme-designer-background-color-body",
- "lakeus-theme-designer-border-color-content",
- "lakeus-theme-designer-color-accent-header-tab",
- "lakeus-theme-designer-border-color-header-tab",
- "lakeus-theme-designer-color-tagline",
- "lakeus-theme-designer-font-family-headings",
- "lakeus-theme-designer-background-color-edit-options",
- "lakeus-theme-designer-border-color-edit-options",
- "lakeus-theme-designer-background-color-toc",
- "lakeus-theme-designer-border-color-toc",
- "lakeus-theme-designer-color-toc-number",
- "lakeus-theme-designer-border-color-interface-message-box-neutral",
- "lakeus-theme-designer-background-color-interface-message-box-neutral",
- "lakeus-theme-designer-text-color-interface-message-box-neutral",
- "lakeus-theme-designer-border-color-interface-message-box-warning",
- "lakeus-theme-designer-background-color-interface-message-box-warning",
- "lakeus-theme-designer-text-color-interface-message-box-warning",
- "lakeus-theme-designer-border-color-interface-message-box-error",
- "lakeus-theme-designer-background-color-interface-message-box-error",
- "lakeus-theme-designer-text-color-interface-message-box-error",
- "lakeus-theme-designer-border-color-interface-message-box-success",
- "lakeus-theme-designer-background-color-interface-message-box-success",
- "lakeus-theme-designer-text-color-interface-message-box-success",
- "lakeus-theme-designer-border-color-user-message",
- "lakeus-theme-designer-background-color-user-message",
- "lakeus-theme-designer-text-color-user-message",
- "lakeus-theme-designer-background-color-wikitable",
- "lakeus-theme-designer-border-color-wikitable",
- "lakeus-theme-designer-background-color-wikitable-table-head",
- "lakeus-theme-designer-text-color-wikitable",
- "lakeus-theme-designer-portlet",
- "lakeus-theme-designer-background-color-portlet-body",
- "lakeus-theme-designer-text-color-portlet-item",
- "lakeus-theme-designer-background-color-portlet-item-hover",
- "lakeus-theme-designer-text-color-portlet-item-hover",
- "lakeus-theme-designer-background-color-portlet-item-focus",
- "lakeus-theme-designer-text-color-portlet-item-focus",
- "lakeus-theme-designer-border-color-portlet-body",
- "lakeus-theme-designer-footer",
- "lakeus-theme-designer-background-color-footer",
- "lakeus-theme-designer-text-color-footer",
- "lakeus-theme-designer-text-color-toggle-list-item",
- "lakeus-theme-designer-text-color-toggle-list-item-hover",
- "lakeus-theme-designer-text-color-toggle-list-item-focus",
- "lakeus-theme-designer-text-color-content",
- "lakeus-theme-designer-text-color-header",
- "lakeus-theme-designer-text-color-body",
- "lakeus-theme-designer-color-accent-header-tab-selected",
- "lakeus-theme-designer-color-accent-header-tab-new",
- "lakeus-theme-designer-sticky-toc",
- "lakeus-theme-designer-background-color-toc-button",
- "lakeus-theme-designer-icon-filter-toc-button",
- "lakeus-theme-designer-text-color-sticky-toc-number",
- "lakeus-theme-designer-danger-zone"
- ],
- "packageFiles": [
- "resources/themeDesigner.js"
- ],
- "dependencies": [
- "mediawiki.api",
- "mediawiki.jqueryMsg",
- "user.options"
- ]
- }
- },
- "ResourceModuleSkinStyles": {
- "lakeus": {
- "+oojs-ui-core.styles": "resources/ooui.less",
- "+ext.NoTitle": "skinStyles/extensions/NoTitle/ext.NoTitle.css",
- "+ext.uls.pt": "skinStyles/extensions/UniversalLanguageSelector/ext.uls.pt.less",
- "+ext.visualEditor.desktopArticleTarget.init": "skinStyles/extensions/VisualEditor/ext.visualEditor.desktopArticleTarget.init.less",
- "+ext.echo.styles.badge": "skinStyles/extensions/Echo/ext.echo.styles.badge.less"
- }
- },
- "AutoloadClasses": {
- "SkinLakeus": "includes/SkinLakeus.php"
- },
- "AutoloadNamespaces": {
- "Lakeus\\": "includes/"
- },
- "Hooks": {
- "GetPreferences": "Lakeus\\Hooks::onGetPreferences"
- },
- "DefaultUserOptions": {
- "lakeus-enable-theme-designer": 0,
- "lakeus-sticky-toc-donot-auto-collapse": 0,
- "lakeus-smooth-scroll-behavior": 1
- },
- "config": {
- "LakeusShowRepositoryLink": {
- "value": true,
- "description": "Whether to show the link to the repository or not."
- },
- "LakeusSiteNoticeHasBorder": {
- "value": false,
- "description": "Whether to add a border to site notice. Useful for plain text notices."
- },
- "LakeusShouldAnimatePortlets": {
- "value": false,
- "description": "Whether to animate portlets. May cause visual artifacts when enabled due to z-index issues."
- },
- "LakeusShowStickyTOC": {
- "value": false,
- "description": "Whether to show sticky TOC."
- }
- }
+ "name": "Lakeus",
+ "version": "1.1.17",
+ "namemsg": "skinname-lakeus",
+ "descriptionmsg": "lakeus-skin-desc",
+ "url": "https://github.com/lakejason0/mediawiki-skins-Lakeus",
+ "author": [
+ "[https://github.com/lakejason0 Lakejason0]",
+ "Light beacon",
+ "Dianliang233",
+ "Winston Sung",
+ "..."
+ ],
+ "type": "skin",
+ "requires": {
+ "MediaWiki": ">= 1.36.0"
+ },
+ "license-name": "GPL-3.0-or-later",
+ "manifest_version": 2,
+ "ValidSkinNames": {
+ "lakeus": {
+ "class": "MediaWiki\\Skins\\Lakeus\\SkinLakeus",
+ "services": [
+ "LocalServerObjectCache"
+ ],
+ "args": [
+ {
+ "name": "lakeus",
+ "messages": [
+ "sitetitle",
+ "search",
+ "otherlanguages",
+ "tagline",
+ "toc",
+ "lakeus-openmainmenu",
+ "lakeus-jumptocontent",
+ "lakeus-articlecount",
+ "lakeus-preferences-enable-theme-designer",
+ "lakeus-preferences-enable-theme-designer-desc",
+ "lakeus-preferences-sticky-toc-donot-auto-collapse",
+ "lakeus-preferences-sticky-toc-donot-auto-collapse-desc"
+ ],
+ "styles": [
+ "mediawiki.hlist",
+ "skins.lakeus.styles"
+ ],
+ "scripts": [
+ "skins.lakeus",
+ "skins.lakeus.designer"
+ ],
+ "responsive": true
+ }
+ ]
+ }
+ },
+ "MessagesDirs": {
+ "Lakeus": [
+ "i18n"
+ ]
+ },
+ "ResourceFileModulePaths": {
+ "localBasePath": "",
+ "remoteSkinPath": "Lakeus"
+ },
+ "ResourceModules": {
+ "skins.lakeus.styles": {
+ "class": "ResourceLoaderSkinModule",
+ "features": {
+ "normalize": true,
+ "elements": true,
+ "content-tables": true,
+ "content-links": true,
+ "content-media": true,
+ "interface-category": true,
+ "interface-message-box": true,
+ "i18n-ordered-lists": true,
+ "i18n-all-lists-margins": true,
+ "i18n-headings": true,
+ "toc": true
+ },
+ "targets": [
+ "desktop",
+ "mobile"
+ ],
+ "styles": {
+ "0": "resources/skin.less",
+ "resources/print.less": {
+ "media": "print"
+ }
+ }
+ },
+ "skins.lakeus": {
+ "targets": [
+ "desktop",
+ "mobile"
+ ],
+ "styles": "resources/skin.js.less",
+ "packageFiles": [
+ "resources/skin.js"
+ ]
+ },
+ "skins.lakeus.designer": {
+ "es6": true,
+ "targets": [
+ "desktop",
+ "mobile"
+ ],
+ "messages": [
+ "lakeus-theme-designer",
+ "lakeus-theme-designer-system-messages-loaded",
+ "lakeus-theme-designer-all-loaded",
+ "lakeus-theme-designer-auto-calculate",
+ "lakeus-theme-designer-do-not-generate",
+ "lakeus-theme-designer-copy-theme",
+ "lakeus-theme-designer-paste-theme",
+ "lakeus-theme-designer-test-theme",
+ "lakeus-theme-designer-clear-theme",
+ "lakeus-theme-designer-reset-theme",
+ "lakeus-theme-designer-invert-auto-calculate-selection",
+ "lakeus-theme-designer-unselect-do-not-generate-selection",
+ "lakeus-theme-designer-copied",
+ "lakeus-theme-designer-copy-failed",
+ "lakeus-theme-designer-reload",
+ "lakeus-theme-designer-color-picker-fallback",
+ "lakeus-theme-designer-alpha-channel",
+ "lakeus-theme-designer-basic",
+ "lakeus-theme-designer-color-primary",
+ "lakeus-theme-designer-color-secondary",
+ "lakeus-theme-designer-color-neutral",
+ "lakeus-theme-designer-color-warning",
+ "lakeus-theme-designer-color-error",
+ "lakeus-theme-designer-color-success",
+ "lakeus-theme-designer-basic-derived",
+ "lakeus-theme-designer-color-secondary--derived",
+ "lakeus-theme-designer-border-color-secondary--derived",
+ "lakeus-theme-designer-global",
+ "lakeus-theme-designer-background-color-base",
+ "lakeus-theme-designer-color-link",
+ "lakeus-theme-designer-color-link--visited",
+ "lakeus-theme-designer-color-link--active",
+ "lakeus-theme-designer-color-link-new",
+ "lakeus-theme-designer-color-link-new--visited",
+ "lakeus-theme-designer-color-link-new--active",
+ "lakeus-theme-designer-color-footer-link",
+ "lakeus-theme-designer-color-footer-link--visited",
+ "lakeus-theme-designer-color-footer-link--active",
+ "lakeus-theme-designer-color-link-external",
+ "lakeus-theme-designer-color-link-external--visited",
+ "lakeus-theme-designer-color-link-external--active",
+ "lakeus-theme-designer-elevation",
+ "lakeus-theme-designer-font-family",
+ "lakeus-theme-designer-font-family-serif",
+ "lakeus-theme-designer-font-family-action-bar",
+ "lakeus-theme-designer-page-header",
+ "lakeus-theme-designer-color-header",
+ "lakeus-theme-designer-header-elevation",
+ "lakeus-theme-designer-icon-filter-header",
+ "lakeus-theme-designer-background-color-search-suggestions",
+ "lakeus-theme-designer-border-color-search-suggestions",
+ "lakeus-theme-designer-color-search-suggestions-text",
+ "lakeus-theme-designer-background-color-search-suggestions-current",
+ "lakeus-theme-designer-color-search-suggestions-text-current",
+ "lakeus-theme-designer-background-color-search-input",
+ "lakeus-theme-designer-border-color-search-bar",
+ "lakeus-theme-designer-toggle-list",
+ "lakeus-theme-designer-background-color-toggle-list",
+ "lakeus-theme-designer-background-color-toggle-list-card",
+ "lakeus-theme-designer-logo-text-color-toggle-list",
+ "lakeus-theme-designer-background-color-toggle-list-item-hover",
+ "lakeus-theme-designer-background-color-toggle-list-item-focus",
+ "lakeus-theme-designer-border-color-toggle-list",
+ "lakeus-theme-designer-subheader-color-toggle-list",
+ "lakeus-theme-designer-mask-background",
+ "lakeus-theme-designer-body",
+ "lakeus-theme-designer-background-color-content",
+ "lakeus-theme-designer-background-color-body",
+ "lakeus-theme-designer-border-color-content",
+ "lakeus-theme-designer-color-accent-header-tab",
+ "lakeus-theme-designer-border-color-header-tab",
+ "lakeus-theme-designer-color-tagline",
+ "lakeus-theme-designer-font-family-headings",
+ "lakeus-theme-designer-background-color-edit-options",
+ "lakeus-theme-designer-border-color-edit-options",
+ "lakeus-theme-designer-background-color-toc",
+ "lakeus-theme-designer-border-color-toc",
+ "lakeus-theme-designer-color-toc-number",
+ "lakeus-theme-designer-border-color-interface-message-box-neutral",
+ "lakeus-theme-designer-background-color-interface-message-box-neutral",
+ "lakeus-theme-designer-text-color-interface-message-box-neutral",
+ "lakeus-theme-designer-border-color-interface-message-box-warning",
+ "lakeus-theme-designer-background-color-interface-message-box-warning",
+ "lakeus-theme-designer-text-color-interface-message-box-warning",
+ "lakeus-theme-designer-border-color-interface-message-box-error",
+ "lakeus-theme-designer-background-color-interface-message-box-error",
+ "lakeus-theme-designer-text-color-interface-message-box-error",
+ "lakeus-theme-designer-border-color-interface-message-box-success",
+ "lakeus-theme-designer-background-color-interface-message-box-success",
+ "lakeus-theme-designer-text-color-interface-message-box-success",
+ "lakeus-theme-designer-border-color-user-message",
+ "lakeus-theme-designer-background-color-user-message",
+ "lakeus-theme-designer-text-color-user-message",
+ "lakeus-theme-designer-background-color-wikitable",
+ "lakeus-theme-designer-border-color-wikitable",
+ "lakeus-theme-designer-background-color-wikitable-table-head",
+ "lakeus-theme-designer-text-color-wikitable",
+ "lakeus-theme-designer-portlet",
+ "lakeus-theme-designer-background-color-portlet-body",
+ "lakeus-theme-designer-text-color-portlet-item",
+ "lakeus-theme-designer-background-color-portlet-item-hover",
+ "lakeus-theme-designer-text-color-portlet-item-hover",
+ "lakeus-theme-designer-background-color-portlet-item-focus",
+ "lakeus-theme-designer-text-color-portlet-item-focus",
+ "lakeus-theme-designer-border-color-portlet-body",
+ "lakeus-theme-designer-footer",
+ "lakeus-theme-designer-background-color-footer",
+ "lakeus-theme-designer-text-color-footer",
+ "lakeus-theme-designer-text-color-toggle-list-item",
+ "lakeus-theme-designer-text-color-toggle-list-item-hover",
+ "lakeus-theme-designer-text-color-toggle-list-item-focus",
+ "lakeus-theme-designer-text-color-content",
+ "lakeus-theme-designer-text-color-header",
+ "lakeus-theme-designer-text-color-body",
+ "lakeus-theme-designer-color-accent-header-tab-selected",
+ "lakeus-theme-designer-color-accent-header-tab-new",
+ "lakeus-theme-designer-sticky-toc",
+ "lakeus-theme-designer-background-color-toc-button",
+ "lakeus-theme-designer-icon-filter-toc-button",
+ "lakeus-theme-designer-text-color-sticky-toc-number",
+ "lakeus-theme-designer-danger-zone"
+ ],
+ "packageFiles": [
+ "resources/themeDesigner.js"
+ ],
+ "dependencies": [
+ "mediawiki.api",
+ "mediawiki.jqueryMsg",
+ "user.options"
+ ]
+ }
+ },
+ "ResourceModuleSkinStyles": {
+ "lakeus": {
+ "+oojs-ui-core.styles": "resources/ooui.less",
+ "+ext.NoTitle": "skinStyles/extensions/NoTitle/ext.NoTitle.css",
+ "+ext.uls.pt": "skinStyles/extensions/UniversalLanguageSelector/ext.uls.pt.less",
+ "+ext.visualEditor.desktopArticleTarget.init": "skinStyles/extensions/VisualEditor/ext.visualEditor.desktopArticleTarget.init.less",
+ "+ext.echo.styles.badge": "skinStyles/extensions/Echo/ext.echo.styles.badge.less"
+ }
+ },
+ "AutoloadNamespaces": {
+ "MediaWiki\\Skins\\Lakeus\\": "includes/"
+ },
+ "Hooks": {
+ "GetPreferences": "MediaWiki\\Skins\\Lakeus\\Hooks::onGetPreferences"
+ },
+ "DefaultUserOptions": {
+ "lakeus-enable-theme-designer": 0,
+ "lakeus-sticky-toc-donot-auto-collapse": 0,
+ "lakeus-smooth-scroll-behavior": 1
+ },
+ "config": {
+ "LakeusShowRepositoryLink": {
+ "value": true,
+ "description": "Whether to show the link to the repository or not."
+ },
+ "LakeusSiteNoticeHasBorder": {
+ "value": false,
+ "description": "Whether to add a border to site notice. Useful for plain text notices."
+ },
+ "LakeusShouldAnimatePortlets": {
+ "value": false,
+ "description": "Whether to animate portlets. May cause visual artifacts when enabled due to z-index issues."
+ },
+ "LakeusShowStickyTOC": {
+ "value": false,
+ "description": "Whether to show sticky TOC."
+ }
+ }
}