MediaWiki:Vector.css: различия между версиями

Материал из Энциклопедия ТвГУ
Перейти к навигацииПерейти к поиску
 
 
(не показано 7 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
/* Размещённый здесь CSS будет применяться к векторной теме оформления  */
 
/* Размещённый здесь CSS будет применяться к векторной теме оформления  */
−
/* Default styling for HTML elements */
+
<?php
−
dfn {
+
/**
−
    font-style: inherit; /* Reset default styling for <dfn> */
+
* VectorX - Derivative of Vector skin
−
}
+
  *
−
q {
+
* $wgVectorHiddenAnonPortals = array( 'TOOLBOX', 'navigation' );
−
    quotes: '"' '"' "'" "'";  /* Straight quote marks for <q> */
+
* $wgVectorHiddenUserPortals = array( 'anonnavigation' );
−
}
+
* $wgVectorHiddenAnonNavigation = array( 'VIEWS', 'ACTIONS', 'NAMESPACES', 'VARIANTS' );
−
blockquote {
+
  * $wgVectorHiddenUserNavigation = array();
−
overflow: hidden; /* Avoid collision of background with floating elements */
+
*
−
}
+
* @todo document
−
strong.selflink {
+
  * @file
−
    font-weight: 700; /* Prevent the 'double bold' bug in Firefox when using DirectWrite */
+
  * @ingroup Skins
−
}
+
  */
−
   
 
−
/* Main page fixes */
 
−
#interwiki-completelist {
 
−
    font-weight: bold;
 
−
}
 
−
body.page-Main_Page #ca-delete {
 
−
    display: none !important;
 
−
}
 
−
body.page-Main_Page #mp-topbanner {
 
−
    clear: both;
 
−
}
 
 
   
 
   
−
/* Edit window toolbar */
+
if( !defined( 'MEDIAWIKI' ) ) {
−
#toolbar {
+
die( -1 );
−
    height: 22px;
 
−
    margin-bottom: 6px;
 
 
}
 
}
 
   
 
   
−
/* WikiEditor CSS for #wpTextbox1 is not loaded on .css/.js pages, so load here. [[phab:T97299]] */
+
require_once( "Vector.php" );
−
.wikiEditor-ui-text #wpTextbox1 {
 
−
    line-height: 1.5em;
 
−
    resize: vertical;
 
−
}
 
 
   
 
   
−
/* Hide charinsert base for those not using the gadget */
+
/**
−
#editpage-specialchars {
+
  * SkinTemplate class for VectorX skin
−
    display: none;
+
  * @ingroup Skins
−
}
+
*/
−
   
+
class SkinVectorX extends SkinVector {
−
/* Highlight data points in the info action if specified in the URL */
 
−
body.action-info :target {
 
−
    background: #DEF;
 
−
}
 
−
   
 
−
/* Make the list of references smaller */
 
−
ol.references,
 
−
div.reflist,
 
−
div.refbegin {
 
−
    font-size: 90%;            /* Default font-size */
 
−
    margin-bottom: 0.5em;
 
−
}
 
−
div.refbegin-100 {
 
−
    font-size: 100%;          /* Option for normal fontsize in {{refbegin}} */
 
−
}
 
−
div.reflist ol.references {
 
−
    font-size: 100%;          /* Reset font-size when nested in div.reflist */
 
−
    list-style-type: inherit;  /* Enable custom list style types */
 
−
}
 
 
   
 
   
−
/* Highlight clicked reference in blue to help navigation */
+
var $skinname = 'vectorx', $stylename = 'vectorx',
−
span.citation:target {
+
$template = 'VectorXTemplate', $useHeadElement = true;
−
    background-color: #DEF;
 
−
}
 
 
   
 
   
−
/* Ensure refs in table headers and the like aren't bold or italic */
+
/**
−
sup.reference {
+
* Initializes output page and sets up skin-specific parameters
−
    font-weight: normal;
+
* @param $out OutputPage object to initialize
−
    font-style: normal;
+
*/
−
}
+
public function initPage( OutputPage $out ) {
 +
global $wgLocalStylePath, $wgRequest;
 
   
 
   
−
/* Allow hidden ref errors to be shown by user CSS */
+
parent::initPage( $out );
−
span.brokenref {
 
−
    display: none;
 
−
}
 
 
   
 
   
−
/* Styling for citations (CSS3). Breaks long urls, etc., rather than overflowing box */
+
// Append CSS which includes IE only behavior fixes for hover support -
−
.citation {
+
// this is better than including this in a CSS fille since it doesn't
−
    word-wrap: break-word;
+
// wait for the CSS file to load before fetching the HTC file.
−
}
+
$min = $wgRequest->getFuzzyBool( 'debug' ) ? '' : '.min';
 +
$out->addHeadItem( 'csshover',
 +
'<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
 +
htmlspecialchars( $wgLocalStylePath ) .
 +
"/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
 +
);
 
   
 
   
−
/* For linked citation numbers and document IDs, where
+
$out->addModuleScripts( 'skins.vectorx' );
−
  the number need not be shown on a screen or a handheld,
+
}
−
  but should be included in the printed version */
 
−
@media screen, handheld {
 
−
    .citation .printonly {
 
−
        display: none;
 
−
    }
 
−
}
 
 
   
 
   
−
/* Reset top margin for lists embedded in columns */
+
/**
−
div.columns {
+
* Load skin and user CSS files in the correct order
−
    margin-top: 0.3em;
+
* fixes bug 22916
−
}
+
* @param $out OutputPage object
−
div.columns dl,
+
*/
−
div.columns ol,
+
function setupSkinUserCss( OutputPage $out ){
−
div.columns ul {
+
parent::setupSkinUserCss( $out );
−
    margin-top: 0;
+
$out->addModuleStyles( 'skins.vectorx' );
 +
}
 
}
 
}
 
   
 
   
−
/* Avoid elements from breaking between columns */
+
/**
−
.nocolbreak,
+
  * Derivative of VectorTemplate class for VectorX skin
−
div.columns li,
+
  * @ingroup Skins
−
div.columns dd dd {
 
−
    -webkit-column-break-inside: avoid;
 
−
    page-break-inside: avoid;
 
−
    break-inside: avoid-column;
 
−
}
 
−
   
 
−
/* Style for [[Template:Flowlist]] that Lets lists flow around floating objecs */
 
−
.flowlist ul {
 
−
    overflow-x: hidden;
 
−
    margin-left: 0;
 
−
    padding-left: 1.6em;
 
−
}
 
−
.flowlist ol {
 
−
    overflow-x: hidden;
 
−
    margin-left: 0;
 
−
    padding-left: 3.2em;
 
−
}
 
−
.flowlist dl {
 
−
    overflow-x: hidden;
 
−
}
 
−
   
 
−
/* Style for horizontal lists (separator following item).
 
−
  IE8-specific classes are assigned in [[MediaWiki:Common.js/IEFixes.js]].
 
−
  @source mediawiki.org/wiki/Snippets/Horizontal_lists
 
−
  @revision 6 (2014-05-09)
 
−
  @author [[User:Edokter]]
 
 
  */
 
  */
