Bartosz Dziewoński has submitted this change and it was merged. Change subject: Added new skin called "Apex" ......................................................................
Added new skin called "Apex" Change-Id: I37752493310358558727c9639584a56f7d1b2f8a --- A languages/messages/MessagesEn.php A resources/Resources.php A skins/Apex.php A skins/apex/apex.js A skins/apex/images/menu-icon-hover.png A skins/apex/images/menu-icon.png A skins/apex/images/nav-icon-hover.png A skins/apex/images/nav-icon.png A skins/apex/images/search-icon.png A skins/apex/images/toc-icon-hover.png A skins/apex/images/toc-icon.png A skins/apex/images/user-icon.png A skins/apex/images/watch-icon-loading.gif A skins/apex/images/watch-icons.png A skins/apex/screen-narrow.css A skins/apex/screen-wide.css A skins/apex/screen.css 17 files changed, 919 insertions(+), 0 deletions(-) Approvals: Bartosz Dziewoński: Verified; Looks good to me, approved diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php new file mode 100644 index 0000000..4118c13 --- /dev/null +++ b/languages/messages/MessagesEn.php @@ -0,0 +1,17 @@ +<?php +# Apex skin +'apex-action-addsection' => 'Add topic', +'apex-action-delete' => 'Delete', +'apex-action-move' => 'Move', +'apex-action-protect' => 'Protect', +'apex-action-undelete' => 'Undelete', +'apex-action-unprotect' => 'Change protection', +'apex-simplesearch-preference' => 'Enable enhanced search suggestions (Vector skin only)', +'apex-view-create' => 'Create', +'apex-view-edit' => 'Edit', +'apex-view-history' => 'View history', +'apex-view-view' => 'Read', +'apex-view-viewsource' => 'View source', +'apex.css' => '/* CSS placed here will affect users of the Apex skin */', # only translate this message to other languages if you have to change it +'apex.js' => '/* Any JavaScript here will be loaded for users using the Apex skin */', # only translate this message to other languages if you have to change it +'skinname-apex' => 'Apex', # only translate this message to other languages if you have to change it diff --git a/resources/Resources.php b/resources/Resources.php new file mode 100644 index 0000000..8b93fa9 --- /dev/null +++ b/resources/Resources.php @@ -0,0 +1,14 @@ +<?php + 'skins.apex' => array( + 'styles' => array( + 'common/commonElements.css' => array( 'media' => 'screen' ), + 'common/commonContent.css' => array( 'media' => 'screen' ), + 'common/commonInterface.css' => array( 'media' => 'screen' ), + 'apex/screen.css' => array( 'media' => 'screen' ), + 'apex/screen-narrow.css' => array( 'media' => 'screen and (max-width: 700px)' ), + 'apex/screen-wide.css' => array( 'media' => 'screen and (min-width: 982px)' ), + ), + 'scripts' => 'apex/apex.js', + 'remoteBasePath' => $GLOBALS['wgStylePath'], + 'localBasePath' => $GLOBALS['wgStyleDirectory'], + ), diff --git a/skins/Apex.php b/skins/Apex.php new file mode 100644 index 0000000..ddb194e --- /dev/null +++ b/skins/Apex.php @@ -0,0 +1,441 @@ +<?php +/** + * Apex - Modern version of Vector with fresh look and many usability + * improvements. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @todo document + * @file + * @ingroup Skins + */ + +if ( !defined( 'MEDIAWIKI' ) ) { + die( -1 ); +} + +/** + * SkinTemplate class for Apex skin + * @ingroup Skins + */ +class SkinApex extends SkinTemplate { + + protected static $bodyClasses = array( 'apex-animateLayout' ); + + var $skinname = 'apex', $stylename = 'apex', + $template = 'ApexTemplate', $useHeadElement = true; + + /** + * Initializes output page and sets up skin-specific parameters + * @param $out OutputPage object to initialize + */ + public function initPage( OutputPage $out ) { + global $wgLocalStylePath; + + 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 = $this->getRequest()->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->addHeadItem( 'ie9-gradient', + '<!--[if gte IE 9]><style type="text/css">' . + '.gradient { filter: none; }</style><![endif]-->' + ); + + $out->addModuleScripts( 'skins.apex' ); + } + + /** + * 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.apex' ); + } + + /** + * Adds classes to the body element. + * + * @param $out OutputPage object + * @param &$bodyAttrs Array of attributes that will be set on the body element + */ + function addToBodyAttributes( $out, &$bodyAttrs ) { + if ( isset( $bodyAttrs['class'] ) && strlen( $bodyAttrs['class'] ) > 0 ) { + $bodyAttrs['class'] .= ' ' . implode( ' ', static::$bodyClasses ); + } else { + $bodyAttrs['class'] = implode( ' ', static::$bodyClasses ); + } + } +} + +/** + * QuickTemplate class for Apex skin + * @ingroup Skins + */ +class ApexTemplate extends BaseTemplate { + + /* Functions */ + + /** + * Outputs the entire contents of the (X)HTML page + */ + public function execute() { + global $wgSitename; + + // Build additional attributes for navigation urls + $nav = $this->data['content_navigation']; + $mode = $this->getSkin()->getUser()->isWatched( $this->getSkin()->getRelevantTitle() ) ? + 'unwatch' : 'watch'; + if ( isset( $nav['actions'][$mode] ) ) { + $nav['views'][$mode] = $nav['actions'][$mode]; + $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 ( $this->data['rtl'] ) { + $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="content" class="mw-body"> + <a id="top"></a> + <div id="mw-js-message" style="display:none;"<?php $this->html( 'userlangattributes' ) ?>></div> + <?php if ( $this->data['sitenotice'] ): ?> + <div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div> + <?php endif; ?> + <h1 id="firstHeading" class="firstHeading"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1> + <div id="bodyContent"> + <?php if ( $this->data['isarticle'] ): ?> + <div id="siteSub"><?php $this->msg( 'tagline' ) ?></div> + <?php endif; ?> + <div id="contentSub"<?php $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' ) ?></div> + <?php if ( $this->data['undelete'] ): ?> + <div id="contentSub2"><?php $this->html( 'undelete' ) ?></div> + <?php endif; ?> + <?php if( $this->data['newtalk'] ): ?> + <div class="usermessage"><?php $this->html( 'newtalk' ) ?></div> + <?php endif; ?> + <?php if ( $this->data['showjumplinks'] ): ?> + <div id="jump-to-nav" class="mw-jump"> + <?php $this->msg( 'jumpto' ) ?> + <a href="#mw-head"><?php $this->msg( 'jumptonavigation' ) ?></a><?php $this->msg( 'comma-separator' ) ?> + <a href="#p-search"><?php $this->msg( 'jumptosearch' ) ?></a> + </div> + <?php endif; ?> + <?php $this->html( 'bodycontent' ) ?> + <?php if ( $this->data['printfooter'] ): ?> + <div class="printfooter"> + <?php $this->html( 'printfooter' ); ?> + </div> + <?php endif; ?> + <?php if ( $this->data['catlinks'] ): ?> + <?php $this->html( 'catlinks' ); ?> + <?php endif; ?> + <?php if ( $this->data['dataAfterContent'] ): ?> + <?php $this->html( 'dataAfterContent' ); ?> + <?php endif; ?> + <div class="visualClear"></div> + <?php $this->html( 'debughtml' ); ?> + </div> + </div> + <div id="mw-head" class="noprint"> + <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' ) ) ?>><span><?php echo $wgSitename ?></span></a></div> + <?php $this->renderNavigation( array( 'SEARCH', 'PERSONAL' ) ); ?> + <div class="apex-nav"> + <div class="apex-nav-left"> + <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?> + </div> + <div class="apex-nav-right"> + <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS' ) ); ?> + </div> + </div> + </div> + <div id="mw-panel" class="noprint"> + <div class="apex-flyout-pull"></div> + <?php $this->renderPortals( $this->data['sidebar'] ); ?> + </div> + <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->getSkin()->makeFooterIcon( $icon ); ?> + <?php endforeach; ?> + </li> + <?php endforeach; ?> + </ul> + <?php endif; ?> + <div style="clear:both"></div> + </div> + <?php $this->printTrail(); ?> + </body> +</html> +<?php + } + + /** + * Render a series of portals + * + * @param $portals array + */ + protected function renderPortals( $portals ) { + // 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 ) { + continue; + } + 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; + } + } + } + + /** + * @param $name string + * @param $content array + * @param $msg null|string + * @param $hook null|string|array + */ + protected function renderPortal( $name, $content, $msg = null, $hook = null ) { + if ( $msg === null ) { + $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 ): ?> + <?php echo $this->makeListItem( $key, $val ); ?> + +<?php + endforeach; + if ( $hook !== null ) { + wfRunHooks( $hook, array( &$this, true ) ); + } + ?> + </ul> +<?php + else: ?> + <?php echo $content; /* Allow raw HTML block to be defined by extensions */ ?> +<?php + endif; ?> + </div> +</div> +<?php + } + + /** + * Render one or more navigations elements by name, automatically reveresed + * when UI is in RTL mode + * + * @param $elements array + */ + protected function renderNavigation( $elements ) { + // 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 ( $this->data['rtl'] ) { + $elements = array_reverse( $elements ); + } + // Render elements + foreach ( $elements as $element ) { + switch ( $element ) { + case 'NAMESPACES': +?> +<div id="p-namespaces" class="apex-tabs<?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="apex-menu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>"> + <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> + <h5><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h5> + <div class="menu"> + <ul> + <?php foreach ( $this->data['variant_urls'] as $link ): ?> + <li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" lang="<?php echo htmlspecialchars( $link['lang'] ) ?>" hreflang="<?php echo htmlspecialchars( $link['hreflang'] ) ?>" <?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="apex-tabs<?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="apex-menu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>"> + <h5><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h5> + <div class="apex-menu-popup"> + <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 if ( $key === 'userpage' ): ?> + <?php echo $this->makeListItem( $key, $item ); ?> + <?php endif; ?> + <?php endforeach; ?> + </ul> + <ul<?php $this->html( 'userlangattributes' ) ?> class="apex-menu-popup"> + <?php foreach( $this->getPersonalTools() as $key => $item ): ?> + <?php if ( $key !== 'userpage' ): ?> + <?php echo $this->makeListItem( $key, $item ); ?> + <?php endif; ?> + <?php endforeach; ?> + </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"> + <div id="simpleSearch"> + <?php echo $this->makeSearchInput( array( 'id' => 'searchInput', 'type' => 'search' ) ); ?> + <?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->getSkin()->getSkinStylePath( 'images/search-icon.png' ), 'width' => '12', 'height' => '13' ) ); ?> + <input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/> + </div> + </form> +</div> +<?php + break; + } + } + } +} diff --git a/skins/apex/apex.js b/skins/apex/apex.js new file mode 100644 index 0000000..2eae1b4 --- /dev/null +++ b/skins/apex/apex.js @@ -0,0 +1,5 @@ +/* + * Apex-specific scripts + */ +jQuery( function( $ ) { +}); diff --git a/skins/apex/images/menu-icon-hover.png b/skins/apex/images/menu-icon-hover.png new file mode 100644 index 0000000..b232a2d --- /dev/null +++ b/skins/apex/images/menu-icon-hover.png Binary files differ diff --git a/skins/apex/images/menu-icon.png b/skins/apex/images/menu-icon.png new file mode 100644 index 0000000..805817a --- /dev/null +++ b/skins/apex/images/menu-icon.png Binary files differ diff --git a/skins/apex/images/nav-icon-hover.png b/skins/apex/images/nav-icon-hover.png new file mode 100644 index 0000000..ac42571 --- /dev/null +++ b/skins/apex/images/nav-icon-hover.png Binary files differ diff --git a/skins/apex/images/nav-icon.png b/skins/apex/images/nav-icon.png new file mode 100644 index 0000000..9d764b1 --- /dev/null +++ b/skins/apex/images/nav-icon.png Binary files differ diff --git a/skins/apex/images/search-icon.png b/skins/apex/images/search-icon.png new file mode 100644 index 0000000..1db2eb2 --- /dev/null +++ b/skins/apex/images/search-icon.png Binary files differ diff --git a/skins/apex/images/toc-icon-hover.png b/skins/apex/images/toc-icon-hover.png new file mode 100644 index 0000000..f60bd74 --- /dev/null +++ b/skins/apex/images/toc-icon-hover.png Binary files differ diff --git a/skins/apex/images/toc-icon.png b/skins/apex/images/toc-icon.png new file mode 100644 index 0000000..6f9f0f6 --- /dev/null +++ b/skins/apex/images/toc-icon.png Binary files differ diff --git a/skins/apex/images/user-icon.png b/skins/apex/images/user-icon.png new file mode 100644 index 0000000..57f9f8d --- /dev/null +++ b/skins/apex/images/user-icon.png Binary files differ diff --git a/skins/apex/images/watch-icon-loading.gif b/skins/apex/images/watch-icon-loading.gif new file mode 100644 index 0000000..618c308 --- /dev/null +++ b/skins/apex/images/watch-icon-loading.gif Binary files differ diff --git a/skins/apex/images/watch-icons.png b/skins/apex/images/watch-icons.png new file mode 100644 index 0000000..3673054 --- /dev/null +++ b/skins/apex/images/watch-icons.png Binary files differ diff --git a/skins/apex/screen-narrow.css b/skins/apex/screen-narrow.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/skins/apex/screen-narrow.css diff --git a/skins/apex/screen-wide.css b/skins/apex/screen-wide.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/skins/apex/screen-wide.css diff --git a/skins/apex/screen.css b/skins/apex/screen.css new file mode 100644 index 0000000..53baca8 --- /dev/null +++ b/skins/apex/screen.css @@ -0,0 +1,442 @@ +html, +body { + height: 100%; + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 100%; +} + +a { + color: #006aae; +} + +a:visited { + color: #0b0080; +} + +#p-logo { + position: absolute; + top: 0; + left: 3em; +} +#p-logo a span { + display: block; + margin-top: 0.5em; + font-size: 1.5em; +} + +#content { + margin: 7em 3em 3em 3em; + line-height: 2em; +} + +.emptyPortlet { + display: none; +} + +.apex-nav { + line-height: 1.5em; + position: absolute; + top: 4em; + left: 0; + right: 0; + padding: 0 3em; + border-top: solid 1px #d5eaed; + border-bottom: solid 1px #d5eaed; + background: #ffffff; /* Old browsers */ + background: #ffffff; /* Old browsers */ + background: #ffffff; /* Old browsers */ + /* IE9 SVG, needs conditional override of 'filter' to 'none' */ + background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNlZGY4ZjkiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); + background: -moz-linear-gradient(top, #ffffff 0%, #edf8f9 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#edf8f9)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#edf8f9 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#edf8f9 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#edf8f9 100%); /* IE10+ */ + background: linear-gradient(to bottom, #ffffff 0%,#edf8f9 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#edf8f9',GradientType=0 ); /* IE6-8 */ +} + +.apex-nav-left { + float: left; +} + +.apex-nav-right { + float: right; +} + +.apex-nav, +.apex-nav-left, +.apex-nav-right { + height: 2em; +} + +.apex-tabs { + float: left; +} + +.apex-tabs h5 { + display: none; +} + +.apex-tabs ul, +.apex-tabs li { + list-style: none; + margin: 0; + padding: 0; +} + +.apex-tabs li { + float: left; + padding: 0.25em 0.75em; +} + +.apex-tabs .selected { + background-color: white; + border: solid 1px #d5eaed; + border-bottom: solid 1px #ffffff; + -webkit-border-radius: 0.25em 0.25em 0 0; + -moz-border-radius: 0.25em 0.25em 0 0; + border-radius: 0.25em 0.25em 0 0; + padding-top: 0.5em; + margin-top: -0.33em; +} + +.apex-tabs .selected a { + color: #333333; +} + +.apex-menu { + float: left; +} + +.apex-menu h5 { + float: left; + margin: 0; + padding: 0.25em 0.75em; + font-weight: normal; +} + +.apex-menu-popup { + margin-top: 2em; + position: absolute; + display: none; + border: solid 1px #d5eaed; + -webkit-border-radius: 0 0 0.25em 0.25em; + -moz-border-radius: 0 0 0.25em 0.25em; + border-radius: 0 0 0.25em 0.25em; + background-color: #fff; + background-color: rgba(255, 255, 255, 0.98); + -webkit-box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); +} + +.apex-menu-popup ul, +.apex-menu-popup li { + list-style: none; + margin: 0.25em 0; + padding: 0; +} + +.apex-menu-popup a { + display: block; + padding: 0.25em 1.5em; +} + +.apex-menu-popup a:hover { + background-color: #d5eaed; + background-color: rgba(213, 234, 237, 0.75); + text-decoration: none; +} + +.apex-menu:hover .apex-menu-popup { + display: block; +} + +#mw-head { + position: absolute; + top: 0; + left: 0; + right: 0; +} + +#mw-panel, +#toc { + position: absolute; + top: 6em; + margin: 0; + padding: 0; + margin-top: 1px; + height: 0; + border: solid 1px transparent; + background-color: transparent; + font-size: 1em; + z-index: 200; +} + +#mw-panel { + left: 0; + border-left: none; +} +#toc { + right: 0; + border-right: none; +} +#p-navigation { + margin-top: 0.5em; +} +#p-navigation h5, +#toctitle h2, +#toctitle span { + display: none; +} + +#toc:hover, +#mw-panel:hover { + height: auto; + -webkit-box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0.25em 1em 0 rgba(0, 0, 0, 0.25); + border-color: #d5eaed; + background-color: #fff; + background-color: rgba(255, 255, 255, 0.98); +} +#mw-panel:hover { + -webkit-border-radius: 0 0 0.25em 0; + -moz-border-radius: 0 0 0.25em 0; + border-radius: 0 0 0.25em 0; +} +#toc:hover { + -webkit-border-radius: 0 0 0 0.25em; + -moz-border-radius: 0 0 0 0.25em; + border-radius: 0 0 0 0.25em; +} + +#mw-panel .apex-flyout-pull { + display: block; + position: absolute; + top: -2em; + left: 0; + width: 3em; + height: 2em; + background-image: url(images/nav-icon.png); + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; +} +#toctitle { + position: absolute; + top: -2em; + right: 0; + width: 3em; + height: 2em; + background-image: url(images/toc-icon.png); + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; +} + +#mw-panel:hover .apex-flyout-pull { + background-image: url(images/nav-icon-hover.png); +} + +#toc:hover #toctitle { + background-image: url(images/toc-icon-hover.png); +} + +#toc ul, +#mw-panel .portal { + padding: 0.5em 1.5em 1em 1.5em; + display: none; +} + +#toc:hover ul { + margin-top: 0.5em; + display: block; +} + +#toc ul ul { + padding: 0 0 0 0; +} + +#mw-panel:hover .portal { + display: block; +} + +#mw-panel ul { + list-style: none; + margin: 0; + padding: 0; +} + +#p-personal { + float: right; + margin-right: 2em; + margin-top: 1em; + position: relative; +} +#p-personal h5 { + display: none; +} +#p-personal ul { + margin: 0; + padding: 0; + list-style: none; + padding-bottom: 0; +} +#p-personal li { + white-space: nowrap; +} + +#p-personal ul.apex-menu-popup { + position: absolute; + left: -0.5em; + display: none; + z-index: 100; +} +#p-personal:hover .apex-menu-popup { + display: block; +} +#pt-userpage { + padding-right: 18px; + background-image: url(images/menu-icon.png); + background-position: right center; + background-repeat: no-repeat; +} +#p-personal:hover #pt-userpage { + background-image: url(images/menu-icon-hover.png); +} + +#pt-userpage a { + padding-left: 18px; + background-image: url(images/user-icon.png); + background-position: left 40%; + background-repeat: no-repeat; +} + +#p-search { + float: right; + margin-right: 3em; + margin-top: 1em; +} +#p-search h5 { + display: none; +} +#searchInput{ + width: 15em; + font-size: 1em; +} +#searchButton { + background-color: white; + border: none; + font-size: 1em; + opacity: 0.75; + cursor: pointer; +} +#searchButton:hover { + opacity: 1; +} + +#ca-watch, +#ca-unwatch { + padding-left: 0.25em; + padding-right: 0.25em; +} +#ca-watch a, +#ca-unwatch a { + display: inline-block; + padding-left: 26px; + width: 0; + overflow: hidden; + background-image: url(images/watch-icons.png); + background-position: left center; + background-repeat: no-repeat; +} +#ca-unwatch a { + background-position: -43px 50%; +} +#ca-watch a { + background-position: 5px 50%; +} +#ca-unwatch a:hover, +#ca-unwatch a:focus { + background-position: -67px 50%; +} +#ca-watch a:hover, +#ca-watch a:focus { + background-position: -19px 50%; +} +#ca-unwatch .loading, +#ca-watch .loading { + /* @embed */ + background-image: url(images/watch-icon-loading.gif); + background-position: 5px 50%; +} + +#p-cactions { + position: relative; + padding-right: 0.5em; +} + +#p-cactions h5 { + padding-right: 18px; + background-image: url(images/menu-icon.png); + background-position: right center; + background-repeat: no-repeat; + cursor: pointer; +} + +#p-cactions:hover h5 { + background-image: url(images/menu-icon-hover.png); +} + +#p-cactions .apex-menu-popup { + position: absolute; + right: -0.5em; + white-space: nowrap; +} + +#footer { + background-color: #eaf2f7; + border-top: solid 1px #d5eaed; + font-size: 0.8em; +} + +#footer ul { + float: left; + list-style: none; + margin: 1em 3em; + padding: 0; +} + +ul#footer-icons { + float: right; +} + +#footer li { + list-style: none; + margin: 0; + padding: 0.25em; +} + +div#mw-js-message { + background-color: #fff; + background-color: rgba(255, 255, 255, 0.93); + font-size: 0.8em; + position: absolute; + margin: 0; + padding: 1em 2em; + right: 3em; + top: 8.5em; + width: 20em; + z-index: 10000; + border: solid 1px #a7d7f9; + -webkit-border-radius: 0.25em; + -moz-border-radius: 0.25em; + border-radius: 0.25em; + -webkit-box-shadow: 0 0.125em 0.5em 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 0.125em 0.5em 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 0.125em 0.5em 0 rgba(0, 0, 0, 0.25); +} -- To view, visit https://gerrit.wikimedia.org/r/176517 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I37752493310358558727c9639584a56f7d1b2f8a Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/skins/apex Gerrit-Branch: master Gerrit-Owner: Bartosz Dziewoński <[email protected]> Gerrit-Reviewer: Bartosz Dziewoński <[email protected]> Gerrit-Reviewer: Siebrand <[email protected]> Gerrit-Reviewer: Trevor Parscal <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
