Isarra has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/250640

Change subject: Turn this into more of a skin. Formatting, horror, more horror.
......................................................................

Turn this into more of a skin. Formatting, horror, more horror.

Thanks to Skizzers for the catlist db query.
Thanks to HORROR for the tool parsing.
Lots of css and stuff.

Change-Id: I9b6b4c2e3a206d909972929ae32777c933d0be46
---
M TimelessTemplate.php
M i18n/en.json
M i18n/qqq.json
M notes
M resources/forms.less
A resources/images/arrow-down-white.png
A resources/images/arrow-down-white.svg
A resources/images/star-filled.png
A resources/images/star-filled.svg
A resources/images/star.png
A resources/images/star.svg
A resources/images/user.png
A resources/images/user.svg
M resources/screen-common.less
M resources/screen-desktop.less
M resources/variables.less
16 files changed, 708 insertions(+), 88 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/skins/Timeless 
refs/changes/40/250640/1

diff --git a/TimelessTemplate.php b/TimelessTemplate.php
index 7202f5f..55c5571 100644
--- a/TimelessTemplate.php
+++ b/TimelessTemplate.php
@@ -9,6 +9,8 @@
         * Outputs the entire contents of the page
         */
        public function execute() {
+               $pileOfTools = $this->getPageTools();
+
                $this->html( 'headelement' );
                ?>
                <div id="mw-wrapper">
@@ -30,14 +32,46 @@
                                        <h2><?php echo $this->getMsg( 
'navigation-heading' )->parse() ?></h2>
                                        <?php
                                        $this->outputLogo( 'p-logo', 'image' );
-                                       echo '<div id="page-tools">';
-                                               $this->outputPageLinks();
-                                       echo '</div><div id="site-navigation">';
+                                       echo '<div id="site-navigation" 
class="sidebar-chunk">';
                                                $this->outputSiteNavigation();
                                        echo '</div>';
+                                       $this->outputPortlet( array(
+                                               'id' => 'p-sitetools',
+                                               'headerMessage' => 
'timeless-sitetools',
+                                               'content' => 
$pileOfTools['general'],
+                                               'class' => 'sidebar-chunk'
+                                       ) );
                                        ?>
                                </div>
                                <div id="mw-related-navigation">
+                                       <div id="page-tools" 
class="sidebar-chunk">
+                                               <?php
+                                               if ( count( 
$pileOfTools['page-secondary'] ) > 0 ) {
+                                                       $this->outputPortlet( 
array(
+                                                               'id' => 
'p-pageactions',
+                                                               'headerMessage' 
=> 'timeless-pageactions',
+                                                               'content' => 
$pileOfTools['page-secondary'],
+                                                       ) );
+                                               }
+                                               if ( count( 
$pileOfTools['user'] ) > 0 ) {
+                                                       $this->outputPortlet( 
array(
+                                                               'id' => 
'p-userpagetools',
+                                                               'headerMessage' 
=> 'timeless-userpagetools',
+                                                               'content' => 
$pileOfTools['user'],
+                                                       ) );
+                                               }
+                                               $this->outputPortlet( array(
+                                                       'id' => 'p-pagemisc',
+                                                       'headerMessage' => 
'timeless-pagemisc',
+                                                       'content' => 
$pileOfTools['page-tertiary'],
+                                               ) );
+                                               ?>
+                                       </div>
+                                       <?php
+
+                                       $this->outputInterlanguageLinks();
+                                       $this->outputCategories();
+                                       ?>
                                </div>
                                <div id="mw-content">
                                <div class="mw-body" role="main">
@@ -57,7 +91,23 @@
                                        <h1 class="firstHeading">
                                                <?php $this->html( 'title' ) ?>
                                        </h1>
-                                       <div id="siteSub"><?php echo 
$this->getMsg( 'tagline' )->parse() ?></div>
+                                       <div id="page-header-links">
+                                       <?php
+                                               $this->outputPortlet( array(
+                                                       'id' => 'p-namespaces',
+                                                       'headerMessage' => 
'timeless-namespaces',
+                                                       'content' => 
$pileOfTools['namespaces'],
+                                               ) );
+                                       ?>
+                                       <?php
+                                               $this->outputPortlet( array(
+                                                       'id' => 'p-pagetools',
+                                                       'headerMessage' => 
'timeless-pagetools',
+                                                       'content' => 
$pileOfTools['page-primary'],
+                                               ) );
+                                       ?>
+                                       </div>
+                                       <div class="visual-clear"></div>
                                        <div class="mw-body-content">
                                                <div id="contentSub">
                                                        <?php
@@ -79,7 +129,6 @@
                                                ?>
                                                <div class="visual-clear"></div>
                                                <?php
-                                               $this->html( 'catlinks' );
                                                $this->html( 'dataAfterContent' 
);
                                                ?>
                                        </div>
@@ -91,23 +140,7 @@
 
                        <div id="mw-footer-container" class="ts-container">
                        <div id="mw-footer" class="ts-inner">
-                               <?php
-                               foreach ( $this->getFooterLinks() as $category 
=> $links ) {
-                                       ?>
-                                       <ul role="contentinfo">
-                                               <?php
-                                               foreach ( $links as $key ) {
-                                                       ?>
-                                                       <li><?php $this->html( 
$key ) ?></li>
-                                                       <?php
-                                               }
-                                               ?>
-                                       </ul>
-                                       <?php
-                               }
-                               ?>
-
-                               <ul role="contentinfo">
+                               <ul role="contentinfo" id="footer-icons">
                                        <?php
                                        foreach ( $this->getFooterIcons( 
'icononly' ) as $blockName => $footerIcons ) {
                                                ?>
@@ -122,6 +155,21 @@
                                        }
                                        ?>
                                </ul>
+                               <?php
+                               foreach ( $this->getFooterLinks() as $category 
=> $links ) {
+                                       ?>
+                                       <ul role="contentinfo" id="footer-<?php 
echo Sanitizer::escapeId( $category ) ?>">
+                                               <?php
+                                               foreach ( $links as $key ) {
+                                                       ?>
+                                                       <li><?php $this->html( 
$key ) ?></li>
+                                                       <?php
+                                               }
+                                               ?>
+                                       </ul>
+                                       <?php
+                               }
+                               ?>
                        </div>
                        </div>
                </div>
@@ -139,11 +187,16 @@
                if ( !$box['content'] ) {
                        return;
                }
+               if ( !isset( $box['class'] ) ) {
+                       $box['class'] = 'mw-portlet';
+               } else {
+                       $box['class'] .= ' mw-portlet';
+               }
 
                ?>
                <div
                        role="navigation"
-                       class="mw-portlet"
+                       class="<?php echo $box['class'] ?>"
                        id="<?php echo Sanitizer::escapeId( $box['id'] ) ?>"
                        <?php echo Linker::tooltip( $box['id'] ) ?>
                >
@@ -238,14 +291,13 @@
 
        /**
         * Outputs the sidebar
-        * Set the elements to true to allow them to be part of the sidebar
         */
        private function outputSiteNavigation() {
                $sidebar = $this->getSidebar();
 
-               $sidebar['SEARCH'] = false;
-               $sidebar['TOOLBOX'] = true;
-               $sidebar['LANGUAGES'] = true;
+               $sidebar['SEARCH'] = false; // Already hardcoded into header
+               $sidebar['TOOLBOX'] = false; // Parsed as part of pageTools
+               $sidebar['LANGUAGES'] = false; // PUT THIS ON THE OTHER SIDE
 
                foreach ( $sidebar as $boxName => $box ) {
                        if ( $boxName === false ) {
@@ -254,33 +306,214 @@
                        $this->outputPortlet( $box, true );
                }
        }
-       private function outputPageLinks() {
-               $this->outputPortlet( array(
-                       'id' => 'p-namespaces',
-                       'headerMessage' => 'namespaces',
-                       'content' => 
$this->data['content_navigation']['namespaces'],
-               ) );
-               $this->outputPortlet( array(
-                       'id' => 'p-variants',
-                       'headerMessage' => 'variants',
-                       'content' => 
$this->data['content_navigation']['variants'],
-               ) );
-               $this->outputPortlet( array(
-                       'id' => 'p-views',
-                       'headerMessage' => 'views',
-                       'content' => $this->data['content_navigation']['views'],
-               ) );
-               $this->outputPortlet( array(
-                       'id' => 'p-actions',
-                       'headerMessage' => 'actions',
-                       'content' => 
$this->data['content_navigation']['actions'],
-               ) );
-       }
+
        private function outputUserLinks() {
-               $this->outputPortlet( array(
-                       'id' => 'p-personal',
-                       'headerMessage' => 'personaltools',
-                       'content' => $this->getPersonalTools(),
-               ) );
+               $user = $this->getSkin()->getUser();
+               ?>
+               <div class="mw-portlet" id="p-personal" role="navigation">
+                       <h3>
+                       <span>
+                       <?php
+                       // Display status, and make a dropdown if logged in
+                       if ( $user->isLoggedIn() ) {
+                               $userName = $user->getName();
+                               // Make sure it fit firsts
+                               if ( strlen( $userName ) < 15 ) {
+                                       echo htmlspecialchars( $userName, 
ENT_QUOTES );
+                               } else {
+                                       echo wfMessage( 'timeless-loggedin' 
)->escaped();
+                               }
+                       } else {
+                               echo wfMessage( 'timeless-anonymous' 
)->escaped();
+                       }
+                       ?>
+                       </span>
+                       </h3>
+                       <div class="p-body dropdown">
+                       <ul<?php $this->html( 'userlangattributes' ) ?>>
+                       <?php
+                               foreach ( $this->getPersonalTools() as $key => 
$item ) {
+                                       if ( $key == 'userpage' ) {
+                                               $item['links'][0]['text'] = 
wfMessage( 'timeless-userpage' )->text();
+                                       }
+                                       if ( $key == 'mytalk' ) {
+                                               $item['links'][0]['text'] = 
wfMessage( 'timeless-talkpage' )->text();
+                                       }
+                                       echo $this->makeListItem( $key, $item );
+                               }
+                       ?>
+                       </ul>
+                       </div>
+               </div>
+               <?php
+       }
+
+       /*
+        * Generates pile of all the tools
+        * Returns array of arrays of each kind
+        */
+       private function getPageTools() {
+               $title = $this->getSkin()->getTitle();
+               $namespace = $title->getNamespace();
+
+               $sortedPileOfTools = array(
+                       'namespaces' => array(),
+                       'page-primary' => array(),
+                       'page-secondary' => array(),
+                       'user' => array(),
+                       'page-tertiary' => array(),
+                       'general' => array()
+               );
+
+               $pileOfTools = array();
+               foreach ( $this->data['content_navigation'] as $navKey => 
$navBlock ) {
+                       /* Just use namespaces items as they are */
+                       if ( $navKey == 'namespaces' ) {
+                               if ( $namespace < 0 ) {
+                                       // Put special page ns_pages in the 
more pile so they're not so lonely
+                                       $sortedPileOfTools['page-tertiary'] = 
$navBlock;
+                               } else {
+                                       $sortedPileOfTools['namespaces'] = 
$navBlock;
+                               }
+                       } else {
+                               $pileOfTools = array_merge( $pileOfTools, 
$navBlock );
+                       }
+               }
+               $pileOfTools = array_merge( $pileOfTools, $this->getToolbox() );
+               if ( $namespace >= 0 ) {
+                       $pileOfTools['pagelog'] = array(
+                               'text' => $this->getMsg( 'timeless-pagelog' 
)->escaped(),
+                               'href' => SpecialPage::getTitleFor( 'Log', 
$title->getPrefixedText() )->getLocalURL(),
+                               'id' => 't-pagelog'
+                       );
+               }
+
+               /* This is really dumb, but there is no sane way to do this. */
+               foreach ( $pileOfTools as $navKey => $navBlock ) {
+                       $currentSet = null;
+
+                       if ( in_array( $navKey, array( 'watch', 'unwatch' ) ) ) 
{
+                               $currentSet = 'namespaces';
+                       } elseif ( in_array( $navKey, array( 'edit', 'view', 
'history', 'contributions', 'addsection' ) ) ) {
+                               $currentSet = 'page-primary';
+                       } elseif ( in_array( $navKey, array( 'delete', 
'rename', 'protect', 'unprotect', 'viewsource', 'move' ) ) ) {
+                               $currentSet = 'page-secondary';
+                       } elseif (in_array( $navKey, array( 'blockip', 
'userrights', 'log' ) ) ) {
+                               $currentSet = 'user';
+                       } elseif (in_array( $navKey, array( 'whatlinkshere', 
'print', 'info', 'pagelog', 'recentchangeslinked', 'permalink' ) ) ) {
+                               $currentSet = 'page-tertiary';
+                       } else {
+                               $currentSet = 'general';
+                       }
+                       $sortedPileOfTools[$currentSet][$navKey] = $navBlock;
+               }
+
+               return $sortedPileOfTools;
+       }
+
+       /*
+        * Assemble and output array of categories, regardless of view mode
+        * Just using Skin or OutputPage functions doesn't respect view modes 
(preview, history, whatever)
+        */
+       private function outputCategories() {
+               global $wgContLang;
+
+               $skin =  $this->getSkin();
+               $title = $skin->getTitle();
+               $catList = false;
+
+               /* Get list from outputpage if in preview; otherwise get list 
from title */
+               if ( in_array( $skin->getRequest()->getVal( 'action' ), array( 
'submit', 'edit' ) ) ) {
+                       $allCats = array();
+                       /* Can't just use getCategoryLinks because there's no 
equivalent for Title */
+                       $allCats2 = $skin->getOutput()->getCategories();
+                       foreach ( $allCats2 as $displayName ) {
+                               $catTitle = Title::makeTitleSafe( NS_CATEGORY, 
$displayName );
+                               $allCats[] = $catTitle->getDBkey();
+                       }
+               } else {
+                       /* This is probably to trim out some excessive stuff. 
Unless I was just high on cough syrup. */
+                       $allCats = array_keys( $title->getParentCategories() );
+
+                       $len = strlen( $wgContLang->getNsText( NS_CATEGORY ) . 
':' );
+                       foreach ( $allCats as $i => $catName ) {
+                               $allCats[$i] = substr( $catName, $len );
+                       }
+               }
+               if ( count( $allCats ) > 0 ) {
+                       $dbr = wfGetDB( DB_SLAVE );
+                       $res = $dbr->select(
+                               array( 'page', 'page_props' ),
+                               array( 'page_id', 'page_title' ),
+                               array(
+                                       'page_title' => $allCats,
+                                       'page_namespace' => NS_CATEGORY,
+                                       'pp_propname' => 'hiddencat'
+                               ),
+                               __METHOD__,
+                               array(),
+                               array( 'page_props' => array( 'JOIN', 'pp_page 
= page_id' ) )
+                       );
+                       $hiddenCats = array();
+                       foreach ( $res as $row ) {
+                               $hiddenCats[] = $row->page_title;
+                       }
+                       $normalCats = array_diff( $allCats, $hiddenCats );
+
+                       $normalCount = count( $normalCats );
+                       $hiddenCount = count( $hiddenCats );
+                       $count = $normalCount;
+
+                       /* Mostly consistent with how Skin does it. Doesn't 
have the classes. Either way can't be good for caching. */
+                       if (  $skin->getUser()->getBoolOption( 'showhiddencats' 
) || $title->getNamespace() == NS_CATEGORY ) {
+                               $count += $hiddenCount;
+                       } else {
+                               /* We don't care if there are hidden ones. */
+                               $hiddenCount = 0;
+                       }
+
+                       /* Assemble the html because why not... */
+                       if ( $count ) {
+                               $catList = '<div role="navigation" 
class="mw-portlet sidebar-chunk" id="p-catlist">';
+                               if ( $normalCount ) {
+                                       $catList .= $this->assembleCatList( 
$normalCats, 'catlist-normal', 'categories' );
+                               }
+                               if ( $hiddenCount ) {
+                                       $catList .= $this->assembleCatList( 
$hiddenCats, 'catlist-hidden', 'hidden-categories' );
+                               }
+                               $catList .= '</div>';
+                       }
+               }
+               if ( $catList ) {
+                       echo $catList;
+               }
+       }
+       private function assembleCatList( $list, $id, $message ) {
+               $catList = '<h3>' . $this->getMsg( $message )->escaped() . 
'</h3>';
+               $catList .= '<ul id="' . $id . '">';
+               foreach ( $list as $category) {
+                       $title = Title::makeTitleSafe( NS_CATEGORY, $category );
+                       if ( !$title ) {
+                               continue;
+                       }
+                       $category = Linker::link( $title, $title->getText() );
+                       $catList .=  '<li>' . $category . '</li>';
+               }
+               $catList .= '</ul>';
+
+               return $catList;
+       }
+
+       private function outputInterlanguageLinks() {
+               if ( $this->data['language_urls'] ) {
+                       $msgObj = $this->getMsg( 'otherlanguages' );
+                       $this->outputPortlet( array(
+                               'id' => 'p-lang',
+                               'header' => $msgObj->exists() ? $msgObj->text() 
: 'otherlanguages',
+                               'generated' => false,
+                               'content' => $this->data['language_urls'],
+                               'class' => 'sidebar-chunk'
+                       ) );
+               }
        }
 }
diff --git a/i18n/en.json b/i18n/en.json
index a08744c..c324d6d 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -4,5 +4,17 @@
        },
        "skinname-timeless": "Timeless",
        "timeless-desc": "A timeless skin designed after the Winter prototype 
by Brandon Harris.",
-       "timeless-search-placeholder": "Search approximately {{NUMBEROFPAGES}} 
pages"
+       "timeless-search-placeholder": "Search approximately {{NUMBEROFPAGES}} 
pages",
+       "timeless-loggedin": "Your account",
+       "timeless-anonymous": "Anonymous user",
+       "timeless-userpage": "User page",
+       "timeless-talkpage": "User talk",
+       "timeless-pagelog": "Page logs",
+       "timeless-sitetools": "Wiki tools",
+       "timeless-pageactions": "Page tools",
+       "timeless-userpagetools": "User tools",
+       "timeless-pagemisc": "More",
+       "timeless-namespaces": "Namespaces",
+       "timeless-pagetools": "Page actions"
 }
+
diff --git a/i18n/qqq.json b/i18n/qqq.json
index 250a8ad..b8c91f7 100644
--- a/i18n/qqq.json
+++ b/i18n/qqq.json
@@ -1,8 +1,19 @@
 {
        "@metadata": {
-               "authors": [ "..." ]
+               "authors": [ "Isarra" ]
        },
        "skinname-timeless": "{{optional}}",
        "timeless-desc": 
"{{desc|what=skin|name=Timeless|url=https://www.mediawiki.org/wiki/Skin:Timeless}}";,
-       "timeless-search-placeholder": "Main search input placeholder text"
+       "timeless-search-placeholder": "Main search input placeholder text",
+       "timeless-loggedin": "Label for logged in users' user menu (if their 
username is too long to fit)",
+       "timeless-anonymous": "Label for anonymous (not logged in) user menu",
+       "timeless-userpage": "User page/profile link label in the personal 
menu\n{{Identical|User page}}",
+       "timeless-talkpage": "Talk page link label in the personal menu",
+       "timeless-pagelog": "Label for special:log link for the page",
+       "timeless-sitetools": "Label for general site tools menu in sidebar",
+       "timeless-pageactions": "Label for some page actions",
+       "timeless-userpagetools": "Label for actions associated with a 
userpage",
+       "timeless-pagemisc": "Label for more tools",
+       "timeless-namespaces": "Label for page namespaces and watch tool",
+       "timeless-pagetools": "Label for some other page tools"
 }