−
.hlist dl,
+
class VectorXTemplate extends VectorTemplate {
−
.hlist ol,
 
−
.hlist ul {
 
−
    margin: 0;
 
−
    padding: 0;
 
−
}
 
−
/* Display list items inline */
 
−
.hlist dd,
 
−
.hlist dt,
 
−
.hlist li {
 
−
    margin: 0;
 
−
    display: inline;
 
−
}
 
−
/* Display nested lists inline */
 
−
.hlist.inline,
 
−
.hlist.inline dl,
 
−
.hlist.inline ol,
 
−
.hlist.inline ul,
 
−
.hlist dl dl, .hlist dl ol, .hlist dl ul,
 
−
.hlist ol dl, .hlist ol ol, .hlist ol ul,
 
−
.hlist ul dl, .hlist ul ol, .hlist ul ul {
 
−
    display: inline;
 
−
}
 
−
/* Generate interpuncts */
 
−
.hlist dt:after {
 
−
    content: ": ";
 
−
}
 
−
.hlist dd:after,
 
−
.hlist li:after {
 
−
    content: " · ";
 
−
    font-weight: bold;
 
−
}
 
−
.hlist dd:last-child:after,
 
−
.hlist dt:last-child:after,
 
−
.hlist li:last-child:after {
 
−
    content: none;
 
−
}
 
−
/* For IE8 */
 
−
.hlist dd.hlist-last-child:after,
 
−
.hlist dt.hlist-last-child:after,
 
−
.hlist li.hlist-last-child:after {
 
−
    content: none;
 
−
}
 
−
/* Add parentheses around nested lists */
 
−
.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,
 
−
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,
 
−
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before {
 
−
    content: " (";
 
−
    font-weight: normal;
 
−
}
 
−
.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,
 
−
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,
 
−
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after {
 
−
    content: ") ";
 
−
    font-weight: normal;
 
−
}
 
−
/* For IE8 */
 
−
.hlist dd dd.hlist-last-child:after, .hlist dd dt.hlist-last-child:after, .hlist dd li.hlist-last-child:after,
 
−
.hlist dt dd.hlist-last-child:after, .hlist dt dt.hlist-last-child:after, .hlist dt li.hlist-last-child:after,
 
−
.hlist li dd.hlist-last-child:after, .hlist li dt.hlist-last-child:after, .hlist li li.hlist-last-child:after {
 
−
    content: ") ";
 
−
    font-weight: normal;
 
−
}
 
−
/* Put ordinals in front of ordered list items */
 
−
.hlist ol {
 
−
    counter-reset: listitem;
 
−
}
 
−
.hlist ol > li {
 
−
    counter-increment: listitem;
 
−
}
 
−
.hlist ol > li:before {
 
−
    content: " " counter(listitem) " ";
 
−
    white-space: nowrap;
 
−
}
 
−
.hlist dd ol > li:first-child:before,
 
−
.hlist dt ol > li:first-child:before,
 
−
.hlist li ol > li:first-child:before {
 
−
    content: " (" counter(listitem) " ";
 
−
}
 
−
 
−
/* Unbulleted lists */
 
−
.plainlist ol,
 
−
.plainlist ul {
 
−
    line-height: inherit;
 
−
    list-style: none none;
 
−
    margin: 0;
 
−
}
 
−
.plainlist ol li,
 
−
.plainlist ul li {
 
−
    margin-bottom: 0;
 
−
}
 
−
 
−
/* Default style for navigation boxes */
 
−
.navbox {                    /* Navbox container style */
 
−
    border: 1px solid #aaa;
 
−
    width: 100%;
 
−
    margin: auto;
 
−
    clear: both;
 
−
    font-size: 88%;
 
−
    text-align: center;
 
−
    padding: 1px;
 
−
}
 
−
.navbox-inner,
 
−
.navbox-subgroup {
 
−
    width: 100%;
 
−
}
 
−
.navbox-group,
 
−
.navbox-title,
 
−
.navbox-abovebelow {
 
−
    padding: 0.25em 1em;      /* Title, group and above/below styles */
 
−
    line-height: 1.5em;
 
−
    text-align: center;
 
−
}
 
−
th.navbox-group {            /* Group style */
 
−
    white-space: nowrap;
 
−
    /* @noflip */
 
−
    text-align: right;
 
−
}
 
−
.navbox,
 
−
.navbox-subgroup {
 
−
    background: #fdfdfd;      /* Background color */
 
−
}
 
−
.navbox-list {
 
−
    line-height: 1.8em;
 
−
    border-color: #fdfdfd;    /* Must match background color */
 
−
}
 
−
.navbox th,
 
−
.navbox-title {
 
−
    background: #ccccff;      /* Level 1 color */
 
−
}
 
−
.navbox-abovebelow,
 
−
th.navbox-group,
 
−
.navbox-subgroup .navbox-title {
 
−
    background: #ddddff;      /* Level 2 color */
 
−
}
 
−
.navbox-subgroup .navbox-group,
 
−
.navbox-subgroup .navbox-abovebelow {
 
−
    background: #e6e6ff;      /* Level 3 color */
 
−
}
 
−
.navbox-even {
 
−
    background: #f7f7f7;      /* Even row striping */
 
−
}
 
−
.navbox-odd {
 
−
    background: transparent;  /* Odd row striping */
 
−
}
 
−
table.navbox + table.navbox {  /* Single pixel border between adjacent navboxes */
 
−
    margin-top: -1px;          /* (doesn't work for IE6, but that's okay)      */
 
−
}
 
−
.navbox .hlist td dl,
 
−
.navbox .hlist td ol,
 
−
.navbox .hlist td ul,
 
−
.navbox td.hlist dl,
 
−
.navbox td.hlist ol,
 
−
.navbox td.hlist ul {
 
−
    padding: 0.125em 0;      /* Adjust hlist padding in navboxes */
 
−
}
 
−
ol + table.navbox,
 
−
ul + table.navbox {
 
−
    margin-top: 1em;        /* Prevent lists from clinging to navboxes */
 
−
}
 
−
 
−
/* Default styling for Navbar template */
 
−
.navbar {
 
−
    display: inline;
 
−
    font-size: 88%;
 
−
    font-weight: normal;
 
−
}
 
−
.navbar ul {
 
−
    display: inline;
 
−
    white-space: nowrap;
 
−
}
 
−
.mw-body-content .navbar ul {
 
−
    line-height: inherit;
 
−
}
 
−
.navbar li {
 
−
    word-spacing: -0.125em;
 
−
}
 
−
.navbar.mini li span {
 
−
  font-variant: small-caps;
 
−
}
 
−
/* Navbar styling when nested in infobox and navbox */
 
−
.infobox .navbar {
 
−
    font-size: 100%;
 
−
}
 
−
.navbox .navbar {
 
−
    display: block;
 
−
    font-size: 100%;
 
−
}
 
−
.navbox-title .navbar {
 
−
    /* @noflip */
 
−
    float: left;
 
−
    /* @noflip */
 
−
    text-align: left;
 
−
    /* @noflip */
 
−
    margin-right: 0.5em;
 
−
    width: 6em;
 
−
}
 
−
 
−
/* 'show'/'hide' buttons created dynamically by the CollapsibleTables javascript
 
−
  in [[MediaWiki:Common.js]] are styled here so they can be customised. */
 
−
.collapseButton {
 
−
    /* @noflip */
 
−
    float: right;
 
−
    font-weight: normal;
 
−
    /* @noflip */
 
−
    margin-left: 0.5em;
 
−
    /* @noflip */
 
−
    text-align: right;
 
−
    width: auto;
 
−
}
 
−
/* In navboxes, the show/hide button balances the v·d·e links
 
−
  from [[Template:Navbar]], so they need to be the same width. */
 
−
.navbox .collapseButton {
 
−
    width: 6em;
 
−
}
 
−
 
−
/* Styling for JQuery makeCollapsible, matching that of collapseButton */
 
−
.mw-collapsible-toggle {
 
−
    font-weight: normal;
 
−
    /* @noflip */
 
−
    text-align: right;
 
−
}
 
−
.navbox .mw-collapsible-toggle {
 
−
    width: 6em;
 
−
}
 
 
   
 
   
−
/* Infobox template style */
+
/* Functions */
−
.infobox {
 
−
    border: 1px solid #aaa;
 
−
    border-spacing: 3px;
 
−
    background-color: #f9f9f9;
 
−
    color: black;
 
−
    /* @noflip */
 
−
    margin: 0.5em 0 0.5em 1em;
 
−
    padding: 0.2em;
 
−
    /* @noflip */
 
−
    float: right;
 
−
    /* @noflip */
 
−
    clear: right;
 
−
    /* @noflip */
 
−
    text-align: left;
 
−
    font-size: 88%;
 
−
    line-height: 1.5em;
 
−
}
 
−
.infobox caption {
 
−
    font-size: 125%;
 
−
    font-weight: bold;
 
−
    padding: 0.2em;
 
−
}
 
−
.infobox td,
 
−
.infobox th {
 
−
    vertical-align: top;
 
−
}
 
−
.infobox.bordered {
 
−
    border-collapse: collapse;
 
−
}
 
−
.infobox.bordered td,
 
−
.infobox.bordered th {
 
−
    border: 1px solid #aaa;
 
−
}
 
−
.infobox.bordered .borderless td,
 
−
.infobox.bordered .borderless th {
 
−
    border: 0;
 
−
}
 
 
   
 
   
−
.infobox.sisterproject {
+
  public function skipRendering( $name ) {
−
     width: 20em;
+
     global $wgVectorHiddenUserPortals, $wgVectorHiddenAnonPortals;
−
     font-size: 90%;
+
     if ( $this->data['loggedin'] ) { 
−
}
+
      if( is_array( $wgVectorHiddenUserPortals ) ){
 +
        if( in_array( $name, $wgVectorHiddenUserPortals ) ) {
 +
          return( true ); // skip if logged-in and in array
 +
        }
 +
      }
 +
    } else {
 +
      if( is_array( $wgVectorHiddenAnonPortals ) ){
 +
        if( in_array( $name, $wgVectorHiddenAnonPortals ) ) {
 +
          return( true ); // skip if not logged-in and in array
 +
        }
 +
      }
 +
    }
 +
    return( false );
 +
  }  
 
   
 
   
−
.infobox.standard-talk {
+
  public function skipNavigation( $name ) {
−
     border: 1px solid #c0c090;
+
     global $wgVectorHiddenUserNavigation, $wgVectorHiddenAnonNavigation;
−
     background-color: #f8eaba;
+
     if ( $this->data['loggedin'] ) { 
−
}
+
      if( is_array( $wgVectorHiddenUserNavigation ) ){
−
.infobox.standard-talk.bordered td,
+
        if( in_array( $name, $wgVectorHiddenUserNavigation ) ) {
−
.infobox.standard-talk.bordered th {
+
          return( true ); // skip if logged-in and in array
−
     border: 1px solid #c0c090;
+
        }
−
}
+
      }
 +
    } else {
 +
      if( is_array( $wgVectorHiddenAnonNavigation ) ){
 +
        if( in_array( $name, $wgVectorHiddenAnonNavigation ) ) {
 +
          return( true ); // skip if not logged-in and in array
 +
        }
 +
      }
 +
    }
 +
     return( false );
 +
  }  
 
   
 
   
−
/* styles for bordered infobox with merged rows */
+
  public function renderConditionalNavigation( $navarray ) {
−
.infobox.bordered .mergedtoprow td,
+
    foreach( $navarray as $navitem ) {
−
.infobox.bordered .mergedtoprow th {
+
      $hideitem = $this->skipNavigation( $navitem );
−
    border: 0;
+
      if( !$hideitem ) { 
−
    border-top: 1px solid #aaa;
+
        $this->renderNavigation( $navitem );
−
    /* @noflip */
+
      } 
−
     border-right: 1px solid #aaa;
+
     } 
−
}
+
  }  
 
   
 
   
−
.infobox.bordered .mergedrow td,
+
/**
−
.infobox.bordered .mergedrow th {
+
* Outputs the entire contents of the (X)HTML page
−
    border: 0;
+
*/
−
    /* @noflip */
+
public function execute() {
−
    border-right: 1px solid #aaa;
+
global $wgLang, $wgVectorUseIconWatch;
−
}
 
 
   
 
   
−
/* Styles for geography infoboxes, eg countries,
+
$this->skin = $this->data['skin'];
−
  country subdivisions, cities, etc.            */
 
−
.infobox.geography {
 
−
    border-collapse: collapse;
 
−
    line-height: 1.2em;
 
−
    font-size: 90%;
 
−
}
 
 
   
 
   
−
.infobox.geography  td,
+
// Build additional attributes for navigation urls
−
.infobox.geography  th {
+
//$nav = $this->skin->buildNavigationUrls();
−
    border-top: 1px solid #aaa;
+
$nav = $this->data['content_navigation'];
−
    padding: 0.4em 0.6em 0.4em 0.6em;
 
−
}
 
−
.infobox.geography .mergedtoprow td,
 
−
.infobox.geography .mergedtoprow th {
 
−
    border-top: 1px solid #aaa;
 
−
    padding: 0.4em 0.6em 0.2em 0.6em;
 
−
}
 
 
   
 
   
−
.infobox.geography .mergedrow td,
+
if ( $wgVectorUseIconWatch ) {
−
.infobox.geography .mergedrow th {
+
$mode = $this->skin->getTitle()->userIsWatching() ? 'unwatch' : 'watch';
−
    border: 0;
+
if ( isset( $nav['actions'][$mode] ) ) {
−
    padding: 0 0.6em 0.2em 0.6em;
+
$nav['views'][$mode] = $nav['actions'][$mode];
−
}
+
$nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
 +
$nav['views'][$mode]['primary'] = true;
 +
unset( $nav['actions'][$mode] );
 +
}
 +
}
 
   
 
   
−
.infobox.geography .mergedbottomrow td,
+
$xmlID = '';
−
.infobox.geography .mergedbottomrow th {
+
    foreach ( $nav as $section => $links ) {
−
    border-top: 0;
+
      foreach ( $links as $key => $link ) {
−
    border-bottom: 1px solid #aaa;
+
        if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) {
−
    padding: 0 0.6em 0.4em 0.6em;
+
          $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' );
−
}
+
        }
 
   
 
   
−
.infobox.geography .maptable td,
+
        $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID;
−
.infobox.geography .maptable th {
+
        $nav[$section][$key]['attributes'] =
−
    border: 0;
+
          ' id="' . Sanitizer::escapeId( $xmlID ) . '"';
−
    padding: 0;
+
        if ( $link['class'] ) {
−
}
+
          $nav[$section][$key]['attributes'] .=
 +
            ' class="' . htmlspecialchars( $link['class'] ) . '"';
 +
          unset( $nav[$section][$key]['class'] );
 +
        }
 +
        if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) {
 +
          $nav[$section][$key]['key'] =
 +
            Linker::tooltip( $xmlID );
 +
        } else {
 +
          $nav[$section][$key]['key'] =
 +
            Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) );
 +
        }
 +
      }
 +
    }
 +
    $this->data['namespace_urls'] = $nav['namespaces'];
 +
    $this->data['view_urls'] = $nav['views'];
 +
    $this->data['action_urls'] = $nav['actions'];
 +
    $this->data['variant_urls'] = $nav['variants'];
 
   
 
   
