Compare commits

...

24 Commits

Author SHA1 Message Date
Tom Hutchison 0d3d6b03a8 Has to be a better way to do CHANGELOG, restoring deleted ## v2.30 directly 2020-12-11 11:20:10 -05:00
Tom Hutchison 4bbd644b85
Ready for Release v2.3.0 (#104)
* Fixing CSS with legacy.css until everything can be rewritten, bump to requires MW 1.34 and prepare for a release 2.3.0-dev

* Deprecated code fixed

* Preparing for release v2.3.0

* Additional CHANGELOG.md item

* Missing a # in the version header
2020-12-11 11:12:53 -05:00
Tom Hutchison 8ec2264b04 Setup CircleCI for testing 2020-12-11 09:18:53 -05:00
Tom Hutchison 13bf89300c update travis, php nightly is broken for now 2020-08-16 11:21:09 -04:00
Tom Hutchison 8a746f6b82 Prep for commit to fix issues #98 and #99 before merging into dev branch 2020-08-16 11:01:38 -04:00
MW install maintain even with core development 2df7a85616 Finish Search improvements mobile 2020-07-24 12:14:43 -04:00
MW install maintain even with core development 79e00892b4 Allow alternate methods of Login with personal_urls 2020-07-24 11:30:48 -04:00
Tom Hutchison 26162eedee Cleaner CSS font-size and PageForms ca-edit icon 2020-04-08 12:14:05 -04:00
Hutchy68 5014428101 Search results page - limited width #58 added to changelog 2020-04-05 12:51:04 -04:00
Hutchy68 46655db803 Enhancement noted in changelog ul and ol css improvements 2020-04-05 12:20:50 -04:00
Hutchy68 eb144a161f Multiple issues addressed on tracker. 2020-04-05 12:17:39 -04:00
Tom Hutchison 7ccab05353 Reset to -dev 2020-04-05 09:23:45 -04:00
Tom Hutchison e8f075de3f Remove -dev to merge into master 2020-04-05 09:21:07 -04:00
Hutchy68 4c66d059b6 Fix to missing () 2020-04-05 09:10:49 -04:00
Tom Hutchison 7bc517b271 Set version to dev 2020-04-05 08:19:59 -04:00
Tom Hutchison cd06863d2e Changes for MW 1.34 see https://phabricator.wikimedia.org/T187037 2020-04-05 07:55:20 -04:00
Tom Hutchison 078f9c258c Note in CHANGELOG.md 2019-03-16 11:55:46 -04:00
Tom Hutchison 1cbaa40c03 More improvement to MW image way CSS 2019-03-16 11:45:49 -04:00
Tom Hutchison 1dfbb94a0c More improvements for images addressing issues #69 and #72 2019-03-14 11:19:12 -04:00
Tom Hutchison 7adb2a5135 Moving code to select attribute in pivot.css 2019-03-13 07:59:00 -04:00
Tom Hutchison cb3906ac5b More fixes for CSS of MW 1.32, need to verify earlier MW versions 2019-03-12 21:13:05 -04:00
Tom Hutchison f586bf4c5c Rolling in all changes see CHANGELOG.md for list of fixes and improvements 2019-03-11 21:08:46 -04:00
Tom Hutchison e1acefb9d7
Merge pull request #74 from paladox/patch-1
Replace wfRunHooks with Hooks::run

Thanks @paladox merging into master
2019-03-08 16:29:00 -05:00
paladox a128dd152a
Replace wfRunHooks with Hooks::run
MediaWiki 1.32 removed wfRunHooks so replace with Hooks::run
2019-01-11 05:43:29 +00:00
14 changed files with 1044 additions and 116 deletions

57
.circleci/config.yml Normal file
View File

@ -0,0 +1,57 @@
version: 2.0
jobs:
"PHP 7.3":
docker:
-
auth:
password: $DOCKERHUB_PASSWORD
username: mydockerhub-user
image: "cimg/php:7.3"
steps:
- checkout
- run: "sudo composer install -n --prefer-dist"
- run: "sudo composer self-update"
- run: "sudo composer update --no-progress --prefer-dist --profile"
- run:
command: "composer test"
name: Test PHP7.3
"PHP 7.4":
docker:
-
auth:
password: $DOCKERHUB_PASSWORD
username: mydockerhub-user
image: "cimg/php:7.4"
steps:
- checkout
- run: "sudo composer install -n --prefer-dist"
- run: "sudo composer self-update"
- run: "sudo composer update --no-progress --prefer-dist --profile"
- run:
command: "composer test"
name: Test PHP7.4
"PHP 8.0":
docker:
- auth:
password: $DOCKERHUB_PASSWORD
username: mydockerhub-user
image: "cimg/php:8.0"
steps:
- checkout
- run: "sudo composer install -n --prefer-dist"
- run: "sudo composer self-update"
- run: "sudo composer update --no-progress --prefer-dist --profile"
- run:
command: "composer test"
name: Test PHP8.0
workflows:
version: 2
build:
jobs:
- "PHP 7.3"
- "PHP 7.4"
- "PHP 8.0"

View File

@ -1,15 +0,0 @@
language: php
php:
- 7
- 5.6
- hhvm
- nightly
sudo: false
install:
- travis_retry composer update --no-progress --prefer-dist --profile
script:
- composer test

View File

@ -1,3 +1,41 @@
# Version 2.3.0
* [compatibility, CSS] Load MW core CSS that was dropped in MW 1.35
* [code] Drop Travis-CI and move to CircleCI
* [code] Update php-parallel-lint to a supported branch with PHP 8.0
* [deprecated, code] Updated deprecated code
## Version 2.2.2
* [bug, enhancement] Fix to allow multiple methods of login such as MW-OAuth2Client - Issue #99
* [bug, enhancement] Left-menu search (on mobile widths only) doesn't auto-complete #98
## Version 2.2.1
* [enhancement] Enumeration and Listings #54
* [bug] Search results page - limited width #58
* [bug] Syntax error in pivot.css Issue #89
* [bug] Personal tools menu name not translated into other languages Issue #88
* [bug] Search autocomplete not available on small screens Issue #85
* [bug] The links in the menu titles on the left seem to be clickable off they should not be. Issue #68
## Version 2.2.0
* [compatibility, deprecated] Fix for deprecated wfSuppressWarnings and wfRestoreWarnings with new Wikimedia\...
* [b/c break] Version minor bump, MW >= 1.31.0 now required
* [enhancement] Use of requires MW version in skin.json
## Version 2.1.1
* [CSS, enhancement] Improvements correcting Issues #72 and #69, images the MW way
* [CSS] Further improvements found similar to Search Input alignment on other form type pages
## Version 2.1.0
* [bug fix, compatibility] Replace wfRunHooks with Hooks::run PR #74 issue #75
* [bug fix, enhancement] Always adds the server name to the h1 tag issue #76 SEO related
* [CSS] Search Input alignment fix
* [CSS] Improvements and fixes after issue #76 was fixed
* [bug-fix, compatibility] Code loading changes, $out->addModuleScripts() to $out->addModules() issue #78
* [compatibility] Removal of fastclick.js as mobile browsers now deal with touch delay automatically
## Version 2.0.0
* [bug fix] Addressed serveral W3C validation errors with HTML output.

View File

@ -10,19 +10,8 @@
class SkinPivot extends SkinTemplate {
public $skinname = 'pivot', $stylename = 'pivot', $template = 'pivotTemplate', $useHeadElement = true;
public function initPage(OutputPage $out) {
parent::initPage($out);
global $wgLocalStylePath;
$viewport_meta = 'width=device-width, user-scalable=yes, initial-scale=1.0';
$out->addMeta('viewport', $viewport_meta);
$out->addModuleScripts('skins.pivot.js');
}
public function setupSkinUserCss(OutputPage $out) {
parent::setupSkinUserCss($out);
global $wgLocalStylePath;
public function getDefaultModules() {
global $wgPivotFeatures;
$wgPivotFeaturesDefaults = array(
'showActionsForAnon' => true,
@ -44,10 +33,22 @@ class SkinPivot extends SkinTemplate {
$wgPivotFeatures[$fgOption] = $fgOptionValue;
}
}
$out->addModuleStyles('skins.pivot.styles');
if ( $wgPivotFeatures['preloadFontAwesome'] ) {
$out->addHeadItem('font', '<link rel="preload" href="'.$wgLocalStylePath.'/pivot/assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin="anonymous" />');
$this->getOutput()->addHeadItem('font', '<link rel="preload" href="'.$wgLocalStylePath.'/pivot/assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin="anonymous" />');
}
$this->getOutput()->addModuleStyles('skins.pivot.styles');
return parent::getDefaultModules();
}
public function initPage(OutputPage $out) {
global $wgLocalStylePath;
parent::initPage($out);
$viewport_meta = 'width=device-width, user-scalable=yes, initial-scale=1.0';
$out->addMeta('viewport', $viewport_meta);
$out->addModules('skins.pivot.js');
}
}
@ -57,7 +58,7 @@ class pivotTemplate extends BaseTemplate {
public function execute() {
global $wgUser;
global $wgPivotFeatures;
wfSuppressWarnings();
Wikimedia\suppressWarnings();
$this->html('headelement');
switch ($wgPivotFeatures['usePivotTabs']) {
case true:
@ -91,21 +92,21 @@ class pivotTemplate extends BaseTemplate {
<?php if ($wgPivotFeatures['fixedNavBar'] != false) echo "<div class='fixed'>"; ?>
<nav class="tab-bar hide-for-print">
<section id="left-nav-aside" class="left-small show-for-small">
<a class="left-off-canvas-toggle"><span id="menu-user"><i class="fa fa-navicon fa-lg"></i></span></a>
<a href="#" class="left-off-canvas-toggle"><span id="menu-user"><i class="fa fa-navicon fa-lg"></i></span></a>
</section>
<section id="middle-nav" class="middle tab-bar-section">
<h1 class="title"><a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>">
<div class="title"><a href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?>">
<span class="show-for-medium-up"><?php echo $wgPivotFeatures['wikiNameDesktop']; ?></span>
<span class="show-for-small-only">
<?php if ($wgPivotFeatures['navbarIcon'] != false) { ?>
<img alt="<?php echo $this->text('sitename'); ?>" src="<?php echo $this->text('logopath'); ?>" style="max-width: 64px;height:auto; max-height:36px; display: inline-block; vertical-align:middle;">
<?php } ?>
<?php echo $wgPivotFeatures['wikiName']; ?></span></a></h1>
<?php echo $wgPivotFeatures['wikiName']; ?></span></a></div>
</section>
<section id="right-nav-aside" class="right-small">
<a class="right-off-canvas-toggle"><span id="menu-user"><i class="fa <?php if ($wgUser->isLoggedIn()): ?>fa-user<?php else: ?>fa-navicon<?php endif; ?> fa-lg"></i></span></a>
<a href="#" class="right-off-canvas-toggle"><span id="menu-user"><i class="fa <?php if ($wgUser->isLoggedIn()): ?>fa-user<?php else: ?>fa-navicon<?php endif; ?> fa-lg"></i></span></a>
</section>
</nav>
<?php if ($wgPivotFeatures['fixedNavBar'] != false) echo "</div>"; ?>
@ -113,10 +114,10 @@ class pivotTemplate extends BaseTemplate {
<ul class="off-canvas-list">
<li class="has-form">
<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform" class="mw-search">
<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform-sidebar" class="mw-search">
<div class="row collapse">
<div class="small-12 columns">
<input type="search" name="search" placeholder="<?php echo wfMessage( 'search' )->text() ?>" title="Search [alt-shift-f]" accesskey="f" id="searchInput-offcanvas" autocomplete="off">
<input type="search" name="search" placeholder="<?php echo wfMessage( 'search' )->text() ?>" title="Search [alt-shift-f]" accesskey="f" id="searchInput" autocomplete="off">
</div>
</div>
</form>
@ -129,16 +130,10 @@ class pivotTemplate extends BaseTemplate {
<aside class="right-off-canvas-menu">
<ul class="off-canvas-list">
<?php if ($wgUser->isLoggedIn()): ?>
<li id="personal-tools"><label>Personal</label></li>
<li id="personal-tools"><label><?php echo wfMessage( 'pivot-personal-tools' )->text() ?></label></li>
<?php foreach ($this->getPersonalTools() as $key => $item) { echo $this->makeListItem($key, $item); } ?>
<?php else: ?>
<?php if (isset($this->data['personal_urls']['anonlogin'])): ?>
<li><a href="<?php echo $this->data['personal_urls']['anonlogin']['href']; ?>"><?php echo wfMessage( 'login' )->text() ?></a></li>
<?php elseif (isset($this->data['personal_urls']['login'])): ?>
<li><a href="<?php echo htmlspecialchars($this->data['personal_urls']['login']['href']); ?>"><?php echo wfMessage( 'login' )->text() ?></a></li>
<?php else: ?>
<li><?php echo Linker::link(Title::newFromText('Special:UserLogin'), wfMessage( 'login' )->text()); ?></li>
<?php endif; ?>
<?php foreach ($this->getPersonalTools() as $key => $item) { echo $this->makeListItem($key, $item); } ?>
<?php endif; ?>
</ul>
</aside>
@ -158,10 +153,10 @@ class pivotTemplate extends BaseTemplate {
<img alt="<?php echo $this->text('sitename'); ?>" src="<?php echo $this->text('logopath') ?>" style="max-width: 100%;height: auto;display: inline-block; vertical-align: middle;"></a>
</li>
<li class="has-form">
<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform" class="mw-search">
<form action="<?php $this->text( 'wgScript' ); ?>" id="searchform-offCanvas" class="mw-search">
<div class="row collapse">
<div class="small-12 columns">
<input type="search" name="search" placeholder="<?php echo wfMessage( 'search' )->text() ?>" title="Search [alt-shift-f]" accesskey="f" id="searchInput" autocomplete="off">
<input type="search" name="search" placeholder="<?php echo wfMessage( 'search' )->text() ?>" title="Search [alt-shift-f]" accesskey="f" class="mw-searchInput" autocomplete="off">
</div>
</div>
</form>
@ -198,7 +193,7 @@ class pivotTemplate extends BaseTemplate {
<a href="#" data-options="align:left" data-dropdown="drop1" class="button secondary small radius pull-right hide-for-print" id="drop"><i class="fa fa-navicon fa-lg"><span id="page-actions" class="show-for-medium-up">&nbsp;<?php echo wfMessage( 'actions' )->text() ?></span></i></a>
<ul id="drop1" class="tiny content f-dropdown" data-dropdown-content>
<?php foreach($this->data['content_actions'] as $key => $tab) { echo preg_replace(array('/\sprimary="1"/', '/\scontext="[a-z]+"/', '/\srel="archives"/'),'',$this->makeListItem($key, $tab)); } ?>
<?php wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true )); ?>
<?php Hooks::run( 'SkinTemplateToolboxEnd', array( &$this, true )); ?>
</ul>
<?php endif;
@ -210,7 +205,7 @@ class pivotTemplate extends BaseTemplate {
$displaytitle = str_replace($pagetitle, $newtitle, $displaytitle);
?><h4 class="namespace label"><?php print $namespace; ?></h4><?php } ?>
<div id="content">
<h2 class="title"><?php print $displaytitle; ?></h2>
<h1 class="title"><?php print $displaytitle; ?></h1>
<?php if ($wgPivotFeatures['useAddThisShare'] !== '') { ?>
<!-- Go to www.addthis.com/dashboard to customize your tools -->
<div class="<?php echo $wgPivotFeatures['useAddThisShare']; ?> hide-for-print"></div>
@ -293,18 +288,18 @@ class pivotTemplate extends BaseTemplate {
</html>
<?php
wfRestoreWarnings();
Wikimedia\restoreWarnings();
}
function renderSidebar() {
$sidebar = $this->getSidebar();
foreach ($sidebar as $boxName => $box) {
echo '<li><label class="sidebar" id="'.Sanitizer::escapeId( $box['id'] ).'"';echo Linker::tooltip( $box['id'] ).'>'.htmlspecialchars( $box['header'] ).'</label></li>';
echo '<li><label class="sidebar" id="'.Sanitizer::escapeIdForAttribute( $box['id'] ).'"';echo Linker::tooltip( $box['id'] ).'>'.htmlspecialchars( $box['header'] ).'</label></li>';
if ( is_array( $box['content'] ) ) {
foreach ($box['content'] as $key => $item) { echo $this->makeListItem($key, $item); }
}
}
return; }
}
?>
?>

View File

@ -1,10 +1,12 @@
# MediaWiki Pivot Skin
[![Build Status](https://travis-ci.org/Hutchy68/pivot.svg?branch=master)](https://travis-ci.org/Hutchy68/pivot)
[![CircleCI](https://circleci.com/gh/Hutchy68/pivot.svg?style=shield)](https://circleci.com/gh/Hutchy68/pivot)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/Hutchy68/pivot/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/Hutchy68/pivot/?branch=master)
A [MediaWiki](http://www.mediawiki.org) skin that focuses on mobile first but will pivot to all viewports with elegance. Supports responsive layouts and has classes predefined for [Semantic MediaWiki](http://semantic-mediawiki.org/wiki/Semantic_MediaWiki). Built on the [Zurb Foundation 5](http://foundation.zurb.com) CSS framework.
Read the docs below (short version) or see [pivot.wikiproject.net](https://pivot.wikiproject.net) for more detailed docs with FAQs and examples of use.
## Download
First, copy the Pivot source files into your MediaWiki skins directory (see [skinning](https://www.mediawiki.org/wiki/Manual:Skinning) for general information on MediaWiki skins). You can either download the files and extract them from:
@ -84,4 +86,4 @@ You may also want to allow users to set a User CSS if they want to tweak things
## Using Pivot
Questions, open an issue in this repo on Github.
Questions, open an issue in this repo on Github.

View File

@ -1,8 +0,0 @@
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});

File diff suppressed because one or more lines are too long

View File

@ -29,6 +29,7 @@
#ca-nstab-main a:before {content: "\f015";}
#ca-talk a:before {content: "\f0e6";}
#ca-edit a:before {content: "\f044";}
#ca-formedit a:before {content: "\f0f6";}
#ca-history a:before {content: "\f187";}
#ca-delete a:before {content: "\f014";}
#ca-move a:before {content: "\f0d1";}

View File

@ -0,0 +1,756 @@
@media screen {
/**
* CSS in this file is used by *all* skins (that have any CSS at all). Be
* careful what you put in here, since what looks good in one skin may not in
* another, but don't ignore the poor pre-Monobook users either.
*
* NOTE: The images which are referenced in this file are no longer in use in
* essential interface components. They should NOT be embedded, because that
* optimizes for the uncommon case at the cost of bloating the size of render-
* blocking CSS common to all pages.
*/
/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */
/**
* These classes should be used for text depending on the content direction.
* Content stuff like editsection, ul/ol and TOC depend on this.
*/
.mw-content-ltr {
/* @noflip */
direction: ltr;
}
.mw-content-rtl {
/* @noflip */
direction: rtl;
}
/* Most input fields should be in site direction */
.sitedir-ltr textarea,
.sitedir-ltr input {
/* @noflip */
direction: ltr;
}
.sitedir-rtl textarea,
.sitedir-rtl input {
/* @noflip */
direction: rtl;
}
.mw-userlink {
unicode-bidi: embed;
}
/* User-Agent styles for new HTML5 elements */
mark {
background-color: #ff0;
color: #000;
}
/* Helper for wbr element on IE 8+; in HTML5, but not supported by default as of IE 11. */
/* Note canonical HTML5 styles recommend "content: \u200B", but this doesn't work as of IE 11. */
wbr {
display: inline-block;
}
/* Input types that should follow user direction, like buttons */
/* TODO: What about buttons in wikipage content ? */
input[ type='submit' ],
input[ type='button' ],
input[ type='reset' ],
input[ type='file' ] {
direction: ltr;
}
/* Override default values */
textarea[ dir='ltr' ],
input[ dir='ltr' ] {
/* @noflip */
direction: ltr;
}
textarea[ dir='rtl' ],
input[ dir='rtl' ] {
/* @noflip */
direction: rtl;
}
/* Default style for semantic tags */
abbr[ title ],
.explain[ title ] {
border-bottom: 1px dotted;
cursor: help;
}
@supports ( text-decoration: underline dotted ) {
abbr[ title ],
.explain[ title ] {
border-bottom: 0;
text-decoration: underline dotted;
}
}
/* Comment portions of RC entries */
span.comment {
font-style: italic;
unicode-bidi: -moz-isolate;
unicode-bidi: isolate;
}
/* Stop floats from intruding into edit area in previews */
#editform,
#toolbar,
#wpTextbox1 {
clear: both;
}
/* Prevent editing textarea from jumping when toolbar is loaded */
#toolbar {
height: 22px;
}
/* Underline preference */
.mw-underline-always a {
text-decoration: underline;
}
.mw-underline-never a {
text-decoration: none;
}
/**
* rev_deleted stuff
*/
li span.deleted,
span.history-deleted {
text-decoration: line-through;
color: #72777d;
font-style: italic;
}
/**
* Patrol stuff
*/
.not-patrolled {
background-color: #ffa;
}
.unpatrolled {
font-weight: bold;
color: #d33;
}
div.patrollink {
font-size: 75%;
text-align: right;
}
/**
* Forms
*/
td.mw-label {
text-align: right;
vertical-align: middle;
}
td.mw-input {
text-align: left;
}
td.mw-submit {
text-align: left;
white-space: nowrap;
}
.mw-input-with-label {
white-space: nowrap;
display: inline-block;
}
/**
* Image captions.
*
* This is only meant to provide the most basic of styles, visual settings shouldn't be added here.
*/
/* @noflip */
.mw-content-ltr .thumbcaption {
text-align: left;
}
/* @noflip */
.mw-content-ltr .magnify {
float: right;
}
/* @noflip */
.mw-content-rtl .thumbcaption {
text-align: right;
}
/* @noflip */
.mw-content-rtl .magnify {
float: left;
}
/**
* Categories
*/
#catlinks {
/**
* Overrides text justification (user preference)
* See T33990
*/
text-align: left;
}
.catlinks ul {
display: inline;
margin: 0;
padding: 0;
list-style: none;
list-style-type: none;
list-style-image: none;
vertical-align: middle !ie;
}
.catlinks li {
display: inline-block;
line-height: 1.25em;
border-left: 1px solid #a2a9b1;
margin: 0.125em 0;
padding: 0 0.5em;
zoom: 1;
display: inline !ie; /* stylelint-disable-line declaration-block-no-duplicate-properties */
}
.catlinks li:first-child {
padding-left: 0.25em;
border-left: 0;
}
/* (T7346) make category redirects italic */
.catlinks li a.mw-redirect {
font-style: italic;
}
/**
* Hidden categories
*/
.mw-hidden-cats-hidden {
display: none;
}
.catlinks-allhidden {
display: none;
}
/**
* Convenience links to edit delete and protect reasons
*/
p.mw-protect-editreasons,
p.mw-filedelete-editreasons,
p.mw-delete-editreasons {
font-size: 90%;
text-align: right;
}
/* The auto-generated edit comments */
.autocomment {
color: #72777d;
}
/** Generic minor/bot/newpage styling (recent changes) */
.newpage,
.minoredit,
.botedit {
font-weight: bold;
}
/**
* Recreating deleted page warning
* Reupload file warning
* Page protection warning
* incl. log entries for these warnings
*/
div.mw-warning-with-logexcerpt {
padding: 3px;
margin-bottom: 3px;
border: 2px solid #2a4b8d;
clear: both;
}
div.mw-warning-with-logexcerpt ul li {
font-size: 90%;
}
/* (show/hide) revision deletion links */
span.mw-revdelundel-link,
strong.mw-revdelundel-link {
font-size: 90%;
}
span.mw-revdelundel-hidden,
input.mw-revdelundel-hidden {
visibility: hidden;
}
td.mw-revdel-checkbox,
th.mw-revdel-checkbox {
padding-right: 10px;
text-align: center;
}
/* red links; see T38276 */
a.new {
color: #ba0000;
}
/* Plainlinks - this can be used to switch
* off special external link styling */
.plainlinks a.external {
background: none !important; /* stylelint-disable-line declaration-no-important */
padding: 0 !important; /* stylelint-disable-line declaration-no-important */
}
/* External URLs should always be treated as LTR (T6330) */
/* @noflip */ .rtl a.external.free,
.rtl a.external.autonumber {
direction: ltr;
unicode-bidi: embed;
}
/**
* wikitable class for skinning normal tables
* keep in sync with commonPrint.css
*/
table.wikitable {
background-color: #f8f9fa;
color: #222;
margin: 1em 0;
border: 1px solid #a2a9b1;
border-collapse: collapse;
}
table.wikitable > tr > th,
table.wikitable > tr > td,
table.wikitable > * > tr > th,
table.wikitable > * > tr > td {
border: 1px solid #a2a9b1;
padding: 0.2em 0.4em;
}
table.wikitable > tr > th,
table.wikitable > * > tr > th {
background-color: #eaecf0;
text-align: center;
}
table.wikitable > caption {
font-weight: bold;
}
/* success and error messages */
.error,
.warning,
.success {
font-size: larger;
}
.error {
color: #d33;
}
.warning {
color: #705000;
}
.success {
color: #009000;
}
.errorbox,
.warningbox,
.successbox {
border: 1px solid;
padding: 0.5em 1em;
margin-bottom: 1em;
display: inline-block;
zoom: 1;
*display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */
}
.errorbox h2,
.warningbox h2,
.successbox h2 {
font-size: 1em;
color: inherit;
font-weight: bold;
display: inline;
margin: 0 0.5em 0 0;
border: 0;
}
.errorbox {
color: #d33;
border-color: #fac5c5;
background-color: #fae3e3;
}
.warningbox {
color: #705000;
border-color: #fde29b;
background-color: #fdf1d1;
}
.successbox {
color: #008000;
border-color: #b7fdb5;
background-color: #e1fddf;
}
/* general info/warning box for SP */
.mw-infobox {
border: 2px solid #ff7f00;
margin: 0.5em;
clear: left;
overflow: hidden;
}
.mw-infobox-left {
margin: 7px;
float: left;
width: 35px;
}
.mw-infobox-right {
margin: 0.5em 0.5em 0.5em 49px;
}
/* Note on preview page */
.previewnote {
color: #d33;
margin-bottom: 1em;
}
.previewnote p {
text-indent: 3em;
margin: 0.8em 0;
}
.visualClear {
clear: both;
}
/**
* Data table style
*
* Transparent table with suddle borders
* and blue row-highlighting.
*/
.mw-datatable {
border-collapse: collapse;
}
.mw-datatable,
.mw-datatable td,
.mw-datatable th {
border: 1px solid #a2a9b1;
padding: 0 0.15em 0 0.15em;
}
.mw-datatable th {
background-color: #ddf;
}
.mw-datatable td {
background-color: #fff;
}
.mw-datatable tr:hover td {
background-color: #eaf3ff;
}
/* Correct directionality when page dir is different from site/user dir */
.mw-content-ltr ul,
.mw-content-rtl .mw-content-ltr ul {
/* @noflip */
margin: 0.3em 0 0 1.6em;
padding: 0;
}
.mw-content-rtl ul,
.mw-content-ltr .mw-content-rtl ul {
/* @noflip */
margin: 0.3em 1.6em 0 0;
padding: 0;
}
.mw-content-ltr ol,
.mw-content-rtl .mw-content-ltr ol {
/* @noflip */
margin: 0.3em 0 0 3.2em;
padding: 0;
}
.mw-content-rtl ol,
.mw-content-ltr .mw-content-rtl ol {
/* @noflip */
margin: 0.3em 3.2em 0 0;
padding: 0;
}
/* @noflip */
.mw-content-ltr dd,
.mw-content-rtl .mw-content-ltr dd {
margin-left: 1.6em;
margin-right: 0;
}
/* @noflip */
.mw-content-rtl dd,
.mw-content-ltr .mw-content-rtl dd {
margin-right: 1.6em;
margin-left: 0;
}
.mw-ajax-loader {
background-image: url(/w/resources/src/mediawiki.legacy/images/ajax-loader.gif?57f34);
background-position: center center;
background-repeat: no-repeat;
padding: 16px;
position: relative;
top: -16px;
}
.mw-small-spinner {
padding: 10px !important; /* stylelint-disable-line declaration-no-important */
margin-right: 0.6em;
background-image: url(/w/resources/src/mediawiki.legacy/images/spinner.gif?ca65b);
background-position: center center;
background-repeat: no-repeat;
}
/* Language specific height correction for titles. Ref T31405 and T32809 */
/* Languages like hi or ml require slightly more vertical space to show diacritics properly */
h1:lang( anp ),
h1:lang( as ),
h1:lang( bh ), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */
h1:lang( bho ),
h1:lang( bn ),
h1:lang( gu ),
h1:lang( hi ),
h1:lang( kn ),
h1:lang( ks ),
h1:lang( ml ),
h1:lang( mr ),
h1:lang( my ),
h1:lang( mai ),
h1:lang( ne ),
h1:lang( new ),
h1:lang( or ),
h1:lang( pa ),
h1:lang( pi ),
h1:lang( sa ),
h1:lang( ta ),
h1:lang( te ) {
line-height: 1.6em !important; /* stylelint-disable-line declaration-no-important */
}
/* stylelint-disable selector-list-comma-newline-after */
h2:lang( anp ), h3:lang( anp ), h4:lang( anp ), h5:lang( anp ), h6:lang( anp ),
h2:lang( as ), h3:lang( as ), h4:lang( as ), h5:lang( as ), h6:lang( as ),
h2:lang( bho ), h3:lang( bho ), h4:lang( bho ), h5:lang( bho ), h6:lang( bho ),
h2:lang( bh ), h3:lang( bh ), h4:lang( bh ), h5:lang( bh ), h6:lang( bh ),
h2:lang( bn ), h3:lang( bn ), h4:lang( bn ), h5:lang( bn ), h6:lang( bn ),
h2:lang( gu ), h3:lang( gu ), h4:lang( gu ), h5:lang( gu ), h6:lang( gu ),
h2:lang( hi ), h3:lang( hi ), h4:lang( hi ), h5:lang( hi ), h6:lang( hi ),
h2:lang( kn ), h3:lang( kn ), h4:lang( kn ), h5:lang( kn ), h6:lang( kn ),
h2:lang( ks ), h3:lang( ks ), h4:lang( ks ), h5:lang( ks ), h6:lang( ks ),
h2:lang( ml ), h3:lang( ml ), h4:lang( ml ), h5:lang( ml ), h6:lang( ml ),
h2:lang( mr ), h3:lang( mr ), h4:lang( mr ), h5:lang( mr ), h6:lang( mr ),
h2:lang( my ), h3:lang( my ), h4:lang( my ), h5:lang( my ), h6:lang( my ),
h2:lang( mai ), h3:lang( mai ), h4:lang( mai ), h5:lang( mai ), h6:lang( mai ),
h2:lang( ne ), h3:lang( ne ), h4:lang( ne ), h5:lang( ne ), h6:lang( ne ),
h2:lang( new ), h3:lang( new ), h4:lang( new ), h5:lang( new ), h6:lang( new ),
h2:lang( or ), h3:lang( or ), h4:lang( or ), h5:lang( or ), h6:lang( or ),
h2:lang( pa ), h3:lang( pa ), h4:lang( pa ), h5:lang( pa ), h6:lang( pa ),
h2:lang( pi ), h3:lang( pi ), h4:lang( pi ), h5:lang( pi ), h6:lang( pi ),
h2:lang( sa ), h3:lang( sa ), h4:lang( sa ), h5:lang( sa ), h6:lang( sa ),
h2:lang( ta ), h3:lang( ta ), h4:lang( ta ), h5:lang( ta ), h6:lang( ta ),
h2:lang( te ), h3:lang( te ), h4:lang( te ), h5:lang( te ), h6:lang( te ) {
line-height: 1.2em;
}
/* stylelint-enable selector-list-comma-newline-after */
/* Localised ordered list numbering for some languages */
ol:lang( azb ) li,
ol:lang( bcc ) li,
ol:lang( bgn ) li,
ol:lang( bqi ) li,
ol:lang( fa ) li,
ol:lang( glk ) li,
ol:lang( kk-arab ) li,
ol:lang( lrc ) li,
ol:lang( luz ) li,
ol:lang( mzn ) li {
list-style-type: -moz-persian;
list-style-type: persian;
}
ol:lang( ckb ) li,
ol:lang( sdh ) li {
list-style-type: -moz-arabic-indic;
list-style-type: arabic-indic;
}
ol:lang( hi ) li,
ol:lang( mai ) li,
ol:lang( mr ) li,
ol:lang( ne ) li {
list-style-type: -moz-devanagari;
list-style-type: devanagari;
}
ol:lang( as ) li,
ol:lang( bn ) li {
list-style-type: -moz-bengali;
list-style-type: bengali;
}
ol:lang( or ) li {
list-style-type: -moz-oriya;
list-style-type: oriya;
}
.toc ul {
margin: 0.3em 0;
}
/* Correct directionality when page dir is different from site/user dir */
/* @noflip */ .mw-content-ltr .toc ul,
.mw-content-rtl .mw-content-ltr .toc ul {
text-align: left;
}
/* @noflip */ .mw-content-rtl .toc ul,
.mw-content-ltr .mw-content-rtl .toc ul {
text-align: right;
}
/* @noflip */ .mw-content-ltr .toc ul ul,
.mw-content-rtl .mw-content-ltr .toc ul ul {
margin: 0 0 0 2em;
}
/* @noflip */ .mw-content-rtl .toc ul ul,
.mw-content-ltr .mw-content-rtl .toc ul ul {
margin: 0 2em 0 0;
}
.toc .toctitle {
direction: ltr;
}
#mw-clearyourcache,
#mw-sitecsspreview,
#mw-sitejspreview,
#mw-usercsspreview,
#mw-userjspreview {
direction: ltr;
unicode-bidi: embed;
}
#mw-revision-info,
#mw-revision-info-current,
#mw-revision-nav {
direction: ltr;
}
/* Images */
/* @noflip */ div.tright,
div.floatright,
table.floatright {
clear: right;
float: right;
}
/* @noflip */ div.tleft,
div.floatleft,
table.floatleft {
float: left;
clear: left;
}
div.floatright,
table.floatright,
div.floatleft,
table.floatleft {
position: relative;
}
/* T14205 */
#mw-credits a {
unicode-bidi: embed;
}
/* Accessibility */
.mw-jump,
#jump-to-nav {
overflow: hidden;
height: 0;
zoom: 1; /* http://webaim.org/techniques/skipnav/#iequirk */
}
/* Print footer should be hidden by default in screen. */
.printfooter {
display: none;
}
/* For developers */
.xdebug-error {
position: absolute;
z-index: 99;
}
.mw-editsection,
#jump-to-nav {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
/* Display editsection links smaller and next to headings */
.mw-editsection,
.mw-editsection-like {
font-size: small;
font-weight: normal;
margin-left: 1em;
vertical-align: baseline;
/* Reset line-height; headings tend to have it set to larger values */
line-height: 1em;
}
/* Correct directionality when page dir is different from site/user dir */
/* @noflip */
.mw-content-ltr .mw-editsection,
.mw-content-rtl .mw-content-ltr .mw-editsection {
margin-left: 1em;
}
/* @noflip */
.mw-content-rtl .mw-editsection,
.mw-content-ltr .mw-content-rtl .mw-editsection {
margin-right: 1em;
}
/* Prevent citations and subscripts from interfering with the line-height */
sup,
sub {
line-height: 1;
}}

View File

@ -1,16 +1,16 @@
body { line-height: 1.6em; font-size: 16px; }
body { line-height: 1.6em; font-size: 1rem;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; }
p, ul, ol, dl { font-size: 16px; }
p, ul, ol, dl { font-size: 1rem; }
h4,h5,h6 {color: 2e2e2e;}
h4,h5,h6 {color: #2e2e2e;}
#toc ul, .toc ul { font-size: 16px; }
#toc { margin: 1em 0; }
@media only screen and (min-width: 40.0625em) {
body { line-height: 1.6em; font-size: 14px; }
p, ul, ol, dl { font-size: 14px; }
body { line-height: 1.6em; font-size: 1rem; }
#toc ul, .toc ul { font-size: 13.3px; }
}
@ -43,9 +43,6 @@ a:hover {
text-decoration: underline;
}
h1.title a {
text-decoration: none;
}
/* ULS Override to force no display of background image */
.uls-trigger {
@ -69,6 +66,10 @@ body.action-formedit .row.hide-on-form-edit { display: none;}
.mw-notification-area {
margin-top: 2em;
}
/* MediaWiki Search Results */
.mw-search-results {
max-width: 100%;
}
/* Also adjust z-index of action menu to force it on top */
#p-cactions #drop1 {
z-index: 1000;
@ -162,10 +163,6 @@ h2 span {
display: inline;
}
h2.title {
margin-bottom: 0.1em;
}
h3#tagline {
font-style: italic;
font-size: small;
@ -225,9 +222,22 @@ ul#drop1.f-dropdown {
color: #222;
border-bottom: 1px solid #eee;
}
.mw-content-ltr ul {
.mw-content-ltr ol, .mw-content-rtl .mw-content-ltr ol {
margin: .5em 0 1em 2em;
}
.mw-content-ltr ul, .mw-content-rtl .mw-content-ltr ul {
margin: .5em 0 1em 2em;
}
.mw-content-ltr ul li > ul,
.mw-content-rtl .mw-content-ltr ul li > ul {
margin-bottom: .5em;
margin-left: 1em;
}
.mw-content-ltr ol li > ol,
.mw-content-rtl .mw-content-ltr ol li > ol {
margin-bottom: .5em;
margin-left: 1em;
}
ul.accordion {
margin: 0;
}
@ -527,7 +537,6 @@ button.ui-button-icon-only {
select {width:auto;}
input[type="checkbox"].createboxInput {
width: auto;
}
@ -597,6 +606,30 @@ button, .button {
z-index: 100;
}
input[type="search"] {
margin: 0;
}
input[type="date"] {
margin: .5rem 0;
}
input[type="date"] {
width: auto;
}
input[type="file"] {
margin: .5rem 0;
}
input:not([type]), textarea, p.meta {
margin: .5rem 0;
}
input[type="text"] {
margin: .5rem 0;
}
select {
padding: 5px 20px 5px 5px;
margin: .5rem 0;
width: auto;
}
input[type="submit"] {
background-color: #5da423;
border-color: #457a1a;
@ -642,10 +675,8 @@ span.smwttactiveinline span.smwbuiltin {
font-style: normal;
}
/* MW still generates a label column for checkboxes, this minimizes is */
div.mw-htmlform-field-HTMLCheckField div.mw-label { height:0; }
.mw-htmlform-field-HTMLCheckField .mw-label { height:0; }
/* UNTIL I CAN DETERMINE WHY toolboxend GENERATES AN EMPTY <li> IN THE MENU, I'M HIDING IT */
#p-toolboxend { display:none;}
@ -784,6 +815,7 @@ ul.side-nav label {
background: #517398;
color: #fff;
padding: .25em .5em;
pointer-events: none;
}
body {
background-color: #DCEAEA;
@ -871,10 +903,29 @@ h4.namespace.label {
overflow: hidden;
}
h2.title {
font-size:1.65em;
padding-bottom: 0em;
margin-top:.5em;
.tab-bar .title {
color: #FFFFFF;
line-height: 2.8125rem;
margin: 0;
font-weight:400;
font-size:1.5rem;
}
h1.title {
font-size: 1.8rem;
padding-bottom: 0em;
margin-top: .5em;
margin-bottom: 0.1rem;
}
section#middle-nav .title a {
text-decoration: none;
}
@media only screen and (min-width: 40.0625em){
h1.title {
font-size: 1.9rem;
}
}
h1, h2, h3, h4, h5, h6 { line-height: 1.4; }
@ -900,7 +951,6 @@ h2 { font-size: 1.55em; }
h3 { font-size: 1.40em; }
h4 { font-size: 1.24em; }
h5 { font-size: 1.16em; }
h2.title { font-size:1.8em; }
}
/* Preferences Fixes */
@ -1058,6 +1108,7 @@ ul[class*="block-grid"] {
.mw-indicators {
float: right;
font-family: "Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;
line-height: 1.6;
font-size: 0.875em;
position: relative;
@ -1068,4 +1119,77 @@ ul[class*="block-grid"] {
}
.mw-indicator {
display: inline-block;
}
/* Images the MediaWiki way */
/* Images, Thumbs and Captions */
.thumbinner {
border: 1px solid #c8ccd1;
padding: 3px;
background-color: #f8f9fa;
font-size: 94%;
text-align: center;
overflow: hidden;
margin: auto;
max-width: 100%;
}
.thumb.tright, .thumb.left {
max-width: 100%;
}
.thumbcaption {
border: 0;
line-height: 1.4em;
padding: 3px;
font-size: 94%;
text-align: left;
}
.magnify a {
display: block;
text-indent: 15px;
white-space: nowrap;
overflow: hidden;
width: 15px;
height: 11px;
}
.mw-content-ltr .magnify a {
background-image: url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png);
}
/* Float right and left styles - Make all MW images responsive for mobile when floated */
.floatright, .tright,
table.floatright {
margin: 0 0 .5em .5em;
border: 0;
}
.floatleft,.tleft
table.floatleft {
margin: 0 .5em .5em 0;
border: 0;
}
.tnone {
margin: .5rem 0;
border: 0;
}
.floatnone img {
margin: .5rem 0;
}
/* Kill the float for smaller screens and make them align center. */
@media only screen and (max-width: 640px) {
.floatright,
table.floatright,
.floatleft,
table.floatleft,
.thumb.tleft,
.thumb.tright {
text-align: center;
float: none !important;
margin: .5em auto;
}
}

View File

@ -1,6 +1,6 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "0.9"
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"test": [

View File

@ -7,5 +7,6 @@
"skinname-pivot": "Pivot",
"pivot-desc": "A mobile skin which \"Pivots\" seamlessly to any size display.",
"pivot-browsermsg": "may not look as expected in this version of Internet Explorer. We recommend you upgrade to a newer version of Internet Explorer or switch to a browser like Firefox or Chrome.",
"pivot-menutitle": "Menu"
"pivot-menutitle": "Menu",
"pivot-personal-tools": "Personal Tools"
}

View File

@ -7,5 +7,6 @@
"skinname-pivot": "name of skin",
"pivot-desc": "description of skin",
"pivot-browsermsg": "old versions of IE not supported message",
"pivot-menutitle": "menu title"
"pivot-menutitle": "menu title",
"pivot-personal-tools": "logged in title for personal tools"
}

View File

@ -1,6 +1,6 @@
{
"name": "Pivot",
"version": "2.0.0",
"version": "2.3.0",
"author": [
"Tom Hutchison",
"..."
@ -12,6 +12,9 @@
"ValidSkinNames": {
"pivot": "Pivot"
},
"requires": {
"MediaWiki": ">= 1.35.0"
},
"MessagesDirs": {
"Skinpivot": [
"i18n"
@ -26,6 +29,7 @@
"styles": [
"assets/stylesheets/normalize.css",
"assets/stylesheets/font-awesome.css",
"assets/stylesheets/legacy.css",
"assets/stylesheets/foundation.css",
"assets/stylesheets/pivot.css",
"assets/stylesheets/fontawsome.css",
@ -33,7 +37,7 @@
]
},
"skins.pivot.modernizr": {
"position": "bottom",
"position": "top",
"scripts": [
"assets/scripts/vendor/modernizr.js"
]
@ -41,8 +45,6 @@
"skins.pivot.js": {
"position": "bottom",
"scripts": [
"assets/scripts/vendor/jquery.cookie.js",
"assets/scripts/vendor/fastclick.js",
"assets/scripts/vendor/placeholder.js",
"assets/scripts/foundation/foundation.js",
"assets/scripts/foundation/foundation.topbar.js",