Estensione presa direttamente da ArchWiki

This commit is contained in:
giuliof 2022-01-16 13:48:55 +01:00
commit bfa3829b8b
12 changed files with 558 additions and 0 deletions

40
ArchLinux.hooks.php Normal file
View File

@ -0,0 +1,40 @@
<?php
namespace MediaWiki\Extensions\ArchLinux;
use MediaWiki\MediaWikiServices;
class Hooks
{
public static function onBeforePageDisplay(\OutputPage &$outputPage, \Skin &$skin)
{
$outputPage->addModuleStyles('zzz.ext.archLinux.styles');
}
public static function onAfterFinalPageOutput(\OutputPage $outputPage)
{
// Insert the navigation right after the <body> element
$out = preg_replace(
'/(<body[^>]*>)/s',
'$1' . self::geArchNavBar($outputPage->getTitle()),
ob_get_clean()
);
ob_start();
echo $out;
return true;
}
private static function geArchNavBar(string $title): string
{
$config = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig('archlinux');
$archNavBar = $config->get("ArchNavBar");
$archHome = $config->get("ArchHome");
$archNavBarSelected = $config->get("ArchNavBarSelected");
$archNavBarSelectedDefault = $config->get("ArchNavBarSelectedDefault");
ob_start();
include __DIR__ . '/ArchNavBar.php';
return ob_get_clean();
}
}

33
ArchNavBar.php Normal file
View File

@ -0,0 +1,33 @@
<?php
namespace MediaWiki\Extensions\ArchLinux;
/**
* @var string $title
* @var array $archNavBar
* @var string $archHome
* @var array $archNavBarSelected
* @var string $archNavBarSelectedDefault
*/
?>
<div id="archnavbar" class="noprint">
<div id="archnavbarlogo">
<p><a id="logo" href="<?= $archHome ?>"></a></p>
</div>
<div id="archnavbarmenu">
<ul id="archnavbarlist">
<?php
foreach ($archNavBar as $name => $url) {
if (($title == $name && in_array($name, $archNavBarSelected))
|| (!(in_array($title, $archNavBarSelected)) && $name == $archNavBarSelectedDefault)) {
$anbClass = ' class="anb-selected"';
} else {
$anbClass = '';
}
?>
<li id="anb-<?= strtolower($name) ?>"<?= $anbClass ?>><a href="<?= $url ?>"><?= $name ?></a></li><?php
}
?>
</ul>
</div>
</div>

61
extension.json Normal file
View File

@ -0,0 +1,61 @@
{
"name": "ArchLinux",
"author": [
"Pierre Schmitz"
],
"url": "https://www.archlinux.org",
"description": "Arch Linux navigation and styles",
"license-name": "GPL-2.0+",
"type": "skin",
"AutoloadClasses": {
"MediaWiki\\Extensions\\ArchLinux\\Hooks": "ArchLinux.hooks.php"
},
"Hooks": {
"BeforePageDisplay": [
"MediaWiki\\Extensions\\ArchLinux\\Hooks::onBeforePageDisplay"
],
"AfterFinalPageOutput": [
"MediaWiki\\Extensions\\ArchLinux\\Hooks::onAfterFinalPageOutput"
]
},
"ResourceModules": {
"zzz.ext.archLinux.styles": {
"targets": [
"mobile",
"desktop"
],
"styles": [
"archnavbar/archnavbar.less",
"archnavbar/responsive.less",
"arch_common.less"
],
"skinStyles": {
"vector": "skins/vector.less",
"monobook": "skins/monobook.less"
},
"position": "top"
}
},
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "ArchLinux/modules"
},
"ConfigRegistry": {
"archlinux": "GlobalVarConfig::newInstance"
},
"config": {
"ArchNavBar": {
"value": []
},
"ArchHome": {
"value": ""
},
"ArchNavBarSelected": {
"value": []
},
"ArchNavBarSelectedDefault": {
"value": ""
}
},
"manifest_version": 2
}