−
/* Normal font styling for table row headers with scope="row" tag */
+
  // Reverse horizontally rendered navigation elements
−
.wikitable.plainrowheaders th[scope=row] {
+
     if ( $wgLang->isRTL() ) {
−
     font-weight: normal;
+
      $this->data['view_urls'] =
−
    /* @noflip */
+
        array_reverse( $this->data['view_urls'] );
−
    text-align: left;
+
      $this->data['namespace_urls'] =
−
}
+
        array_reverse( $this->data['namespace_urls'] );
−
+
      $this->data['personal_urls'] =
−
/* Lists in data cells are always left-aligned */
+
        array_reverse( $this->data['personal_urls'] );
−
.wikitable td ul,
+
     }
−
.wikitable td ol,
 
−
.wikitable td dl {
 
−
    /* @noflip */
 
−
    text-align: left;
 
−
}
 
−
/* ...unless they also use the hlist class */
 
−
.toc.hlist ul,
 
−
#toc.hlist ul,
 
−
.wikitable.hlist td ul,
 
−
.wikitable.hlist td ol,
 
−
.wikitable.hlist td dl {
 
−
    text-align: inherit;
 
−
}
 
−
 
−
/* Icons for medialist templates [[Template:Listen]],
 
−
  [[Template:Multi-listen_start]], [[Template:Video]],
 
−
  [[Template:Multi-video_start]] */
 
−
div.listenlist {
 
−
    background: url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0 0 transparent;
 
−
    background-size: 30px;
 
−
     padding-left: 40px;
 
−
}
 
 
   
 
   
−
/* Fix for hieroglyphs specificality issue in infoboxes ([[Phabricator:43869]]) */
+
// Output HTML Page
−
table.mw-hiero-table td {
+
$this->html( 'headelement' );
−
    vertical-align: middle;
+
?>
−
}
+
<div id="mw-page-base" class="noprint"></div>
−
+
<div id="mw-head-base" class="noprint"></div>
−
/* Style rules for media list templates */
+
<!-- content -->
−
div.medialist {
+
<div id="content">
−
    min-height: 50px;
+
<a id="top"></a>
−
    margin: 1em;
+
<div id="mw-js-message" style="display:none;"<?php $this->html( 'userlangattributes' ) ?>></div>
−
    /* @noflip */
+
<?php if ( $this->data['sitenotice'] ): ?>
−
    background-position: top left;
+
<!-- sitenotice -->
−
    background-repeat: no-repeat;
+
<div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
−
}
+
<!-- /sitenotice -->
−
div.medialist ul {
+
<?php endif; ?>
−
    list-style-type: none;
+
<!-- firstHeading -->
−
    list-style-image: none;
+
<h1 id="firstHeading" class="firstHeading"><?php $this->html( 'title' ) ?></h1>
−
    margin: 0;
+
<!-- /firstHeading -->
−
}
+
<!-- bodyContent -->
−
div.medialist ul li {
+
<div id="bodyContent">
−
    padding-bottom: 0.5em;
+
<?php if ( $this->data['isarticle'] ): ?>
−
}
+
<!-- tagline -->
−
div.medialist ul li li {
+
<div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
−
    font-size: 91%;
+
<!-- /tagline -->
−
    padding-bottom: 0;
+
<?php endif; ?>
−
}
+
<!-- subtitle -->
 +
<div id="contentSub"<?php $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' ) ?></div>
 +
<!-- /subtitle -->
 +
<?php if ( $this->data['undelete'] ): ?>
 +
<!-- undelete -->
 +
<div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
 +
<!-- /undelete -->
 +
<?php endif; ?>
 +
<?php if( $this->data['newtalk'] ): ?>
 +
<!-- newtalk -->
 +
<div class="usermessage"><?php $this->html( 'newtalk' )  ?></div>
 +
<!-- /newtalk -->
 +
<?php endif; ?>
 +
<?php if ( $this->data['showjumplinks'] ): ?>
 +
<!-- jumpto -->
 +
<div id="jump-to-nav">
 +
<?php $this->msg( 'jumpto' ) ?> <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a>,
 +
<a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
 +
</div>
 +
<!-- /jumpto -->
 +
<?php endif; ?>
 +
<!-- bodycontent -->
 +
<?php $this->html( 'bodycontent' ) ?>
 +
<!-- /bodycontent -->
 
   
 
   
−
/* Change the external link icon to an Adobe icon for all PDF files
+
<?php
−
  in browsers that support these CSS selectors, like Mozilla and Opera */
+
        if ( !$this->skipRendering( 'printfooter' ) ):
−
div#content a[href$=".pdf"].external,
+
          if ( $this->data['printfooter'] ): ?>
−
div#content a[href*=".pdf?"].external,
+
<!-- printfooter -->
−
div#content a[href*=".pdf#"].external,
+
<div class="printfooter">
−
div#content a[href$=".PDF"].external,
+
<?php $this->html( 'printfooter' ); ?>
−
div#content a[href*=".PDF?"].external,
+
</div>
−
div#content a[href*=".PDF#"].external,
+
<!-- /printfooter -->
−
div#mw_content a[href$=".pdf"].external,
+
<?php endif; endif; ?>
−
div#mw_content a[href*=".pdf?"].external,
+
<?php if ( $this->data['catlinks'] ): ?>
−
div#mw_content a[href*=".pdf#"].external,
+
<!-- catlinks -->
−
div#mw_content a[href$=".PDF"].external,
+
<?php $this->html( 'catlinks' ); ?>
−
div#mw_content a[href*=".PDF?"].external,
+
<!-- /catlinks -->
−
div#mw_content a[href*=".PDF#"].external {
+
<?php endif; ?>
−
    background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;
+
<?php if ( $this->data['dataAfterContent'] ): ?>
−
    /* @noflip */
+
<!-- dataAfterContent -->
−
    padding-right: 18px;
+
<?php $this->html( 'dataAfterContent' ); ?>
−
}
+
<!-- /dataAfterContent -->
 +
<?php endif; ?>
 +
<div class="visualClear"></div>
 +
<!-- debughtml -->
 +
<?php $this->html( 'debughtml' ); ?>
 +
<!-- /debughtml -->
 +
</div>
 +
<!-- /bodyContent -->
 +
</div>
 +
<!-- /content -->
 
   
 
   
−
/* Change the external link icon to an Adobe icon anywhere the PDFlink class
+
<!-- header -->
−
  is used (notably Template:PDFlink). This works in IE, unlike the above. */
+
    <div id="mw-head" class="noprint">
−
div#content span.PDFlink a,
+
      <?php $this->renderConditionalNavigation( array( 'PERSONAL' ) ); ?> 
−
div#mw_content span.PDFlink a {
+
      <div id="left-navigation">
−
    background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;
+
        <?php $this->renderConditionalNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
−
     /* @noflip */
+
      </div>
−
    padding-right: 18px;
+
      <div id="right-navigation">
−
}
+
        <?php $this->renderConditionalNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
 +
      </div>
 +
     </div>
 +
  <!-- /header -->
 
   
 
   
−
/* Content in columns with CSS instead of tables ([[Template:Columns]]) */
+
<!-- panel -->
−
div.columns-2 div.column {
+
<div id="mw-panel" class="noprint">
−
    /* @noflip */
+
<!-- logo -->
−
    float: left;
+
<div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div>
−
    width: 50%;
+
<!-- /logo -->
−
    min-width: 300px;
+
<?php $this->renderPortals( $this->data['sidebar'] ); ?>
−
}
+
</div>
−
div.columns-3 div.column {
+
<!-- /panel -->
−
    /* @noflip */
+
<!-- footer -->
−
    float: left;
+
<div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
−
    width: 33.3%;
+
<?php foreach( $this->getFooterLinks() as $category => $links ): ?>
−
    min-width: 200px;
+
<ul id="footer-<?php echo $category ?>">
−
}
+
<?php foreach( $links as $link ): ?>
−
div.columns-4 div.column {
+
<li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
−
    /* @noflip */
+
<?php endforeach; ?>
−
    float: left;
+
</ul>
−
    width: 25%;
+
<?php endforeach; ?>
−
    min-width: 150px;
+
<?php $footericons = $this->getFooterIcons("icononly");
−
}
+
if ( count( $footericons ) > 0 ): ?>
−
div.columns-5 div.column {
+
<ul id="footer-icons" class="noprint">
−
    /* @noflip */
+
<?php foreach ( $footericons as $blockName => $footerIcons ): ?>
−
    float: left;
+
<li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
−
    width: 20%;
+
<?php foreach ( $footerIcons as $icon ): ?>
−
    min-width: 120px;
+
<?php echo $this->skin->makeFooterIcon( $icon ); ?>
−
}
+
<?php endforeach; ?>
 +
</li>
 +
<?php endforeach; ?>
 +
</ul>
 +
<?php endif; ?>
 +
<div style="clear:both"></div>
 +
</div>
 +
<!-- /footer -->
 +
<!-- fixalpha -->
 +
<script type="<?php $this->text( 'jsmimetype' ) ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
 +
<!-- /fixalpha -->
 +
<?php $this->printTrail(); ?>
 
   
 
   
−
/* Messagebox templates */
+
</body>
−
.messagebox {
+
</html>
−
    border: 1px solid #aaa;
+
<?php
−
    background-color: #f9f9f9;
+
}
−
    width: 80%;
 
−
    margin: 0 auto 1em auto;
 
−
    padding: .2em;
 
−
}
 
−
.messagebox.merge {
 
−
    border: 1px solid #c0b8cc;
 
−
    background-color: #f0e5ff;
 
−
    text-align: center;
 
−
}
 
−
.messagebox.cleanup {
 
−
    border: 1px solid #9f9fff;
 
−
    background-color: #efefff;
 
−
    text-align: center;
 
−
}
 
−
.messagebox.standard-talk {
 
−
    border: 1px solid #c0c090;
 
−
    background-color: #f8eaba;
 
−
    margin: 4px auto;
 
−
}
 
−
/* For old WikiProject banners inside banner shells. */
 
−
.mbox-inside .standard-talk,
 
−
.messagebox.nested-talk {
 
−
    border: 1px solid #c0c090;
 
−
    background-color: #f8eaba;
 
−
    width: 100%;
 
−
    margin: 2px 0;
 
−
    padding: 2px;
 
−
}
 
−
.messagebox.small {
 
−
    width: 238px;
 
−
    font-size: 85%;
 
−
    /* @noflip */
 
−
    float: right;
 
−
    clear: both;
 
−
    /* @noflip */
 
−
    margin: 0 0 1em 1em;
 
−
    line-height: 1.25em;
 
−
}
 