diff --git a/notes b/notes
index eb1ae45..34fc164 100644
--- a/notes
+++ b/notes
@@ -1 +1,29 @@
-...
+
+logo
+site navigation
+> wiki tools
+
+> listen
+table of contents
+
+
+
+search
+firstheading
+page actions - edit etc
+content
+> references
+related content
+
+
+
+personal tools
+notifications
+
+page tools - protect etc
+user tools
+> all page tools - related, info etc
+
+> languages
+> sister projects
+categories
diff --git a/resources/forms.less b/resources/forms.less
index 8548f00..3c558e8 100644
--- a/resources/forms.less
+++ b/resources/forms.less
@@ -127,7 +127,7 @@
        padding: .25em .35em;
        border: solid 1px @grey;
        margin: .5em 0;
-       box-shadow: inset 0px 2px 1px 1px rgba(0, 0, 0, 0.05);
+       box-shadow: inset 0 2px 1px 1px rgba(0, 0, 0, 0.05);
        font-size: 1em;
        min-height: 30px;
 }
@@ -166,6 +166,7 @@
        background: @background;
        color: @text;
        min-height: 30px;
+       box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
 
        &:active {
                background: @grey-bright;
diff --git a/resources/images/arrow-down-white.png 
b/resources/images/arrow-down-white.png
new file mode 100644
index 0000000..5953d0e
--- /dev/null
+++ b/resources/images/arrow-down-white.png
Binary files differ
diff --git a/resources/images/arrow-down-white.svg 
b/resources/images/arrow-down-white.svg
new file mode 100644
index 0000000..39a3daf
--- /dev/null
+++ b/resources/images/arrow-down-white.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns="http://www.w3.org/2000/svg"; height="16" width="22" version="1.1" 
xmlns:cc="http://creativecommons.org/ns#"; 
xmlns:dc="http://purl.org/dc/elements/1.1/";>
+<path style="fill:#555" d="m15.5 5-5 5-5-5z"/>
+<path style="fill:#fff" d="m15.5 6l-5 5-5-5z" fill="#797979"/>
+</svg>
diff --git a/resources/images/star-filled.png b/resources/images/star-filled.png
new file mode 100644
index 0000000..b1b2318
--- /dev/null
+++ b/resources/images/star-filled.png
Binary files differ
diff --git a/resources/images/star-filled.svg b/resources/images/star-filled.svg
new file mode 100644
index 0000000..26f7923
--- /dev/null
+++ b/resources/images/star-filled.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns="http://www.w3.org/2000/svg"; height="5.64mm" width="5.64mm" version="1.1" 
xmlns:cc="http://creativecommons.org/ns#"; 
xmlns:dc="http://purl.org/dc/elements/1.1/"; viewBox="0 0 20 20">
+<g transform="translate(-77 -51.8)">
+<path 
style="color-rendering:auto;text-decoration-color:#000000;color:#000000;shape-rendering:auto;solid-color:#000000;text-decoration-line:none;fill:#aaa;fill-rule:evenodd;mix-blend-mode:normal;block-progression:tb;text-indent:0;image-rendering:auto;white-space:normal;text-decoration-style:solid;isolation:auto;text-transform:none"
 d="m87 53.6-2.63 5.12-5.65 0.954 4.03 4.1-0.846 5.7 5.12-2.59 5.13 
2.57-0.289-1.91-0.574-3.79 4.02-4.11-5.65-0.935z"/>
+</g>
+</svg>
diff --git a/resources/images/star.png b/resources/images/star.png
new file mode 100644
index 0000000..d27efa9
--- /dev/null
+++ b/resources/images/star.png
Binary files differ
diff --git a/resources/images/star.svg b/resources/images/star.svg
new file mode 100644
index 0000000..c8f519e
--- /dev/null
+++ b/resources/images/star.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
xmlns="http://www.w3.org/2000/svg"; height="5.64mm" width="5.64mm" version="1.1" 
xmlns:cc="http://creativecommons.org/ns#"; 
xmlns:dc="http://purl.org/dc/elements/1.1/"; viewBox="0 0 20 20">
+<g transform="translate(-77 -51.8)">
+<path style="stroke:#aaa;stroke-linecap:round;stroke-width:2.55;fill:none" 
transform="matrix(.781 .0353 -.0351 .786 21.1 10)" d="m92.5 69.3-5.04-2.23-4.81 
2.69 0.568-5.48-4.04-3.74 5.39-1.15 2.31-5 2.76 4.77 5.47 0.649-3.68 4.1z"/>
+</g>
+</svg>
diff --git a/resources/images/user.png b/resources/images/user.png
new file mode 100644
index 0000000..ff9858a
--- /dev/null
+++ b/resources/images/user.png
Binary files differ
diff --git a/resources/images/user.svg b/resources/images/user.svg
new file mode 100644
index 0000000..5df4d20
--- /dev/null
+++ b/resources/images/user.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   height="5.64mm"
+   width="5.64mm"
+   version="1.1"
+   viewBox="0 0 20 20"
+   id="svg4136"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="user.svg"
+   
inkscape:export-filename="/media/shintaiden/home/rahah/mediawiki/skins/Timeless/resources/images/user.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <metadata
+     id="metadata4148">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs4146" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="3840"
+     inkscape:window-height="2124"
+     id="namedview4144"
+     showgrid="true"
+     inkscape:zoom="67.475764"
+     inkscape:cx="7.1743599"
+     inkscape:cy="10.812713"
+     inkscape:window-x="2880"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg4136"
+     inkscape:snap-bbox="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:object-nodes="true"
+     inkscape:snap-smooth-nodes="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-others="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4150" />
+  </sodipodi:namedview>
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#555555;fill-opacity:1"
+     d="m 3.6434932,8.4526943 c -1.7584726,2.3893907 -1.9573009,4.9984967 
-1.227529,6.7279547 0.488999,1.18 1.179848,1.870866 1.989848,2.290867 
0.792,0.428 1.749703,0.517941 2.599703,0.519941 l 6.3292038,0 c 0.921,0 
1.850524,-0.20736 2.650524,-0.674359 0.8,-0.467 1.460246,-1.198913 
1.800246,-2.288912 0.490001,-1.55 0.26532,-4.030165 -1.47968,-6.4601667 
-0.0076,0.01164 -0.02113,0.0182 -0.02932,0.02932 A 7.5059113,7.5059113 0 0 1 
10.00788,11.986728 7.5059113,7.5059113 0 0 1 3.6434932,8.4526943 Z"
+     id="path4140-5" />
+  <path
+     sodipodi:nodetypes="sssss"
+     inkscape:connector-curvature="0"
+     id="path4142-2"
+     d="m 10.007881,-0.01576092 c -2.4852818,0 -4.5000018,2.01471912 
-4.5000018,4.50000012 0,2.485281 2.01472,4.5000001 4.5000018,4.5000001 
2.48528,0 4.5,-2.0147191 4.5,-4.5000001 0,-2.485281 -2.01472,-4.50000012 
-4.5,-4.50000012 z"
+     style="fill:#555555;fill-opacity:1;fill-rule:evenodd" />
+  <path
+     style="fill:#ffffff"
+     d="M 3.640625 9.453125 C 1.8835375 11.840633 1.6848657 14.447685 
2.4140625 16.175781 C 2.9026774 17.354852 3.5929816 18.045174 4.4023438 
18.464844 C 5.1937201 18.892507 6.1506693 18.982377 7 18.984375 L 13.324219 
18.984375 C 14.244494 18.984375 15.173286 18.777179 15.972656 18.310547 C 
16.772026 17.843915 17.431752 17.112579 17.771484 16.023438 C 18.261099 
14.474658 18.036595 11.996446 16.292969 9.5683594 C 16.285395 9.5799893 
16.271857 9.5865465 16.263672 9.5976562 A 7.5000009 7.5000009 0 0 1 10 
12.984375 A 7.5000009 7.5000009 0 0 1 3.640625 9.453125 z "
+     transform="scale(1.0007881,1.0007881)"
+     id="path4140" />
+  <path
+     sodipodi:nodetypes="sssss"
+     inkscape:connector-curvature="0"
+     id="path4142"
+     d="m 10.007881,0.99211966 c -2.4852804,0 -4.5000004,2.01471904 
-4.5000004,4.50000004 0,2.485281 2.01472,4.5 4.5000004,4.5 2.48528,0 
4.5,-2.014719 4.5,-4.5 0,-2.485281 -2.01472,-4.50000004 -4.5,-4.50000004 z"
+     style="fill:#ffffff;fill-rule:evenodd" />
+</svg>
diff --git a/resources/screen-common.less b/resources/screen-common.less
index 2868709..5c94b37 100644
--- a/resources/screen-common.less
+++ b/resources/screen-common.less
@@ -10,7 +10,7 @@
        color: @text;
        background: @background-dark;
        font-size: 1em;
-       line-height: 1.3;
+       line-height: 1.4;
 }
 #mw-content {
        background: @background;