156
modules/arch_common.less Normal file
View File

@ -0,0 +1,156 @@
/*
* Common stylesheets applied to all skins.
*/
@import 'arch_definitions';
/* general styling */
body {
background: @body-background-color;
}
#content {
background: @content-background-color;
border: @content-border-style;
table,
h1,
h2,
h3,
h4,
h5,
pre,
code,
tt {
color: @text-color;
}
ul {
list-style-image: none;
}
table {
border-collapse: collapse;
padding: 2px;
}
td {
padding: 2px;
}
pre:not([class*="CodeMirror"]) {
border: @code-border-style;
overflow: auto;
word-break: break-all;
white-space: pre-wrap !important;
}
pre:not([class*="CodeMirror"]),
code,
tt {
background-color: @code-background-color;
font-family: monospace;
}
code,
tt {
/* Inline-block prevents code from wrapping when starting too close to the end of a line; it also lets select the entire code line with a triple click */
display: inline-block;
padding: 0 0.3em;
/* A border would be inherited by the default style sheets, but we don't want it */
border-width: 0;
border-radius: 0;
}
}
/*
* Hide logos in the footer
* (they can be disabled in LocalSettings.php by setting $wgFooterIcons)
*/
#footer-icons {
display: none;
}
#footer {
color: @footer-text-color;
}
/* article Table of Contents */
#toc,
.toc,
.mw-warning,
.toccolours {
background-color: @toc-background-color;
border: @toc-border-style;
}
/* Make all links coming from the rendered wiki markup bold */
#bodyContent > div.mw-content-ltr a,
#bodyContent > div.mw-content-rtl a,
#wikiPreview > div.mw-content-ltr a,
#wikiPreview > div.mw-content-rtl a {
font-weight: bold;
}
#bodyContent #toc a,
#bodyContent .special li > a,
#bodyContent .special li span a,
#bodyContent #pagehistory a {
font-weight: normal;
}
/* Colors of links in the content, MediaWiki navigation and the footer */
#content,
header.mw-header li:not(.new), // Vector
#mw-navigation li:not(.new), // Legacy Vector
#mw-panel li:not(.new), // Legacy Vector
#column-one li:not(.new), // MonoBook
#footer {
a:not(.new) {
text-decoration: none;
color: @link-color-normal !important;
}
a:not(.new):hover {
text-decoration: underline;
background-color: transparent;
color: @link-color-hover !important;
}
a:active, a:focus,
/* a:hover overrides a:active, which we don't want' */
a:active:hover, a:focus:hover {
color: @link-color-active !important;
}
}
/* Color of visited links for content and left column
* (not for MediaWiki navigation elements above the page) */
#content,
#mw-panel li:not(.new), // Legacy Vector
#p-navigation li:not(.new), // MonoBook
#p-tb li:not(.new) // MonoBook
{
a:not(.new):visited {
color: @link-color-visited !important;
}
}
/* Color for links to inexistent pages */
a.new,
a.new:visited,
#mw-navigation li.new a, // Vector
#mw-navigation li.new a:visited // Vector
{
color: @link-color-new !important;
}
/*
* Use the same icon for all external links
* The default MediaWiki style assigns icons only to external links and not interwiki links,
* so we use this to have an icon for all links pointing to external sites.
*/
.mw-body-content a.external,
.mw-body-content a.extiw {
background: url(../../../resources/src/mediawiki.skinning/images/external-ltr.svg) center right no-repeat;
padding-right: 13px;
}

View File