−
.messagebox.small-talk {
 
−
    width: 238px;
 
−
    font-size: 85%;
 
−
    /* @noflip */
 
−
    float: right;
 
−
    clear: both;
 
−
    /* @noflip */
 
−
    margin: 0 0 1em 1em;
 
−
    line-height: 1.25em;
 
−
    background: #F8EABA;
 
−
}
 
 
   
 
   
−
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
+
/**
−
th.mbox-text, td.mbox-text {  /* The message body cell(s) */
+
* Render a series of portals
−
    border: none;
+
*
−
    /* @noflip */
+
* @param $portals array
−
    padding: 0.25em 0.9em;    /* 0.9em left/right */
+
*/
−
    width: 100%;              /* Make all mboxes the same width regardless of text length */
+
private function renderPortals( $portals ) {
−
}
+
     global $wgVectorHiddenAnonPortals, $wgVectorHiddenUserPortals;
−
td.mbox-image {               /* The left image cell */
+
// Force the rendering of the following portals
−
     border: none;
+
if ( !isset( $portals['SEARCH'] ) ) {
−
    /* @noflip */
+
$portals['SEARCH'] = true;
−
    padding: 2px 0 2px 0.9em;  /* 0.9em left, 0px right */
+
}
−
    text-align: center;
+
if ( !isset( $portals['TOOLBOX'] ) ) {
−
}
+
$portals['TOOLBOX'] = true;
−
td.mbox-imageright {           /* The right image cell */
+
}
−
    border: none;
+
if ( !isset( $portals['LANGUAGES'] ) ) {
−
    /* @noflip */
+
$portals['LANGUAGES'] = true;
−
    padding: 2px 0.9em 2px 0;  /* 0px left, 0.9em right */
+
}
−
    text-align: center;
+
// Render portals
−
}
+
foreach ( $portals as $name => $content ) {
−
td.mbox-empty-cell {          /* An empty narrow cell */
+
if ( $content === false  ||  $this->skipRendering( $name ) )
−
    border: none;
+
continue;
−
    padding: 0;
 
−
    width: 1px;
 
−
}
 
 
   
 
   
−
/* Article message box styles */
+
      echo "\n<!-- {$name} -->\n";
−
table.ambox {
+
switch( $name ) {
−
    margin: 0 10%;                  /* 10% = Will not overlap with other elements */
+
case 'SEARCH':
−
    border: 1px solid #aaa;
+
break;
−
    /* @noflip */
+
case 'TOOLBOX':
−
    border-left: 10px solid #1e90ff;  /* Default "notice" blue */
+
$this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
−
    background: #fbfbfb;
+
break;
−
}
+
case 'LANGUAGES':
−
table.ambox + table.ambox {     /* Single border between stacked boxes. */
+
if ( $this->data['language_urls'] ) {
−
    margin-top: -1px;
+
$this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' );
−
}
+
}
−
.ambox th.mbox-text,
+
break;
−
.ambox td.mbox-text {            /* The message body cell(s) */
 
−
    padding: 0.25em 0.5em;       /* 0.5em left/right */
 
−
}
 
−
.ambox td.mbox-image {           /* The left image cell */
 
−
    /* @noflip */
 
−
    padding: 2px 0 2px 0.5em;   /* 0.5em left, 0px right */
 
−
}
 
−
.ambox td.mbox-imageright {      /* The right image cell */
 
−
    /* @noflip */
 
−
    padding: 2px 0.5em 2px 0;   /* 0px left, 0.5em right */
 
−
}
 
 
   
 
   
−
table.ambox-notice {
+
default:
−
    /* @noflip */
+
$this->renderPortal( $name, $content );
−
    border-left: 10px solid #1e90ff;    /* Blue */
+
break;
−
}
+
}
−
table.ambox-speedy {
+
echo "\n<!-- /{$name} -->\n";
−
    /* @noflip */
+
}
−
    border-left: 10px solid #b22222;    /* Red */
+
}
−
    background: #fee;                   /* Pink */
 
−
}
 
−
table.ambox-delete {
 
−
    /* @noflip */
 
−
    border-left: 10px solid #b22222;   /* Red */
 
−
}
 
−
table.ambox-content {
 
−
    /* @noflip */
 
−
    border-left: 10px solid #f28500;    /* Orange */
 
−
}
 
−
table.ambox-style {
 
−
    /* @noflip */
 
−
    border-left: 10px solid #f4c430;    /* Yellow */
 
−
}
 
−
table.ambox-move {
 
−
    /* @noflip */
 
−
    border-left: 10px solid #9932cc;   /* Purple */
 
−
}
 
−
table.ambox-protection {
 
−
    /* @noflip */
 
−
    border-left: 10px solid #bba;      /* Gray-gold */
 
−
}
 
 
   
 
   
−
/* Image message box styles */
+
// If renderPortal in Vector was public we could have avoided it here...
−
table.imbox {
+
private function renderPortal( $name, $content, $msg = null, $hook = null ) {
−
    margin: 4px 10%;
+
if ( !isset( $msg ) ) {
−
    border-collapse: collapse;
+
$msg = $name;
−
    border: 3px solid #1e90ff;   /* Default "notice" blue */
+
}
−
    background: #fbfbfb;
+
?>
−
}
+
<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo Linker::tooltip( 'p-' . $name ) ?>>
−
.imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */
+
<h5<?php $this->html( 'userlangattributes' ) ?>><?php $msgObj = wfMessage( $msg ); echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg ); ?></h5>
−
    margin: 0 -0.5em;       /* 0.9 - 0.5 = 0.4em left/right.        */
+
<div class="body">
−
    display: block;         /* Fix for webkit to force 100% width.  */
+
<?php
−
}
+
if ( is_array( $content ) ): ?>
−
.mbox-inside .imbox {      /* For imboxes inside other templates.  */
+
<ul>
−
    margin: 4px;
+
<?php
−
}
+
foreach( $content as $key => $val ):  
 +
        echo $this->makeListItem( $key, $val );  
 +
endforeach;
 +
if ( isset( $hook ) ) {
 +
wfRunHooks( $hook, array( &$this, true ) );
 +
}
 +
?>
 +
</ul>
 +
<?php
 +
else:  
 +
      echo $content; /* Allow raw HTML block to be defined by extensions */
 +
endif; ?>
 +
</div>
 +
</div>
 +
<?php
 +
}
 
   
 
   
−
table.imbox-notice {
+
/**
−
    border: 3px solid #1e90ff;    /* Blue */
+
* Render one or more navigations elements by name, automatically reveresed
−
}
+
* when UI is in RTL mode
−
table.imbox-speedy {
+
*/
−
    border: 3px solid #b22222;    /* Red */
+
private function renderNavigation( $elements ) {
−
    background: #fee;            /* Pink */
+
// If renderNavigation in Vector was public we could have avoided renderNavigation here...  
−
}
+
global $wgVectorUseSimpleSearch, $wgVectorShowVariantName, $wgUser, $wgLang;
−
table.imbox-delete {
 
−
    border: 3px solid #b22222;    /* Red */
 
−
}
 
−
table.imbox-content {
 
−
    border: 3px solid #f28500;    /* Orange */
 
−
}
 
−
table.imbox-style {
 
−
    border: 3px solid #f4c430;    /* Yellow */
 
−
}
 
−
table.imbox-move {
 
−
    border: 3px solid #9932cc;    /* Purple */
 
−
}
 
−
table.imbox-protection {
 
−
    border: 3px solid #bba;      /* Gray-gold */
 
−
}
 
−
table.imbox-license {
 
−
    border: 3px solid #88a;      /* Dark gray */
 
−
    background: #f7f8ff;          /* Light gray */
 
−
}
 
−
table.imbox-featured {
 
−
    border: 3px solid #cba135;   /* Brown-gold */
 
−
}
 
 
   
 
   
−
/* Category message box styles */
+
// If only one element was given, wrap it in an array, allowing more
−
table.cmbox {
+
// flexible arguments
−
    margin: 3px 10%;
+
if ( !is_array( $elements ) ) {
−
    border-collapse: collapse;
+
$elements = array( $elements );
−
    border: 1px solid #aaa;
+
// If there's a series of elements, reverse them when in RTL mode
−
    background: #DFE8FF;   /* Default "notice" blue */
+
} elseif ( $wgLang->isRTL() ) {
−
}
+
$elements = array_reverse( $elements );
 +
}
 +
// Render elements
 +
foreach ( $elements as $name => $element ) {
 +
echo "\n<!-- {$name} -->\n";
 +
switch ( $element ) {
 +
case 'NAMESPACES':
 +
?>
 +
<div id="p-namespaces" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
 +
<h5><?php $this->msg( 'namespaces' ) ?></h5>
 +
<ul<?php $this->html( 'userlangattributes' ) ?>>
 +
<?php foreach ( $this->data['namespace_urls'] as $link ): ?>
 +
<li <?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></span></li>
 +
<?php endforeach; ?>
 +
</ul>
 +
</div>
 +
<?php
 +
break;
 +
case 'VARIANTS':
 +
?>
 +
<div id="p-variants" class="vectorMenu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
 +
<?php if ( $wgVectorShowVariantName ): ?>
 +
<h4>
 +
<?php foreach ( $this->data['variant_urls'] as $link ): ?>
 +
<?php if ( stripos( $link['attributes'], 'selected' ) !== false ): ?>
 +
<?php echo htmlspecialchars( $link['text'] ) ?>
 +
<?php endif; ?>
 +
<?php endforeach; ?>
 +
</h4>
 +
<?php endif; ?>
 +
<h5><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h5>
 +
<div class="menu">
 +
<ul<?php $this->html( 'userlangattributes' ) ?>>
 +
<?php foreach ( $this->data['variant_urls'] as $link ): ?>
 +
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
 +
<?php endforeach; ?>
 +
</ul>
 +
</div>
 +
</div>
 +
<?php
 +
break;
 +
case 'VIEWS':
 +
?>
 +
<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) { echo ' emptyPortlet'; } ?>">
 +
<h5><?php $this->msg('views') ?></h5>
 +
<ul<?php $this->html('userlangattributes') ?>>
 +
<?php foreach ( $this->data['view_urls'] as $link ): ?>
 +
<li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php
 +
// $link['text'] can be undefined - bug 27764
 +
if ( array_key_exists( 'text', $link ) ) {
 +
echo array_key_exists( 'img', $link ) ?  '<img src="' . $link['img'] . '" alt="' . $link['text'] . '" />' : htmlspecialchars( $link['text'] );
 +
}
 +
?></a></span></li>
 +
<?php endforeach; ?>
 +
</ul>
 +
</div>
 +
<?php
 +
break;
 +
case 'ACTIONS':
 +
?>
 +
<div id="p-cactions" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
 +
<h5><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h5>
 +
<div class="menu">
 +
<ul<?php $this->html( 'userlangattributes' ) ?>>
 +
<?php foreach ( $this->data['action_urls'] as $link ): ?>
 +
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
 +
<?php endforeach; ?>
 +
</ul>
 +
</div>
 +
</div>
 +
<?php
 +
break;
 +
case 'PERSONAL':
 +
?>
 +
<div id="p-personal" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
 +
<h5><?php $this->msg( 'personaltools' ) ?></h5>
 +
<ul<?php $this->html( 'userlangattributes' ) ?>>
 +
<?php foreach( $this->getPersonalTools() as $key => $item ) { ?>
 +
<?php echo $this->makeListItem( $key, $item ); ?>
 
   
 
   
−
table.cmbox-notice {
+
<?php } ?>
−
    background: #D8E8FF;    /* Blue */
+
</ul>
−
}
+
</div>
−
table.cmbox-speedy {
+
<?php
−
    margin-top: 4px;
+
break;
−
    margin-bottom: 4px;
+
case 'SEARCH':
−
    border: 4px solid #b22222;    /* Red */
+
?>
−
    background: #FFDBDB;          /* Pink */
+
<div id="p-search">
−
}
+
<h5<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
−
table.cmbox-delete {
+
<form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
−
    background: #FFDBDB;   /* Red */
+
<input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
−
}
+
<?php if ( $wgVectorUseSimpleSearch && $wgUser->getOption( 'vector-simplesearch' ) ): ?>
−
table.cmbox-content {
+
<div id="simpleSearch">
−
    background: #FFE7CE;    /* Orange */
+
<?php if ( $this->data['rtl'] ): ?>
−
}
+
<?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-rtl.png' ) ) ); ?>
−
table.cmbox-style {
+
<?php endif; ?>
−
    background: #FFF9DB;    /* Yellow */
+
<?php echo $this->makeSearchInput( array( 'id' => 'searchInput', 'type' => 'text' ) ); ?>
−
}
+
<?php if ( !$this->data['rtl'] ): ?>
−
table.cmbox-move {
+
<?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-ltr.png' ) ) ); ?>
−
    background: #E4D8FF;    /* Purple */
+
<?php endif; ?>
−
}
+
</div>
−
table.cmbox-protection {
+
<?php else: ?>
−
    background: #EFEFE1;    /* Gray-gold */
+
<?php echo $this->makeSearchInput( array( 'id' => 'searchInput' ) ); ?>
−
}
+
<?php echo $this->makeSearchButton( 'go', array( 'id' => 'searchGoButton', 'class' => 'searchButton' ) ); ?>
−
+
<?php echo $this->makeSearchButton( 'fulltext', array( 'id' => 'mw-searchButton', 'class' => 'searchButton' ) ); ?>
−
/* Other pages message box styles */
+
<?php endif; ?>
−
table.ombox {
+
</form>
−
    margin: 4px 10%;
+
</div>
−
    border-collapse: collapse;
+
<?php
−
    border: 1px solid #aaa;      /* Default "notice" gray */
 
−
    background: #f9f9f9;
 
−
}
 
−
 
−
table.ombox-notice {
 
−
    border: 1px solid #aaa;      /* Gray */
 
−
}
 
−
table.ombox-speedy {
 
−
    border: 2px solid #b22222;    /* Red */
 
−
    background: #fee;            /* Pink */
 
−
}
 
−
table.ombox-delete {
 
−
    border: 2px solid #b22222;    /* Red */
 
−
}
 
−
table.ombox-content {
 
−
    border: 1px solid #f28500;    /* Orange */
 
−
}
 
−
table.ombox-style {
 
−
    border: 1px solid #f4c430;    /* Yellow */
 
−
}
 
−
table.ombox-move {
 
−
    border: 1px solid #9932cc;    /* Purple */
 
−
}
 
−
table.ombox-protection {
 
−
    border: 2px solid #bba;      /* Gray-gold */
 
−
}
 
−
 
−
/* Talk page message box styles */
 
−
table.tmbox {
 
−
    margin: 4px 10%;
 
−
    border-collapse: collapse;
 
−
    border: 1px solid #c0c090;    /* Default "notice" gray-brown */
 
−
    background: #f8eaba;
 
−
}
 
−
.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
 
−
    margin: 2px 0;              /* this declaration overrides other styles (including mbox-small above)   */
 
−
    width: 100%;                /* For Safari and Opera */
 
−
}
 
−
.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when  */
 
−
    line-height: 1.5em;          /* also "nested", so reset styles that are  */
 
−
    font-size: 100%;            /* set in "mbox-small" above.                */
 
−
}
 