@@ -21,7 +21,11 @@
 #mw-footer-container {
        border-top: solid 1px @background-dark2;
        box-shadow: inset 0 7px 2px -4px rgba(0, 0, 0, .1);
+       color: @text-inverse;
 
+       a {
+               color: @text-inverse;
+       }
        ul {
                margin: 0;
        }
@@ -29,13 +33,13 @@
 
 #p-logo {
        text-align: center;
-       width: 10em;
+       width: 11em;
 
        a.mw-wiki-logo {
                display: block;
                content: '';
-               width: 10em;
-               height: 10em;
+               width: 11em;
+               height: 11em;
                background-repeat: no-repeat;
                background-position: 50% 50%;
        }
@@ -50,26 +54,100 @@
        &:visited {
                color: @blue-dark;
        }
-       &.new {
-               color: @red;
+}
+a.new,
+.new a {
+       color: @red;
 
-               &:visited {
-                       color: @red-dark;
-               }
+       &:visited {
+               color: @red-dark;
        }
 }
 
+.mw-editsection {
+       font-family: @fonts;
+}
 .mw-editsection-bracket {
        display: none;
 }
 .visual-clear {
        clear: both;
 }
+#mw-content {
+       h1, h2, h3, h4, h5, h6, dt {
+               font-weight: normal;
+               font-family: @fonts-secondary;
+               line-height: 1.25;
+               margin: 1.5em 0 .5em;
+       }
+
+       h1, h2 {
+               border-bottom: solid 2px @blue-bright;
+
+       }
+
+       h1.firstHeading {
+               margin: .25em 0 .5em;
+               border-bottom: solid 4px @red;
+       }
+
+       h1 {
+               font-size: 2em;
+       }
+       h2 {
+               font-size: 1.7em;
+       }
+       h3 {
+               font-size: 1.5em;
+       }
+       h4 {
+               font-size: 1.35em;
+       }
+       h5 {
+               font-size: 1.25em;
+       }
+       h6 {
+               font-size: 1.2em;
+       }
+       dt {
+               margin-top: 1em;
+       }
+       dd {
+               margin-bottom: 1em;
+       }
+       .mw-changeslist-legend dd {
+               margin-bottom: 0;
+       }
+}
+
+/* Thumbnails */
+.tright {
+       margin: 0 0 .5em .5em;
+       padding: 0 0 1em 1.5em;
+       background: #fff;
+}
+.tleft {
+       margin: 0 .5em .5em 0;
+       padding: 0 1.5em 1em 0;
+       background: #fff;
+
+}
+.thumbinner {
+       padding: .75em;
+}
+.thumbcaption {
+       font-size: 95%;
+       padding: .5em 1em;
+}
+.thumbinner img{
+       border: solid 1px @grey-bright;
+}
 
 /* Hidden stuff */
 