@ -0,0 +1,22 @@
/*
* This file should contain only common LESS definitions, which need to be
* imported in other .less files. Common stylesheets do not belong here, they
* should be added to files present in the "styles" array in extension.json.
*/
@body-background-color: #f6f9fc;
@content-background-color: #fff;
@content-border-width: 1px;
@content-border-style: @content-border-width solid #ccc;
@text-color: #222;
@code-background-color: #ebf1f5;
@code-border-style: 1px solid #bcd;
@toc-background-color: #f9faff;
@toc-border-style: 1px solid #d7dfe3;
@footer-text-color: #333;
@link-color-normal: #07b;
@link-color-hover: #999;
@link-color-active: #e90;
@link-color-visited: #666;
@link-color-new: #b00;

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="1200" version="1"><path d="M600 0c-53.416 130.962-85.671 216.74-145.143 343.81 36.464 38.651 81.22 83.449 153.905 134.285-78.145-32.156-131.403-64.213-171.238-97.714C361.41 539.2 241.989 765.194 0 1200c190.161-109.784 337.665-177.397 475.048-203.238-5.895-25.367-9.18-52.896-8.953-81.524l.19-5.905C469.305 787.48 532.72 693.638 607.81 700c75.089 6.362 133.494 110.528 130.476 232.381-.568 22.916-3.105 44.885-7.62 65.333C866.528 1024.325 1012.462 1091.73 1200 1200c-36.995-68.111-70.18-129.335-101.714-187.81-49.672-38.499-101.365-88.613-207.048-142.857 72.64 18.875 124.793 40.612 165.333 64.953C735.952 337.348 709.948 258.016 600 0z" fill="#1793d1" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 740 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1" width="600" height="126"><path d="M159.568 34.427c-8.89-.014-16.267 1.809-19.12 2.803l-2.937 15.857c-.007.058 14.617-3.9 21.059-3.667 10.665.383 11.646 4.076 11.46 9.06.182.292-2.752-4.503-11.979-4.664-11.64-.2-28.069 4.122-28.046 21.692-.314 19.765 14.764 25.579 25.032 25.686 9.232-.168 13.563-3.496 15.934-5.28 3.115-3.257 6.679-6.532 10.078-10.462-3.216 5.844-6.005 9.884-8.907 12.977v2.611l14.033-2.361.096-38.144c-.143-5.399 3.096-26.057-26.703-26.108zm-2.016 33.21c5.817.08 12.488 2.948 12.497 9.849.03 6.277-7.863 9.651-12.996 9.598-5.135-.053-11.949-4.036-11.979-10.155.099-5.47 6.426-9.432 12.478-9.291zm37.972-29.685l-.095 63.166 16.348-3.15.027-35.814c.004-5.333 7.62-11.564 17.178-11.464 2.028-3.67 5.84-13.05 6.77-15.183-21.351-.051-21.623 6.137-25.336 9.18-.04-5.806-.013-9.292-.013-9.292l-14.879 2.557zm92.002 8.292c-.158-.074-8.526-9.788-25.35-9.864-15.758-.262-33.433 5.847-33.716 32.27.138 23.232 16.979 32.311 33.805 32.488 18.007.187 25.172-11.26 25.602-11.543-2.149-1.863-10.196-9.837-10.196-9.837s-5.027 7.157-14.779 7.248c-9.755.093-18.234-7.54-18.354-18.189-.125-10.65 7.795-16.419 18.427-16.885 9.205-.002 14.516 5.943 14.516 5.943zm20.606-30.399l-15.434 3.628.115 82.277 15.204-2.745.172-38.72c.033-4.06 5.874-10.295 15.626-10.097 9.325.097 11.41 6.215 11.384 6.988l.269 44.824 14.993-2.65.057-47.53c.099-4.574-10.018-14.233-26.28-14.302-7.729.012-12.009 1.762-14.187 3.052-3.726 2.879-7.985 5.637-12.17 9.157 3.869-4.97 7.117-8.407 10.29-10.961l-.04-22.921z" fill="#fff" fill-rule="evenodd"/><path d="M360.136 17.218l6.962-1.742.33 82.95-7.074 1.204zm18.928 24.757l6.101-2.716.052 59.478-5.892 1.217zm-1.45-21.448l4.92-4.015 4.086 4.547-4.921 4.121zm19.024 20.365l6.962-1.421.033 12.434c.001.534 3.823-13.89 22.258-13.57 17.9.1 20.827 13.957 20.73 17.064l.221 43.725-6.102 1.324-.035-43.189c.07-1.261-2.79-11.927-15.439-11.966-12.646-.037-21.409 9.186-21.393 15.078l.1 38.047-7.07 1.847zm110.954 58.546l-6.962 1.42-.033-12.433c-.001-.534-3.825 13.89-22.258 13.57-17.9-.1-20.827-13.957-20.73-17.064l-.221-43.725 7.397-1.494.114 43.19c.003 1.18 1.416 12.096 14.065 12.135 12.646.037 21.506-7.616 21.569-19.139l-.09-34.076 6.885-1.757zm13.645-59.037l-4.882 3.82 18.717 24.494-19.963 28.3 5.179 3.843 18.766-26.28 19.368 26.902 4.791-3.82-20.757-28.765 16.56-23.262-5.092-4.305-15.085 21.525zM61.88 1.778c-5.385 13.203-8.633 21.839-14.629 34.649 3.676 3.896 8.188 8.434 15.516 13.559-7.878-3.242-13.252-6.497-17.267-9.874-7.673 16.011-19.695 38.818-44.09 82.65 19.174-11.068 34.037-17.893 47.889-20.497a35.103 35.103 0 0 1-.91-8.213l.023-.614c.304-12.284 6.694-21.73 14.264-21.09 7.57.642 13.454 11.126 13.15 23.41-.058 2.312-.319 4.536-.774 6.598 13.701 2.68 28.405 9.487 47.32 20.407-3.73-6.866-7.059-13.056-10.238-18.95-5.007-3.882-10.23-8.933-20.884-14.402 7.323 1.903 12.566 4.099 16.653 6.552C75.58 35.786 72.963 27.79 61.88 1.778z" fill="#1793d1" fill-rule="evenodd"/><path d="M576.771 93.265V80.603h-4.73v-1.695h11.38v1.695h-4.75v12.662h-1.9m8.629 0V78.908h2.859l3.398 10.166c.314.947.542 1.655.686 2.125.163-.522.418-1.29.764-2.301l3.437-9.99h2.556v14.357h-1.831V81.25l-4.172 12.016h-1.714l-4.152-12.222v12.222h-1.832" font-weight="400" font-size="8.441" font-family="DejaVu Sans Mono" fill="gray"/></svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,31 @@
/*
* ARCH GLOBAL NAVBAR
*
* We're forcing all generic selectors with !important
* to help prevent other stylesheets from interfering.
*
*/
/* container for the entire bar */
#archnavbar { height: 40px !important; padding: 10px 15px !important; background: #333 !important; border-bottom: 5px #08c solid !important; }
#archnavbarlogo { float: left !important; margin: 0 !important; padding: 0 !important; height: 40px !important; width: 190px !important; }
html > body #archnavbarlogo { background: url('archlogo.svg') no-repeat !important; background-size: 190px 40px !important;}
/* move the heading/paragraph text offscreen */
#archnavbarlogo p { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; }
#archnavbarlogo h1 { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; }
/* make the link the same size as the logo */
#archnavbarlogo a { display: block !important; height: 40px !important; width: 190px !important; }
/* display the list inline, float it to the right and style it */
#archnavbar ul { display: inline !important; float: right !important; list-style: none !important; margin: 0 !important; padding: 0 !important; }
#archnavbar ul li { float: left !important; font-size: 14px !important; font-family: sans-serif !important; line-height: 45px !important; padding-right: 15px !important; padding-left: 15px !important; }
/* style the links */
#archnavbar ul#archnavbarlist li a { color: #999; font-weight: bold !important; text-decoration: none !important; }
#archnavbar ul li a:hover { color: white !important; text-decoration: underline !important; }
/* highlight current website in the navbar */
#archnavbar ul li.anb-selected a { color: white !important; }