−
 
−
table.tmbox-speedy {
 
−
    border: 2px solid #b22222;    /* Red */
 
−
    background: #fee;            /* Pink */
 
−
}
 
−
table.tmbox-delete {
 
−
    border: 2px solid #b22222;    /* Red */
 
−
}
 
−
table.tmbox-content {
 
−
    border: 2px solid #f28500;    /* Orange */
 
−
}
 
−
table.tmbox-style {
 
−
    border: 2px solid #f4c430;    /* Yellow */
 
−
}
 
−
table.tmbox-move {
 
−
    border: 2px solid #9932cc;    /* Purple */
 
−
}
 
−
table.tmbox-protection,
 
−
table.tmbox-notice {
 
−
    border: 1px solid #c0c090;    /* Gray-brown */
 
−
}
 
−
 
−
/* Disambig and set index box styles */
 
−
table.dmbox {
 
−
    clear: both;
 
−
    margin: 0.9em 1em;
 
−
    border-top: 1px solid #ccc;
 
−
    border-bottom: 1px solid #ccc;
 
−
    background: transparent;
 
−
}
 
−
 
−
/* Footer and header message box styles */
 
−
table.fmbox {
 
−
    clear: both;
 
−
    margin: 0.2em 0;
 
−
    width: 100%;
 
−
    border: 1px solid #aaa;
 
−
    background: #f9f9f9;    /* Default "system" gray */
 
−
}
 
−
table.fmbox-system {
 
−
    background: #f9f9f9;
 
−
}
 
−
table.fmbox-warning {
 
−
    border: 1px solid #bb7070;  /* Dark pink */
 
−
    background: #ffdbdb;        /* Pink */
 
−
}
 
−
table.fmbox-editnotice {
 
−
    background: transparent;
 
−
}
 
−
/* Div based "warning" style fmbox messages. */
 
−
div.mw-warning-with-logexcerpt,
 
−
div.mw-lag-warn-high,
 
−
div.mw-cascadeprotectedwarning,
 
−
div#mw-protect-cascadeon,
 
−
div.titleblacklist-warning {
 
−
    clear: both;
 
−
    margin: 0.2em 0;
 
−
    border: 1px solid #bb7070;
 
−
    background: #ffdbdb;
 
−
    padding: 0.25em 0.9em;
 
−
}
 
−
/* Div based "system" style fmbox messages.
 
−
  Used in [[MediaWiki:Readonly lag]]. */
 
−
div.mw-lag-warn-normal,
 
−
div.fmbox-system {
 
−
    clear: both;
 
−
    margin: 0.2em 0;
 
−
    border: 1px solid #aaa;
 
−
    background: #f9f9f9;
 
−
    padding: 0.25em 0.9em;
 
−
}
 
−
 
−
/* These mbox-small classes must be placed after all other
 
−
  ambox/tmbox/ombox etc classes. "body.mediawiki" is so
 
−
  they override "table.ambox + table.ambox" above. */
 
−
body.mediawiki table.mbox-small {  /* For the "small=yes" option. */
 
−
    /* @noflip */
 
−
    clear: right;
 
−
    /* @noflip */
 
−
    float: right;
 
−
    /* @noflip */
 
−
    margin: 4px 0 4px 1em;
 
−
    width: 238px;
 
−
    font-size: 88%;
 
−
    line-height: 1.25em;
 
−
}
 
−
body.mediawiki table.mbox-small-left {  /* For the "small=left" option. */
 
−
    /* @noflip */
 
−
    margin: 4px 1em 4px 0;
 
−
    width: 238px;
 
−
    border-collapse: collapse;
 
−
    font-size: 88%;
 
−
    line-height: 1.25em;
 
−
}
 
−
 
−
/* Style for compact ambox */
 
−
/* Hide the images */
 
−
.compact-ambox table .mbox-image,
 
−
.compact-ambox table .mbox-imageright,
 
−
.compact-ambox table .mbox-empty-cell {
 
−
    display: none;
 
−
}
 
−
/* Remove borders, backgrounds, padding, etc. */
 
−
.compact-ambox table.ambox {
 
−
    border: none;
 
−
    border-collapse: collapse;
 
−
    background: transparent;
 
−
    margin: 0 0 0 1.6em !important;
 
−
    padding: 0 !important;
 
−
    width: auto;
 
−
    display: block;
 
−
}
 
−
body.mediawiki .compact-ambox table.mbox-small-left {
 
−
    font-size: 100%;
 
−
    width: auto;
 
−
    margin: 0;
 
−
}
 
−
/* Style the text cell as a list item and remove its padding */
 
−
.compact-ambox table .mbox-text {
 
−
    padding: 0 !important;
 
−
    margin: 0 !important;
 
−
}
 