+#p-namespaces h3,
+#p-pagetools h3,
 #mw-site-navigation h2,
-#p-search h3,
-#p-personal h3 {
+#p-search h3 {
        .hidden;
 }
diff --git a/resources/screen-desktop.less b/resources/screen-desktop.less
index 58cdada..913be43 100644
--- a/resources/screen-desktop.less
+++ b/resources/screen-desktop.less
@@ -1,7 +1,7 @@
 @import "variables.less";
 
 .ts-inner {
-       max-width: 1300px;
+       max-width: 100em;
        padding: 0 3em;
        margin: auto;
 }
@@ -13,13 +13,15 @@
 #p-search,
 #mw-content {
        margin-left: 12em;
-       margin-right: 12em;
+       margin-right: 18em;
 }
 #mw-related-navigation,
-#p-personal {
-       width: 12em;
+#user-tools {
+       width: 18em;
        float: right;
 }
+
+/* Header */
 
 #mw-header-container {
        position: fixed;
@@ -31,12 +33,37 @@
        border-bottom: solid 1px @background-dark2;
        box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1);
 }
+.dropdown {
+       display: none;
+}
 
+#p-personal {
+       padding-left: 1.5em;
+}
+#p-personal h3 {
+       margin: 0;
+       padding: .55em 0 .45em 1.5em;
+       font-family: @fonts-secondary;
+       font-weight: normal;
+       font-size: 1.1em;
+       text-shadow: 0 -1px 0 @background-dark2;
+       .background-image-svg('images/user.svg', 'images/user.png');
+       background-position: 0% 10px;
+       background-repeat: no-repeat;
 