View File

@ -0,0 +1,48 @@
@media (max-width: 600px) {
#anb-wiki {
display: none;
}
}
@media (max-width: 680px) {
html > body #archnavbarlogo {
width: 40px !important;
margin-right: 5px !important;
background: url('archicon.svg') no-repeat !important;
background-size: 40px 40px !important;
}
#archnavbar ul {
display: flex !important;
justify-content: space-between;
flex-wrap: nowrap;
overflow: hidden;
float: none !important;
}
#archnavbar ul li {
padding: 0 !important;
float: none !important;
}
}
@media (max-width: 830px) {
#anb-home,
#anb-start {
display: none;
}
html > body #archnavbarlogo {
padding-right: 15px !important;
}
#archnavbar {
padding-left: 5px !important;
padding-right: 5px !important;
}
#archnavbar ul li {
padding-left: 5px !important;
padding-right: 5px !important;
}
}

BIN
modules/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

View File

@ -0,0 +1,54 @@
@import '../arch_definitions';
h1 {
font-weight: bold;
}
/* bump down the personal toolbar (top menu) */
#p-personal {
top: 5px;
}
/* bump down the action tabs (page, discuss, edit, etc.) */
#p-cactions {
top: 27px;
}
/* bump down the main content to make room for navbar */
#content {
top: 10px;
}
/* use the same color for the border of all tabs */
#p-cactions {
li, li.selected {
border: @content-border-style;
}
}
/* shrink the content just enough to show off the borders */
div#globalWrapper {
width: 99%;
background-image: none !important;
}
/* disable default mediawiki logo and close the gap it leaves behind */
#p-logo {
display: none !important;
}
div#column-one {
padding-top: 36px;
}
/* clean up the footer */
div#footer {
background-color: transparent;
border-top: none;
border-bottom: none;
/* bring footer text inline with content */
margin-left: 12.2em;
padding: 0em 1em;
ul {
margin-left: 0;
}
}