−
.compact-ambox table .mbox-text-span {
 
−
    display: list-item;
 
−
    line-height: 1.5em;
 
−
    list-style-type: square;
 
−
    list-style-image: url(//bits.wikimedia.org/static-current/skins/MonoBook/bullet.gif);
 
−
}
 
−
.skin-vector .compact-ambox table .mbox-text-span {
 
−
    list-style-type: disc;
 
−
    list-style-image: url(//bits.wikimedia.org/static-current/skins/Vector/images/bullet-icon.png)
 
−
}
 
−
/* Allow for hiding text in compact form */
 
−
.compact-ambox .hide-when-compact {
 
−
    display: none;
 
−
}
 
−
 
−
/* Remove default styles for [[MediaWiki:Noarticletext]]. */
 
−
div.noarticletext {
 
−
    border: none;
 
−
    background: transparent;
 
−
    padding: 0;
 
−
}
 
−
 
−
/* Hide (formatting) elements from screen, but not from screenreaders */
 
−
.visualhide {
 
−
    position: absolute;
 
−
    left: -10000px;
 
−
    top: auto;
 
−
    width: 1px;
 
−
    height: 1px;
 
−
    overflow: hidden;
 
−
}
 
−
 
−
/* Bold save button */
 
−
#wpSave {
 
−
    font-weight: bold;
 
−
}
 
−
 
−
/* class hiddenStructure is defunct. See [[Wikipedia:hiddenStructure]] */
 
−
.hiddenStructure {
 
−
    display: inline !important;
 
−
    color: #f00;
 
−
    background-color: #0f0;
 
−
}
 
−
 
−
/* suppress missing interwiki image links where #ifexist cannot
 
−
  be used due to high number of requests see .hidden-redlink on
 
−
  [[m:MediaWiki:Common.css]] */
 
−
.check-icon a.new {
 
−
    display: none;
 
−
    speak: none;
 
−
}
 
−
 
−
/* Removes underlines from certain links */
 
−
.nounderlines a,
 
−
.IPA a:link, .IPA a:visited {
 
−
    text-decoration: none !important;
 
−
}
 
−
 
−
/* Standard Navigationsleisten, aka box hiding thingy
 
−
  from .de.  Documentation at [[Wikipedia:NavFrame]]. */
 
−
div.NavFrame {
 
−
    margin: 0;
 
−
    padding: 4px;
 
−
    border: 1px solid #aaa;
 
−
    text-align: center;
 
−
    border-collapse: collapse;
 
−
    font-size: 95%;
 
−
}
 
−
div.NavFrame + div.NavFrame {
 
−
    border-top-style: none;
 
−
    border-top-style: hidden;
 
−
}
 
−
div.NavPic {
 
−
    background-color: #fff;
 
−
    margin: 0;
 
−
    padding: 2px;
 
−
    /* @noflip */
 
−
    float: left;
 
−
}
 
−
div.NavFrame div.NavHead {
 
−
    line-height: 1.6em;
 
−
    font-weight: bold;
 
−
    background-color: #ccf;
 
−
    position: relative;
 
−
}
 
−
div.NavFrame p,
 
−
div.NavFrame div.NavContent,
 
−
div.NavFrame div.NavContent p {
 
−
    font-size: 100%;
 
−
}
 
−
div.NavEnd {
 
−
    margin: 0;
 
−
    padding: 0;
 
−
    line-height: 1px;
 
−
    clear: both;
 
−
}
 
−
a.NavToggle {
 
−
    position: absolute;
 
−
    top: 0;
 
−
    /* @noflip */
 
−
    right: 3px;
 
−
    font-weight: normal;
 
−
    font-size: 90%;
 
−
}
 
−
 
−
/* Hatnotes and disambiguation notices */
 
−
.hatnote {
 
−
    font-style: italic;
 
−
}
 
−
.hatnote i {
 
−
    font-style: normal;
 
−
}
 
−
div.hatnote {
 
−
    /* @noflip */
 
−
    padding-left: 1.6em;
 
−
    margin-bottom: 0.5em;
 
−
}
 
−
div.hatnote + div.hatnote {
 
−
    margin-top: -0.5em;
 
−
}
 
−
 
−
/* Allow transcluded pages to display in lists rather than a table.
 
−
  Compatible in Firefox; incompatible in IE6. */
 
−
.listify td    { display: list-item; }
 
−
.listify tr    { display: block; }
 
−
.listify table { display: block; }
 
−
 
−
/* Geographical coordinates defaults. See [[Template:Coord/link]]
 
−
  for how these are used. The classes "geo", "longitude", and
 
−
  "latitude" are used by the [[Geo microformat]]. */
 
−
.geo-default, .geo-dms, .geo-dec  { display: inline; }
 
−
.geo-nondefault, .geo-multi-punct { display: none; }
 
−
.longitude, .latitude            { white-space: nowrap; }
 
−
 
−
/* When <div class="nonumtoc"> is used on the table of contents,
 
−
  the ToC will display without numbers */
 
−
.nonumtoc .tocnumber {
 
−
    display: none;
 
−
}
 
−
.nonumtoc #toc ul,
 
−
.nonumtoc .toc ul {
 
−
    line-height: 1.5em;
 
−
    list-style: none none;
 
−
    margin: .3em 0 0;
 
−
    padding: 0;
 
−
}
 
−
.hlist.nonumtoc #toc ul ul,
 
−
.hlist.nonumtoc .toc ul ul {
 
−
    /* @noflip */
 
−
    margin: 0;
 
−
}
 
−
 
−
/* Allow limiting of which header levels are shown in a TOC;
 
−
  <div class="toclimit-3">, for instance, will limit to
 
−
  showing ==headings== and ===headings=== but no further
 
−
  (as long as there are no =headings= on the page, which
 
−
  there shouldn't be according to the MoS). */
 
−
.toclimit-2 .toclevel-1 ul,
 
−
.toclimit-3 .toclevel-2 ul,
 
−
.toclimit-4 .toclevel-3 ul,
 
−
.toclimit-5 .toclevel-4 ul,
 
−
.toclimit-6 .toclevel-5 ul,
 
−
.toclimit-7 .toclevel-6 ul {
 
−
    display: none;
 
−
}
 
−
 
−
/* Styling for Template:Quote */
 
−
blockquote.templatequote {
 
−
    margin-top: 0;
 
−
}
 
−
blockquote.templatequote div.templatequotecite {
 
−
    line-height: 1.5em;
 
−
    /* @noflip */
 
−
    text-align: left;
 
−
    /* @noflip */
 
−
    padding-left: 1.6em;
 
−
    margin-top: 0;
 
−
}
 
−
 
−
/* User block messages */
 
−
div.user-block {
 
−
    padding: 5px;
 
−
    margin-bottom: 0.5em;
 
−
    border: 1px solid #A9A9A9;
 
−
    background-color: #FFEFD5;
 
−
}
 
−
 
−
/* Prevent line breaks in silly places:
 
−
  1) Where desired
 
−
  2) Links when we don't want them to
 
−
  3) Bold "links" to the page itself
 
−
  4) Ref tags with group names <ref group="Note"> --> "[Note 1]" */
 
−
.nowrap,
 
−
.nowraplinks a,
 
−
.nowraplinks .selflink,
 
−
sup.reference a {
 
−
    white-space: nowrap;
 
−
}
 
−
/* But allow wrapping where desired: */
 
−
.wrap,
 
−
.wraplinks a {
 
−
    white-space: normal;
 
−
}
 
−
 
−
/* For template documentation */
 
−
.template-documentation {
 
−
    clear: both;
 
−
    margin: 1em 0 0 0;
 
−
    border: 1px solid #aaa;
 
−
    background-color: #ecfcf4;
 
−
    padding: 1em;
 
−
}
 
−
 
−
/* Inline divs in ImageMaps (code borrowed from de.wiki) */
 
−
.imagemap-inline div {
 
−
    display: inline;
 
−
}
 
−
 
−
/* Increase the height of the image upload box */
 
−
#wpUploadDescription {
 
−
    height: 13em;
 
−
}
 
−
 
−
/* Minimum thumb width */
 
−
.thumbinner {
 
−
    min-width: 100px;
 
−
}
 
−
 
−
/* Makes the background of a framed image white instead of gray.
 
−
  Only visible with transparent images. */
 
−
div.thumb .thumbimage {
 
−
    background-color: #fff;
 
−
}
 
−
 
−
/* The backgrounds for galleries. */
 
−
div#content .gallerybox div.thumb {
 
−
    /* Light gray padding */
 
−
    background-color: #F9F9F9;
 
−
}
 
−
/* Put a chequered background behind images, only visible if they have transparency.
 
−
  '.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */
 
−
.gallerybox .thumb img {
 
−
    background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
 
−
}
 
−
/* But not on articles, user pages, portals or with opt-out. */
 
−
.ns-0 .gallerybox .thumb img,
 
−
.ns-2 .gallerybox .thumb img,
 
−
.ns-100 .gallerybox .thumb img,
 
−
.nochecker .gallerybox .thumb img {
 
−
    background: #fff;
 
−
}
 
−
 
−
/* Prevent floating boxes from overlapping any category listings,
 
−
  file histories, edit previews, and edit [Show changes] views. */
 
−
#mw-subcategories, #mw-pages, #mw-category-media,
 
−
#filehistory, #wikiPreview, #wikiDiff {
 
−
    clear: both;
 
−
}
 
−
 
−
body.rtl #mw-articlefeedbackv5, body.rtl #mw-articlefeedback {
 
−
    display: block;  /* Override inline block mode */
 
−
    margin-bottom: 1em;
 
−
    /* @noflip */
 
−
    clear: right;    /* Clear any info boxes that stick out */
 
−
    /* @noflip */
 
−
    float: right;    /* Prevents margin collapsing */
 
−
}
 
−
 
−
/* Selectively hide headers in WikiProject banners */
 
−
.wpb .wpb-header            { display: none; }
 
−
.wpbs-inner .wpb .wpb-header { display: block; }    /* for IE */
 
−
.wpbs-inner .wpb .wpb-header { display: table-row; } /* for real browsers */
 
−
.wpbs-inner .wpb-outside    { display: none; }      /* hide things that should only display outside shells */
 
−
 
−
/* Styling for Abuse Filter tags */
 
−
.mw-tag-markers {
 
−
    font-family:sans-serif;
 
−
    font-style:italic;
 
−
    font-size:90%;
 
−
}
 
−
 
−
/* Hide stuff meant for accounts with special permissions. Made visible again in
 
−
  [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-accountcreator.css]],
 
−
  [[MediaWiki:Group-templateeditor.css]] and [[Mediawiki:Group-autoconfirmed.css]]. */
 
−
.sysop-show,
 
−
.accountcreator-show,
 
−
.templateeditor-show,
 
−
.autoconfirmed-show {
 
−
    display: none;
 
−
}
 
−
 
−
/**
 
−
* Hide the redlink generated by {{Editnotice}},
 
−
* this overrides the ".sysop-show { display: none; }" above that applies
 
−
* to the same link as well.
 
−
*
 
−
* See [[Phabricator:45013]].
 
−
*/
 
−
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .mw-ve-editNotice .editnotice-redlink {
 
−
    display: none !important;
 
−
}
 
−
 
−
/* Remove bullets when there are multiple edit page warnings */
 
−
ul.permissions-errors > li {
 
−
    list-style: none none;
 
−
}
 
−
ul.permissions-errors {
 
−
    margin: 0;
 
−
}
 
−
 
−
/* No linewrap on the labels of the login/signup page */
 
−
body.page-Special_UserLogin .mw-label label,
 
−
body.page-Special_UserLogin_signup .mw-label label {
 
−
    white-space: nowrap;
 
−
}
 
−
 
−
/* Pie chart test: Transparent borders */
 
−
.transborder {
 
−
    border: solid transparent;
 
−
}
 
−
* html .transborder {  /* IE6 */
 
−
    border: solid #000001;
 
−
    filter: chroma(color=#000001);
 
−
}
 
−
 
−
/* Styling for updated markers on watchlist, history and recent/related changes.
 
−
  Bullets are handled in skin-specific stylesheets. */
 
−
.updatedmarker {
 
−
    background-color: transparent;
 
−
    color: #006400;
 
−
}
 
−
li.mw-changeslist-line-watched .mw-title,
 
−
table.mw-changeslist-line-watched .mw-title,
 
−
table.mw-enhanced-watch .mw-enhanced-rctime {
 
−
    font-weight: normal;
 
−
}
 
−
 
−
/* Generic class for Times-based serif, texhtml class for inline math */
 
−
.times-serif,
 
−
span.texhtml {
 
−
    font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
 
−
    font-size: 118%;
 
−
    line-height: 1;
 
−
}
 
−
span.texhtml {
 
−
    white-space: nowrap;
 
−
}
 
−
span.texhtml span.texhtml {
 
−
    font-size: 100%;
 
−
}
 
−
 
−
/* Force tabular and lining display for digits and texhtml */
 
−
.digits,
 
−
.texhtml {
 
−
    -moz-font-feature-settings: "lnum", "tnum";
 
−
    -webkit-font-feature-settings: "lnum", "tnum";
 
−
    font-feature-settings: "lnum", "tnum";
 
−
}
 
−
 
−
/* Display tabs with 4 spaces, see [[Phabricator:59824]] and [[Phabricator:59825]] */
 
−
div.mw-geshi div,
 
−
div.mw-geshi div pre,
 
−
span.mw-geshi,
 
−
pre.source-css,
 
−
pre.source-javascript,
 
−
pre.source-lua {
 
−
    -moz-tab-size: 4;
 
−
    -o-tab-size: 4;
 
−
    tab-size: 4;
 
−
}
 
−
 
−
/* Fix styling of transcluded prefindex tables */
 
−
table#mw-prefixindex-list-table,
 
−
table#mw-prefixindex-nav-table {
 
−
    width: 98%;
 
−
}
 