-/* BANNER */
+       span {
+               .background-image-svg('images/arrow-down-white.svg', 
'images/arrow-down-white.png');
+               background-position: 100% 2px;
+               background-repeat: no-repeat;
+               padding-right: 1.35em;
+       }
+       &:hover {
+               cursor: pointer;
+       }
+}
 
 #p-logo-text {
-       width: 10em;
+       width: 11em;
        text-align: center;
        text-shadow: 0 -1px 0 @background-dark2;
 
@@ -50,7 +77,7 @@
 }
 
 
-/* SEARCH */
+/* Search */
 
 #simpleSearch {
        box-shadow: inset 0 2px 2px 1px rgba(0, 0, 0, 0.1);
@@ -63,7 +90,7 @@
        border: none;
        margin: 0;
        height: 2.1em;
-       padding: .65em 4.5em .45em 2em;
+       padding: .4em 4.5em .3em 2em;
        box-shadow: none;
        background: transparent;
        width: 100%;
@@ -75,28 +102,141 @@
        right: 1.5em;
        width: 2.5em;
        height: 2.5em;
-       border: none;
-       background: transparent;
-       text-indent: -99999px;
+       .icon;
        .background-image-svg('images/search-ltr.svg', 'images/search-ltr.png');
        background-position: 50% 40%;