111
modules/skins/vector.less Normal file
View File

@ -0,0 +1,111 @@
@import '../arch_definitions';
@import 'mediawiki.ui/variables';
#p-logo,
.mw-logo {
display: none;
}
.mw-body {
& h1,
&-content h1,
&-content h2 {
font-family: sans-serif;
}
}
nav.vector-menu-tabs {
padding-left: 0;
// remove background with color gradient
ul, ul li {
background: none;
}
li.selected {
// border around the tab matches content, at the bottom we override the
// content border with the background color
border: @content-border-style;
border-bottom-color: @content-background-color;
// background of the selected tab should match the content
background-color: @content-background-color;
// remove background with the vertical separator
a {
background: none !important;
}
}
// invisible border to align well with the selected tab
ul li {
border: @content-border-width;
}
}
// New Vector; see https://www.mediawiki.org/wiki/Skin:Vector#wgVectorResponsive
body.skin-vector.skin--responsive {
nav.vector-menu-tabs {
li.selected {
margin-top: -@content-border-width;
border-bottom: none;
}
}
// Let the left border of the selected tab overlap with the vertical bar
// coming from the background image of the previous tab.
li:not(:first-child).selected {
margin-left: -1 * @content-border-width;
}
// Set background color
div.mw-page-container {
background-color: @body-background-color;
}
// Disable sidebar's gradient as it conflicts with the background color
div#mw-panel {
background-image: none;
}
}
// Legacy Vector
body.skin-vector-legacy {
div#mw-head,
.mw-header {
top: 65px;
}
div#mw-panel {
top: 65px;
margin-top: 1em;
}
#mw-page-base {
background: none;
}
// fix vertical position of tabs
nav.vector-menu-tabs, nav.vector-menu {
margin-top: -2 * @content-border-width;
}
nav.vector-menu-tabs {
// Let the left border of the selected tab overlap with the vertical bar
// coming from the background image of the previous tab.
li:not(:first-child).selected {
margin-left: -2 * @content-border-width;
}
}
@media screen and ( max-width: @width-breakpoint-tablet ) {
// fix position of personal navigation bar
div#p-personal {
top: unset;
}
// remove useless blank space at the bottom
div#mw-panel {
padding-top: 0;
}
}
}