−
 
−
/* For portals, added 2011-12-07 -bv
 
−
  On wide screens, show these as two columns
 
−
  On narrow and mobile screens, let them collapse into a single column */
 
−
.portal-column-left {
 
−
    float: left;
 
−
    width: 50%;
 
−
}
 
−
.portal-column-right {
 
−
    float: right;
 
−
    width: 49%;
 
−
}
 
−
.portal-column-left-wide {
 
−
    float: left;
 
−
    width: 60%;
 
−
}
 
−
.portal-column-right-narrow {
 
−
    float: right;
 
−
    width: 39%;
 
−
}
 
−
.portal-column-left-extra-wide {
 
−
    float: left;
 
−
    width: 70%;
 
−
}
 
−
.portal-column-right-extra-narrow {
 
−
    float: right;
 
−
    width: 29%;
 
−
}
 
−
@media only screen and (max-width: 800px) {
 
−
    /* Decouple the columns on narrow screens */
 
−
    .portal-column-left,
 
−
    .portal-column-right,
 
−
    .portal-column-left-wide,
 
−
    .portal-column-right-narrow,
 
−
    .portal-column-left-extra-wide,
 
−
    .portal-column-right-extra-narrow {
 
−
        float: inherit;
 
−
        width: inherit;
 
−
    }
 
−
}
 
−
 
−
/* For announcements */
 
−
#bodyContent .letterhead {
 
−
    background-image:url('//upload.wikimedia.org/wikipedia/commons/e/e0/Tan-page-corner.png');
 
−
    background-repeat:no-repeat;
 
−
    padding: 2em;
 
−
    background-color: #faf9f2;
 
−
}
 
−
 
−
/* Tree style lists */
 
−
.treeview ul {
 
−
    padding: 0;
 
−
    margin: 0;
 
−
}
 
−
.treeview li {
 
−
    padding: 0;
 
−
    margin: 0;
 
−
    list-style-type: none;
 
−
    list-style-image: none;
 
−
    zoom: 1; /* BE KIND TO IE6 */;
 
−
}
 
−
.treeview li li {
 
−
    background: url("//upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px;
 
−
    /* @noflip */
 
−
    padding-left: 20px;
 
−
    text-indent: 0.3em;
 
−
}
 
−
.treeview li li.lastline {
 
−
    background-position: 0 -5971px
 
−
}
 
−
.treeview li.emptyline > ul {
 
−
    /* @noflip */
 
−
    margin-left: -1px;
 
−
}
 
−
.treeview li.emptyline > ul > li:first-child {
 
−
    background-position: 0 9px
 
−
}
 
−
 
−
/* hidden sortkey for tablesorter */
 
−
td .sortkey,
 
−
th .sortkey {
 
−
    display: none;
 
−
    speak: none;
 
−
}
 
−
 
−
/* Make it possible to hide checkboxes in <inputbox> */
 
−
.inputbox-hidecheckboxes form .inputbox-element {
 
−
    display: none !important;
 
−
}
 
−
 
−
/* Work-around for [[Phabricator:25965]] (Kaltura advertisement) */
 
−
.k-player .k-attribution {
 
−
    visibility: hidden;
 
−
}
 
−
 
−
/* Move 'play' button of video player to bottom left corner */
 
−
.PopUpMediaTransform a .play-btn-large {
 
−
    margin: 0;
 
−
    top: auto;
 
−
    right: auto;
 
−
    bottom: 0;
 
−
    left: 0;
 
−
}
 
 
   
 
   
−
/* Workaround to keep editnotices readable in VE view.
+
break;
−
  Long term, editnotices should become a core feature so that they can be designed responsive. */
+
}
−
.mw-ve-editNotice .mbox-image {
+
echo "\n<!-- /{$name} -->\n";
−
display: none;
+
}
 +
}
 
}
 
}

Текущая версия на 22:48, 5 мая 2015

/* Размещённый здесь CSS будет применяться к векторной теме оформления  */
<?php
/**
 * VectorX - Derivative of Vector skin
 *  
 * $wgVectorHiddenAnonPortals = array( 'TOOLBOX', 'navigation' );
 * $wgVectorHiddenUserPortals = array( 'anonnavigation' );
 * $wgVectorHiddenAnonNavigation = array( 'VIEWS', 'ACTIONS', 'NAMESPACES', 'VARIANTS' );
 * $wgVectorHiddenUserNavigation = array();
 *
 * @todo document
 * @file
 * @ingroup Skins
 */
 
if( !defined( 'MEDIAWIKI' ) ) {
	die( -1 );
}
 
require_once( "Vector.php" );
 
/**
 * SkinTemplate class for VectorX skin
 * @ingroup Skins
 */
class SkinVectorX extends SkinVector {
 
	var $skinname = 'vectorx', $stylename = 'vectorx',
		$template = 'VectorXTemplate', $useHeadElement = true;
 
	/**
	 * Initializes output page and sets up skin-specific parameters
	 * @param $out OutputPage object to initialize
	 */
	public function initPage( OutputPage $out ) {
		global $wgLocalStylePath, $wgRequest;
 
		parent::initPage( $out );
 
		// Append CSS which includes IE only behavior fixes for hover support -
		// this is better than including this in a CSS fille since it doesn't
		// wait for the CSS file to load before fetching the HTC file.
		$min = $wgRequest->getFuzzyBool( 'debug' ) ? '' : '.min';
		$out->addHeadItem( 'csshover',
			'<!--[if lt IE 7]><style type="text/css">body{behavior:url("' .
				htmlspecialchars( $wgLocalStylePath ) .
				"/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
		);
 
		$out->addModuleScripts( 'skins.vectorx' );
	}
 
	/**
	 * Load skin and user CSS files in the correct order
	 * fixes bug 22916
	 * @param $out OutputPage object
	 */
	function setupSkinUserCss( OutputPage $out ){
		parent::setupSkinUserCss( $out );
		$out->addModuleStyles( 'skins.vectorx' );
	}
}
 
/**
 * Derivative of VectorTemplate class for VectorX skin
 * @ingroup Skins
 */
class VectorXTemplate extends VectorTemplate {
 
	/* Functions */
 
  public function skipRendering( $name ) {
    global $wgVectorHiddenUserPortals, $wgVectorHiddenAnonPortals;
    if ( $this->data['loggedin'] ) {  
      if( is_array( $wgVectorHiddenUserPortals ) ){
        if( in_array( $name, $wgVectorHiddenUserPortals ) ) {
          return( true ); // skip if logged-in and in array
        }
      }
    } else {
      if( is_array( $wgVectorHiddenAnonPortals ) ){
        if( in_array( $name, $wgVectorHiddenAnonPortals ) ) {
          return( true ); // skip if not logged-in and in array
        }
      }
    } 
    return( false );
  }    
 
  public function skipNavigation( $name ) {
    global $wgVectorHiddenUserNavigation, $wgVectorHiddenAnonNavigation;
    if ( $this->data['loggedin'] ) {  
      if( is_array( $wgVectorHiddenUserNavigation ) ){
        if( in_array( $name, $wgVectorHiddenUserNavigation ) ) {
          return( true ); // skip if logged-in and in array
        }
      }
    } else {
      if( is_array( $wgVectorHiddenAnonNavigation ) ){
        if( in_array( $name, $wgVectorHiddenAnonNavigation ) ) {
          return( true ); // skip if not logged-in and in array
        }
      }
    } 
    return( false );
  }    
 
  public function renderConditionalNavigation( $navarray ) {
    foreach( $navarray as $navitem ) {
      $hideitem = $this->skipNavigation( $navitem );
      if( !$hideitem ) {  
        $this->renderNavigation( $navitem );
      }  
    }  
  }    
 
	/**
	 * Outputs the entire contents of the (X)HTML page
	 */
	public function execute() {
		global $wgLang, $wgVectorUseIconWatch;
 
		$this->skin = $this->data['skin'];
 
		// Build additional attributes for navigation urls
		//$nav = $this->skin->buildNavigationUrls();
		$nav = $this->data['content_navigation'];
 
		if ( $wgVectorUseIconWatch ) {
			$mode = $this->skin->getTitle()->userIsWatching() ? 'unwatch' : 'watch';
			if ( isset( $nav['actions'][$mode] ) ) {
				$nav['views'][$mode] = $nav['actions'][$mode];
				$nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
				$nav['views'][$mode]['primary'] = true;
				unset( $nav['actions'][$mode] );
			}
		}
 
		$xmlID = '';
    foreach ( $nav as $section => $links ) {
      foreach ( $links as $key => $link ) {
        if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) {
          $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' );
        }
 
        $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID;
        $nav[$section][$key]['attributes'] =
          ' id="' . Sanitizer::escapeId( $xmlID ) . '"';
        if ( $link['class'] ) {
          $nav[$section][$key]['attributes'] .=
            ' class="' . htmlspecialchars( $link['class'] ) . '"';
          unset( $nav[$section][$key]['class'] );
        }
        if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) {
          $nav[$section][$key]['key'] =
            Linker::tooltip( $xmlID );
        } else {
          $nav[$section][$key]['key'] =
            Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) );
        }
      }
    }
    $this->data['namespace_urls'] = $nav['namespaces'];
    $this->data['view_urls'] = $nav['views'];
    $this->data['action_urls'] = $nav['actions'];
    $this->data['variant_urls'] = $nav['variants'];
 
  // Reverse horizontally rendered navigation elements
    if ( $wgLang->isRTL() ) {
      $this->data['view_urls'] =
        array_reverse( $this->data['view_urls'] );
      $this->data['namespace_urls'] =
        array_reverse( $this->data['namespace_urls'] );
      $this->data['personal_urls'] =
        array_reverse( $this->data['personal_urls'] );
    }
 
		// Output HTML Page
		$this->html( 'headelement' );