-       background-repeat: no-repeat;
+       box-shadow: none;
 }
 
 
-/* CONTENT */
+/* Content */
 
 #mw-content-container {
        margin-top: 3em;
-       padding-bottom: 1em;
+       padding-bottom: .5em;
 }
 #mw-content {
        background: @background;
-       padding-top: 1em;
+       padding: 1em 2em 3em;
        border: 1px @grey-bright;
        border-style: none solid solid;
        box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.02);
        overflow: hidden;
-       padding-right: 2em;
-       padding-left: 2em;
+}
+#page-header-links {
+       div,
+       ul,
+       li {
+               list-style: none;
+               display: inline-block;
+               margin: 0;
+               padding: 0;
+       }
+       li {
+               margin: .25em 0 1.5em;
+
+               &:hover {
+                       border-bottom: solid 3px @grey;
+               }
+               &.selected {
+                       border-bottom: solid 3px @blue;
+
+                       a {
+                               color: @text;
+                       }
+               }
+       }
+       #p-namespaces {
+               float: left;
+
+               li {
+                       margin-right: 1em;
+               }
+       }
+       #p-pagetools {
+               float: right;
+
+               li {
+                       margin-left: 1em;
+               }
+       }
+}
+#ca-watch a,
+#ca-unwatch a {
+       .icon;
+       display: inline-block;
+       width: 1.4em;
+       height: 1.4em;
+       box-sizing: border-box;
+}
+#ca-watch a {
+       .background-image-svg('images/star.svg', 'images/star.png');
+}
+#ca-unwatch a {
+       .background-image-svg('images/star-filled.svg', 
'images/star-filled.png');
+}
+
+/* Sidebars */
+
+#mw-site-navigation .sidebar-chunk,
+#mw-related-navigation .sidebar-chunk {
+       background: @background3;
+       border: solid @grey-bright;
+       box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.02);
+       border-width: 1px 1px @border;
+       padding: 1.5em 1.5em 0;
+       margin: 1em;
+       line-height: 1.1;
+
+       ul,
+       li {
+               list-style: none;
+               margin: 0;
+               padding: 0;
+       }
+       h3 {
+               font-weight: normal;
+               font-size: 1em;
+               margin: 0 0 .75em 0;
+               padding-bottom: .15em;
+               border-bottom: solid 2px @grey;
+       }
+       ul {
+               margin-bottom: 2em;
+       }
+       li {
+               margin: 0 0 .35em;
+       }
+}
+
+#mw-site-navigation .sidebar-chunk {
+       margin-left: 0;
+}
+#mw-related-navigation .sidebar-chunk {
+       margin-right: 0;
+}
+
+/* Footer */
+
+#mw-footer {
+       padding: .5em 0 1em;
+
+       ul,
+       li {
+               margin: 1em 0;
+               list-style: none;
+               padding: 0;
+       }
+}
+#footer-places li {
+       display: inline;
+       padding-right: 1em;
+}
+#footer-icons {
+       float: right;
+       margin: 0 0 0 1em;
+
+       li {
+               margin: 0 0 1em 0;
+       }
 }
diff --git a/resources/variables.less b/resources/variables.less
index 7923666..f5f4b41 100644
--- a/resources/variables.less
+++ b/resources/variables.less
@@ -3,6 +3,7 @@
 @text: #013;
 @background: #fff;
 @background2: #f3f3f3;
+@background3: #fcfcfc;
 
 @background-dark: #777;
 @background-dark2: #555;
@@ -11,7 +12,7 @@
 @link: @blue;
 @link-red: @red;
 
-@grey: #ccc;
+@grey: #ddd;
 @grey-bright: #eee;
 @grey-dark: #aaa;
 
@@ -46,3 +47,15 @@
        position: absolute;
        top: -9999px;
 }
+
+/* Icons - hides labels, but keep them accessible for screen-readers */
+.icon() {
+       text-indent: -99999px;
+       border: none;
+       background: transparent;
+       background-repeat: no-repeat;
+}
+
+.box {
+       // ...
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/250640
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9b6b4c2e3a206d909972929ae32777c933d0be46
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/skins/Timeless
Gerrit-Branch: master
Gerrit-Owner: Isarra <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to