?>
		<div id="mw-page-base" class="noprint"></div>
		<div id="mw-head-base" class="noprint"></div>
		<!-- content -->
		<div id="content">
			<a id="top"></a>
			<div id="mw-js-message" style="display:none;"<?php $this->html( 'userlangattributes' ) ?>></div>
			<?php if ( $this->data['sitenotice'] ): ?>
			<!-- sitenotice -->
			<div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
			<!-- /sitenotice -->
			<?php endif; ?>
			<!-- firstHeading -->
			<h1 id="firstHeading" class="firstHeading"><?php $this->html( 'title' ) ?></h1>
			<!-- /firstHeading -->
			<!-- bodyContent -->
			<div id="bodyContent">
				<?php if ( $this->data['isarticle'] ): ?>
				<!-- tagline -->
				<div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
				<!-- /tagline -->
				<?php endif; ?>
				<!-- subtitle -->
				<div id="contentSub"<?php $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' ) ?></div>
				<!-- /subtitle -->
				<?php if ( $this->data['undelete'] ): ?>
				<!-- undelete -->
				<div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
				<!-- /undelete -->
				<?php endif; ?>
				<?php if( $this->data['newtalk'] ): ?>
				<!-- newtalk -->
				<div class="usermessage"><?php $this->html( 'newtalk' )  ?></div>
				<!-- /newtalk -->
				<?php endif; ?>
				<?php if ( $this->data['showjumplinks'] ): ?>
				<!-- jumpto -->
				<div id="jump-to-nav">
					<?php $this->msg( 'jumpto' ) ?> <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a>,
					<a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a>
				</div>
				<!-- /jumpto -->
				<?php endif; ?>
				<!-- bodycontent -->
				<?php $this->html( 'bodycontent' ) ?>
				<!-- /bodycontent -->
 
				<?php 
        if ( !$this->skipRendering( 'printfooter' ) ): 
           if ( $this->data['printfooter'] ): ?>
				<!-- printfooter -->
				<div class="printfooter">
				<?php $this->html( 'printfooter' ); ?>
				</div>
				<!-- /printfooter -->
				<?php endif; endif; ?>
				<?php if ( $this->data['catlinks'] ): ?>
				<!-- catlinks -->
				<?php $this->html( 'catlinks' ); ?>
				<!-- /catlinks -->
				<?php endif; ?>
				<?php if ( $this->data['dataAfterContent'] ): ?>
				<!-- dataAfterContent -->
				<?php $this->html( 'dataAfterContent' ); ?>
				<!-- /dataAfterContent -->
				<?php endif; ?>
				<div class="visualClear"></div>
				<!-- debughtml -->
				<?php $this->html( 'debughtml' ); ?>
				<!-- /debughtml -->
			</div>
			<!-- /bodyContent -->
		</div>
		<!-- /content -->
 
		<!-- header -->
    <div id="mw-head" class="noprint">
      <?php $this->renderConditionalNavigation( array( 'PERSONAL' ) ); ?>   
      <div id="left-navigation">
         <?php $this->renderConditionalNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
      </div>
      <div id="right-navigation">
        <?php $this->renderConditionalNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
      </div>
    </div>
   	<!-- /header -->
 
		<!-- panel -->
			<div id="mw-panel" class="noprint">
				<!-- logo -->
					<div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div>
				<!-- /logo -->
				<?php $this->renderPortals( $this->data['sidebar'] ); ?>
			</div>
		<!-- /panel -->
		<!-- footer -->
		<div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
			<?php foreach( $this->getFooterLinks() as $category => $links ): ?>
				<ul id="footer-<?php echo $category ?>">
					<?php foreach( $links as $link ): ?>
						<li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
					<?php endforeach; ?>
				</ul>
			<?php endforeach; ?>
			<?php $footericons = $this->getFooterIcons("icononly");
			if ( count( $footericons ) > 0 ): ?>
				<ul id="footer-icons" class="noprint">
<?php			foreach ( $footericons as $blockName => $footerIcons ): ?>
					<li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
<?php				foreach ( $footerIcons as $icon ): ?>
						<?php echo $this->skin->makeFooterIcon( $icon ); ?>
<?php				endforeach; ?>
					</li>
<?php			endforeach; ?>
				</ul>
			<?php endif; ?>
			<div style="clear:both"></div>
		</div>
		<!-- /footer -->
		<!-- fixalpha -->
		<script type="<?php $this->text( 'jsmimetype' ) ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
		<!-- /fixalpha -->
		<?php $this->printTrail(); ?>
 
	</body>
</html>
<?php
	}
 
	/**
	 * Render a series of portals
	 *
	 * @param $portals array
	 */
	private function renderPortals( $portals ) {
    global $wgVectorHiddenAnonPortals, $wgVectorHiddenUserPortals;
		// Force the rendering of the following portals
		if ( !isset( $portals['SEARCH'] ) ) {
			$portals['SEARCH'] = true;
		}
		if ( !isset( $portals['TOOLBOX'] ) ) {
			$portals['TOOLBOX'] = true;
		}
		if ( !isset( $portals['LANGUAGES'] ) ) {
			$portals['LANGUAGES'] = true;
		}
		// Render portals
		foreach ( $portals as $name => $content ) {
			if ( $content === false  ||  $this->skipRendering( $name ) )
				continue;
 
      echo "\n<!-- {$name} -->\n";
			switch( $name ) {
				case 'SEARCH':
					break;
				case 'TOOLBOX':
					$this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
					break;
				case 'LANGUAGES':
					if ( $this->data['language_urls'] ) {
						$this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' );
					}
					break;
 
				default:
					$this->renderPortal( $name, $content );
				break;
			}
			echo "\n<!-- /{$name} -->\n";
		}
	}
 
		// If renderPortal in Vector was public we could have avoided it here... 
	private function renderPortal( $name, $content, $msg = null, $hook = null ) {
		if ( !isset( $msg ) ) {
			$msg = $name;
		}
		?>
<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo Linker::tooltip( 'p-' . $name ) ?>>
	<h5<?php $this->html( 'userlangattributes' ) ?>><?php $msgObj = wfMessage( $msg ); echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg ); ?></h5>
	<div class="body">
<?php
		if ( is_array( $content ) ): ?>
		<ul>
<?php
			foreach( $content as $key => $val ): 
        echo $this->makeListItem( $key, $val ); 
			endforeach;
			if ( isset( $hook ) ) {
				wfRunHooks( $hook, array( &$this, true ) );
			}
?>
		</ul>
<?php
		else: 
      echo $content; /* Allow raw HTML block to be defined by extensions */
		endif; ?>
	</div>
</div>
<?php
	}
 
	/**
	 * Render one or more navigations elements by name, automatically reveresed
	 * when UI is in RTL mode
	 */
	private function renderNavigation( $elements ) {
		// If renderNavigation in Vector was public we could have avoided renderNavigation here... 
		global $wgVectorUseSimpleSearch, $wgVectorShowVariantName, $wgUser, $wgLang;
 
		// If only one element was given, wrap it in an array, allowing more
		// flexible arguments
		if ( !is_array( $elements ) ) {
			$elements = array( $elements );
		// If there's a series of elements, reverse them when in RTL mode
		} elseif ( $wgLang->isRTL() ) {
			$elements = array_reverse( $elements );
		}
		// Render elements
		foreach ( $elements as $name => $element ) {
			echo "\n<!-- {$name} -->\n";
			switch ( $element ) {
				case 'NAMESPACES':
?>
<div id="p-namespaces" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
	<h5><?php $this->msg( 'namespaces' ) ?></h5>
	<ul<?php $this->html( 'userlangattributes' ) ?>>
		<?php foreach ( $this->data['namespace_urls'] as $link ): ?>
			<li <?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></span></li>
		<?php endforeach; ?>
	</ul>
</div>
<?php
				break;
				case 'VARIANTS':
?>
<div id="p-variants" class="vectorMenu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
	<?php if ( $wgVectorShowVariantName ): ?>
		<h4>
		<?php foreach ( $this->data['variant_urls'] as $link ): ?>
			<?php if ( stripos( $link['attributes'], 'selected' ) !== false ): ?>
				<?php echo htmlspecialchars( $link['text'] ) ?>
			<?php endif; ?>
		<?php endforeach; ?>
		</h4>
	<?php endif; ?>
	<h5><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h5>
	<div class="menu">
		<ul<?php $this->html( 'userlangattributes' ) ?>>
			<?php foreach ( $this->data['variant_urls'] as $link ): ?>
				<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
			<?php endforeach; ?>
		</ul>
	</div>
</div>
<?php
				break;
				case 'VIEWS':
?>
<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) { echo ' emptyPortlet'; } ?>">
	<h5><?php $this->msg('views') ?></h5>
	<ul<?php $this->html('userlangattributes') ?>>
		<?php foreach ( $this->data['view_urls'] as $link ): ?>
			<li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php
				// $link['text'] can be undefined - bug 27764
				if ( array_key_exists( 'text', $link ) ) {
					echo array_key_exists( 'img', $link ) ?  '<img src="' . $link['img'] . '" alt="' . $link['text'] . '" />' : htmlspecialchars( $link['text'] );
				}
				?></a></span></li>
		<?php endforeach; ?>
	</ul>
</div>
<?php
				break;
				case 'ACTIONS':
?>
<div id="p-cactions" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
	<h5><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h5>
	<div class="menu">
		<ul<?php $this->html( 'userlangattributes' ) ?>>
			<?php foreach ( $this->data['action_urls'] as $link ): ?>
				<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
			<?php endforeach; ?>
		</ul>
	</div>
</div>
<?php
				break;
				case 'PERSONAL':
?>
<div id="p-personal" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
	<h5><?php $this->msg( 'personaltools' ) ?></h5>
	<ul<?php $this->html( 'userlangattributes' ) ?>>
<?php			foreach( $this->getPersonalTools() as $key => $item ) { ?>
		<?php echo $this->makeListItem( $key, $item ); ?>
 
<?php			} ?>
	</ul>
</div>
<?php
				break;
				case 'SEARCH':
?>
<div id="p-search">
	<h5<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
	<form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
		<input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
		<?php if ( $wgVectorUseSimpleSearch && $wgUser->getOption( 'vector-simplesearch' ) ): ?>
		<div id="simpleSearch">
			<?php if ( $this->data['rtl'] ): ?>
			<?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-rtl.png' ) ) ); ?>
			<?php endif; ?>
			<?php echo $this->makeSearchInput( array( 'id' => 'searchInput', 'type' => 'text' ) ); ?>
			<?php if ( !$this->data['rtl'] ): ?>
			<?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-ltr.png' ) ) ); ?>
			<?php endif; ?>
		</div>
		<?php else: ?>
		<?php echo $this->makeSearchInput( array( 'id' => 'searchInput' ) ); ?>
		<?php echo $this->makeSearchButton( 'go', array( 'id' => 'searchGoButton', 'class' => 'searchButton' ) ); ?>
		<?php echo $this->makeSearchButton( 'fulltext', array( 'id' => 'mw-searchButton', 'class' => 'searchButton' ) ); ?>
		<?php endif; ?>
	</form>
</div>
<?php
 
				break;
			}
			echo "\n<!-- /{$name} -->\n";
		}
	}
}